{"id":49796703,"url":"https://github.com/R00T-Kim/SCOUT","last_synced_at":"2026-05-24T09:01:28.517Z","repository":{"id":331815083,"uuid":"1128247870","full_name":"R00T-Kim/SCOUT","owner":"R00T-Kim","description":"Deterministic firmware-to-exploit evidence engine. Drop a firmware blob, get hash-anchored findings with SARIF + CycloneDX SBOM + verified exploit chains.","archived":false,"fork":false,"pushed_at":"2026-05-18T05:22:12.000Z","size":7566,"stargazers_count":9,"open_issues_count":2,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-18T05:44:33.273Z","etag":null,"topics":["binary-analysis","cyclonedx","embedded-security","evidence-chain","exploit-chain","firmware-analysis","firmware-security","ghidra","iot-security","mcp","pcode","reverse-engineering","sarif","sbom","security-automation","slsa","static-analysis","vex","vulnerability-scanner"],"latest_commit_sha":null,"homepage":"https://r00t-kim.github.io/ko#projects","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/R00T-Kim.png","metadata":{"files":{"readme":"README.ko.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"docs/roadmap_llm_agent_integration.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-05T11:01:37.000Z","updated_at":"2026-05-18T05:22:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/R00T-Kim/SCOUT","commit_stats":null,"previous_names":["r00t-kim/scout"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/R00T-Kim/SCOUT","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/R00T-Kim%2FSCOUT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/R00T-Kim%2FSCOUT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/R00T-Kim%2FSCOUT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/R00T-Kim%2FSCOUT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/R00T-Kim","download_url":"https://codeload.github.com/R00T-Kim/SCOUT/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/R00T-Kim%2FSCOUT/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33427584,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"online","status_checked_at":"2026-05-24T02:00:06.296Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binary-analysis","cyclonedx","embedded-security","evidence-chain","exploit-chain","firmware-analysis","firmware-security","ghidra","iot-security","mcp","pcode","reverse-engineering","sarif","sbom","security-automation","slsa","static-analysis","vex","vulnerability-scanner"],"created_at":"2026-05-12T12:00:24.411Z","updated_at":"2026-05-24T09:01:28.511Z","avatar_url":"https://github.com/R00T-Kim.png","language":"Python","funding_links":[],"categories":["Tools","Software Tools"],"sub_categories":["Binary Parsing and Analysis Tools"],"readme":"\u003cp align=\"right\"\u003e\n  \u003ca href=\"README.md\"\u003eEnglish\u003c/a\u003e |\n  \u003cstrong\u003e한국어\u003c/strong\u003e\n\u003c/p\u003e\n\n# SCOUT (v3.0.0-rc1)\n\n### 결정론적 증거 계보를 갖춘 AEG-First 펌웨어 익스플로잇 가능성 플랫폼\n\n**SCOUT은 가공되지 않은 펌웨어 바이너리를 증거 기반 익스플로잇 가능성 체인, 실험실 한정 Proof-of-Vulnerability 모듈, 감사 가능한 보고서로 변환하는 AEG-first 펌웨어 분석 플랫폼입니다. 이제 바이너리와 쉘 스크립트를 동시에 감사하는 하이브리드 분석 엔진을 탑재했습니다.**\n\n*기존의 스캐너들이 탐지 수량과 속도에만 치중할 때, SCOUT은 고신뢰도 AEG 코파일럿 역할을 수행합니다. 단순한 CVE 목록을 나열하는 대신, ELF 바이너리와 쉘 스크립트를 가로지르는 익스플로잇 체인을 재구성하고, 증거 기반 추론과 실험실 한정 PoV/PoC 검증으로 연결합니다.*\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"#what-you-can-do\"\u003e주요 기능\u003c/a\u003e •\n  \u003ca href=\"#why-scout\"\u003eSCOUT의 강점\u003c/a\u003e •\n  \u003ca href=\"#quick-start\"\u003e빠른 시작\u003c/a\u003e •\n  \u003ca href=\"#key-features\"\u003e핵심 특징\u003c/a\u003e •\n  \u003ca href=\"CHANGELOG.md\"\u003e변경 이력\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Python](https://img.shields.io/badge/Python-3.10+-3776AB?style=for-the-badge\u0026logo=python\u0026logoColor=white)](https://python.org)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue?style=for-the-badge)](LICENSE)\n[![Zero Deps](https://img.shields.io/badge/Dependencies-Zero_(stdlib)-orange?style=for-the-badge)]()\n[![Version](https://img.shields.io/badge/Version-3.0.0--rc1-red?style=for-the-badge)]()\n\n[![SARIF](https://img.shields.io/badge/SARIF-2.1.0-blue?style=for-the-badge\u0026logo=github)]()\n[![SBOM](https://img.shields.io/badge/SBOM-CycloneDX_1.6+VEX-brightgreen?style=for-the-badge)]()\n[![SLSA](https://img.shields.io/badge/SLSA-Level_2-purple?style=for-the-badge)]()\n\n\u003cbr /\u003e\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003cstrong\u003e1,123\u003c/strong\u003e\u003cbr/\u003e\u003csub\u003e분석 대상 펌웨어\u003c/sub\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cstrong\u003e98.8%\u003c/strong\u003e\u003cbr/\u003e\u003csub\u003e분석 성공률\u003c/sub\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cstrong\u003e1,300+\u003c/strong\u003e\u003cbr/\u003e\u003csub\u003e스크립트 전수 조사\u003c/sub\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cstrong\u003e99.3%\u003c/strong\u003e\u003cbr/\u003e\u003csub\u003e오탐 감소율 (LLM)\u003c/sub\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cstrong\u003ev3.0.0-rc1\u003c/strong\u003e\u003cbr/\u003e\u003csub\u003e하이브리드 엔진\u003c/sub\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/div\u003e\n\n---\n\n\u003ch2 id=\"what-you-can-do\"\u003e🚀 SCOUT으로 할 수 있는 것\u003c/h2\u003e\n\n- **하이브리드 분석**: 단일 파이프라인에서 ELF 바이너리와 쉘 스크립트를 통합적으로 감사합니다.\n- **심층 익스플로잇 탐지**: `Web -\u003e IPC -\u003e Config -\u003e Daemon` 또는 `Shell -\u003e Binary`로 이어지는 복합 공격 체인을 탐지합니다.\n- **AEG-first AutoPoC**: **Exploit Pattern RAG**를 활용하여 펌웨어 증거에서 실험실 검증용 Proof-of-Vulnerability 모듈을 생성합니다.\n  - SCOUT은 firmware-relevant CVE seed를 위해 PoC-in-GitHub 메타데이터 전용 importer와 human-review-required draft pattern-card promoter를 포함합니다.\n  - PoC-in-GitHub는 귀중한 upstream seed로 사용하되, SCOUT은 raw 공개 PoC 저장소를 clone/실행/prompt 주입하지 않습니다. 사람이 검토한 pattern card만 AutoPoC retrieval 대상이 됩니다.\n  - 플랫폼 수준 AEG claim은 [`docs/aeg_e2e_validation.md`](docs/aeg_e2e_validation.md)의 동적 증거/FP gate를 통과해야 합니다. 자세한 내용은 [`docs/exploit-pattern-rag.md`](docs/exploit-pattern-rag.md)를 참고하세요.\n- **증거 기반 조사**: 글래스모피즘 웹 대시보드를 통해 디컴파일된 P-code와 쉘 로직을 시각적으로 조사합니다.\n- **감사/규제 대응형 보고**: SARIF, CycloneDX 1.6 SBOM+VEX, SLSA L2 증명서를 생성합니다.\n\n---\n\n\u003ch2 id=\"aeg-rag-status\"\u003e🧪 현재 AEG / Exploit RAG 검증 상태\u003c/h2\u003e\n\nSCOUT v3.0.0-rc1의 1순위는 감사 리포팅이 아니라 **AEG(Automated Exploit Generation) 품질**입니다. 따라서 RAG 확장은 \"공개 PoC를 많이 넣었다\"가 아니라, 펌웨어 증거에서 재현 가능한 PoV를 만들고 patched/control에서 fail-closed 되는지로 판단합니다.\n\n| 항목 | 현재 상태 |\n|---|---|\n| 공개 RAG card | `memory_stateful_probe`, `cgi_param_cmd_injection`, `config_derived_cmd_injection` |\n| Synthetic vulnerable/control pair | 3개 card 모두 통과 |\n| Real known-vulnerable/patched firmware pair | 아직 0개 — broad AEG release claim 전 필수 |\n| 공식 펌웨어 pair 확보 | NETGEAR R7000(CVE-2017-5521), D-Link DIR-859(CVE-2019-17621) official URL + SHA-256 manifest 기록됨 |\n| 실제 펌웨어 AEG 실행 상태 | R7000은 real firmware에서 RAG/AutoPoC 후보까지 도달했지만 동적 runner pass 0, DIR-859는 legacy LZMA SquashFS가 `sasquatch` 호환 extractor를 요구해 extraction 차단 |\n| 승격 전 preflight | `scripts/run_real_firmware_pair_aeg.py`가 공식 pair 분석 실행/재사용 후 `scripts/check_real_firmware_pair_aeg.py`로 펌웨어 SHA-256, vulnerable gate, patched/control fail-closed, 누락 gate artifact를 한 번에 검사 |\n| PoC-in-GitHub 사용 방식 | CVE/repo metadata seed → 사람이 검토한 draft pattern card → retriever |\n| 금지 사항 | raw PoC clone/실행, raw PoC 전체 prompt 주입, reference endpoint/payload 복붙 |\n\n검증 명령:\n\n```bash\n# 모든 curated card가 최소 vulnerable/control pair evidence를 갖는지 확인\npython scripts/check_exploit_pattern_evidence.py --require-all\n\n# broad AEG claim 전에는 이 gate도 통과해야 함\npython scripts/check_exploit_pattern_evidence.py --require-real-firmware-pair\n```\n\n현재 `--require-all`은 synthetic pair evidence 기준으로 통과하지만, `--require-real-firmware-pair`는 실제 펌웨어 pair 증거가 기록되기 전까지 실패하는 것이 정상입니다.\n\n실제 펌웨어 pair는 **다운로드 가능성**과 **취약성 검증**을 분리해서 다룹니다. `benchmarks/pair-eval/pairs.json`에는 공식 펌웨어 URL과 기대 SHA-256을 기록하고, `scripts/fetch_pair_firmware.py`가 다운로드/기존 파일 검증을 담당합니다. 그러나 이 단계는 \"입력 확보\"일 뿐이며, `real_firmware_pair` 증거로 승격하려면 vulnerable run은 AEG E2E gate를 통과하고 patched/control run은 fail-closed를 입증해야 합니다.\n\n---\n\n\u003ch2 id=\"why-scout\"\u003e💎 SCOUT의 강점\u003c/h2\u003e\n\n\u003e **[1] 하이브리드 분석 엔진 (v3)**\n\u003e 바이너리 레벨의 실행과 상위 레벨의 쉘 로직 사이의 간극을 메우며, 바이너리 전용 파이프라인이 놓치기 쉬운 스크립트 기반 공격 표면까지 가시성을 확장합니다.\n\n\u003e **[2] 해시 기반의 증거 추적성**\n\u003e 모든 탐지 결과는 특정 파일 경로, 바이트 오프셋, SHA-256 해시와 연결됩니다. 블랙박스 기반의 추측이 아닌, 추적 가능한 추론 경로만을 제공합니다.\n\n\u003e **[3] 지능형 분석가 코파일럿**\n\u003e 내장된 LLM Tribunal(찬반 토론) 시스템이 등록된 다단계 검증 파이프라인과 과거 Tier-2 벤치마크 기준으로 오탐(False Positive)을 99.3% 줄였습니다.\n\n\u003e **[4] 의존성 제로 (Pure Stdlib)**\n\u003e `pip install`의 번거로움이 없습니다. 파이썬 3.10+ 표준 라이브러리만으로 구현되어 폐쇄망이나 제한된 환경에서도 즉시 배포 가능합니다.\n\n---\n\n\u003ch2 id=\"quick-start\"\u003e⚡ 빠른 시작\u003c/h2\u003e\n\n```bash\n# 펌웨어 분석 시작 (하이브리드 모드 기본 활성화)\n./scout analyze firmware.bin\n\n# 웹 대시보드 실행\n./scout serve aiedge-runs/\u003crun_id\u003e --port 8080\n\n# 터미널 UI(TUI)로 상세 조사\n./scout ti\n\n# PoC-in-GitHub 메타데이터만 사용해 Exploit Pattern RAG 후보 seed 생성\npython scripts/import_poc_in_github_candidates.py --dry-run\n\n# 후보 하나를 human-review-required pattern card 초안으로 변환\npython scripts/draft_exploit_pattern_card.py data/exploit_references/candidates/poc_in_github/cve-2024-1781.json --print-json\n\n# 공식 known-vulnerable/patched 펌웨어 pair를 다운로드하거나 기존 파일 SHA-256 검증\npython scripts/fetch_pair_firmware.py --dry-run \\\n  --pair-id netgear-r7000-cve-2017-5521 \\\n  --pair-id dlink-dir859-cve-2019-17621\npython scripts/fetch_pair_firmware.py \\\n  --pair-id netgear-r7000-cve-2017-5521 \\\n  --pair-id dlink-dir859-cve-2019-17621\n\n# 실제 승인된 lab run 이후 동적 증거 + FP/FPR gate 강제\npython scripts/aeg_e2e_gate.py aiedge-runs/\u003crun_id\u003e\n\n# known-vulnerable/patched pair 분석 실행/재사용 + real_firmware_pair 승격 preflight\npython scripts/run_real_firmware_pair_aeg.py \\\n  --pair-id netgear-r7000-cve-2017-5521 \\\n  --fetch --no-llm \\\n  --out docs/pov/\u003cstable-pair-evidence\u003e.json\n\n# 이미 승인된 lab run이 있으면 분석을 재사용해서 fail-closed 사전 검사만 수행\npython scripts/check_real_firmware_pair_aeg.py \\\n  --pair-id netgear-r7000-cve-2017-5521 \\\n  --vulnerable-run-dir aiedge-runs/\u003cknown-vulnerable-run\u003e \\\n  --control-run-dir aiedge-runs/\u003cpatched-control-run\u003e \\\n  --out docs/pov/\u003cstable-pair-evidence\u003e.json\n\n# CI-safe AEG 회귀 테스트: 취약 lab 서비스는 pass, patched/control은 fail-closed\npython scripts/run_aeg_synthetic_pair.py --work-root /tmp/scout-aeg-synthetic-pair\npython scripts/run_aeg_synthetic_pair.py --pattern cgi_param_cmd_injection --work-root /tmp/scout-aeg-cgi-pair\npython scripts/run_aeg_synthetic_pair.py --pattern config_derived_cmd_injection --work-root /tmp/scout-aeg-config-pair\n\n# vulnerable/control 증거가 있는 Exploit Pattern RAG card 확인\npython scripts/check_exploit_pattern_evidence.py\n\n# 실제 known-vulnerable/patched 펌웨어 pair 증거를 pattern card에 기록\npython scripts/record_pattern_pair_evidence.py \u003cpattern-id\u003e --kind real_firmware_pair \\\n  --vulnerable-run-dir aiedge-runs/\u003cknown-vulnerable-run\u003e \\\n  --control-run-dir aiedge-runs/\u003cpatched-control-run\u003e \\\n  --artifact docs/pov/\u003cstable-pair-evidence\u003e.json \\\n  --vulnerable-firmware-sha256 \u003csha256\u003e \\\n  --control-firmware-sha256 \u003csha256\u003e \\\n  --cve CVE-YYYY-NNNN --apply\n```\n\n---\n\n\u003ch2 id=\"key-features\"\u003e✨ 핵심 특징\u003c/h2\u003e\n\n| | 특징 | 설명 |\n|---|---------|-------------|\n| :package: | **하이브리드 SBOM \u0026 CVE** | CycloneDX 1.6 + VEX + NVD 스캔 + 2,528개 로컬 CVE DB + 통합 쉘 스크립트 감사 |\n| :mag: | **바이너리 분석** | Ghidra P-code SSA 데이터플로우 테인 분석 + ELF 보안 설정 탐지 + 28개 위험 심볼 추적 |\n| :shell: | **스크립트 분석** | 1,000개 이상의 스크립트 전수 조사 및 위험한 패턴(`eval`, 따옴표 없는 변수, 백틱 등) 탐지 |\n| :dart: | **공격 표면 분석** | Source→sink 경로 추적, 웹 서버 자동 탐지, 5개 유형의 바이너리 간 IPC 체인 구성 |\n| :brain: | **테인 분석** | HTTP 컨텍스트를 이해하는 절차 간 테인 분석, P-code SSA 데이터플로우 시각화 |\n| :robot: | **LLM 엔진** | 4개의 백엔드 지원 + 중앙 집중식 시스템 프롬프트 + 구조화된 JSON 출력 |\n| :books: | **Exploit Pattern RAG** | 큐레이션된 pattern-card 검색 + PoC-in-GitHub 메타데이터 seed + 검토된 draft 승격 + vulnerable/control 증거 추적 |\n| :crossed_swords: | **LLM 찬반 토론** | Advocate/Critic 모델 간의 토론을 통한 고신뢰도 오탐 제거 |\n| :bar_chart: | **웹 뷰어** | KPI 바, IPC 맵, 위험 히트맵 및 증거 탐색 기능을 갖춘 대시보드 제공 |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FR00T-Kim%2FSCOUT","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FR00T-Kim%2FSCOUT","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FR00T-Kim%2FSCOUT/lists"}