
AI, LLM, 로보틱스, 데이터 과학, 머신 러닝 및 딥 러닝(이에 국한되지 않음) 분야에서 Python RCE 경로와 심층 역직렬화 체인을 발견하기 위한 에이전틱 LLM 기반 관계 매핑을 갖춘 AST 기반 정적 코드 분석기.

전통적인 스캐너를 훨씬 뛰어넘어, YAML, Msgpack, CBOR, 사용자 정의 JSON 훅을 포함한 120개 이상의 라이브러리와 형식을 감사하기 위한 범용 고성능 프레임워크를 제공합니다. 여기서 "안전한" 직렬화에 대한 전통적인 신뢰는 로직 기반의 치명적인 RCE 벡터를 숨기고 있습니다. 임포트, 별칭, 복잡한 점 표기 속성을 해석함으로써, 이 도구는 현대 분산 아키텍처와 AI/ML 저장소에서 위험한 코드 경로의 우선순위를 정하는 고충실도 신호 증폭기 역할을 합니다.
이 프로젝트는 원시 탐지에서 심층 기술 감사로 전환하는 모듈식 다단계 워크플로를 통해 작동합니다. 초기 고속 SAST 스캔에 이어, 생태계는 실행 흐름을 추적하는 특수 관계 매퍼와 상세한 보안 보고서를 생성하는 결과 프로세서를 활용합니다. 이러한 체계적인 접근 방식은 모든 발견 사항이 애플리케이션의 더 넓은 아키텍처 내에서 맥락화되도록 보장하여, 대량의 텔레메트리를 실행 가능한 연구 자산과 인프라 수준의 공격 표면 매핑을 단순화하는 구조화된 마일스톤으로 전환합니다.
가장 고급 단계에서 Deserializer는 자율 AI 보안 에이전트(Phase 4)를 통합하며, 이는 "자기 명령 주입" 제한을 탐색하고 HuggingFace 추론 API, 로컬 LLM(llama.cpp 등), 또는 OpenAI API 호환을 기반으로 기능적 재현 가이드를 합성하도록 명시적으로 설계되었습니다.
프로젝트가 발전함에 따라, 추상 구문 트리 정적 분석, 관계 매핑, 보고, 문서화된 연구에 기반한 기능적 익스플로잇 개발 사이의 간극을 메움으로써 자동화된 취약점 연구의 최전선을 계속 정의해 나가고 있습니다.
Deserializer는 Genesis World (v0.2.1), MuJoCo (v3.7.0), LeRobot (v0.5.1), Brax (v0.14.2), TensorFlow (v2.21.0), LangGraph (v1.1.6), VibeVoice (v0.0.1), Hugging Face Hub (v1.11.0), PyGlove (v0.4.5) 등 다양한 대규모 AI, 로보틱스, 데이터 과학 프로젝트 및 환경 전반에서 RCE 및 안전하지 않은 역직렬화 경로를 찾아내어 보안 연구를 직접 지원합니다.
그 기능은 업계를 선도하는 프레임워크에서 치명적인 취약점 발견을 직접적으로 지원하여, 복잡한 MLOps 및 에이전트 AI 환경 감사에서의 효용성을 입증했습니다.
이 프로젝트는 네 가지 뚜렷한 단계로 구성되며, 각 단계는 분석을 대량의 자동화된 텔레메트리에서 심층적이고 기능적인 보안 연구로 전환하도록 설계되었습니다:
| 단계 | 제목 | 도구 / 엔진 | 목표 |
|---|---|---|---|
| 1 | 고속 탐지 | deserializer.py (Triple-Pass) | 잠재적인 역직렬화 싱크를 식별하기 위해 대규모 SAST를 수행합니다. |
| 2 | 관계 매핑 | 결과 프로세서 / 매퍼 | 실행 흐름과 컴포넌트 상호 의존성을 추적하여 발견 사항을 맥락화합니다. |
| 3 | 기술 종합 | 연구 문서화 | 발견 사항을 기술 문서로 공식화하고 인프라 수준의 공격 표면을 매핑합니다. |
| 4 | 자율 AI 에이전트 | AI 보안 에이전트 | HuggingFace 추론 API, 로컬 LLM(llama.cpp 등), 또는 OpenAI API 호환을 사용하여 0-day 발견을 자동화하고 기능적 재현 가이드/익스플로잇을 생성합니다. |
저장소 구성의 개략도와 각 전문 디렉터리의 기술적 목적:
agent/docs/exploit_development/modules/reports/research/templates/이 스캐너는 Python의 concurrent.futures.ProcessPoolExecutor를 기반으로 구축된 고성능 병렬 실행 엔진을 특징으로 합니다. 사용 가능한 모든 CPU 코어에 걸쳐 확장되도록 설계되었으며(-j 또는 --concurrency 플래그로 제어 가능), 수만 개의 파일을 몇 초 만에 스캔할 수 있습니다.
ctypes를 통해 네이티브 SetConsoleCtrlHandler를 활용하여 과중한 처리 중에도 Ctrl+C가 100% 반응하도록 보장합니다.ctypes를 통해 가상 터미널 처리를 자동으로 활성화합니다.[!WARNING] 성능 경고: 매우 크거나 복잡한 파일(예: 1MB, 2MB, 3MB 이상)을 분석할 때, 깊은 AST 트리를 파싱하는 동안 도구가 상당히 느려지거나 "멈춘" 것처럼 보일 수 있습니다. 이러한 병목 현상이 발생하면
--timeout(느린 파일 건너뛰기) 및--max-size(거대한 파일 건너뛰기) 플래그를 사용하여 스캔 속도를 유지하는 것을 고려하십시오.
pickle.loads())뿐만 아니라 위험한 함수 참조(예: func = pickle.load)도 식별하여 로컬 네임스페이스 전반의 할당을 추적합니다.import pickle as p → p.loads(...)import torch as t → t.load(...)pkg.pickle.loads(...) 또는 torch.serialization.load(...)와 같은 깊은 속성lineno, col_offset)module, name, qualified_namecategory 및 severity (추가 필드, 하위 호환)parser: 어떤 엔진 패스가 발견을 수행했는지 나타내는 메타데이터 (ast, tokenize_fallback, 또는 regex_fallback).MAX_FILE_BYTES)MAX_AST_NODES)rules.json에서 사용자 정의 규칙 세트를 로드하고 잘못된 형식의 항목/오타에 대해 경고합니다.최소 Python 버전 3.9+ 권장, 3.10+ 테스트 완료.
python --version
# Python 3.9+ 권장
설정 요구 사항:
.env 파일을 생성하십시오:
# Hugging Face 공급자의 경우
HF_TOKEN=your_token_here
# OpenAI / 로컬 LLM 공급자의 경우
HA_LLM_TOKEN=your_jwt_token_here
스캐너를 실행하기 전에 반드시 종속성을 설치해야 합니다:
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
권장 사용법:
python deserializer.py --path cloned-repo --rules-file rules.json -j 4 --out cloned-repo/cloned-repo.jsonl
python deserializer.py --path cloned-repo --rules-file rules.json -j 4 --out cloned-repo/cloned-repo.jsonl --agent --agent-provider local --llm-api-url http://127.0.0.1:8181/v1
python deserializer.py --path cloned-repo --rules-file rules.json -j 4 --out cloned-repo/cloned-repo.jsonl --agent --agent-provider openai --llm-api-url http://127.0.0.1:8181/v1
이 단계는 심층 코드 검토를 수행하고 복잡한 0-day RCE 벡터를 매핑하기 위해 특수 AI 보안 에이전트를 통합합니다. 에이전트는 발견 사항을 분석하여 "자기 명령 주입" 컨텍스트를 역추적하고 다중 플랫폼(예: 공격자 UNIX/Raspberry vs 피해자 Windows)에 중점을 둔 기술 재현 가이드를 생성합니다. 참고: 이 단계는 --agent 플래그가 제공된 경우에만 실행됩니다.
추론 공급자:
.env 파일 또는 환경 변수에 HF_TOKEN이 필요합니다.python deserializer.py --path /path/to/repo --agent --agent-provider huggingfacellama.cpp): 로컬 REST 서버(llama-server.exe)를 사용합니다.
.\llama-server.exe --model .\models\model.gguf --host 127.0.0.1 --port 8181 --ctx-size 600000 --jinjapython deserializer.py --path /path/to/repo --agent --agent-provider local --llm-api-url http://127.0.0.1:8181/v1.env에 HA_LLM_TOKEN(또는 OPENAI_API_KEY)이 필요합니다.python deserializer.py --path /path/to/repo --agent --agent-provider openai --llm-api-url http://127.0.0.1:8181/v1현재 디렉터리를 스캔하고 발견 사항을 터미널에 출력합니다(기본적으로 JSONL을 stdout에 기록):
python deserializer.py
특정 저장소를 스캔하고 발견 사항을 JSONL 파일에 저장합니다:
python deserializer.py --path /path/to/my-repo --out audit_results.jsonl
8개의 동시 프로세스와 파일당 5초 타임아웃을 사용하여 스캔을 계속 진행합니다:
python deserializer.py -j 8 --timeout 5 --out findings.jsonl
배너를 비활성화하고 파이프 처리를 위해 JSONL을 stdout으로 직접 스트리밍합니다(사람용 로그는 stderr로 이동):
python deserializer.py --no-banner --out - | jq .
처리를 1MB 미만의 파일로 제한하고 특정 데이터 디렉터리를 건너뜁니다:
python deserializer.py --max-size 1048576 --skip-dirs "data,samples,tests"
독점 규칙 세트를 사용하여 로직 특정 호출을 탐지합니다:
python deserializer.py --rules-file my_custom_rules.json --out legacy_audit.jsonl
스캔과 매핑이 완료된 후 AI 기반 심층 분석(Phase 4)을 트리거합니다:
python deserializer.py --path /path/to/repo --out findings.jsonl --agent