github Python analyzed 77befdb

vishnu-77/secchecker

v0.5.1
github

Static security scanner for AI agents, MCP tools, and LLM applications. Detects OWASP LLM Top 10 risks, unsafe tool use, prompt injection paths, secrets, and AI infrastructure misconfigurations. Zero runtime dependencies.

maintainer
vishnu-77
licence
MIT
first seen
2026-08-04
last seen
2026-09-11
releases · 30d
3
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 0 tools
transport stdio counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 77befdb · analyzer v33 · 3d ago

danger signals4

code evidence v0.5.1 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 110

filesystem 23

  • fs (weak) vishnu-77-secchecker-77befdb/bench/fixtures/adversarial/rag_leakage/path_read_text.py :3 # of open().read() - a different idiom already covered by the pattern's own
  • fs (weak) vishnu-77-secchecker-77befdb/bench/fixtures/benign_realistic/prompt_template_file.py :9 prompt = open("prompt_templates/greeting.txt").read()
  • fs (weak) vishnu-77-secchecker-77befdb/bench/fixtures/vulnerable/rag_leakage/raw_file_read.py :5 context = open("customer_records.txt").read()
  • fs vishnu-77-secchecker-77befdb/bench/perf.py :20 import shutil
  • fs vishnu-77-secchecker-77befdb/bench/run.py :20 from pathlib import Path
  • fs vishnu-77-secchecker-77befdb/brand/animate_mark.py :10 from pathlib import Path
  • fs vishnu-77-secchecker-77befdb/brand/render_assets.py :10 from pathlib import Path
  • fs vishnu-77-secchecker-77befdb/brand/verify_assets.py :5 from pathlib import Path
  • fs vishnu-77-secchecker-77befdb/secchecker/ast_scanner.py :14 from pathlib import Path
  • fs vishnu-77-secchecker-77befdb/secchecker/cli.py :490 with open(tmp_path, 'w', encoding='utf-8') as tf:
  • fs vishnu-77-secchecker-77befdb/secchecker/config.py :5 from pathlib import Path
  • fs vishnu-77-secchecker-77befdb/secchecker/core.py :4 from pathlib import Path
show 11 more
  • fs vishnu-77-secchecker-77befdb/secchecker/dependency_scanner.py :19 from pathlib import Path
  • fs vishnu-77-secchecker-77befdb/secchecker/devsecops_scanner.py :5 from pathlib import Path
  • fs vishnu-77-secchecker-77befdb/secchecker/entropy.py :5 from pathlib import Path
  • fs vishnu-77-secchecker-77befdb/secchecker/html_reporter.py :141 with open(output_path, 'w', encoding='utf-8') as f:
  • fs vishnu-77-secchecker-77befdb/secchecker/llm_scanner.py :6 from pathlib import Path
  • fs vishnu-77-secchecker-77befdb/secchecker/reporter.py :3 from pathlib import Path
  • fs vishnu-77-secchecker-77befdb/secchecker/sarif_reporter.py :97 with open(filepath, "r", encoding="utf-8", errors="replace") as f:
  • fs (weak) vishnu-77-secchecker-77befdb/tests/test_benchmark_claims.py :11 from pathlib import Path
  • fs (weak) vishnu-77-secchecker-77befdb/tests/test_cli_contract.py :10 from pathlib import Path
  • fs (weak) vishnu-77-secchecker-77befdb/tests/test_reporter.py :18 with open(json_file) as f:
  • fs (weak) vishnu-77-secchecker-77befdb/tests/test_sarif_schema.py :9 from pathlib import Path

shell / exec 8

  • shell (weak) vishnu-77-secchecker-77befdb/bench/fixtures/adversarial/tool_output_execution/os_popen_variant.py :8 os.popen(mcp_result)
  • shell (weak) vishnu-77-secchecker-77befdb/bench/fixtures/adversarial/tool_output_execution/subprocess_call.py :2 # (a tool's raw result executed as a shell command), via subprocess.call()
  • shell (weak) vishnu-77-secchecker-77befdb/bench/fixtures/vulnerable/tool_output_execution/mcp_result_os_system.py :1 """Vulnerable: an MCP tool's raw result handed to os.system() -- a distinct
  • shell (weak) vishnu-77-secchecker-77befdb/bench/fixtures/vulnerable/tool_output_execution/tool_result_shell.py :3 import subprocess
  • shell vishnu-77-secchecker-77befdb/brand/scenarios.py :103 os.system(mcp_result)''',
  • shell vishnu-77-secchecker-77befdb/brand/verify_assets.py :7 import subprocess
  • shell vishnu-77-secchecker-77befdb/secchecker/cli.py :467 import subprocess
  • shell (weak) vishnu-77-secchecker-77befdb/tests/test_cli_contract.py :8 import subprocess

secrets 2

  • secrets (weak) vishnu-77-secchecker-77befdb/tests/test_ast_scanner.py :67 'openai_api_key = os.getenv("OPENAI_API_KEY")\n'
  • secrets (weak) vishnu-77-secchecker-77befdb/tests/test_llm_scanner.py :408 real_value = 'print(os.getenv("ANTHROPIC_API_KEY"))'

database 1

  • db vishnu-77-secchecker-77befdb/demo/app.py :37 import sqlite3

declared dependencies 6

  • pytest@>=6.0
  • pytest-cov@>=2.0
  • flake8@>=3.8
  • black@>=21.0
  • mypy@>=0.800
  • jsonschema@>=4.0