Back to skill

Security audit

Agentic Paper Digest Skill

Security checks for vulnerabilities and agentic risk

Overview

This skill has a legitimate paper-digest purpose, but its installer runs unpinned remote code and its launch scripts treat configuration files as executable shell code.

Review this carefully before installing. Only run it in an isolated environment without unrelated secrets, pin or verify the upstream repository and dependencies first, avoid putting long-lived API keys in .env, and do not use stop_api.sh unless you are sure port 8000 is only used by this tool.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (4)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/bootstrap.sh:5
Finding

Mutable Remote Repository Is Downloaded, Installed, and Executed Without Integrity Verification

Content
View full analysis
/dev/null 2>&1; then if [ -d "$PROJECT_DIR/.git" ]; then echo ">> Updating repo in $PROJECT_DIR" git -C "$PROJECT_DIR" pull --ff-only else echo ">> Cloning repo into $PROJECT_DIR" git clone "$REPO_URL" "$PROJECT_DIR" fi ``` ```bash echo ">> Git not available. Downloading zip to $PROJECT_DIR" mkdir -p "$PROJECT_DIR" tmp_zip="$(mktemp -t agentic_paper_digest.XXXXXX).zip" if command -v curl >/dev/null 2>&1; then curl -L "$ZIP_URL" -o "$tmp_zip" elif command -v wget >/dev/null 2>&1; then wget -O "$tmp_zip" "$ZIP_URL" else "$PY_BIN" - "$ZIP_URL" "$tmp_zip" <<'PY' import sys import urllib.request url, out = sys.argv[1], sys.argv[2] urllib.request.urlretrieve(url, out) PY fi tmp_dir="$(mktemp -d)" if command -v unzip >/dev/null 2>&1; then unzip -q "$tmp_zip" -d "$tmp_dir" else "$PY_BIN" - "$tmp_zip" "$tmp_dir" <<'PY' import sys import zipfile zipfile.ZipFile(sys.argv[1]).extractall(sys.argv[2]) PY fi src_dir="$tmp_dir/agentic_paper_digest-main" if [ ! -d "$src_dir" ]; then echo "Downloaded archive did not contain expected folder: $src_dir" exit 1 fi cp -R "$src_dir/." "$PROJECT_DIR/" rm -rf "$tmp_zip" "$tmp_dir" ``` ```bash echo ">> Installing Python deps" pip install -r requirements.txt ``` The retrieved module is subsequently executed by the launchers: ```bash python -m ...[truncated 2333 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/run_cli.sh:20
Finding

Environment Configuration Files Are Executed as Shell Code

Content
View full analysis
> Created .env from .env.example" fi ``` ### Technical Analysis The Bash `source` command does not parse `.env` as a data-only configuration format. It evaluates the target file as shell code. Consequently, command substitutions, function definitions, pipelines, redirections, and arbitrary commands in `.env` execute with the launcher's privileges. The `ENV_FILE` path is also caller-controlled. This is useful for configuration selection, but it means that any selected file is treated as trusted executable code rather than untrusted data. The risk is amplified because bootstrap can copy `.env.example` from the mutable remote repository to `.env`. A compromised upstream repository could therefore place shell commands in `.env.example`, which would be copied locally and executed by the next CLI or API launch. ### Attack Path 1. An attacker modifies the downloaded `.env.example`, writes to the local `.env`, or convinces the user to select a malicious file through `ENV_FILE`. 2. The file contains shell syntax such as `$(command)`, a direct command, a redirect, or a function invocation. 3. The user runs `scripts/run_cli.sh` or `scripts/run_api.sh`. 4. The launcher invokes `source "$ENV_FILE"`. 5. Bash executes the attacker's commands before starting `paper_finder`. ### Impact Assessment Exploitation provides arbitrary command execution ...[truncated 338 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/run_cli.sh:20
Finding

SkillBoss API Credential Can Be Redirected to an Arbitrary Provider Endpoint

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/stop_api.sh:4
Finding

API Shutdown Script Can Forcibly Terminate Unrelated Processes

Content
View full analysis
/dev/null 2>&1; then lsof -ti tcp:8000 | xargs kill -9 2>/dev/null || true fi pkill -f "uvicorn.*paper_finder.webapp" 2>/dev/null || true pkill -f "paper_finder serve" 2>/dev/null || true ``` ### Technical Analysis The first command identifies every process associated with TCP port 8000 and sends `SIGKILL` without verifying that the process belongs to this Skill. If an unrelated service occupies that port, it is terminated. The subsequent `pkill -f` operations match complete process command lines. They do not validate the executable path, project working directory, process owner beyond the operating system's normal signal restrictions, parent process, start time, or a PID recorded by this Skill. Use of `SIGKILL` prevents graceful shutdown and cleanup. Broad process matching exceeds the authority necessary to stop the specific server started by `run_api.sh`. ### Attack Path 1. An unrelated application listens on port 8000, or its command line happens to match one of the broad `pkill` expressions. 2. A user invokes `scripts/stop_api.sh`. 3. `lsof` returns the unrelated process ID or `pkill -f` matches its command line. 4. The script sends a termination signal; the port-based path uses unconditional `SIGKILL`. 5. The unrelated service stops without an opportunity to flush pending data or clean up resources. A local attacker could also deliberately construct a command line that matches the pattern, causing the script to terminate a chosen same-user process when the victim invokes it. ### Impact Assessment The script can cause denial of service against unrelated processes owned by the invoking user. Forced termination may result in interrupted work, incomplete writes, corrupted application state, or loss of in-memory ...[truncated 191 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (15)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The skill includes process-management behavior such as stopping a local API server and possibly killing processes on port 8000, which is outside a narrow 'paper digest' expectation. Even when intended for convenience, undeclared process-control actions can disrupt unrelated local services if the port is reused or detection logic is imprecise.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The skill includes process-management behavior such as stopping a local API server and possibly killing processes on port 8000, which is outside a narrow 'paper digest' expectation. Even when intended for convenience, undeclared process-control actions can disrupt unrelated local services if the port is reused or detection logic is imprecise.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
82% confidence
Finding

The skill operationalizes access to credentials via a workspace .env file that is auto-loaded by wrappers, creating a clear pathway for secrets to be consumed by downloaded code and subprocesses. In a skill that also bootstraps remote code, this context raises the danger because any compromised or changed upstream code could read and misuse the API key.

Content

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

md
## Configuration
Config files live in `PROJECT_DIR/config`. Environment variables can be set in the shell or via a `.env` file. The wrappers here auto-load `.env` from `PROJECT_DIR` (override with `ENV_FILE=/path/to/.env`).

**Environment (.env or exported vars)**
- `SKILLBOSS_API_KEY`: required — authenticates all LLM calls via SkillBoss API Hub (`https://api.heybossai.com/v1/pilot`).
- `LITELLM_MODEL_RELEVANCE`, `LITELLM_MODEL_SUMMARY`: models for relevance and summarization (summary defaults to relevance model if unset). Leave unset to let SkillBoss API Hub auto-route.
- `LITELLM_TEMPERATURE_RELEVANCE`, `LITELLM_TEMPERATURE_SUMMARY`: lower for more deterministic output.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/bootstrap.sh (reported line 80)May include surrounding context.

sh
echo ">> Installing Python deps"
pip install -r requirements.txt

if [ ! -f ".env" ] && [ -f ".env.example" ]; then
  cp .env.example .env
  echo ">> Created .env from .env.example"
fi

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/bootstrap.sh (reported line 81)May include surrounding context.

sh
pip install -r requirements.txt

if [ ! -f ".env" ] && [ -f ".env.example" ]; then
  cp .env.example .env
  echo ">> Created .env from .env.example"
fi

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/bootstrap.sh (reported line 82)May include surrounding context.

sh
pip install -r requirements.txt

if [ ! -f ".env" ] && [ -f ".env.example" ]; then
  cp .env.example .env
  echo ">> Created .env from .env.example"
fi

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/bootstrap.sh (reported line 85)May include surrounding context.

sh
pip install -r requirements.txt

if [ ! -f ".env" ] && [ -f ".env.example" ]; then
  cp .env.example .env
  echo ">> Created .env from .env.example"
fi

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill requires shell execution and network access but does not declare an explicit tool scope or permissions boundary. This increases the chance that an agent will execute bootstrap, install, and runtime commands with broader capabilities than the user expects, reducing auditability and consent around code download and execution.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The instructions tell the agent to create or edit a .env file containing an API key, but they do not include safeguards for secure credential handling. This can lead to secrets being stored insecurely, echoed in logs, committed to repositories, or exposed to other tools and subprocesses in the workspace.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
82% confidence
Finding

The bootstrap script downloads and installs code directly from a remote GitHub repository/ZIP without any integrity pinning or checksum/signature verification. If the upstream repository, release path, or network trust chain is compromised, users may execute attacker-controlled code during bootstrap and subsequent pip installation.

Content

Scanner excerpt · scripts/bootstrap.sh (reported line 32)May include surrounding context.

sh
echo ">> Git not available. Downloading zip to $PROJECT_DIR"
    mkdir -p "$PROJECT_DIR"
    tmp_zip="$(mktemp -t agentic_paper_digest.XXXXXX).zip"
    if command -v curl >/dev/null 2>&1; then
      curl -L "$ZIP_URL" -o "$tmp_zip"
    elif command -v wget >/dev/null 2>&1; then
      wget -O "$tmp_zip" "$ZIP_URL"

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 76)May include surrounding context.

md
# Map SKILLBOSS_API_KEY to LiteLLM provider settings for SkillBoss API Hub
if [ -n "${SKILLBOSS_API_KEY:-}" ]; then
  export LITELLM_API_BASE="${LITELLM_API_BASE:-https://api.heybossai.com/v1}"
  export LITELLM_API_KEY="${SKILLBOSS_API_KEY}"
fi

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 107)May include surrounding context.

md
# Map SKILLBOSS_API_KEY to LiteLLM provider settings for SkillBoss API Hub
if [ -n "${SKILLBOSS_API_KEY:-}" ]; then
  export LITELLM_API_BASE="${LITELLM_API_BASE:-https://api.heybossai.com/v1}"
  export LITELLM_API_KEY="${SKILLBOSS_API_KEY}"
fi

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 · scripts/run_api.sh (reported line 33)May include surrounding context.

sh
# Map SKILLBOSS_API_KEY to LiteLLM provider settings for SkillBoss API Hub
if [ -n "${SKILLBOSS_API_KEY:-}" ]; then
  export LITELLM_API_BASE="${LITELLM_API_BASE:-https://api.heybossai.com/v1}"
  export LITELLM_API_KEY="${SKILLBOSS_API_KEY}"
fi

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 · scripts/run_cli.sh (reported line 33)May include surrounding context.

sh
# Map SKILLBOSS_API_KEY to LiteLLM provider settings for SkillBoss API Hub
if [ -n "${SKILLBOSS_API_KEY:-}" ]; then
  export LITELLM_API_BASE="${LITELLM_API_BASE:-https://api.heybossai.com/v1}"
  export LITELLM_API_KEY="${SKILLBOSS_API_KEY}"
fi

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

This code creates a local .env file and references SKILLBOSS_API_KEY, which involves handling sensitive configuration, but there is no prior warning or explanatory comment about creating a credentials-bearing file. Although the final echo mentions editing .env, the disclosure comes only after the file operation and does not clearly warn about sensitive secret storage.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.