Back to skill

Security audit

Systematic Review Screener

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to perform the promised literature-screening task, but its dependency install file and CSV report handling create safety risks users should review before installing.

Install only in an isolated virtual environment after replacing yaml with a pinned PyYAML version and removing or constraining dataclasses. Confirm any language restriction and screening threshold before use, prefer JSON output for untrusted reference data, and treat all screening results as recommendations requiring human review.

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

Warning
Location
scripts/main.py:374
Finding

Spreadsheet Formula Injection in Generated CSV Reports

Content
View full analysis
Remediation
View remediation
str: text = "" if value is None else str(value) effective = text.lstrip(" \t\r\n") if effective.startswith(("=", "+", "-", "@")): return "'" + text return text ``` Apply this helper to every scalar cell immediately before calling `writer.writerow()`. ]]>

T08 · Insecure Dependencies

Warning
Location
requirements.txt:1
Finding

Ambiguous and Unpinned Third-Party Dependencies

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (7)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill advertises executable workflows that read user-supplied input files and write outputs, but it does not declare any explicit tool scope such as allowed tools, path restrictions, or filesystem boundaries. In an agent setting, that ambiguity can enable over-broad file access or writes outside the intended workspace if the runtime or downstream implementation is permissive.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The natural-language criteria example explicitly restricts allowed studies to English only. The file does not present this as an optional user choice, nor does it justify the restriction as required for a region-specific or compliance-bound workflow, which conflicts with the language/locale policy guidance.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This YAML manifest/template limits allowed language to "English" without documenting whether this is optional, jurisdiction-specific, or required by a justified review protocol. In a reusable template, that broad default can ambiguously exclude non-English studies and may create unintended activation/screening behavior for users who do not intend to enforce an English-only review.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The template hard-codes an allowed language list containing only "English," which is a natural-language locale restriction. Because the file does not offer user opt-in/choice or explain a region-specific justification, it matches the policy-violation criterion for forced language constraints.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The code automatically excludes records when a heuristic language check falls below 0.5 and a language allowlist is present, without explicit confirmation that this filtering is intended for the review. In a systematic-review screening tool, silently filtering by language can bias evidence selection, omit relevant studies, and materially affect downstream conclusions or compliance with review methodology.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
96% confidence
Finding

The dependency is unpinned, so installs may resolve to different versions over time, introducing unpredictable behavior or newly published malicious or vulnerable releases into the environment. In this specific file, dataclasses is especially questionable because it is a standard-library feature on modern Python versions and the separately published backport should only be used conditionally for older interpreters.

Content

Scanner excerpt · requirements.txt (reported line 1)May include surrounding context.

text
dataclasses
yaml

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
99% confidence
Finding

The entry yaml is unpinned and also appears to reference the wrong package name, increasing supply-chain risk because dependency resolution may pull an unexpected or typosquatted package rather than the intended library. For a screening tool that likely processes imported review data, YAML parsing libraries are security-sensitive because unsafe or compromised parser packages can expose code execution or data integrity risks.

Content

Scanner excerpt · requirements.txt (reported line 2)May include surrounding context.

text
dataclasses
yaml