Probe 스캐너에 내장된 룰을 룰 명령이 받는 id 기준으로 모두 나열합니다. 범주의 뜻과 패시브·액티브 스캔의 차이는 스캐닝 가이드에서 설명합니다. 룰 하나를 켜거나 끄기 전에 이 페이지에서 찾아보세요.
여기 있는 목록은 새 프로젝트에서 gori run probe rules가 보여 주는 것과 같습니다. 이 명령, Probe 탭의 Rules 서브탭, MCP list_probe_rules 도구는 모두 같은 카탈로그를 읽습니다. 지금 실행 중인 빌드에서는 이쪽이 기준이고, 커스텀 룰과 이 프로젝트에서 꺼 둔 룰도 함께 보여 줍니다.
룰 켜고 끄기
스위치는 프로젝트 단위입니다. 내장 룰을 끄면 새로운 탐지만 멈추고, 이미 만든 발견은 Probe 목록에 그대로 남습니다.
| 어디서 | 방법 |
|---|---|
| TUI | Probe 탭 → Rules 서브탭: t로 커서 아래 룰을 토글하고, /로 목록을 필터링합니다 |
| CLI | gori run probe rules enable <id> / disable <id>. gori run probe rules --kind active는 한 종류만 나열합니다 |
| MCP | set_probe_rule_enabled, 상태를 읽을 때는 list_probe_rules |
gori run probe rules --kind active # 액티브 룰과 켜진 룰
gori run probe rules enable sqli_time_based # 꺼진 채 출하되는 룰 켜기
gori run probe rules disable sri # 시끄러운 패시브 체크 하나 끄기
룰 id는 발견 코드와 다릅니다. 룰 하나가 여러 종류의 발견을 올릴 수 있기 때문입니다. security_headers는 missing_hsts, missing_csp 등을 올립니다. gori run probe issues가 발견마다 코드를 출력하고, gori run probe dismiss --code는 룰 id가 아니라 그 코드를 받습니다.
패시브 룰
패시브 룰은 이미 캡처한 트래픽(History 플로우와 Repeater 전송 결과)을 읽기만 하고 아무것도 보내지 않습니다. 모두 켜진 채 출하됩니다.
| ID | 이름 | 범주 | 검사 내용 |
|---|---|---|---|
tech |
Technology fingerprints | tech |
헤더와 본문에서 서버 소프트웨어, 프레임워크, 프로토콜(WebSocket, gRPC, GraphQL, SSE, HTTP/2, HTTP/3)을 식별합니다. |
secret_in_url |
Secrets in URL | infoleak |
요청 URL에 실린 자격 증명, 토큰, JWT를 표시합니다. URL에 있으면 로그, 방문 기록, Referer로 새어 나갑니다. |
security_headers |
Security headers | headers |
HSTS, CSP(report-only만 있는 경우와 base-uri 누락 포함), X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, Cross-Origin-Opener-Policy가 없거나 약한지 확인합니다. |
mime_confusion |
MIME type confusion | headers |
본문 유형이 Content-Type과 어긋나 MIME 스니핑 XSS가 가능한 응답을 표시합니다(nosniff 없이 스니핑 가능한 타입으로 나가는 HTML 본문, text/html로 제공되는 JSON). |
cacheable_api |
Cacheable API responses | headers |
브라우저나 공유 캐시가 저장할 수 있는 JSON/API 응답을 표시합니다. 토큰이나 개인정보가 남을 수 있습니다. |
cookies |
Cookie flags | cookies |
Set-Cookie 플래그, SameSite 값, Partitioned, 보안 접두사(__Http- 포함), 상위 Domain 범위를 확인합니다. |
cors |
CORS misconfiguration | cors |
와일드카드, null origin, 반사된 origin을 돌려주는 CORS 응답을 표시합니다. |
body_leaks |
Response body leaks | infoleak |
응답 본문에서 사설 IP, 스택 트레이스, 비밀 값, 혼합 콘텐츠, 안전하지 않은 폼 action을 찾습니다. |
auth |
Insecure authentication | headers |
평문 http://로 보내는 Basic 인증과 Bearer 토큰을 표시합니다. |
graphql_introspection |
GraphQL introspection | infoleak |
켜져 있는 GraphQL introspection을 탐지합니다. API 스키마 전체가 드러납니다. |
jwt |
JWT weaknesses | headers |
Authorization/Cookie/Set-Cookie에 실린 JWT를 디코드해 alg:none, 비표준 알고리즘, 키 주입 헤더 파라미터(jku/x5u/jwk), 만료 누락, 민감한 클레임 이름을 표시합니다. |
sourcemap |
Source map exposure | infoleak |
소스맵을 가리키는 프로덕션 JavaScript를 표시합니다. 소스맵이 있으면 원본 소스를 복원할 수 있습니다. |
sri |
Missing Subresource Integrity | headers |
지원되는 integrity 메타데이터 없이 불러오는 크로스 오리진 스크립트와 스타일시트를 표시합니다(공급망 노출). |
directory_listing |
Directory listing | infoleak |
Apache/nginx가 자동 생성한 디렉터리 인덱스를 탐지합니다. 누구에게나 파일 목록을 보여 줍니다. |
exposed_config |
Exposed configuration files | infoleak |
클라이언트에 제공되는 서버 설정·진단 파일을 탐지합니다: .env, .git/config, phpinfo(), .htpasswd, wp-config 자격 증명, Spring actuator env. |
serialized_object |
Serialized object exposure | infoleak |
쿠키, 파라미터, hidden 필드에 실린 네이티브 직렬화 블롭(Java, .NET BinaryFormatter/ViewState, PHP)을 탐지합니다. 안전하지 않은 역직렬화의 공격 표면입니다. |
debug_mode_exposed |
Debug mode exposed | infoleak |
프로덕션에서 닿는 프레임워크 디버그 모드, 대화형 디버거, 프로파일러를 탐지합니다(Symfony, Werkzeug/Flask, Django, Laravel, Rails, ASP.NET). |
subdomain_takeover |
Subdomain takeover (suspected) | infoleak |
호스팅 제공자가 백엔드 리소스가 주인 없는 상태라고 말하는 오류 페이지를 표시합니다(S3/GCS 버킷, GitHub Pages, Heroku, Pantheon, Shopify, Fastly, Azure, Zendesk, Vercel, Tumblr). 공격자가 가져갈 수 있는 dangling DNS 형태입니다. |
cleartext_credentials |
Cleartext credential submission | headers |
http://로 요청 본문에 실려 제출된 비밀번호와, http://로 제공된 비밀번호 입력 필드를 표시합니다. |
shared_cache |
Shared-cache exposure | headers |
공개적으로 캐시 가능한 응답의 Set-Cookie와, Vary: Origin 없이 캐시된 반사 CORS origin을 표시합니다. |
internal_host_leak |
Internal host disclosed in a response header | infoleak |
응답 헤더에서 RFC 1918 주소와 내부 전용 호스트명(.local, .internal, .corp 등)을 찾습니다. |
ws_payloads |
WebSocket payload secrets | infoleak |
WebSocket 텍스트·바이너리 프레임에서 노출된 비밀 값을 찾습니다. |
dom_xss |
DOM-based XSS (suspected) | client |
페이지/번들 스크립트의 같은 문장 안에서 DOM taint 소스(location.hash, document.URL, postMessage 데이터 등)가 실행 싱크(innerHTML, document.write, eval 등)로 흘러가는 경우를 표시합니다. |
dom_clobbering |
DOM clobbering (suspected) | client |
클로버링될 수 있는 전역을 신뢰하는 클라이언트 코드를 표시합니다: 이름으로 접근하는 HTMLCollection(document.forms[…], document.all[…])이나 window.X = window.X || … 폴백 관용구. |
prototype_pollution |
Prototype pollution (suspected) | client |
__proto__/constructor.prototype에 쓰거나 오염에 취약한 deep-merge API를 쓰는 클라이언트 코드, 그리고 __proto__/constructor[prototype] 파라미터를 실은 요청을 표시합니다. |
post_message |
Cross-origin messaging (postMessage) | client |
origin 검사가 없는 message 핸들러, 와일드카드 대상 origin으로 보내는 postMessage(...), document.domain 완화를 표시합니다. |
cspt |
Client-side path traversal (suspected) | client |
페이지/번들 스크립트에서 URL로 조작 가능한 값(location.hash, 라우터 파라미터 등)이 인코딩 없이 요청 호출(fetch, XMLHttpRequest, axios, jQuery.ajax)의 URL 인자에 들어가는 경우를 표시합니다. |
api_docs_exposed |
API documentation exposed | infoleak |
프로덕션에서 닿는 Swagger UI, OpenAPI/Swagger 스펙, 대화형 GraphQL IDE(GraphiQL, Playground, ReDoc)를 탐지합니다. |
session_id_in_url |
Session identifier in URL | infoleak |
요청 URL에 실린 알려진 프레임워크 세션 식별자(PHPSESSID, JSESSIONID, ASP.NET_SessionId 등)를 표시합니다. 로그, 방문 기록, Referer로 새어 나갑니다. |
open_cross_domain_policy |
Permissive cross-domain policy | cors |
모든 origin에 접근을 허용하는(domain="*") Flash/Silverlight 크로스 도메인 정책을 표시합니다. |
bare_lf_response |
Bare-LF response head | headers |
응답 헤드의 줄 끝이 CRLF가 아닌 단독 LF인 경우를 표시합니다. 파서마다 메시지 프레이밍을 다르게 읽을 수 있습니다(응답 desync / splitting의 전제 조건). |
oauth |
Weak OAuth/OIDC authorization request | headers |
RFC 9700 기준으로 implicit grant, PKCE plain 메서드, PKCE 누락, CSRF 보호 전무(PKCE·state·nonce 모두 없음)인 OAuth 2.0 / OIDC 인가 요청을 표시합니다. |
llm_prompt_injection |
Prompt injection aimed at an LLM agent | client |
LLM을 겨냥한 지시문(ignore previous instructions, NOTE TO SYSTEM 같은 덮어쓰기 문구나 gori 액션 도구를 호출하라는 명령)을 담은 응답 본문을 표시합니다. 탐지만 하며 본문은 바꾸지 않습니다. |
액티브 룰
액티브 룰은 직접 요청을 보냅니다. 자동 파이프라인은 프로젝트 스캔 모드가 active나 aggressive일 때만 이 룰을 실행합니다. 플로우별 Run active scan과 gori run probe --active는 어느 모드에서든 실행합니다. 기본적으로 안전한 메서드(GET / HEAD)만 다시 보내고, 고유한 표면마다 한 번씩만 테스트합니다. 두 룰은 의도적으로 예외입니다. graphql_introspection_active는 POST 엔드포인트를 POST로 유지하고(읽기 전용 쿼리), insecure_http_methods는 자체 OPTIONS와 TRACE를 보냅니다.
비용은 룰이 플로우 하나에 보내는 요청 수이며, Rules 서브탭이 행 옆에 보여 주는 값과 같습니다. 비고는 기본값만으로는 실행되지 않는 룰을 표시합니다.
- 기본 비활성: 꺼진 채 출하됩니다. 의도적으로 켜세요(위 참고).
- unsafe 필요: 룰이 보내는 프로브가 모두 안전하지 않은 메서드라, unsafe 메서드를 허용하기 전에는(팝업의 unsafe methods 체크,
--unsafe, AGGRESSIVE 모드) 아무것도 만들지 않습니다. - OAST 필요: 켜져 있지만, 프로젝트에 페이로드를 찍어 낼 OAST 리스너가 등록되기 전까지는 작동하지 않습니다. 그때까지 그 비용은 추정치에서 빠집니다.
| ID | 이름 | 범주 | 비용 | 비고 | 검사 내용 |
|---|---|---|---|---|---|
reflected_param |
Reflected parameter | active |
1 | 쿼리·폼·JSON 파라미터에 canary를 보내고, 인코딩되지 않고 반사되면 표시합니다(잠재적 XSS). | |
cors_reflection |
CORS arbitrary origin | cors |
1 | 서버가 임의의 Origin을 Allow-Credentials: true와 함께 반사하는지 프로브합니다. | |
forbidden_bypass |
Access-control bypass (IP headers) | active |
2 | 거부된(401/403) 요청을 위조한 클라이언트 IP 헤더와 함께 재전송하고, 2xx로 우회되면 표시합니다. | |
nginx_alias_traversal |
NGINX alias traversal | active |
1-2 | 정적 자산을 접힌 ..(/static../static/…) 경로로 다시 가져와, 바이트 단위로 같은 응답이 오면 표시합니다. |
|
backslash_powered |
Backslash-powered scanning | active |
4-8 | 쿼리·폼·JSON 파라미터마다 \와 \\를 덧붙여, 백슬래시 하나는 응답을 흔들지만 둘은 그렇지 않은 파라미터를 표시합니다(서버 측 문자열 해석). |
|
sqli_error_based |
Error-based SQL injection | active |
3-5 | 쿼리·폼·JSON 파라미터마다 SQL 구문을 깨는 페이로드를 덧붙이고, 깨끗한 baseline에는 없는 데이터베이스 오류 서명이 프로브 응답에 나타나면 표시합니다. | |
sqli_boolean_based |
Boolean-based blind SQL injection | active |
4-8 | 파라미터마다 항상 참인 SQL 조건과 항상 거짓인 조건을 덧붙여, 참 쪽은 baseline과 같고 거짓 쪽은 달라지는 파라미터를 표시합니다(오류도 반사도 없는 블라인드 인젝션). | |
sqli_time_based |
Time-based blind SQL injection | active |
6-10 | 기본 비활성 | 파라미터마다 서버 측 지연(SLEEP/pg_sleep/WAITFOR)을 주입하고, baseline과 점점 늘린 두 번의 지연에 걸쳐 응답 지연 시간으로 확인합니다. 일부러 기다리기 때문에 기본 비활성으로 출하됩니다. |
graphql_introspection_active |
GraphQL introspection (active) | infoleak |
1 | GraphQL 엔드포인트에 introspection 쿼리를 보내 스키마가 노출되는지 확인합니다. | |
lfi_param_traversal |
Parameter path traversal | active |
3 | 파일 파라미터를 접힌 ..(file=x/../doc) 경로로 다시 가져와, 바이트 단위로 같은 응답이 오면 표시합니다. |
|
open_redirect |
Open redirect | active |
1 | 리다이렉트 파라미터를 외부 호스트로 바꾸고, Location이 그대로 따라가면 표시합니다. | |
host_header_injection |
Host header injection | active |
1 | 합성한 X-Forwarded-Host를 보내고, 그 값이 절대 URL의 authority로 반사되면 표시합니다. | |
crlf_injection |
CRLF header injection | active |
1 | 요청 파라미터(쿼리/폼/JSON)에 인코딩된 CRLF와 헤더를 주입하고, 응답 헤더로 반사되면 표시합니다. | |
path_normalization_bypass |
Access-control bypass (path normalization) | active |
6-7 | 거부된(401/403) 경로를 정규화 트릭으로 다시 요청하고, 2xx로 우회되면 표시합니다. | |
url_rewrite_bypass |
Access-control bypass (URL-rewrite headers) | active |
3 | 401/403/404로 응답한 경로를 X-Original-URL/X-Rewrite-URL에 담아 /를 요청하고, 2xx로 제공되면 표시합니다. | |
ssti |
Server-side template injection | active |
2 | 템플릿 산술 폴리글롯을 주입하고, 값이 평가되는 파라미터를 표시합니다. | |
nextjs_action_no_auth |
Next.js server action missing authorization | active |
1 | unsafe 필요 | Next.js 서버 액션(Next-Action)을 세션 쿠키/Authorization을 뺀 채 재전송하고, 여전히 2xx로 성공하면 표시합니다. |
request_smuggling |
HTTP request smuggling / desync (CL.TE/TE.CL/TE.TE) | active |
8-10 | 기본 비활성 · unsafe 필요 | 불완전한 CL.TE/TE.CL/TE.TE 프레이밍 프로브를 보내고, 타이밍 행으로 프런트엔드/백엔드 디싱크를 표시합니다(aggressive+unsafe에서 차분 확인). 기본 비활성이며 POST 본문을 보냅니다. |
ssrf_oast |
Blind SSRF (out-of-band) | active |
1 | OAST 필요 | 쿼리, 폼, JSON의 URL 파라미터 하나를 OAST 페이로드로 향하게 하고, 서버가 콜백을 걸면 발견으로 올립니다. |
cmd_injection_oast |
Blind OS command injection (out-of-band) | active |
1 | OAST 필요 | 명령/진단 파라미터에 셸 브레이크아웃 OAST 페이로드를 덧붙이고, 서버의 셸이 콜백을 걸면 발견으로 올립니다. |
xxe_oast |
XML external entity (out-of-band) | active |
1 | OAST 필요 · unsafe 필요 | XML 본문에 외부 파라미터 엔티티 하나를 추가합니다. OAST 콜백이 오면 해석된 것으로 확인합니다. unsafe 옵트인이 필요합니다. |
rfi_oast |
Remote file inclusion (out-of-band) | active |
1 | OAST 필요 | 포함형 파라미터 하나를 언어 표식이 담긴 OAST 리소스로 향하게 하고, 서버가 콜백을 걸면 발견으로 올립니다. |
ratelimit_bypass |
Rate-limit bypass (spoofed client IP) | active |
2 | 레이트리밋에 걸린(429) 요청을 위조한 클라이언트 IP 헤더와 함께 재전송하고, 처리되면 표시합니다. | |
forbidden_method_bypass |
Access-control bypass (HTTP method) | active |
2-5 | 거부된(401/403) 리소스를 메서드 대소문자 변형으로, unsafe에서는 대체 메서드와 메서드 오버라이드 헤더로도 다시 요청해 2xx로 우회되면 표시합니다. | |
insecure_http_methods |
Insecure HTTP methods | active |
2 | OPTIONS와 TRACE를 보내 Cross-Site Tracing(TRACE)과 Allow 헤더에 광고된 위험한 메서드를 표시합니다. |
커스텀 룰
직접 만든 매치 룰은 같은 카탈로그의 custom 범주에 custom_p_7 같은 id로 들어갑니다. 룰마다 문자열, 정규식, 명령 중 하나로 모든 캡처 플로우의 한 영역을 검사합니다. Rules 서브탭(a), gori run probe rules add, MCP create_probe_rule 도구로 추가합니다. 필드는 Probe: 스캐너를, 명령 형태는 프로세스 훅을 보세요.