v2에서 마이그레이션
Dalfox v3은 기존 Go 구조를 버리고 Rust로 완전히 새로 작성한 버전입니다. Go 소스는 v2 브랜치에 남아 있고 치명적인 보안 수정만 백포트됩니다. 새로운 작업은 모두 v3에서 이루어집니다.
이 페이지는 v2 작업 흐름을 v3에 옮기는 방법을 정리합니다. 어떤 서브커맨드가 하나로 합쳐졌고, 어떤 플래그 이름이 바뀌었고, 무엇이 왜 사라졌으며 그 대가로 무엇을 얻었는지 다룹니다.
1. 서브커맨드 통합
v3는 스캔 관련 서브커맨드를 하나의 진입점으로 모았습니다.
| v2 사용법 | v3 대응 | 설명 |
|---|---|---|
dalfox url [url] |
dalfox scan [url] |
dalfox [url]만 써도 됩니다 — scan이 기본 서브커맨드입니다 |
dalfox file [file] |
dalfox scan [file] |
입력 종류는 자동으로 판별합니다 |
dalfox pipe |
dalfox scan - 또는 cat targets | dalfox scan |
파이프 입력은 stdin에서 그대로 읽습니다 |
dalfox sxss [url] |
dalfox scan [url] --sxss |
저장형 XSS는 이제 스캔 옵션입니다 — 저장형 XSS 참고 |
기존 스크립트가 계속 동작하도록 legacy url, file, pipe 서브커맨드는 숨겨진 별칭으로 남아 있습니다. sxss는 예외입니다. 저장형 XSS 스캔은 scan 서브커맨드의 --sxss 플래그로 옮겨졌습니다.
자동 판별은 v2가 읽지 못했던 입력 형식까지 다룹니다. 프록시로 잡아둔 원시 HTTP 요청(--input-type raw-http)과 HAR 익스포트(dalfox scan capture.har)를 그대로 넘길 수 있습니다. 빠른 시작을 참고하세요.
2. 이름이 바뀐 플래그
| v2 플래그 | v3 플래그 | 이유와 동작 |
|---|---|---|
--concurrence <int> |
--workers <int> |
이름을 현대적으로 다듬었습니다. 동시에 도는 스캔 워커 수를 정합니다. |
-C, --cookie <string> |
--cookies <string> |
일관성을 위해 복수형으로 바꿨고, 여러 번 넘길 수 있습니다. |
-p <string> |
-p, --param <string> |
파라미터 종류까지 지정합니다 — -p id:query, -p sort:body. |
플래그 전체 목록은 CLI 레퍼런스에 있습니다.
3. 사라진 기능과 대안
v3를 빠르고 안전하게, XSS에만 집중하도록 유지하기 위해 몇몇 레거시 플래그와 그 뒤의 무거운 엔진을 걷어냈습니다.
| 사라진 v2 플래그 | 대안 | 이유 |
|---|---|---|
--use-bav, --skip-bav |
없음. | 범위. BAV(Basic Another Vulnerability) 점검을 제거했습니다. v3는 오직 XSS 스캐너이며, 다른 취약점 유형은 전용 스캐너를 쓰는 편이 낫습니다. |
--found-action <cmd>, --found-action-shell |
REST API 웹훅, 또는 stdout 파이프(dalfox scan ... | post-script.sh). |
보안. 결과마다 임의 셸 명령을 실행하는 구조는 RCE 위험을 불러오고 동시성도 발목 잡았습니다. |
--skip-headless, --force-headless-verification |
설정할 것이 없습니다 — 정적 분석이 항상 켜져 있습니다. | 엔진 교체. Headless Chrome(chromedp)을 완전히 없앴습니다. v3는 컴파일러급 JavaScript 파서(oxc)로 데이터 흐름과 DOM 싱크를 브라우저 없이 추적합니다. 탐지 모델 참고. |
--grep <file>, --skip-grep |
없음. | 엔진 교체. 정규식 응답 매칭 대신 컨텍스트를 아는 AST 분석을 씁니다. |
--report, --report-format |
-f markdown -o <file>, -f sarif -o <file>. |
표준화. 리포트 전용 플래그를 출력 형식 플래그로 합쳤습니다 — 출력과 리포트 참고. |
--max-cpu |
자동. | 구조 변화. 비동기 스케줄러(tokio)가 코어에 작업을 알아서 분배하므로 수동 CPU 고정은 의미가 없습니다. |
--no-spinner |
자동. | UI. 파이프, 조용한 모드(-S), 기계가 읽는 출력 형식(json, sarif 등)에서는 배너와 스피너가 알아서 억제됩니다. |
헤드리스 검증이 없어졌기 때문에 결과의 증거 등급이 v2보다 중요해졌습니다. [V]는 파싱한 응답에서 DOM 수준으로 확인된 것이고, [A]는 정적 분석이 찾아낸 소스→싱크 흐름으로 브라우저에서 한 번 확인해볼 값입니다. 등급 판정은 탐지 모델에서 설명합니다.
4. v3에서 새로 생긴 것
- MCP 서버(
dalfox mcp) — JSON-RPC로 AI 코딩 어시스턴트에 Dalfox를 노출합니다. MCP 서버 참고. - 시간 예산(
--scan-timeout <secs>) — 대상별 전체 스캔 시간을 제한해, 반쯤 멈춘 서버가 실행을 붙잡지 못하게 합니다. - 페이로드 상한(
--max-payloads-per-param <int>) — 조합 폭발(우회 × 인코더)이 요청 폭주로 번지지 않게 막습니다. - 사전 점검(
--dry-run) — 페이로드를 한 개도 보내지 않고 탐색된 파라미터와 예상 요청 수를 보여줍니다. - 적응형 WAF 우회(
--waf-evasion) — WAF가 탐지되면 요청 간격을 무작위화하고, 차단 응답이 몰릴 때 쿨다운을 점증시킵니다. WAF 우회 참고. - HTTP 파라미터 오염(
--hpp) — 쿼리 파라미터를 중복시켜 문자열 매칭에 의존하는 WAF를 지나갑니다.