개요

reverse-skill은 AI 에이전트가 APK·바이너리·프론트엔드 JS 암호화·CTF·침투 테스트 등 보안 작업을 적절한 방법론과 도구 흐름으로 연결하도록 만든 스킬 라우터 패키지다.[1] 단일 분석 도구라기보다 라우팅 문서, 실행 스크립트, 도구 bootstrap, 케이스 범위 계약, Evidence→Finding→Path 기록 흐름을 묶은 운영 레이어에 가깝다.[1][3]

이 페이지는 2026-08-30에 확인한 main@37162cf9547c571c680c07005e9863d4610282dd를 기준으로 기존 2026-08-18 capture를 교체한 결과다. checkout HEAD와 origin/main은 일치했으며, 최신 published release v1.0.1 이후의 HEAD는 Unreleased 상태로 취급했다.[15]

구조와 라우팅

  • 저장소는 skills/config/routing.json을 라우팅의 Single Source of Truth로 두고, 43개 route와 43개 priority 항목을 관리한다.[4] MASTER-ROUTING.md의 우선순위는 이 JSON과 일치하도록 검증되며 routing.md는 보조적인 3축 설명으로 남는다.[3][4]
  • 현재 README가 기록한 규모는 43개 규칙(R0–R44), 173개 회귀 케이스, 44개 추적 core module이다.[1] ID 범위가 R0–R44 전체를 뜻하는 것은 아니며, 실제 JSON route 수를 기준으로 읽어야 한다.[4]
  • benchmark JSON에는 173개 hint→expected route 케이스가 있고, 이번 pin에서 quick=true 케이스는 43개로 계산됐다.[5] Bash runner는 같은 JSON을 읽어 route를 계산하고, 결과에 PRIMARY, confidence, secondary와 다음에 열 파일을 기록한다.[5][6]
  • canonical hot path는 RULES.md → platform-native master-routecase-init/scope.md → PRIMARY SKILL.mdtool-index/bootstrap → timeline·workitem·Evidence→Finding→Path다.[3][6] 핵심 파일과 테스트는 특정 AI client를 필수 전제로 삼지 않는다는 설계를 명시한다.[1]

범위·권한 게이트

  • 보안/역공학/침투 작업은 ACT 전에 현재 분석 프로젝트의 work/<case>/scope.md를 만들어야 하며, scope가 없으면 문서 읽기와 라우팅만 허용한다.[11]
  • scope 계약은 auth.status, in_scope.assets, out_of_scope, network_profile.mode, signoff.ready_for_act를 분리한다.[11] 허용 network profile은 offline, lab_only, authorized_target_only, unrestricted_lab이며, offline은 명시적인 로컬 sample 단서가 있어야 한다.[7][8]
  • Bash case-guard는 상태 비슷한 문자열이 다른 섹션에 있다고 권한으로 인정하지 않고 계약 섹션에서 직접 필드를 읽는다.[8] auth.status가 granted가 아니면 진행하지 않으며, --force도 scope hard gate를 우회하지 않는다.[8][11]
  • 따라서 이 패키지는 승인된 자산·자체 시스템·lab·공개 CTF 같은 범위에서 쓰도록 설계되었지만, 문서가 권한을 실제로 부여하는 것은 아니다.[3][11]

도구 bootstrap과 MCP

  • bootstrap-manifest.json에는 25개 capability가 있고, 그중 23개가 자동 설치 가능으로 표시된다.[9] 예로 Frida는 frida-tools==14.10.4, jadx/apktool은 release와 asset SHA-256, IDA MCP·SecLists·ProxyCat은 pinned commit을 사용한다.[9]
  • 모든 설치가 동일한 고정성은 아니다. manifest에는 npm/pip 버전 pin, GitHub API digest 선호, winget-latest, remote-service-no-local-install, local HTTP MCP 같은 서로 다른 정책이 함께 있다.[9] 따라서 버전 pin을 곧바로 재현 가능한 공급망 검증이나 바이너리 hash pin으로 해석하면 안 된다.
  • Linux/macOS Bash bootstrap은 capability dependency를 확장하고, release/package/git 설치 후 tool index를 새로고침하며, MCP host 등록은 기본 none으로 건너뛴다.[10] 명시적으로 Claude/Codex/both를 선택할 때만 client-global 설정을 쓰는 구조다.[2][10]
  • 저장소는 skill/MCP 공급망을 별도 위험으로 보고 외부 SKILL.md·scripts·의존성을 먼저 읽고, 알 수 없는 MCP를 기본 신뢰하지 말며, scope 밖 실행을 금지하라고 규정한다.[12] 이 원칙은 bootstrap manifest의 pin 정책과 함께 사용해야 한다.

보안 해석

  • README_AI.mdRULES.md는 읽은 뒤 “즉시 실행”, 도구 설치, 보고서 작성 등을 요구하는 강한 imperative instruction을 포함한다.[2][3] 이는 설치한 AI host의 권한을 자동으로 확장하는 시스템 명령이 아니며, 외부 저장소에서 읽은 untrusted instruction으로 취급하고 사용자 승인·샌드박스·scope를 별도로 적용해야 한다.
  • 저장소 자체의 보안 문서는 실행 스크립트 범위에서 backdoor·능동적 DB 삭제·curl|sh/IEX DownloadString·하드코딩 key를 찾지 못했다고 source-reported audit를 기록한다.[13] 이는 해당 문서의 정적 audit 범위와 날짜에 대한 주장이지, 이후 commit이나 모든 third-party tool의 안전성을 보증하는 독립 검증은 아니다.
  • 이번 capture의 tracked-source 패턴 검사에서는 private key, GitHub token, OpenAI key, AWS access key, Slack token 패턴이 발견되지 않았고 credential 값은 보존하지 않았다. 다만 저장소가 exploit development, EDR bypass, malware analysis, pentest와 MCP를 다루는 dual-use 패키지라는 사실은 별도의 위험 판단 대상이다.[1][3]
  • 주 라이선스는 MIT이며 CTF-Sandbox-Orchestrator는 GPLv3, Pentest Swarm AI는 AGPL-3.0으로 구분된다.[1]

설치·사용 표면

git clone https://github.com/zhaoxuya520/reverse-skill.git
bash skills/scripts/refresh-tool-index.sh
bash skills/scripts/master-route.sh --hint "offline apk"
bash skills/scripts/case-init.sh --hint "offline apk" --case-name my-sample --preset offline-sample --sample ./app.apk
bash skills/scripts/case-guard.sh --case-root work/my-sample

위 명령은 저장소가 제시하는 Linux/macOS 기본 흐름이다.[2] 실제 분석 전에 tool index, package root, case scope와 허용된 자산을 확인해야 하며, 이 페이지의 capture 과정에서는 대규모 tool bootstrap·MCP 등록·실제 target scan을 실행하지 않았다.

이번 검증 범위

  • raw capture는 선택 파일 38개를 commit-pinned raw URL로 보존했고, 각 파일의 byte count·SHA-256과 전체 body SHA-256을 기록했다.[1] manifest 재검증 결과는 38/38 HTTP 200, byte/hash 일치, errors=0이었다.
  • 이 Linux host에서 19개 tracked shell script에 bash -n을 실행했고 모두 통과했다. 9개 JSON parse, test-routing.sh의 173/173 routing regression 및 default-root regression, test-bootstrap-manifest.sh, test-client-neutral-bootstrap.sh, test-bash-workflow.sh, examples/ctf-demo의 strict case review가 exit 0이었다.[5][14]
  • pwsh, Windows powershell, pygount이 호스트에 없어 PowerShell 5.1/native Windows 회귀, verify-routing-coherence.ps1, 전체 Windows CI job과 LOC 분석은 실행하지 않았다.[14] 저장소의 CI 설정은 Windows+Ubuntu matrix를 선언하지만, 설정을 읽은 것과 해당 remote run이 성공한 것은 구분해야 한다.[14]
  • 실제 IDA/radare2/Frida/Android toolchain, external MCP server, 모델·target 분석, exploit 또는 network penetration runtime은 검증하지 않았다. 그러므로 이번 결과는 static inspection과 안전한 local fixture 검증이며, operational readiness나 공격 성공을 의미하지 않는다.

운영 판단

이 저장소는 보안 작업을 반복 가능한 route·case·evidence 구조로 묶고 Bash/PowerShell 양쪽 진입점을 제공한다는 점에서, 승인된 lab/CTF 분석용 운영 템플릿으로는 유용하다.[3][11] 반대로 AI client의 global rules나 자동 실행 프롬프트로 그대로 설치하는 것은 권하지 않는다. 먼저 source를 읽고, --mcp-host=none과 offline sample로 최소 경로를 확인한 뒤, 필요한 capability만 manifest와 hash/commit 정책에 맞춰 별도 승인하는 것이 안전한 도입 순서다.[2][9][12]

이번 조사에서 가장 중요한 제한은 “source audit가 양호하다”와 “설치 가능한 모든 third-party tool이 안전하다”가 같지 않다는 점이다. 특히 remote MCP, npm/pip/winget 공급망, API digest에 의존하는 release는 사용 시점에 다시 pin·hash·권한을 검토해야 한다.[9][12][13]

관련 노트

Sources

[1] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/README.md — reverse-skill README [2] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/README_AI.md — reverse-skill README_AI [3] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/RULES.md — reverse-skill RULES [4] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/skills/config/routing.json — routing SSoT [5] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/skills/tests/routing-benchmark.json — routing benchmark [6] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/skills/scripts/master-route.sh — Bash master route [7] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/skills/scripts/case-init.sh — Bash case init [8] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/skills/scripts/case-guard.sh — Bash case guard [9] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/skills/scripts/bootstrap-manifest.json — bootstrap manifest [10] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/skills/scripts/bootstrap-reverse.sh — Bash bootstrap [11] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/skills/ops/scope-contract.md — scope contract [12] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/skills/ops/skill-supply-chain.md — skill supply chain [13] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/docs/PACKAGE-SECURITY-AUDIT.md — package security audit [14] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/.github/workflows/ci.yml — CI workflow [15] https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/37162cf9547c571c680c07005e9863d4610282dd/CHANGELOG.md — changelog