SecureAI-Scan
SecureAI-Scan is an offline CLI that performs import-resolved dataflow analysis on TypeScript, JavaScript, and Python code to find LLM/MCP/Agent-Skill/RAG-specific risks (prompt injection, tool poisoning, unsafe output handling, vector-store access control), mapped to the OWASP Top 10 for LLM Applications, Agentic Applications, and MCP Top 10. It distinguishes proven dataflow traces from heuristic keyword matches, scans .mcp.json/claude_desktop_config.json/SKILL.md for tool-poisoning and command-injection patterns (citing the WhatsApp MCP rug-pull and postmark-mcp backdoor), and includes evasion-resistant deobfuscation checks built in response to the "Cloak and Detonate" adversarial study (arXiv:2607.02357) that bypassed most published skill scanners. It also runs offline advisory checks against known-malicious/vulnerable packages (validated against CVE-2025-6514 and CVE-2024-34359) and integrates via GitHub Actions, pre-commit hooks, SARIF output, and an MCP server for Claude Code.
What it is
SecureAI-Scan run via npx --yes secureai-scan@0.11.0 scan . — an offline Node CLI (no Python interpreter, account, or config required) that auto-detects TS/JS/Python source, MCP config files, and Agent Skill bundles. The summary lists its detections; what it doesn't tell you is how findings are gated, what the exact invocations are, and where the tool deliberately stops.
How it works
Findings are sorted into three evidence tiers: proven (traced dataflow or parsed config fact), likely (resolved sink plus one heuristic hop), and heuristic. A default scan shows only proven + likely; heuristics are opt-in via --paranoid. A call counts as an "LLM call" only if it resolves to a real SDK import (openai, @anthropic-ai/sdk, ai, @google/genai, LangChain, Bedrock), which is the mechanism behind the "zero default false positives" claim.
Package advisories run offline on every scan with asymmetric logic: a CVE fires only when your pinned version is provably inside the affected range, but a documented-malicious package fires even on an ambiguous range, on the reasoning that installing a backdoor is unrecoverable. Skill bundles are scanned as whole directories against deobfuscated text variants (homoglyphs, zero-width splitting, payloads staged in .git/, build/, or *.test.ts), targeting the evasion techniques from Cloak and Detonate (arXiv:2607.02357).
What to do
npx --yes secureai-scan@0.11.0 scan .Other invocations the page states:
--output report.sarif— inline findings on PRs and the GitHub Security tabsecureai-scan bom .— AI-BOM inventory mapped to OWASP LLM Top 10 / EU AI Act needs--paranoid— include heuristic-tier findingsnpm run regression— scan real public repos against a committed hand-reviewed baseline, failing on any new proven/likely finding
New in this space: static config scanning for LiteLLM Proxy config.yaml (rules LLC001–LLC003) for hardcoded secrets, plaintext endpoints, and missing guardrails.
Caveats
- Not a general SAST or secrets scanner, and not a container/IaC scanner — the page is explicit that you run it alongside Semgrep/GHAS, not instead. A hardcoded exfiltration address with no LLM-shaped payload is caught only by the offline advisory list (DEP003), not by a dataflow rule.
- Metrics are from a 0.9.0 release candidate, not the pinned 0.11.0: 136/136 tests, 88.08% statement coverage, 6/6 on a labeled malicious-skill corpus, 0 new default-tier findings across 12,676 files in 9 repos. The advisory snapshot is a bundled point-in-time list regenerated by
scripts/sync-advisories.js, so freshness depends on that sync.
Organisations named here
- Cloak and Detonate
CVEs named here
- CVE-2025-6514
- CVE-2024-34359
Technologies named here
- SecureAI-Scan
- TypeScript / JavaScript codebases
- Python codebases
- Semgrep
- MCP configs
- GHAS
- SecureAI-Scan AI Security Advisor
- Agent Skill bundles
- MCP X-Ray
- LiteLLM Proxy config.yaml
- mcp-remote
- SecureAI-Scan MCP server
- postmark-mcp
- SecureAI-Scan Claude Skill
- llama-cpp-python
- CodeQL
- LangChain
- OpenSSF Scorecard
- Dependabot
- LLM/agent SDKs
- anthropics/skills repository
- Cisco AI Defense skill-scanner
- ts-morph
- vercel/ai repository
- cisco-ai-defense/skill-scanner eval corpus
- Tree-sitter
- Model Context Protocol
- TypeScript
- Python
- SARIF
- LiteLLM
- npm
- OWASP Top 10 for LLM Applications
- EU AI Act
Techniques named here
- Prompt injection via user input
- MCP tool poisoning
- MCP command injection
- Agent Skill poisoning
- Reify
- Disperse / SFS packing
- Payload staged in a *.test.ts file
- Homoglyph/zero-width Unicode obfuscation
- Opaque archive + unpack conjunction
- Credential exfiltration conjunction
- Known-malicious/vulnerable dependency advisory checking
Threat actors named here
- postmark-mcp backdoor
- WhatsApp MCP rug-pull
- 2026 MCP STDIO RCE disclosure
Related in AI Security
