LLM, MCP 서버, 벡터 스토어, 그리고 Agent Skills와 통신하는 코드를 위한 오프라인 스캐너입니다. 프롬프트 주입(prompt injection), MCP 명령어 주입 및 경로 탐색(path traversal), RAG 데이터 유출(data leaks), 독성 스킬(poisoned skills) 등을 찾아내며, 실제 임포트(imports)를 통해 소스 → 싱크 추적(source → sink trace)으로 각 발견 사항을 증명합니다.
기본 스캔은 입증할 수 있는 내용만 보고합니다. 계정 정보가 필요하지 않으며, 업로드도 없고, 아무것도 기기를 벗어나지 않습니다. TypeScript, JavaScript, Python, MCP 설정 파일(configs), 그리고 Agent Skill 번들(bundles)이 자동으로 감지됩니다.
npx --yes [email protected] scan .
MCP 서버는 일반적으로 다음과 같이 작성됩니다:
server.tool("git_log", "브랜치에 대한 히스토리 보기", { branch: z.string() }, async ({ branch }) => {
const { stdout } = await execAsync(`git log --oneline -n 20 ${branch}`);
return { content: [{ type: "text", text: stdout }] };
...
▌ CRITICAL MCP013 MCP 도구 인수가 셸 명령어에 도달함
PROVEN LLM10:2026 부적절한 출력 처리(Improper Output Handling) · ASI05 예상치 못한 코드 실행(Unexpected Code Execution) · MCP-Top10 MCP05 명령어 주입 및 실행(Command Injection & Execution)
source src/server.ts:9 MCP 도구 `git_log`의 인수 `branch` (모델 제어)
...
도구 인수는 모델에 의해 작성되며, 모델은 컨텍스트 내 텍스트가 지시하는 모든 것을 작성할 수 있습니다. 에이전트가 읽는 GitHub 이슈에서 *
, LangChain, Bedrock, MCP SDKs 등). client라는 이름의 Google Maps 클라이언트가 플래그 지정되지 않습니다. 모든 발견 사항에는 증거 계층(evidence tier)이 있습니다. proven은 추적된 데이터 흐름 또는 구문 분석된 구성 사실을 의미합니다. likely는 휴리스틱 점프가 있는 해결된 싱크를 의미합니다. heuristic은 패턴 일치로, --paranoid 플래그를 전달하지 않으면 숨겨집니다. 오탐(False positives)은 빌드를 실패시킵니다. test-fixtures/safe/는 오탐을 유발했던 모든 패턴을 담고 있으며, 여기에 발견된 단 하나의 사항이라도 npm test를 실패시킵니다. npm run regression은 실제 레포지토리(OpenAI, Anthropic 및 Vercel AI SDKs, 공식 MCP 서버 및 SDK, LlamaIndex, LiteLLM, 실제 스킬 코퍼스)를 스캔하며, 사람이 읽지 않은 새로운 발견 사항이 있으면 실패합니다. 테스트 및 벤치마킹을 참조하십시오. 이 도구는 LLM, MCP, RAG, 에이전트 위험에 의도적으로 초점을 맞추었습니다. 일반적인 SAST(정적 애플리케이션 보안 테스트) 또는 비밀 스캐너가 아닙니다. 다른 스캐너와 함께 실행하십시오.
프롬프트 주입(Prompt injection), 추적됨. 사용자 입력이 함수 및 파일 경계를 넘어 시스템 프롬프트에 도달하는 경우입니다. 사용자 역할 메시지 내의 입력은 권장되는 패턴이며 플래그 지정되지 않습니다. MCP 서버. 툴 인자로부터의 명령어 주입(Command injection) 및 경로 순회(Path traversal), 툴 오염(Tool poisoning)(보이지 않는 유니코드, 주입된 지침, 크로스-툴 섀도잉), 그리고 신뢰할 수 없는 툴 결과입니다. MCP 구성. mcp.json, claude_desktop_config.json, 및 .cursor/mcp.json에 있는 비고정(Unpinned) npx -y / uvx 서버, 인라인 비밀, 평문 전송, 셸 인터프리터 실행기입니다.
에이전트 스킬(Agent Skills). 오염된 SKILL.md 파일 및 번들로, 전체 디렉토리와 난독화(homoglyphs, zero-width splitting, .git/ 또는 *.test.ts에 스테이징된 페이로드)를 통해 스캔됩니다. 회피 방지성(evasion resistance)을 참조하십시오. RAG 및 벡터 스토어. 테넌트 필터 없이 검색하는 경우, 사용자 콘텐츠가 공유 스토어에 주입되고 검색된 텍스트가 특권 프롬프트에 배치되는 경우입니다. 출력 처리. LLM 출력이 eval 또는 exec에 도달하는 경우입니다.
, SQL 또는 HTML 싱크(sinks)로 파싱되며 스키마 없이 파싱됩니다.** 알려진 취약 패키지, 오프라인 모드.** LLM/MCP/RAG 패키지에 대한 문서화된 악성 릴리스 및 HIGH/CRITICAL CVE 정보가 버전 범위별로 제공됩니다.** 터미널용 보고서, SARIF (GitHub 코드 스캐닝), JSON, Markdown, HTML 형식의 보고서와 더불어 AI 구성 요소 목록(bill of materials) 및 OWASP 위협 모델을 제공합니다.
secureai-scan installed # 이미 신뢰하는 AI 클라이언트의 MCP 서버 및 스킬 확인
secureai-scan installed --deep # 각 서버의 코드를 명령 주입 및 경로 탐색 공격에 대해 추가로 검사```
`installed`
Claude Code, Claude Desktop, Cursor, VS Code, Windsurf, Gemini CLI, Cline, Roo Code, Amazon Q 등 사용자별 MCP 설정을 읽습니다. 또한 `~/.claude/skills` 디렉토리도 확인합니다.
실제 파일과 라인 단위로 고정되지 않은 패키지, 알려진 악성 또는 취약한 릴리스, 인라인 비밀(inline secrets), 평문 전송(plaintext transports), 그리고 오염된 스킬을 보고합니다. 이 기능은 오프라인으로 작동합니다. `--deep`
npm으로 실행되는 각 서버를 `npm pack`을 사용하여 가져오고 (설치하거나 실행하지 않음) 로컬에서 실행되는 서버도 제자리에 읽어 들인 후, 전체 규칙 세트를 해당 코드에 적용합니다.
가장 중요한 순간은 스킬이 `~/.claude/skills/`에 배치되거나 서버가 `.mcp.json`에 배치되기 전입니다:
secureai-scan skill anthropics/skills # GitHub의
GitHub Action(인라인 PR 주석, Security 탭) 또는 pre-commit hook을 사용하세요. 설정 복사 붙여넣기: CI 통합.
48개의 규칙은 LLM 애플리케이션을 위한 OWASP Top 10 (2026), Agentic (ASI) 목록, 그리고 OWASP MCP Top 10에 매핑됩니다. 전체 표는 **규칙(Rules)**에서 확인하세요. 아무거나 하나를 선택하여 secureai-scan explain <RULE_ID>를 실행할 수 있습니다.
Semgrep, Trivy, GitHub Advanced Security는 도구 인자 오염(tool-argument taint), MCP 포이즈닝(MCP poisoning), 스킬(skills), 또는 RAG 접근 제어(RAG access control)를 모델링하지 못합니다. 이것은 일반적인 SAST가 아니므로 기존 스캐너를 유지하고 여기에 추가하세요. 비교표(Comparison table).
Claude Code 플러그인 (스킬 + MCP 서버 통합 설치):
/plugin marketplace add akanthed/SecureAI-Scan
/plugin install secureai-scan@secureai-scan
다른 모든 MCP 클라이언트(Cursor, VS Code, Windsurf, Gemini CLI 등)는 서버를 직접 실행할 수 있습니다:
{ "mcpServers": { "secureai-scan": { "command": "npx", "args": ["--yes", "--package=secureai-scan", "secureai-scan-mcp"] } }
이것은 scan_repository, explain_rule, generate_bom, 그리고 scan_untrusted_target을 노출합니다. 스킬 자체는 skills/secureai-scan/입니다.
- 실제 저장소 스캔 결과: CVE 연구, 생태계 조사, 이 스캐너에서 발견된 실제 코드 버그
- 테스트 및 벤치마킹 · 아키텍처 · 탐지 엔진 및 증거 계층(evidence tiers)
- Agent Skills의 회피 저항성 · OWASP 2026 커버리지 · FAQ · 로드맵
- MCP X-Ray에 MCP 도구 설명을 붙여넣어 브라우저에서 설치 없이 확인하세요.
CI는 CodeQL, 프로덕션 종속성 감사(production dependency audit), OpenSSF Scorecard, Dependabot과 함께 Linux, Windows, macOS에서 실행되며, 이 스캐너 자체의 차단 셀프-스캔을 수행합니다. 모든 npm 릴리스는 prepublishOnly를 통해 테스트, 커버리지 하한선, 그리고 실제 저장소 회귀 게이트(regression gate)를 실행하며, GitHub Actions는 어떠한 npm 자격 증명도 보유하지 않습니다. 릴리스 보증, 거버넌스 및 보안 보고서를 확인하세요.
이것은 SLA가 없는 단일 유지 관리자 프로젝트입니다. 정적 스캐닝은 경계(boundary)가 아니라 필터이므로, 어떤 스캐너가 무엇이라고 말하든 신뢰할 수 없는 코드는 신뢰하지 않는 것으로 취급해야 합니다.
기여는 환영합니다. CONTRIBUTING.md를 참고하세요.
그리고 작성 규칙을 따르세요. 모든 규칙 변경은 test-fixtures/safe/ 폴더를 깨끗하게 유지하고 npm run regression을 통과해야 합니다.
오탐(false positive)은 버그로 간주되며, 근본적으로 수정되어 픽스처로 고정됩니다.
MIT © Akshay Kanthed