live · scanning repos
Scanrepo
github.com
github.com / trailofbits

trailofbits/skills

Python·1294 files·commit 9b28133·scanned 4d ago·cached ✓
25/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.

score capped at 256,720 stars — findings likely legitimate code patterns

verdict accurate?
19% file coverage
Research / educational context
threat-state: lowlive

FINDINGS ░▒▓

warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign..github/scripts/validate_plugin_metadata.py
    """Contents of `rel_path` at `ref`, or None when it did not exist there."""
    result = subprocess.run(
        ["git", "show", f"{ref}:{rel_path}"],
        cwd=repo_root,
+4
warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.plugins/static-analysis/skills/codeql/scripts/test_build_log.py
def _bash(script: str, cwd: Path) -> subprocess.CompletedProcess[str]:
    return subprocess.run(
        ["bash", "-c", f'. "{BUILD_LOG}"\n{script}'],
        cwd=cwd,
+4
criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.plugins/static-analysis/skills/codeql/scripts/test_shell_blocks.py
    try:
        compile(body, "<embedded>", "exec")
    except SyntaxError as error:
        pytest.fail(f"{origin} embeds Python that does not parse: {error}\n{body}")
+7
warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.plugins/static-analysis/skills/codeql/scripts/test_shell_blocks.py
        cleaned = re.sub(r"<[A-Za-z0-9_ .-]+>", "PLACEHOLDER", source)
        result = subprocess.run(["bash", "-n"], input=cleaned, capture_output=True, text=True)
        if result.returncode != 0:...
+4
warningRust unsafe blockunsafe blocks bypass Rust's memory safety guarantees. Malware uses them for raw pointer manipulation, shellcode injection, or calling dangerous foreign functions.plugins/zeroize-audit/tests/rust-regression/fixtures/dangerous_apis_src/positive.rs
fn wipe_secret(key: &mut SecretKey) {
    unsafe { ptr::write_bytes(key as *mut SecretKey, 0, 1); }
}
+3
criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.plugins/constant-time-analysis/ct_analyzer/script_analyzers.py
        # Unpredictable timing
        "eval": "eval() has unpredictable timing characteristics",
        # Predictable randomness
        "math.random": "Math.random() is predictable; use crypto.getR...
+8
criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.plugins/constant-time-analysis/ct_analyzer/script_analyzers.py
        # Unpredictable timing
        "eval": "eval() has unpredictable timing characteristics",
        # Predictable randomness
        "math.random": "Math.random() is predictable; use crypto.getR...
+7
warningRust unsafe blockunsafe blocks bypass Rust's memory safety guarantees. Malware uses them for raw pointer manipulation, shellcode injection, or calling dangerous foreign functions.plugins/constant-time-analysis/ct_analyzer/tests/triage_samples/triage_rust.rs
    for i in 0..len {
        unsafe {
            if *received_tag.add(i) != *computed_tag.add(i) {
                return 0;
+3
criticalFunction() constructor detectednew Function() is equivalent to eval() and can execute arbitrary code strings.plugins/insecure-defaults/tests/harness.js
  const body = src.replace(/^export const meta/m, "const meta");
  return new Function(
    "agent",
    "parallel",
+5
criticalFunction() constructor detectednew Function() is equivalent to eval() and can execute arbitrary code strings.plugins/semgrep-rule-variant-creator/tests/workflow-functions.test.mjs
function load(name, ...preamble) {
  return new Function(`${preamble.join('\n')}\n${extract(name)}\nreturn ${name}`)()
}
+5
criticalFunction() constructor detectednew Function() is equivalent to eval() and can execute arbitrary code strings.plugins/static-analysis/tests/codeql_build_harness.js
  const body = src.replace(/^export const meta/m, "const meta");
  return new Function("agent", "parallel", "phase", "log", "args", `return (async () => {\n${body}\n})()`);
}
+5
infoSuspicious files are not reachable from entry pointsFlagged files exist but are not imported by any entry point. They may be dead code, tests, or attack payloads triggered by another mechanism.+2
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code..claude-plugin/marketplace.json+4
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.plugins/fp-check/hooks/hooks.json+4
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.plugins/trailmark/.claude-plugin/plugin.json+4
warningHigh-entropy string literalsFound 14 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode..github/scripts/validate_plugin_metadata.py+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order..github/scripts/validate_plugin_metadata.py+3
warningHigh-entropy string literalsFound 7 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.plugins/c-review/scripts/test_generate_sarif.py+3
warningHigh-entropy string literalsFound 6 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.plugins/rust-review/scripts/test_generate_sarif.py+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.plugins/static-analysis/skills/codeql/scripts/test_shell_blocks.py+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.plugins/yara-authoring/skills/yara-rule-authoring/scripts/test_yara_rules.py+3
infoAuthor has no other public repositoriesGitHub user "dependabot[bot]" has no other public repositories, common for burner accounts used in scams.+2

Scores are heuristics. A “safe” verdict means no known-malicious patterns were found — clever malware can look boring. Wrong verdict? Flag it above; confirmed false positives become regression tests.

240 files scanned @ 9b28133 | 8/20/2026 | heuristic scan — always review manually

risk by category
code execution25
network & exfiltration0
file system access0
obfuscation15
supply chain2
owasp / injection0
telemetry
files 240/1294rules hit 22engine v5commit 9b28133

github

trailofbits/skills

Trail of Bits Claude Code skills for security research, vulnerability detection, and audit workflows

Python
6720
580
222d
1294 files
240 scanned(19%)
9b28133

architecture░▒▓

entry (5) flagged (42) pkg (89)
214 nodes · 414 edgesscroll to zoom · click node to jump to finding