탐지 규칙
모든 규칙을 직접 실행해 볼 수 있는 데모와 함께.
54개 규칙 전체. 하나를 선택하면 이를 유발하는 파일, 핵심이 되는 부분, 스캐너가 만들어내는 결과를 확인할 수 있습니다. 결과는 실제 스캐너를 실행해 생성되며, 손으로 작성한 것이 아닙니다.
인터랙티브 데모에는 자바스크립트가 필요합니다. 그동안 모든 규칙을 여기서 확인하세요.
에이전트 안전
- 프롬프트 인젝션 페이로드 — 에이전트가 어차피 읽게 될 텍스트 안에 숨겨진, 에이전트를 겨냥한 지시입니다.
- 설명과 실제 기능의 불일치 — 읽기 전용이라고 설명하지만 매개변수는 다른 이야기를 하는 도구입니다.
- 보이지 않는 유니코드 — 아무것도 아닌 것처럼 렌더링되지만 모델에는 그대로 전달되는 문자입니다.
- 느슨한 매개변수 스키마 — URL이나 파일 경로처럼 위험도가 높은 입력값인데 무엇이든 그대로 받아들입니다.
- 은닉된 지시 — 렌더링된 출력에는 절대 표시되지 않는 파일의 일부에 숨겨진 명령입니다.
- 스키마 인젝션 — 도구 자체보다 한 단계 아래인, 매개변수 설명 안에 숨겨진 지시입니다.
- 유니코드 태그 밀반입 — 완전히 아무것도 아닌 것처럼 렌더링되는 유니코드 태그 문자로 작성된 텍스트입니다.
- 도구 섀도잉 — 다른 도구가 어떻게 작동해야 하는지에 대한 지시를 내리는 도구입니다.
- 권한 상승 요청 — 기계가 아니라 사람에게 방어 수단을 낮추라고 요청합니다.
- 마크다운 이미지 비콘 — 응답이 표시될 때 주소를 통해 데이터를 내보내는 마크다운 이미지입니다.
- 위조된 도구 결과 — 실행된 적 없는 도구의 출력처럼 보이는 텍스트입니다.
- 메모리 오염 — 에이전트가 매 세션 시작 시 읽는 파일에 지시를 기록합니다.
- 지연 트리거 — 처음에는 정상적으로 동작하다가 나중에 다른 일을 합니다.
- 에이전트 체인 인젝션 — 사용자가 아니라 체인의 다음 에이전트를 향한 지시입니다.
- 혼란된 대리인 — 특별한 권한이 없는 도구가 권한을 가진 다른 도구를 사용하도록 에이전트에게 지시합니다.
- 시스템 프롬프트 추출 — 에이전트에게 자신의 지시와 도구를 드러내라고 요청합니다.
- 대화 기록 접근 — 대화 기록을 요청하면서도 설명에는 이유가 적혀 있지 않습니다.
- 오류 메시지 속 지시 — 아무도 자세히 살펴보지 않는 순간에 읽히는, 오류 메시지 안에 숨겨진 지시입니다.
유출
- 유출 패턴 — 시크릿을 다루면서 동시에 데이터를 외부로 보낼 수도 있는 도구입니다.
- 웹훅 싱크 — 보내지는 것은 무엇이든 수집하는 것만이 유일한 목적인, 하드코딩된 주소입니다.
- DNS 유출 — 도메인 조회 이름에 인코딩된 데이터입니다.
- 위험한 기능 흐름 — 비공개 데이터를 읽으면서 동시에 외부로 게시할 수도 있는 도구 하나입니다.
- "오프라인" 도구의 네트워크 호출 — 네트워크를 절대 사용하지 않는다고 말하지만, 실제로는 사용합니다.
자격 증명
- 하드코딩된 시크릿 — 파일에 직접 작성된 자격 증명입니다.
- 자격 증명 저장소 접근 — 존재 목적 자체가 자격 증명 저장인 파일을 읽습니다.
- 클라우드 메타데이터 접근 — 클라우드 호스트에 요청하는 누구에게나 건네주는 자격 증명을 요청합니다.
- 셸 기록 접근 — 터미널에 입력된 명령 기록을 읽습니다.
- MCP 설정 속 자격 증명 — MCP 설정 파일에 그대로 붙여넣어진 실제 토큰입니다.
- 로그에 기록된 시크릿 — 너무 오래 보관될 곳에 출력되는 자격 증명입니다.
- OAuth 설정 오류 — 추가된 목적인 보호 기능을 오히려 없애는 방식으로 설정된 OAuth입니다.
공급망
- 신뢰할 수 없는 외부 설치 — 무언가를 다운로드해서 실행하라고 지시하는 설치 안내입니다.
- 버전이 고정되지 않은 MCP 서버 — 아무것도 하지 않아도 다른 소프트웨어로 바뀔 수 있는 서버입니다.
- 알려진 취약점이 있는 MCP 서버 — 공개된 보안 권고가 있는 버전으로 고정되어 있습니다.
- MCP 패키지 사칭 — 의도했던 이름과 글자 하나 차이 나는 패키지 이름입니다.
- 설치 스크립트 훅 — 패키지가 설치되는 순간 인터넷에서 실행되는 명령입니다.
- 의존성 혼동 — 비공개 패키지와 이름이 같은 공개 패키지입니다.
- 취약한 의존성 — 공개된 권고의 영향 범위 안에 있는, 선언된 의존성입니다.
- 출처 검증 누락 — 진짜 파일인지 확인하지 않고 설치되는 다운로드입니다.
- 동형이의 문자 도구 이름 — 화면에서는 똑같아 보이지만 실제로는 같은 텍스트가 아닌 두 도구 이름입니다.
- 중복된 도구 이름 — 서로 다른 두 파일에 선언된 동일한 도구 이름입니다.
- 섀도우 MCP 서버 — 에이전트가 사용할 수 있지만 프로젝트 설정에는 선언되지 않은 MCP 서버입니다.
- 도구 세트 변이 — 이전에 본 적 있는 도구가 이제는 다른 파일에서 전달되며 바뀌었습니다.
- 매니페스트 변경 — 이미 검토했던 도구가 이후 조용히 바뀌었습니다.
실행
- 과도한 권한 — 역할상 필요한 것보다 훨씬 더 많은 접근 권한을 요청하는 도구입니다.
- 동적 실행 — 에이전트에게 전달된 무언가로부터 실행 시점에 조립된 코드입니다.
- 불투명 페이로드 — 스킬에 번들되어 있지만 아무도 읽을 수 없는 것 — 여기서는 평범한 파일로 위장한 프로그램입니다.
- MCP 자동 승인 — 묻지 않고 모든 도구를 실행하도록 설정된 MCP 서버입니다.
- 과도하게 넓은 MCP 실행 명령 — 서버에 필요 이상의 권한을 건네주는 실행 명령입니다.
- MCP STDIO 인젝션 노출면 — 설정 값이 호스트가 실행하는 명령이 되는, MCP의 STDIO 전송 방식을 사용하는 서버입니다.
- 지속성 메커니즘 — 재시작 후에도 살아남는 곳에 스스로를 기록합니다.
- 샌드박스 탈출 — 실행 중인 컨테이너를 벗어나는 방법을 참조합니다.
- 문자열 재조합 — 위험한 단어를 조각으로 조립해, 검색해도 나오지 않게 합니다.
- 명령 인젝션 노출면 — 실행 시점에 제공된 값을 그대로 붙여넣어 만들어진 셸 명령입니다.
- 과도하게 허용적인 CORS — 어떤 웹사이트든 호출할 수 있게 해주는 HTTP 서버입니다.
OWASP MCP Top 10
10개 카테고리 전체를 아우릅니다.
모든 규칙은 아직 베타 단계인 OWASP MCP Top 10의 최소 하나의 카테고리에 매핑됩니다. 일부 규칙은 둘 이상의 카테고리를 다루므로, 합계는 규칙 개수보다 많아집니다. 감사 및 원격 측정 부족 항목에는 규칙이 하나뿐인데, 이는 당연합니다. 로깅은 스캐너가 지적할 수는 있어도 해결할 수는 없는 문제이기 때문입니다.
| 카테고리 | 이름 | 규칙 | 상대 커버리지 |
|---|---|---|---|
| MCP01 | 토큰 오관리 및 시크릿 노출 | 7 | |
| MCP02 | 스코프 확대를 통한 권한 상승 | 7 | |
| MCP03 | 도구 오염 | 13 | |
| MCP04 | 소프트웨어 공급망 공격 및 의존성 변조 | 13 | |
| MCP05 | 명령 인젝션 및 실행 | 8 | |
| MCP06 | 의도 흐름 전복 | 10 | |
| MCP07 | 불충분한 인증 및 인가 | 3 | |
| MCP08 | 감사 및 원격 측정 부족 | 1 | |
| MCP09 | 섀도우 MCP 서버 | 1 | |
| MCP10 | 컨텍스트 인젝션 및 과잉 공유 | 9 |