Back to skill

Security audit

Sardis Identity

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a real Sardis identity integration, but it can submit payment-linked identity and reputation data to an external service without clear approval or privacy guardrails.

Review before installing. Use a scoped Sardis API key, avoid submitting sensitive comments or regulated transaction identifiers unless approved, confirm before any registration or reputation POST, and prefer a pinned, reviewed @sardis/sdk version.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:13
Finding
Unpinned npm Dependency Creates Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md`, lines 13-15 **Vulnerability Type**: Unpinned third-party package dependency **Risk Level**: Medium **Vulnerable Code:** ```yaml install: npm: - "@sardis/sdk" ``` ### Technical Analysis The skill declares `@sardis/sdk` without an exact version or integrity hash. Consequently, installation may resolve to a future package release whose contents were not included in this audit. npm packages can also execute lifecycle scripts during installation unless that capability is explicitly disabled. This does not establish that the current package is malicious. However, it creates a supply-chain exposure: compromise of the package publisher, registry account, package release process, or transitive dependency could cause users to install attacker-controlled code. ### Attack Path 1. An attacker compromises the npm publisher account, package release pipeline, or another relevant part of the dependency chain. 2. The attacker publishes a malicious release of `@sardis/sdk`, potentially including an npm lifecycle script or malicious runtime code. 3. A subsequent skill installation resolves the unpinned dependency to the malicious release. 4. npm installs the release and may execute its lifecycle scripts. 5. The malicious code executes with the permissions of the account performing the installation or later invoking the package. ### Impact Assessment Successful exploitation could permit arbitrary code execution under the installing user's privileges. Depending on that user's environment and permissions, the malicious package could access local files, environment variables such as `SARDIS_API_KEY`, network resources, and credentials available to the process. It could also modify project or user-owned files and compromise operations that later load the dependency. The audited project otherwise consists only of `SKILL.md`. No embedded scripts, credential harvesting, private- ...[truncated 117 chars]
Remediation
## Remediation Suggestions 1. Pin `@sardis/sdk` to an exact, reviewed version rather than a floating release: ```yaml install: npm: - "@sardis/sdk@<reviewed-exact-version>" ``` 2. Maintain and enforce a lockfile containing package integrity hashes. 3. Install dependencies only from an explicitly trusted npm registry. 4. Verify package provenance, signatures, and published integrity metadata where supported. 5. Use `npm ci` for reproducible installation when a lockfile is available. 6. Disable npm lifecycle scripts with `--ignore-scripts` where the package does not require them. 7. Audit the pinned package and its transitive dependency tree before updating. 8. Run installation and package execution with least privilege and restrict access to sensitive environment variables.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (19)

External Transmission

Medium
Category
Data Exfiltration
Content
env:
        - SARDIS_API_KEY
      bins:
        - curl
        - jq
    primaryEnv: SARDIS_API_KEY
    emoji: "🆔"
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill repeatedly instructs users to send agent identity data, public keys, wallet identifiers, transaction IDs, comments, and reputation data to a third-party API, but it does not clearly disclose the privacy, confidentiality, or governance implications of that transmission. In an identity-critical and payment-adjacent context, incomplete disclosure can lead operators to unintentionally expose sensitive operational metadata to an external service.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Endpoint Patterns

Base URL: `https://api.sardis.sh/v2`

### Register Agent
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Endpoint Patterns

Base URL: `https://api.sardis.sh/v2`

### Register Agent
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Endpoint Patterns

Base URL: `https://api.sardis.sh/v2`

### Register Agent
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Endpoint Patterns

Base URL: `https://api.sardis.sh/v2`

### Register Agent
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Endpoint Patterns

Base URL: `https://api.sardis.sh/v2`

### Register Agent
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Endpoint Patterns

Base URL: `https://api.sardis.sh/v2`

### Register Agent
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Endpoint Patterns

Base URL: `https://api.sardis.sh/v2`

### Register Agent
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Endpoint Patterns

Base URL: `https://api.sardis.sh/v2`

### Register Agent
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Endpoint Patterns

Base URL: `https://api.sardis.sh/v2`

### Register Agent
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Endpoint Patterns

Base URL: `https://api.sardis.sh/v2`

### Register Agent
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## API Endpoint Patterns

Base URL: `https://api.sardis.sh/v2`

### Register Agent
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# Create a new agent identity with TAP verification
curl -X POST https://api.sardis.sh/v2/agents/identity/register \
  -H "Authorization: Bearer $SARDIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
Confidence
90% confidence
Finding
The registration example performs a live POST of identity and capability metadata to a remote service using an API key. Because the skill concerns verified identities tied to payment capabilities, that transmission is security-sensitive and should be clearly disclosed and constrained.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# Submit reputation feedback after an interaction
curl -X POST https://api.sardis.sh/v2/agents/identity/{agent_id}/reputation \
  -H "Authorization: Bearer $SARDIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
Confidence
92% confidence
Finding
This POST endpoint submits agent reputation data, including score, category, comment, and transaction ID, to an external service. Those fields can encode commercially sensitive and potentially identifying activity, making the transmission materially security- and privacy-relevant.

External Transmission

Medium
Category
Data Exfiltration
Content
PUBLIC_KEY=$(openssl pkey -pubin -in agent_pub.pem -text | grep -A 10 'pub:' | tail -n +2 | tr -d ' :\n')

# 2. Register agent
AGENT=$(curl -s -X POST https://api.sardis.sh/v2/agents/identity/register \
  -H "Authorization: Bearer $SARDIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
Confidence
91% confidence
Finding
This repeated onboarding example registers an agent by sending public key and descriptive fields to the remote service. In an identity and payments context, this is a meaningful external data disclosure path and should be treated as such, even if product-intended.

External Transmission

Medium
Category
Data Exfiltration
Content
PUBLIC_KEY=$(openssl pkey -pubin -in agent_pub.pem -text | grep -A 10 'pub:' | tail -n +2 | tr -d ' :\n')

# 2. Register agent
AGENT=$(curl -s -X POST https://api.sardis.sh/v2/agents/identity/register \
  -H "Authorization: Bearer $SARDIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
Confidence
91% confidence
Finding
This repeated onboarding example registers an agent by sending public key and descriptive fields to the remote service. In an identity and payments context, this is a meaningful external data disclosure path and should be treated as such, even if product-intended.

External Transmission

Medium
Category
Data Exfiltration
Content
AGENT_ID=agent_abc123xyz
TX_ID=tx_payment123

curl -X POST "https://api.sardis.sh/v2/agents/identity/$AGENT_ID/reputation" \
  -H "Authorization: Bearer $SARDIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
Confidence
93% confidence
Finding
This duplicate example again sends payment-linked reputation data, including transaction identifiers and comments, to a third-party system. The context makes it more dangerous because the skill explicitly ties identity to payment capabilities, increasing the sensitivity of associated metadata.

External Transmission

Medium
Category
Data Exfiltration
Content
AGENT_ID=agent_abc123xyz
TX_ID=tx_payment123

curl -X POST "https://api.sardis.sh/v2/agents/identity/$AGENT_ID/reputation" \
  -H "Authorization: Bearer $SARDIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
Confidence
93% confidence
Finding
This duplicate example again sends payment-linked reputation data, including transaction identifiers and comments, to a third-party system. The context makes it more dangerous because the skill explicitly ties identity to payment capabilities, increasing the sensitivity of associated metadata.

Static analysis

No suspicious patterns detected.