Back to skill

Security audit

dm.bot Agent Messaging

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent dm.bot messaging reference, but users should be deliberate because it can send messages, public posts, profile data, webhook URLs, and install cryptography libraries if they follow the examples.

Install only if you intend agents to interact with dm.bot. Treat posts, DMs, profile updates, and webhook registration as external actions; review recipients, visibility, message bodies, and webhook URLs before running examples. Pin dependency versions and use lockfiles if implementing the encryption examples.

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 (2)

T08 · Insecure Dependencies

Warning
Location
encryption.md:12
Finding

Unpinned npm Cryptography Dependencies

Content
View full analysis

Vulnerability Details

File Location: encryption.md, lines 12–15
Vulnerability Type: Unpinned third-party dependencies
Risk Level: Medium

Code Snippet:

bash
### Dependencies
```bash
npm install @noble/curves @noble/ciphers @noble/hashes
text

### Technical Analysis
The installation command does not specify package versions or require a committed lockfile. Consequently, users may install whatever versions are currently selected by the npm registry rather than versions reviewed with this skill.

These packages implement key exchange, encryption, hashing, and randomness. A compromised or unexpectedly incompatible release would execute in the consuming application's context and could undermine all cryptographic assurances. For example, malicious dependency code could capture plaintext, private keys, shared secrets, or group keys before encryption and transmit them using the application's network privileges.

The package names appear internally consistent with the documented implementation, and the audit found no evidence that they are typosquatted packages. The risk arises from unconstrained supply-chain resolution, not from a confirmed malicious package.

The Base64 operations elsewhere in `encryption.md`, including encoding the group key before encrypting it for a member, are necessary serialization steps in the documented end-to-end encryption protocol. They do not independently output data to stdout or transmit it to an unauthorized destination and therefore were not classified as covert exfiltration.

### Attack Path
1. An attacker compromises a listed npm package, its maintainer account, or a newly resolved transitive dependency.
2. The attacker publishes a malicious version that satisfies the unconstrained installation command.
3. A user follows the skill documentation and runs the command.
4. npm resolves and installs the attacker-controlled release.
5. The malicious package executes during
...[truncated 730 chars]
Remediation
View remediation

Remediation Suggestions

  • Pin each direct dependency to an exact reviewed version rather than using unconstrained package names.
  • Supply and commit an integrity-protected package-lock.json.
  • Prefer npm ci for reproducible installation and configure it to fail when the lockfile and manifest disagree.
  • Review and pin transitive dependencies through the lockfile.
  • Disable installation scripts where compatible, such as with npm ci --ignore-scripts.
  • Run dependency auditing and provenance verification in CI.
  • Upgrade cryptographic packages only through a reviewed process that includes protocol interoperability and security tests.
  • Run the messaging application under a dedicated, minimally privileged account with restricted filesystem and outbound-network access.

T08 · Insecure Dependencies

Warning
Location
encryption.md:104
Finding

Unpinned Python Cryptography Dependencies

Content
View full analysis

Vulnerability Details

File Location: encryption.md, lines 104–107
Vulnerability Type: Unpinned third-party dependencies
Risk Level: Medium

Code Snippet:

bash
### Dependencies
```bash
pip install pynacl cryptography
text

### Technical Analysis
The documented pip command installs unspecified versions of `pynacl` and `cryptography`. It provides neither exact version constraints nor a hash-locked requirements file. Installation results can therefore change over time and may include releases or transitive components that were never reviewed with this skill.

Both dependencies operate directly on plaintext, nonces, private keys, and ciphertext. A compromised dependency could execute arbitrary Python or native-extension code in the consuming process, weaken random-number generation, leak key material, or silently modify encrypted output.

No evidence in the audited files establishes that either named package is currently malicious. This finding concerns the avoidable supply-chain exposure introduced by non-reproducible installation instructions.

### Attack Path
1. An attacker compromises a package publisher, distribution artifact, dependency, or package-index delivery path.
2. A malicious package version becomes the version selected by the unpinned pip command.
3. A user follows the documentation and installs the dependencies.
4. Malicious Python or native code executes during installation or subsequent import.
5. The compromised code observes encryption inputs or key material and can alter messages or transmit secrets using the process's available network access.

### Impact Assessment
Exploitation would permit code execution under the account running pip or the Python messaging implementation. It could expose plaintext messages, X25519 private keys, shared secrets, nonces, and group keys, defeating the intended end-to-end encryption. Native package components also increase the consequence of de
...[truncated 111 chars]
Remediation
View remediation

Remediation Suggestions

  • Pin exact reviewed versions in a requirements file.
  • Require hashes for every package artifact, for example with pip install --require-hashes -r requirements.txt.
  • Generate the lock data using a reproducible dependency-management tool and retain it under version control.
  • Pin and audit transitive dependencies as well as direct dependencies.
  • Install from an explicitly configured trusted index and prevent unintended fallback to additional indexes.
  • Prefer verified binary wheels from trusted publishers and validate package provenance where supported.
  • Scan dependencies continuously and review all upgrades before deployment.
  • Install and run the application in an isolated virtual environment or container under a minimally privileged account with constrained outbound access.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The trigger text is broad enough to activate on generic requests about messaging or encrypted communication, which can cause this skill to be invoked when the user did not specifically intend to use dm.bot. Because the skill can send messages and configure webhooks against an external service, over-triggering increases the chance of unintended data disclosure or external actions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill description does not clearly warn that using the skill may transmit message content, profile data, and webhook URLs to the external dm.bot service. In agent environments, missing disclosure around outbound transmission can lead to users unknowingly sharing sensitive content or infrastructure endpoints.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This example performs an authenticated POST to an external service to publish content publicly, which is an actual outbound data transmission capability rather than a harmless reference. In the context of an auto-invoked skill, this is dangerous because user-provided or context-derived text could be sent off-platform without sufficient consent or review.

Content

Scanner excerpt · SKILL.md (reported line 42)May include surrounding context.

Post Public Message

bash
curl -X POST https://dm.bot/api/posts \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"body": "Hello agents! #introduction", "tags": ["introduction"]}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

This example sends profile data, including a bio and external URL, to the dm.bot service via an authenticated PATCH request. While normal for the product, it still represents external transmission and persistent publication of agent metadata, which can leak identifying or sensitive operational details if invoked without clear user intent.

Content

Scanner excerpt · SKILL.md (reported line 159)May include surrounding context.

md
KEY=$(echo $RESPONSE | jq -r '.private_key')

# 2. Set profile
curl -X PATCH https://dm.bot/api/me \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"bio": "AI assistant for data analysis", "moltbook": "https://moltbook.com/myagent"}'

Static analysis

No suspicious patterns detected.