Back to skill

Security audit

abe-fail2ban-reporter

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its fail2ban reporting purpose, but its installer creates a persistent root-level fail2ban hook that runs code from the skill directory and also sends ban data to an external API.

Install only after reviewing the root-level fail2ban changes and the external data flow. On a real server, deploy the reporting script to a root-owned, non-writable path before enabling the fail2ban action, back up fail2ban configuration, and confirm that sending banned IPs and incident comments to SkillBoss/HeyBoss is approved for your environment.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
scripts/install.sh:7
Finding

Privileged fail2ban action executes a script from a potentially user-writable directory

Content
View full analysis

Vulnerability Details

File Location: scripts/install.sh:7, 28-34
Vulnerability Type: Privilege escalation through an unsafe privileged script reference
Risk Level: High

Vulnerable Code

bash
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

# Create fail2ban action
cat > /etc/fail2ban/action.d/skillboss-reporter.conf << CONF
[Definition]
actionban = bash $SCRIPT_DIR/report-single.sh <ip> "SSH brute-force on <name> jail (fail2ban auto-report)"

[Init]
CONF

Technical Analysis

The installer creates a system-level fail2ban action that invokes report-single.sh from the Skill's original directory. The project documentation recommends copying the project into ~/.clawdbot/skills/fail2ban-reporter/, which would ordinarily remain writable by the owning non-root user.

Fail2ban actions commonly execute with the privileges of the fail2ban daemon, typically root. The installer does not:

  • Copy the callback into a root-owned system directory.
  • Verify ownership or permissions on the callback or its parent directories.
  • Remove write access from unprivileged accounts.
  • Use a trusted wrapper that validates the target script.
  • Quote the generated script path.

Consequently, the root-managed action configuration can reference mutable, non-root-controlled code. Any account or process capable of changing report-single.sh can replace its contents with arbitrary shell commands, which fail2ban will execute upon a subsequent ban event.

This is a privilege-boundary violation rather than evidence that the currently shipped callback is malicious.

Attack Path

  1. An administrator installs the action with sudo bash scripts/install.sh.
  2. The installer writes /etc/fail2ban/action.d/skillboss-reporter.conf.
  3. The action permanently points to scripts/report-single.sh in the original Skill directory.
  4. A lower-privileged user or compromised process with write access to that directory modifies report-single.sh and inserts arbitrary commands ...[truncated 912 chars]
Remediation
View remediation

Remediation Suggestions

  1. During installation, copy report-single.sh into a dedicated system directory, such as /usr/local/libexec/skillboss-reporter/report-single.sh.
  2. Make the deployed directory and script root-owned and non-writable by unprivileged users:
bash
install -d -o root -g root -m 0755 /usr/local/libexec/skillboss-reporter
install -o root -g root -m 0755 \
  "$SCRIPT_DIR/report-single.sh" \
  /usr/local/libexec/skillboss-reporter/report-single.sh
  1. Configure fail2ban to invoke only the root-owned deployed copy:
ini
[Definition]
actionban = /usr/bin/bash /usr/local/libexec/skillboss-reporter/report-single.sh <ip> "SSH brute-force on <name> jail (fail2ban auto-report)"
  1. Verify that the callback file and every parent directory are owned by root and are not writable by group or other users before restarting fail2ban.
  2. Use fixed absolute paths for executables used by privileged actions.
  3. Quote paths when generating configuration and reject paths containing line breaks or other unsafe characters.
  4. Consider executing the network-reporting callback through a dedicated restricted service account instead of root. Grant only the minimum file and network access required.
  5. Store API credentials in a root-owned service environment file with restrictive permissions rather than relying on the invoking user's environment.
  6. On uninstall, remove the root-owned deployed callback and directory in addition to the fail2ban action configuration.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (38)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The skill is marketed as actively querying threat intelligence, reporting bans, and sending alerts, but this finding says the relevant code path is only a read-only stats display. Such overstatement is dangerous in a security-monitoring context because operators may assume active detection and reporting coverage that is not present, weakening response readiness.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill is marketed as actively querying threat intelligence, reporting bans, and sending alerts, but this finding says the relevant code path is only a read-only stats display. Such overstatement is dangerous in a security-monitoring context because operators may assume active detection and reporting coverage that is not present, weakening response readiness.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill is marketed as actively querying threat intelligence, reporting bans, and sending alerts, but this finding says the relevant code path is only a read-only stats display. Such overstatement is dangerous in a security-monitoring context because operators may assume active detection and reporting coverage that is not present, weakening response readiness.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill is marketed as actively querying threat intelligence, reporting bans, and sending alerts, but this finding says the relevant code path is only a read-only stats display. Such overstatement is dangerous in a security-monitoring context because operators may assume active detection and reporting coverage that is not present, weakening response readiness.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill is marketed as actively querying threat intelligence, reporting bans, and sending alerts, but this finding says the relevant code path is only a read-only stats display. Such overstatement is dangerous in a security-monitoring context because operators may assume active detection and reporting coverage that is not present, weakening response readiness.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script exfiltrates banned IP data to AbuseIPDB even though the skill metadata says it should use SkillBoss API Hub and Telegram. This mismatch is dangerous because operators may deploy it under false assumptions about where security telemetry is being sent, creating unauthorized third-party data disclosure and trust-boundary violations.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
95% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/uninstall.sh (reported line 8)May include surrounding context.

sh
set -euo pipefail

# Remove action file
rm -f /etc/fail2ban/action.d/skillboss-reporter.conf

# Remove action from jail config
if [ -f /etc/fail2ban/jail.local ]; then

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

4. Enable auto-reporting (optional)

bash
sudo bash scripts/install.sh

Now every new fail2ban ban automatically queries SkillBoss API Hub.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · README.md (reported line 66)May include surrounding context.

4. Enable auto-reporting (optional)

bash
sudo bash scripts/install.sh

Now every new fail2ban ban automatically queries SkillBoss API Hub.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The README states that new fail2ban bans are automatically sent to SkillBoss API Hub, but it does not clearly warn users that IP addresses and related security event data will be transmitted to a third party. This creates a real privacy and operational security risk because administrators may enable the feature without understanding the data-sharing implications or obtaining required approval.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill invokes shell scripts and directs users to run installation and reporting commands, but it declares no tool scope or permissions. That omission hides the need for shell and likely privileged system access, reducing transparency and making it easier for a reviewer or agent to authorize risky operations without informed consent.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
79% confidence
Finding

The skill documents outbound API communication to an external service using a bearer token, which creates a real data-transmission and credential-handling risk. In this context the transmission is expected for the feature, but it is still security-sensitive because banned IPs, environment-derived secrets, and reporting metadata may leave the host and must be explicitly authorized and protected.

Content

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

md
## API Reference

All API calls route through SkillBoss API Hub at `https://api.heybossai.com/v1/pilot`.
Authentication: `Authorization: Bearer $SKILLBOSS_API_KEY`

See [references/skillboss-api.md](references/skillboss-api.md) for full API docs.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · references/abuseipdb-api.md (reported line 11)May include surrounding context.

md
| Original | Replaced With |
|----------|--------------|
| `https://api.abuseipdb.com/api/v2/report` | `https://api.heybossai.com/v1/pilot` (type: search) |
| `https://api.abuseipdb.com/api/v2/check` | `https://api.heybossai.com/v1/pilot` (type: search) |
| `ABUSEIPDB_KEY` | `SKILLBOSS_API_KEY` |
| `Key: <api-key>` header | `Authorization: Bearer <api-key>` header |

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · references/abuseipdb-api.md (reported line 12)May include surrounding context.

md
| Original | Replaced With |
|----------|--------------|
| `https://api.abuseipdb.com/api/v2/report` | `https://api.heybossai.com/v1/pilot` (type: search) |
| `https://api.abuseipdb.com/api/v2/check` | `https://api.heybossai.com/v1/pilot` (type: search) |
| `ABUSEIPDB_KEY` | `SKILLBOSS_API_KEY` |
| `Key: <api-key>` header | `Authorization: Bearer <api-key>` header |

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · references/abuseipdb-api.md (reported line 11)May include surrounding context.

md
# SkillBoss API Hub Reference

Base URL: `https://api.heybossai.com/v1`

## Authentication

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · references/abuseipdb-api.md (reported line 12)May include surrounding context.

md
# SkillBoss API Hub Reference

Base URL: `https://api.heybossai.com/v1`

## Authentication

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · references/skillboss-api.md (reported line 3)May include surrounding context.

md
# SkillBoss API Hub Reference

Base URL: `https://api.heybossai.com/v1`

## Authentication

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

This example sends banned IP or threat-intelligence query data to an external third-party API using a bearer token. In the context of a fail2ban reporter, that means security telemetry from the monitored server is transmitted off-host, which can expose sensitive operational data and create privacy/compliance risk if done without explicit approval and data minimization.

Content

Scanner excerpt · references/skillboss-api.md (reported line 23)May include surrounding context.

Search (IP Threat Intelligence Lookup)

bash
curl -s "https://api.heybossai.com/v1/pilot" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type": "search", "inputs": {"query": "IP reputation threat report 1.2.3.4"}, "prefer": "balanced"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

This example sends banned IP or threat-intelligence query data to an external third-party API using a bearer token. In the context of a fail2ban reporter, that means security telemetry from the monitored server is transmitted off-host, which can expose sensitive operational data and create privacy/compliance risk if done without explicit approval and data minimization.

Content

Scanner excerpt · references/skillboss-api.md (reported line 23)May include surrounding context.

Search (IP Threat Intelligence Lookup)

bash
curl -s "https://api.heybossai.com/v1/pilot" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type": "search", "inputs": {"query": "IP reputation threat report 1.2.3.4"}, "prefer": "balanced"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

This chat example transmits IP-related analysis content to an external AI/API service. In a security-monitoring skill, sharing attacker IPs, incident context, or logs with a third party can leak sensitive detection data and potentially include more context than intended.

Content

Scanner excerpt · references/skillboss-api.md (reported line 34)May include surrounding context.

Chat (AI Analysis)

bash
curl -s "https://api.heybossai.com/v1/pilot" \
  -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type": "chat", "inputs": {"messages": [{"role": "user", "content": "Analyze this IP: 1.2.3.4"}]}, "prefer": "balanced"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

The hardcoded external endpoint confirms that data collected from fail2ban is sent to api.heybossai.com, creating a dependency on a third-party service for security-event processing. In a defensive monitoring context this may be intended behavior, but it still introduces confidentiality, compliance, and supply-chain risk because incident-related telemetry leaves the host and is processed externally.

Content

Scanner excerpt · scripts/check-ip.sh (reported line 15)May include surrounding context.

sh
exit 1
fi

RESPONSE=$(curl -s "https://api.heybossai.com/v1/pilot" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"type\": \"search\", \"inputs\": {\"query\": \"IP reputation threat intelligence abuse report $IP\"}, \"prefer\": \"balanced\"}")

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

The hardcoded external endpoint confirms that data collected from fail2ban is sent to api.heybossai.com, creating a dependency on a third-party service for security-event processing. In a defensive monitoring context this may be intended behavior, but it still introduces confidentiality, compliance, and supply-chain risk because incident-related telemetry leaves the host and is processed externally.

Content

Scanner excerpt · scripts/check-ip.sh (reported line 15)May include surrounding context.

sh
exit 1
fi

RESPONSE=$(curl -s "https://api.heybossai.com/v1/pilot" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"type\": \"search\", \"inputs\": {\"query\": \"IP reputation threat intelligence abuse report $IP\"}, \"prefer\": \"balanced\"}")

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The installer writes directly to /etc/fail2ban/action.d/skillboss-reporter.conf and edits /etc/fail2ban/jail.local without any interactive warning, backup, or confirmation. In a privileged install context, silent modification of security service configuration can unexpectedly alter host protections, break fail2ban behavior, or enable outbound reporting that the operator did not explicitly approve.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The script restarts fail2ban immediately after editing configuration, without prior disclosure or operator confirmation. Restarting a security control can temporarily disrupt protections or fail due to bad configuration, potentially leaving the system with degraded intrusion prevention at a sensitive moment.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The comment claims duplicate suppression lasts 15 minutes, but the code suppresses any IP ever logged as reported. This can permanently block future reports for recurring attackers, undermining monitoring accuracy and causing stale or incomplete abuse reporting that operators may not notice.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.