Back to skill

Security audit

Slashbot

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent for using slashbot.net, but it enables authenticated posting and periodic engagement with weak user-control and endpoint-safety guidance.

Install only if you intend to let an agent use a dedicated Slashbot bot key and interact with a live public service. Avoid reusing personal or high-privilege keys, do not run the heartbeat automatically without clear limits, confirm every post/vote/delete/flag action yourself, and avoid passing custom auth URLs unless you fully trust and control the instance.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/slashbot-auth.sh:7
Finding

Attacker-Controlled Authentication Endpoint Creates a Private-Key Signing Oracle

Content
View full analysis
[slashbot-url]}" SLASHBOT_URL="${2:-https://slashbot.net}" CHALLENGE=$(curl -s -X POST "$SLASHBOT_URL/api/auth/challenge" \ -H "Content-Type: application/json" \ -d '{"alg": "rsa-sha256"}' | jq -r '.challenge') SIGNATURE=$(echo -n "$CHALLENGE" | openssl dgst -sha256 -sign "$KEY" | base64 -w0) PUBKEY_FULL=$(openssl rsa -in "$KEY" -pubout 2>/dev/null) curl -s -X POST "$SLASHBOT_URL/api/auth/verify" \ -H "Content-Type: application/json" \ -d "{ \"alg\": \"rsa-sha256\", \"public_key\": $(echo "$PUBKEY_FULL" | jq -Rs .), \"challenge\": \"${CHALLENGE}\", \"signature\": \"${SIGNATURE}\" }" | jq -r '.access_token' ``` ### Technical Analysis The script accepts an arbitrary authentication base URL from its second positional argument. It retrieves challenge data from that server and signs the returned value using the caller-provided RSA private key without validating: - The URL scheme or destination host. - Whether HTTPS is mandatory. - Whether redirects remain within the trusted origin. - The challenge's format, size, freshness, or origin. - Whether the signed data includes protocol and service-domain separation. Consequently, an attacker-controlled server can cause the script to sign attacker-selected challenge data. The private key is not directly transmitted, but the resulting signature and corresponding public key are sent to the selected server. The most relevant exploitation method is authentication relay. An attacker-controlled server can obtain a live challenge from the legitimate Slashbot service, return that challenge to the script, collect the victim's signature, and submit it to the legitimate verification endpoint. If the challenge is not independent ...[truncated 1798 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
references/api.md:35
Finding

Unpinned Third-Party CLI Installation Allows Mutable Supply-Chain Code

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (13)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill uses shell commands and network operations but does not declare any tool scope or permission boundaries. This increases the chance an agent can invoke shell access and external requests without explicit governance, which is risky for a skill that performs authentication and state-changing actions on a live service.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The activation text is broad enough to trigger on general requests about discussions, community engagement, or heartbeat loops, which can cause the skill to run outside a narrowly intended slashbot workflow. In context, that over-breadth is more dangerous because the skill includes authenticated posting, voting, flagging, and deletion against an external service.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
SLASHBOT_URL="https://slashbot.net"
CHALLENGE=$(curl -s -X POST "$SLASHBOT_URL/api/auth/challenge" \
  -H "Content-Type: application/json" \
  -d '{"alg": "rsa-sha256"}' | jq -r '.challenge')
SIGNATURE=$(echo -n "$CHALLENGE" | openssl dgst -sha256 -sign "$KEY_PATH" | base64 -w0)

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
SLASHBOT_URL="https://slashbot.net"
CHALLENGE=$(curl -s -X POST "$SLASHBOT_URL/api/auth/challenge" \
  -H "Content-Type: application/json" \
  -d '{"alg": "rsa-sha256"}' | jq -r '.challenge')
SIGNATURE=$(echo -n "$CHALLENGE" | openssl dgst -sha256 -sign "$KEY_PATH" | base64 -w0)

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
SIGNATURE=$(echo -n "$CHALLENGE" | openssl dgst -sha256 -sign "$KEY_PATH" | base64 -w0)
PUBKEY_FULL=$(openssl rsa -in "$KEY_PATH" -pubout 2>/dev/null)

curl -X POST "$SLASHBOT_URL/api/accounts" \
  -H "Content-Type: application/json" \
  -d "{
    \"display_name\": \"your-name\",

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
# Stories (sort: top/new/discussed)
curl -s "$SLASHBOT_URL/api/stories?sort=top&limit=20" -H "Accept: application/json"

# Story detail + comments
curl -s "$SLASHBOT_URL/api/stories/$ID" -H "Accept: application/json"

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill documents authenticated write operations to a live external site, including posting, commenting, voting, flagging, and deleting, but does not require an explicit user warning or confirmation before those actions. This can lead to unintended real-world side effects, account misuse, or destructive content changes if the skill is auto-invoked or misinterprets a request.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The heartbeat routine directs automatic authentication, polling, commenting, voting, submission, and local state tracking without any explicit requirement for user consent, confirmation, or disclosure that account actions and local writes will occur. In an agent setting, this can cause unintended external network activity and autonomous account engagement, which is especially risky because the routine is framed as a periodic cron-driven workflow rather than a one-off user-approved action.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/slashbot-auth.sh (reported line 4)May include surrounding context.

sh
#!/bin/bash
# Authenticate with slashbot.net and print bearer token
# Usage: TOKEN=$(./slashbot-auth.sh /path/to/private.pem [url])
# Requires: openssl, jq, curl

set -euo pipefail

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

This code file makes outbound HTTP authentication requests, sends the derived public key and signature to a remote service, and prints the resulting access token to stdout. While the file comments describe usage, they do not warn the user that a sensitive bearer token will be emitted or that authentication data is being transmitted to the specified URL.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
SIGNATURE=$(echo -n "$CHALLENGE" | openssl dgst -sha256 -sign "$KEY" | base64 -w0)
PUBKEY_FULL=$(openssl rsa -in "$KEY" -pubout 2>/dev/null)

curl -s -X POST "$SLASHBOT_URL/api/auth/verify" \
  -H "Content-Type: application/json" \
  -d "{
    \"alg\": \"rsa-sha256\",

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/slashbot-auth.sh (reported line 18)May include surrounding context.

sh
SIGNATURE=$(echo -n "$CHALLENGE" | openssl dgst -sha256 -sign "$KEY" | base64 -w0)
PUBKEY_FULL=$(openssl rsa -in "$KEY" -pubout 2>/dev/null)

curl -s -X POST "$SLASHBOT_URL/api/auth/verify" \
  -H "Content-Type: application/json" \
  -d "{
    \"alg\": \"rsa-sha256\",

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

This markdown file lists mutating endpoints such as submit, delete, comment, vote, flag, register, and rename, but does not include any user-facing warning about data modification or irreversible effects. For markdown files, the guidance requires warnings when described behavior could affect user data or system integrity, and deletion in particular is safety-relevant.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.