
SecureAI-Scan v0.3.1
SecureAI-Scan은 AI 기반 앱에 특화된 보안 문제(프롬프트 인젝션, MCP 도구 남용, RAG 데이터 오염, 에이전트 신뢰 위반 등)를 찾기 위해 TypeScript 및 JavaScript 코드베이스를 스캔하는 CLI 도구입니다.
SecureAI-Scan
TypeScript, JavaScript, Python 코드에서 LLM, MCP, Agent Skill, RAG 위험을 스캔하는 오프라인 CLI — import 해석 기반 데이터 흐름 증거, 기본 오탐(false positive) 0건, OWASP LLM/ASI/MCP Top 10에 매핑.
이 분야의 대부분 스캐너는 키워드를 패턴 매칭한 뒤 이를 발견 항목으로 간주합니다. SecureAI-Scan은 실제 import 해석된 코드를 통해 실제 소스 → 흐름 → 싱크 경로를 추적하며, 기본 스캔은 증명할 수 있는 것만 보여줍니다. 계정 불필요, 클라우드 업로드 없음, 어떤 데이터도 머신을 벗어나지 않습니다.
공식 OWASP Top 10 for LLM Applications 2026, Top 10 for Agentic Applications (2026), 그리고 MCP Top 10을 출시 주부터 모두 다룹니다.
30초 만에 시작하기```bash
npx --yes [email protected] scan .
계정, 클라우드 업로드, Python 인터프리터, 또는 구성이 필요하지 않습니다. TypeScript, JavaScript, Python, MCP 구성, 그리고 Agent Skill 번들은 자동으로 감지됩니다.
**측정된 `0.9.0` 릴리스 후보:** 136/136 테스트 · 88.08% 문장 커버리지 · 9개 공개 저장소의 12,676개 파일 · 검토된 기준선 대비 신규 기본 계층 지문 0건. [증거](https://github.com/akanthed/secureai-scan/blob/main/docs/benchmarks/v0.9.0.json) · [방법론 및 한계](https://github.com/akanthed/secureai-scan/blob/main/docs/ReleaseAssurance.md)```
▌ HIGH AI001 Prompt injection via user input
PROVEN LLM01:2026 Prompt Injection
source src/chat.ts:8 request data `req.body.input`
flow src/chat.ts:13 passed as `systemPrompt`
sink src/chat.ts:10 openai.chat.completions.create — system role (OpenAI)
fix Keep system prompts static; pass user input as a user-role message.
이것이 당신을 위한 것인가요? SecureAI-Scan은 의도적으로 LLM, MCP, RAG/에이전트 위험 — 프롬프트 인젝션, 도구 중독, 안전하지 않은 출력 처리, 벡터 스토어 접근 제어, 에이전트 스킬 중독 — 에 범위를 한정합니다. 일반적인 SAST 또는 시크릿 스캐너가 아니며, 그렇게 되려고 하지도 않습니다. LLM 형태의 페이로드가 없는 알려진 악성 패키지(예: 이메일 API 호출에 하드코딩된 유출 주소)는 패턴 규칙이 아닌 오프라인 권고 목록(DEP003)으로 탐지됩니다. 코드베이스가 LLM, MCP 서버, 벡터 스토어와 통신하거나 Agent Skills를 제공한다면, 이 도구는 당신을 위해 만들어졌습니다.
새 기능: LiteLLM Proxy(config.yaml)에 대한 정적 구성 스캔 — 하드코딩된 시크릿, 평문 공급자 엔드포인트, 누락된 가드레일. Rules(LLC001–LLC003) 참조.
목차
- 이 스캐너가 다른 이유
- 비교
- 30초 만에 시작하기
- 작동 확인
- 명령어
- GitHub Action
- Pre-commit 훅
- 규칙
- 아키텍처
- MCP 서버(Claude에서 사용)
- Claude Skill
- 신뢰 및 릴리스 보증
- 정밀도 계약
- 테스트 및 벤치마킹
- 로드맵
- 기여
이 스캐너가 다른 이유
- 증거 계층, 노이즈가 아님. 모든 발견 사항은
proven(추적된 데이터 흐름 또는 파싱된 구성 사실),likely(해석된 싱크, 휴리스틱 1단계), 또는heuristic입니다. 기본 스캔은 proven + likely만 표시합니다. 휴리스틱은--paranoid를 통해 선택적으로 활성화됩니다. - Import 해석 기반 탐지. 호출이 실제 SDK import(
openai,@anthropic-ai/sdk,ai,@google/genai, LangChain, Bedrock, …)로 해석될 때만 "LLM 호출"로 간주됩니다. Google Maps 클라이언트가 다시 LLM으로 플래그 지정되는 일은 없습니다. - 정밀도 게이트 방식, 실제 저장소로 벤치마킹. 테스트 스위트는 모든 취약한 픽스처가 탐지되고 모든 안전한 픽스처가 깨끗하게 유지됨을 검증합니다 — 안전한 코퍼스의 오탐은 빌드를 실패시킵니다. 그 외에도
npm run regression은 실제 공개 저장소(OpenAI/Anthropic/Vercel AI SDK, 공식 MCP 서버, LlamaIndex)를 커밋된 수동 검토 기준선과 대조하여 스캔하고, 새로운proven/likely발견 사항이 있으면 실패합니다. 실제 전후 수치는 Testing & benchmarking을, 그 배경 이야기는 What we found scanning real repos를 참조하세요 — 레이블이 지정된 악성 스킬 코퍼스에서 6/6 탐지율, 그리고 라이브러리 수준의 정직한 발견 사항에 대해 llama_index를 "취약"하다고 부르지 않는 이유. Discussion write-up → - GitHub 코드 스캐닝용 SARIF.
--output report.sarif는 풀 리퀘스트와 Security 탭에 발견 사항을 인라인으로 표시합니다. - AI-BOM.
secureai-scan bom .은 SDK, 모델 ID, 벡터 스토어, 에이전트 프레임워크, MCP 서버의 구문 기반 인벤토리를 구축하여 OWASP LLM Top 10 / EU AI Act 문서화 요구 사항에 매핑합니다. - MCP 구성 스캔.
.mcp.json,claude_desktop_config.json,.cursor/mcp.json을 파싱합니다: 고정되지 않은npx -y서버, 인라인 시크릿, 평문 HTTP 전송. - MCP 도구 중독 탐지. WhatsApp MCP 러그풀과 postmark-mcp 백도어 뒤의 패턴 — 보이지 않는 유니코드, 에이전트 지시 인젝션 문구, 도구 이름/설명의 교차 도구 섀도잉 — 을 서버를 실행하기 전에 정적으로 탐지합니다.
- MCP 명령 인젝션 탐지. 요청 데이터로 구축된 MCP stdio 전송
command/args를 플래그 지정합니다 — 2026 MCP STDIO RCE 공개 뒤의 패턴. - Agent Skill 중독 탐지. 동일한 보이지 않는 유니코드, 인젝션 문구, 섀도잉 검사를
SKILL.md파일에 적용합니다 — Agent Skills는 전체를 컨텍스트에 로드하므로, 중독된 스킬은 다른 이름의 중독된 도구 설명입니다. - 회피 저항형 스킬 스캔. 스킬 번들은
SKILL.md뿐만 아니라 디렉토리로 스캔되며, 모든 콘텐츠 검사는 난독화 해제된 텍스트 변형에 대해 실행됩니다. 이는 Cloak and Detonate(arXiv:2607.02357)에서 조사된 9개 스캐너의 >90%를 우회한 공개 기법 — 호모글리프, 제로폭 분할,.git/또는build/에 스테이징된 페이로드,*.test.ts파일에 숨겨진 유출 — 을 대상으로 합니다. Evasion resistance 참조. - 알려진 취약 및 알려진 악성 패키지 권고, 버전 인식. 모든 의존성과 MCP로 실행되는 모든 패키지를 번들된 권고 스냅샷 — 문서화된 실제 백도어의 수동 선별 목록과 LLM/MCP/RAG 패키지 워치리스트에 대한 HIGH/CRITICAL OSV 권고 — 과 대조하여 확인합니다.
scripts/sync-advisories.js로 재생성됩니다. 플래그 없이 모든 스캔에서 오프라인으로 실행됩니다. CVE는 고정된 버전이 영향 범위 내에 증명 가능하게 있을 때만 발생하며, 문서화된 악성 패키지는 모호한 범위에서도 발생합니다. 백도어 설치는 복구 불가능하기 때문입니다. - 로컬 우선. 어떤 것도 머신을 떠나지 않습니다.
비교
SecureAI-Scan은 일반 SAST 도구나 컨테이너/IaC 스캐너의 대체재가 아닙니다 — 대신이 아니라 함께 실행하세요. LLM/MCP/RAG 공격 표면을 위해 특별히 설계되었으며, 평면적인 키워드 발견 사항보다 데이터 흐름 증거를 강조합니다.
| SecureAI-Scan | Semgrep (OSS 규칙) | Trivy | GitHub Advanced Security | |
|---|---|---|---|---|
| 프롬프트 인젝션(소스→싱크 추적) | ✅ import 해석 데이터 흐름 | ⚠️ 패턴 규칙만, 커뮤니티 유지 | ❌ | ⚠️ CodeQL 가능하지만 AI 전용 규칙셋 없음 |
| MCP 도구 중독 / 구성 위험 | ✅ MCP007–010, 구성 스캐너 | ❌ | ❌ | ❌ |
Agent Skill 중독(SKILL.md) | ✅ 회피 저항, 번들 인식 | ❌ | ❌ | ❌ |
| RAG / 벡터 스토어 잘못된 구성 | ✅ VEC001–004 | ❌ | ❌ | ❌ |
| 알려진 악성 AI 패키지 권고 | ✅ DEP003, 오프라인, 버전 인식 | ❌ | ⚠️ 일반 CVE 피드, AI 전용 아님 | ⚠️ Dependabot, 일반 CVE 피드 |
| 일반 SAST(SQLi, XSS, 경로 탐색) | ❌ 설계상 범위 외 | ✅ | ❌ | ✅ |
| 컨테이너 / IaC 스캔 | ❌ | ❌ | ✅ | ⚠️ CodeQL/Actions 통해 |
| 증거 계층(proven/likely/heuristic) | ✅ | ❌ 발견 사항은 평면적 | ❌ | ⚠️ CodeQL 일부 있음, AI 튜닝 아님 |
| SARIF 출력(GitHub 코드 스캐닝) | ✅ | ✅ | ✅ | 기본 제공 |
| 오프라인 실행, 계정 불필요 | ✅ | ✅ (OSS 규칙) | ✅ | ❌ GitHub 필요 |
이미 Semgrep 또는 GHAS를 실행 중이라면 유지하세요 — SecureAI-Scan은 그들이 전혀 모델링하지 않는 위험 표면을 위해 추가하세요.
먼저 질문하고 싶으신가요? 무료 **SecureAI-Scan AI Security Advisor on ChatGPT**를 사용해 보세요.
GitHub이나 Twitter에서 찾은 MCP 서버를 실행하려고 하시나요? 먼저 도구 설명을 **MCP X-Ray**에 붙여넣으세요 — 설치 없이 브라우저에서 숨겨진 유니코드, 인젝션된 지시, 알려진 악성 패키지를 확인합니다.
작동 확인
secureai-scan scan .을 실제(작고 의도적으로 취약한) 파일에 대해 처음부터 끝까지 실행한 실제 출력 — 소스:
스캐너가 끝까지 추적하는 공격 형태:
| MCP 도구 중독 데이터 흐름 | RAG 컨텍스트 인젝션 데이터 흐름 |
|---|---|
![]() | ![]() |

