Back to skill

Security audit

Auto Bounty Hunter

Security checks for vulnerabilities and agentic risk

Overview

This skill is advertised as an automated GitHub issue-claiming and PR-submission system, but the shipped scripts only scan and queue issues while still encouraging unattended operation.

Review carefully before installing. As shipped, this is closer to a GitHub issue scanner and local queue tracker than a complete bounty automation system. Do not run it from cron or with broad GitHub permissions unless the documentation and scripts are corrected, defaults are made manual-review-first, and the queue-file update race/symlink issue is fixed.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/bounty_hunter.sh:67
Finding

Predictable Temporary Queue File Allows Symlink-Based File Clobbering

Content
View full analysis
"${QUEUE_FILE}.tmp" mv "${QUEUE_FILE}.tmp" "$QUEUE_FILE" ``` ### Technical Analysis The script writes queue updates to a predictable path, `${QUEUE_FILE}.tmp`, using ordinary shell redirection. Shell redirection follows symbolic links. If an attacker can write to the queue directory, they can create this predictable temporary path as a symbolic link to another file writable by the account running the script. When the script performs the redirection, `jq` output is written to the symlink target, truncating and replacing its contents. The subsequent `mv` operation does not prevent the initial target overwrite. The fixed temporary filename also creates a race condition between concurrent or scheduled script executions, potentially causing lost updates, corrupted queue state, or replacement of one execution's output by another. Successful exploitation requires the attacker to have write access to the skill's `data` directory or otherwise be able to create or replace `${QUEUE_FILE}.tmp`. ### Attack Path 1. The attacker obtains write access to the directory containing `data/queue.json`. 2. The attacker creates the predictable temporary path as a symbolic link: ```bash ln -s /path/to/target/file data/queue.json.tmp ``` 3. The skill runs `scripts/bounty_hunter.sh` under the victim account. 4. An eligible GitHub issue reaches `add_to_queue`. 5. Shell redirection follows `data/queue.json.tmp` and truncates the symlink target. 6. The generated queue JSON is written into the targ ...[truncated 763 chars]
Remediation
View remediation
"$tmp_file" chmod --reference="$QUEUE_FILE" "$tmp_file" 2>/dev/null || chmod 600 "$tmp_file" mv -f -- "$tmp_file" "$QUEUE_FILE" trap - RETURN ``` - Ensure the data directory is owned by the executing user and is not writable by untrusted users; use restrictive permissions such as `0700`. - Use `flock` around the complete read-modify-write operation so concurrent cron executions cannot overwrite each other's changes. - Validate that the queue directory and queue file are not symbolic links before performing updates. - Run the skill as an unprivileged dedicated account and avoid execution as `root`. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/tracker.sh:55
Finding

PR Tracker Uses a Predictable Temporary File for Queue Updates

Content
View full analysis
"${QUEUE_FILE}.tmp" mv "${QUEUE_FILE}.tmp" "$QUEUE_FILE" ``` ### Technical Analysis The tracker stores updated queue content in the fixed pathname `${QUEUE_FILE}.tmp`. Because the file is opened through shell redirection without exclusive creation or symlink checks, an attacker able to write to the queue directory can place a symbolic link at that path. The redirection truncates and writes to the symlink target using the privileges of the tracker process. Renaming the temporary path afterward does not undo the target overwrite. Concurrent tracker or scanner executions can also use the same temporary path, leading to races, queue corruption, and lost state updates. The vulnerable block is reached when a queue entry has a PR URL, is not already marked as merged, and GitHub reports the PR as merged. ### Attack Path 1. The attacker gains write access to the directory containing the configured queue file. 2. The attacker creates `${QUEUE_FILE}.tmp` as a symbolic link to a file writable by the tracker account. 3. The queue contains a submitted PR that GitHub reports as merged. 4. `scripts/tracker.sh` enters the merged-status update block. 5. Shell redirection opens the predictable temporary path and follows the attacker's symbolic link. 6. The target file is truncated and replaced with generated queue JSON under the tracker's privileges. 7. The subsequent rename may also leave the queue replaced by the maliciously prepared link. ### Impact Assessment The attacker can corrupt or overwrite files writable by the account running the tracker. The vulnerability can also destroy tracking state, lose queue records, produce inv ...[truncated 332 chars]
Remediation
View remediation
"$tmp_file" chmod --reference="$QUEUE_FILE" "$tmp_file" 2>/dev/null || chmod 600 "$tmp_file" mv -f -- "$tmp_file" "$QUEUE_FILE" trap - RETURN ``` - Protect the complete queue update with `flock`, including reading the existing queue and atomically renaming the result. - Set the data directory to mode `0700` and ensure it is owned only by the dedicated execution account. - Reject symbolic links for the queue file and its parent directory where appropriate. - Run scheduled tracking jobs with least privilege and prevent overlapping invocations. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This second mismatch indicates the skill may only track existing PR state via local files while claiming to perform end-to-end bounty hunting automation. Such misrepresentation can cause operators to run the skill with elevated GitHub permissions or automated schedules expecting one workflow, while the actual behavior is materially different and insufficiently disclosed.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This second mismatch indicates the skill may only track existing PR state via local files while claiming to perform end-to-end bounty hunting automation. Such misrepresentation can cause operators to run the skill with elevated GitHub permissions or automated schedules expecting one workflow, while the actual behavior is materially different and insufficiently disclosed.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The 'use when' description is broad enough to activate for common money-making, GitHub automation, or contribution-related requests, which increases the chance of the skill being invoked outside narrowly intended scenarios. In this context, broad activation is risky because the skill is framed around autonomous repository interactions and monetized workflow automation, making accidental triggering more consequential.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The markdown promotes automatic issue claiming and PR submission without prominently warning that these actions can modify external repositories, create public comments, and act under the user's GitHub identity. In this skill's context, that omission is especially dangerous because it encourages unattended cron-based operation, increasing the likelihood of unauthorized, spammy, or reputation-damaging actions at scale.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest describes a full automation workflow including claiming GitHub issues and submitting pull requests. In this file, the implemented behavior is limited to GitHub issue search, simple repository filtering, and adding selected issues to a local queue; there is no code to claim issues, modify repositories, or create PRs.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.