Back to skill

Security audit

CodeSift

Security checks for vulnerabilities and agentic risk

Overview

CodeSift provides a coherent code-review workflow with disclosed helpers and approval required before project changes.

Review project commands before executing them and use a disposable checkout for tests or benchmarks that may write files. Registry checks read package-manager settings and disclose dependency names; use --offline when needed. Run optional evaluation scaffolds only in an empty directory because they can overwrite files. Scanner gaps were independently investigated, but this assessment is static and does not verify runtime behavior.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • 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 Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (72)

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied code is a text-formatting utility. It does not inspect code, identify defects, evaluate integration contracts or CI gates, or produce audit findings. Its primary purpose materially differs from the declared auditing purpose. No external resource access or editing behavior is present.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied code implements a data loader, a materially different primary purpose from the declared code-auditing skill. It contains no code-review logic or reporting workflow. Although its location suggests it may be an evaluation fixture, the supplied chunk itself does not implement the declared behavior.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied function implements retention-based export cleanup, not a code audit. It reads filesystem metadata and calls unlink() on matching files. This destructive filesystem capability is not described by the declared purpose, and the function contains no findings, remediation planning, or approval mechanism. The evaluation-fixture path may indicate that this is sample code for an audit, but the supplied chunk itself performs cleanup rather than the declared review workflow.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied code performs a pricing calculation. It does not inspect code, identify systemic defects, or produce audit findings or remediation plans. Its primary purpose therefore differs materially from the declared purpose. No resource access or triggers are present.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied code implements a finance reporting function. It does not inspect code, identify defects, assess validation gates or performance claims, or produce remediation plans. Its primary purpose therefore materially differs from the declared auditing purpose. The implementations of the imported loader and pricing functions are not supplied, so no additional behavior is inferred.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied code maps task names to module attributes and imports the corresponding module when resolve() is called. It performs no code inspection, defect analysis, findings generation, or remediation planning. Its primary purpose is task resolution, materially different from the declared auditing purpose. Although its path suggests an evaluation fixture, the supplied chunk alone does not implement the declared behavior.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied code implements order API behavior rather than reviewing code. It contains no defect-analysis, audit-reporting, remediation-planning, or approval workflow. Its primary purpose therefore materially differs from the declared auditing purpose. The evaluation-fixture path may explain its presence in an audit package, but the supplied chunk alone does not implement the declared capability.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied code has a materially different primary purpose from the declared auditing skill. It contains no code-review workflow, findings generation, remediation planning, or approval handling. Its cache also only hits when both SKU and request timestamp match, potentially defeating repeated-lookup caching when timestamps vary. Although the file path suggests this could be an audit test fixture, the supplied chunk itself implements catalog access, not the declared auditing behavior.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied executable's primary behavior is operational order synchronization, not the declared code-auditing workflow. Its main function invokes the worker against http://localhost:8080 for order A1. Although the file path suggests an evaluation fixture, the supplied chunk contains no auditing logic or demonstrated integration that makes these requests a supporting implementation detail of the declared purpose.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The supplied chunk performs billing arithmetic, not the declared code-auditing workflow. It contains no defect analysis, findings, remediation planning, or approval handling. Its path suggests it may be an evaluation fixture, but the supplied code itself has a materially different purpose. No external resource access or unrelated triggers are evident.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The supplied script's primary function is dependency-name existence checking, which is materially different from the declared code-health audit. It explicitly limits its evidence to registry name existence and does not analyze unreachable paths, function contracts, redundant code, CI effectiveness, or performance claims. Network queries and package-manager configuration discovery are central to this separate function, not incidental implementation details of the described audit. The script does not install packages, execute project code, or edit files, so there is no demonstrated violation of the approval-before-editing restriction.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The supplied code implements an orders API client and display utility, not a code-auditing workflow. It contains no defect analysis, findings generation, remediation planning, or approval handling. Although the path suggests an evaluation fixture, the chunk's executable behavior has a materially different primary purpose from the declared description.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The supplied code implements inventory application behavior, not defect detection, audit reporting, or remediation planning. Its path suggests it may be an evaluation fixture supporting the declared auditing skill, but the chunk alone does not establish that relationship. Taken as the actual behavior supplied for assessment, its primary purpose differs materially from the description.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The supplied chunk implements a general-purpose process-control library, not the declared code-review workflow. It contains no repository analysis, defect detection, findings generation, remediation planning, or approval workflow. Command execution could support an audit, but this chunk does not connect that capability to auditing or constrain the commands to audit-related operations. Its demonstrated purpose therefore materially differs from the description. No network access, exfiltration, or direct source-code editing is shown.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · references/javascript.md (reported line 54)May include surrounding context.

md
Respect npm aliases, workspace/file/git sources, peer/optional declarations and
configured registries. The dependency helper applies scoped registries from the
project .npmrc and npmRegistryServer from .yarnrc.yml; pnpm-workspace.yaml and
lerna.json only produce a warning, so audit each member package (the units from
collect_facts.sh) with its own --root. A public-registry match does not validate
a locked version, package provenance or API.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · scripts/README.md (reported line 267)May include surrounding context.

md
inside the root, continuation lines, comments, -e and direct references, index
  options and --hash pins (marked hash_pinned); setup.cfg; Pipfile; and literal
  setup.py declarations, which are read even next to requirements files.
- npm declarations and aliases, with scoped registries from the project .npmrc
  and npmRegistryServer from .yarnrc.yml. pnpm-workspace.yaml and lerna.json
  produce a warning; audit member packages with their own --root.
- vcpkg and conanfile.txt declarations.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · scripts/README.md (reported line 291)May include surrounding context.

md
1. --registry-base URL (http or https, without credentials);
2. --mirror cn: TUNA for PyPI and the crates.io index, npmmirror for npm;
3. a public mirror found in effective configuration: platform pip.conf/pip.ini files, PIP_INDEX_URL and
   UV_INDEX_URL, .npmrc registry entries, or Cargo source replacement;
4. the default: the PyPI simple index, registry.npmjs.org and the index.crates.io
   sparse index.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · scripts/verify_packages.py (reported line 357)May include surrounding context.

python
def npm_entries(environ: dict, home: Path) -> tuple[list[dict], list[dict]]:
    """Read the user .npmrc (lower precedence) and npm registry environment overrides (higher)."""
    user = Path(
        environ.get("NPM_CONFIG_USERCONFIG")
        or environ.get("npm_config_userconfig")

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · scripts/verify_packages.py (reported line 361)May include surrounding context.

python
user = Path(
        environ.get("NPM_CONFIG_USERCONFIG")
        or environ.get("npm_config_userconfig")
        or home / ".npmrc"
    )
    try:
        files = npmrc_entries(user, display_path(user, home)) if user.is_file() else []

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% 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 · references/polyglot.md (reported line 69)May include surrounding context.

md
`set -e` does not apply inside conditions, `&&`/`||` lists or functions called
from them; `local x=$(cmd)` hides the failure of `cmd`; without `pipefail` a
pipeline reports only its last command. Quote expansions: `rm -rf "$dir/"` with
an empty `dir` targets `/`. Check `cd` failures, temporary files created with
`mktemp` and removed by a `trap`, and `#!/bin/sh` scripts that use bash features.
ShellCheck output is a candidate list. In CI scripts, also check exit-status

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
60% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · scripts/lib/check_runner.py (reported line 729)May include surrounding context.

python
with tempfile.TemporaryDirectory(prefix="codesift-test-") as directory:
        temp = Path(directory)
        report_path, metrics = temp / "junit.xml", temp / "metrics.json"
        env = dict(
            os.environ,
            PYTHONDONTWRITEBYTECODE="1",
            CI="true",

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
60% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · scripts/lib/check_runner.py (reported line 915)May include surrounding context.

python
"project": input_command(args, root, "project"),
        "baseline": input_command(args, root, "baseline"),
    }
    env = dict(os.environ, PYTHONDONTWRITEBYTECODE="1", CI="true")
    before = workspace_snapshot(root)
    failure = run_samples(result, commands, root, env, args)
    record_workspace_changes(result, root, before)

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · scripts/lib/dependencies.py (reported line 658)May include surrounding context.

python
def npmrc_entries(path: Path, origin: str) -> list[dict]:
    """Read registry lines from an .npmrc file by scope, keeping hosts and dropping tokens."""
    entries = []
    for number, line in enumerate(path.read_text(encoding="utf-8-sig").splitlines(), 1):
        match = NPMRC_REGISTRY.match(line)

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · scripts/lib/dependencies.py (reported line 684)May include surrounding context.

python
path = root / "package.json"
    data = load_manifest(path)
    records: list[dict] = []
    entries = npmrc_entries(root / ".npmrc", ".npmrc") if (root / ".npmrc").is_file() else []
    yarnrc = root / ".yarnrc.yml"
    if yarnrc.is_file():
        match = re.search(

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · scripts/lib/dependencies.py (reported line 684)May include surrounding context.

python
path = root / "package.json"
    data = load_manifest(path)
    records: list[dict] = []
    entries = npmrc_entries(root / ".npmrc", ".npmrc") if (root / ".npmrc").is_file() else []
    yarnrc = root / ".yarnrc.yml"
    if yarnrc.is_file():
        match = re.search(