Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/promptfoo/modelaudit
Static AnalysisStatic Code Analysis (SAST)Vulnerability AnalysisData ExfiltrationMalware AnalysisDevSecOpsSecret DetectionSupply Chain SecurityAI Security
GitHubpromptfoo/modelaudit

modelaudit

AI/ML 모델 파일용 보안 스캐너입니다. 배포 전에 악성 코드, 백도어 및 취약점을 탐지합니다.

671721시간 5분 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기웹사이트

ModelAudit

배포 전에 AI 모델을 보호하세요. ML 모델 파일에서 악성 코드, 잠재적 백도어 지표, 보안 취약점을 탐지하는 정적 스캐너입니다. 모델을 로드하거나 실행하지 않습니다.

PyPI version Python versions Code Style: ruff License Security policy

ModelAudit scan results

전체 문서 | 사용 예시 | 지원 형식

ModelAudit을 사용하는 이유

모델은 신뢰할 수 없는 레지스트리에서 다운로드되고, CI를 거쳐 프로덕션에서 실행됩니다. 기존 SAST 도구는 pickle opcode, HDF5 그룹 레이아웃, ONNX proto 그래프, TensorFlow SavedModel 서명을 검사하지 않지만 ModelAudit은 검사합니다:

  • 정적으로 스캔합니다. 어떤 모델도 로드되거나 역직렬화(unpickle)되거나 실행되지 않습니다.
  • 실제로 배포하는 형식을 다룹니다. pickle, PyTorch, SafeTensors, ONNX, TensorFlow, Keras, GGUF, 아카이브, 설정을 아우르는 40개 이상의 스캐너.
  • CI에 통합됩니다. 기계 판독 가능한 출력(JSON, SARIF), 엄격 모드, 종료 코드, 선택 가능한 스캐너.
  • 커버리지 한계를 표시합니다. 인식된 스캐너는 잘린 읽기나 예산 소진과 같은 한정 분석 공백을 완전히 커버된 결과로 가장하지 않고 보고합니다.

비교 도구: picklescan (pickle 전용, Python 기반), fickling (pickle 전용, AST 기반), modelscan (pickle + TensorFlow + Keras 하위 집합). ModelAudit은 더 넓은 범위를 지원하며 동반 패키지 modelaudit-picklescan을 통해 네이티브 Rust pickle 엔진을 제공합니다.

빠른 시작

Python 3.10-3.13 필요```bash pip install "modelaudit[all]"

Scan a file or directory

modelaudit model.pkl modelaudit ./models/

Export results for CI/CD

modelaudit model.pkl --format json --output results.json

root@kitploit:~
입력된 콘텐츠가 없습니다.```
$ modelaudit suspicious_model.pkl

Files scanned: 1 | Issues found: 2 critical, 1 warning

1. suspicious_model.pkl (pos 28): [CRITICAL] Malicious code execution attempt
   Why: Contains os.system() call that could run arbitrary commands

2. suspicious_model.pkl (pos 52): [WARNING] Dangerous pickle deserialization
   Why: Could execute code when the model loads

탐지 항목

  • 코드 실행 공격 — Pickle, PyTorch, NumPy, Joblib 파일에서
  • 잠재적 백도어 지표 — 의심스러운 가중치 패턴, 비정상 텐서 또는 숨은 코드 신호
  • 내장된 비밀 정보 — 모델 가중치 또는 메타데이터의 API 키, 토큰 및 자격 증명
  • 네트워크 지표 — 데이터 유출을 가능하게 할 수 있는 URL, IP 및 소켓 사용
  • 아카이브 취약점 — ZIP/TAR/7z 파일의 경로 탐색, 심링크 공격
  • 안전하지 않은 ML 작업 — Lambda 레이어, 사용자 정의 ops, TorchScript/JIT, 템플릿 삽입
  • 공급망 위험 — 변조, 라이선스 위반, 의심스러운 구성

지원 형식

ModelAudit에는 모델, 아카이브 및 구성 형식을 포괄하는 45개의 등록된 스캐너가 포함되어 있습니다:

또한 ZIP, TAR, 7-Zip, OCI 레이어, Jinja2 템플릿, JSON/YAML 메타데이터, 매니페스트, 모델 카드, 텍스트 파일 및 RAR 인식을 위한 스캐너도 포함됩니다. RAR 아카이브는 건너뛰지 않고 지원되지 않음/fail-closed로 보고됩니다.

구조적으로 유효한 TensorFlow SavedModel 및 MetaGraph protobuf는 비모델 접미사로 이름이 변경된 경우에도 인식됩니다. CoreML 모델은 이름이 변경된 경우에도 인식될 수 있으며, 불완전한 적용 범위는 명시적으로 보고됩니다. 크기가 과대하지만 그럴듯한 프레이밍을 가진 SafeTensors 파일은 .jpg와 같이 달리 사용되지 않는 접미사 아래에서 제한적이고 결론이 나지 않는 분석을 위해 유지됩니다. 구조적으로 타당한 Flax/JAX MessagePack 체크포인트도 비모델 접미사로 이름이 변경된 경우 인식됩니다. 완전히 분류할 수 없는 이름 변경 구조는 불완전 적용 범위로 보고됩니다. 구조화된 JAX/Orbax JSON 체크포인트 메타데이터도 이름이 변경된 경우 인식됩니다. 크기가 과대한 모호한 후보는 불완전 적용 범위로 보고되며, 제한된 검사 접두사에서 관찰 가능한 보안 패턴은 여전히 보수적으로 보고될 수 있습니다.

전체 형식 문서 보기

원격 소스

원격 레지스트리 및 클라우드 스토리지에서 모델을 직접 스캔하세요:```bash

Hugging Face

modelaudit https://huggingface.co/gpt2 modelaudit hf://microsoft/DialoGPT-medium

Cloud storage

modelaudit s3://bucket/model.pt modelaudit gs://bucket/models/

MLflow registry

Non-local artifact stores: export MODELAUDIT_MLFLOW_ALLOWED_ARTIFACT_URIS=s3://trusted-bucket/models

modelaudit models:/MyModel/Production

JFrog Artifactory (files and folders)

Auth: export JFROG_API_TOKEN=...

modelaudit https://company.jfrog.io/artifactory/repo/model.pt modelaudit https://company.jfrog.io/artifactory/repo/models/

DVC-tracked models

modelaudit model.dvc

root@kitploit:~
### 인증 환경 변수

- `HF_TOKEN` - 비공개 Hugging Face 저장소용
- `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` (및 선택적으로 `AWS_SESSION_TOKEN`) - S3용
- `GOOGLE_APPLICATION_CREDENTIALS` - GCS용
- `MLFLOW_TRACKING_URI` - MLflow 레지스트리 접근용
- `MODELAUDIT_MLFLOW_ALLOWED_ARTIFACT_URIS` - 비로컬 MLflow 아티팩트 루트용 (쉼표로 구분된 URI 접두사)
- `s3://bucket/prefix`와 같은 구체적인 백엔드 루트를 사용하세요. 논리적 `models:/` 또는 `runs:/` URI와 퍼센트 인코딩된 원격 경로는 거부됩니다.
- `JFROG_API_TOKEN` 또는 `JFROG_ACCESS_TOKEN` - JFrog Artifactory용
- `MODELAUDIT_JFROG_ALLOWED_HOSTS` - 자격 증명을 받을 수 있는 쉼표로 구분된 사용자 지정 JFrog 호스트 이름용
- `MODELAUDIT_JFROG_ALLOWED_REDIRECT_HOSTS` - 자격 증명 없이 다운로드할 수 있는 쉼표로 구분된 외부 리디렉션 호스트 이름용
- 자격 증명은 환경 변수 또는 시크릿 관리자에 저장하고, 토큰/키를 커밋하지 마세요.

## 설치```bash
# Broad scanner coverage (recommended; excludes the TensorFlow runtime and platform-specific TensorRT)
pip install "modelaudit[all]"

# Core only (static scanners, pickle, NumPy, archives, manifests, metadata)
pip install modelaudit

# Specific frameworks (TensorFlow installs on Python 3.11-3.12; ONNX installs on Python 3.10-3.12)
pip install "modelaudit[tensorflow,pytorch,h5,onnx,safetensors]"

# CI/CD environments
pip install "modelaudit[all-ci]"

# On Python 3.11-3.12, add TensorFlow only when you need runtime-dependent checkpoint or weight analysis
pip install "modelaudit[all,tensorflow]"

# Docker
docker run --rm -v "$(pwd)":/app ghcr.io/promptfoo/modelaudit:latest model.pkl

ONNX 엑스트라(modelaudit[all]의 ONNX 부분 포함)는 Python 3.10-3.12용으로 패키징되어 있습니다. PyTorch를 포함하는 엑스트라는 Python 3.10-3.12 또는 표준(GIL 활성화) CPython 3.13이 필요합니다. 패치된 PyTorch 2.13 휠은 free-threaded CPython 3.13t를 지원하지 않습니다. ModelAudit의 네이티브 pickle 스캐너도 CPython 3.13t를 지원하지 않으므로 표준 CPython을 사용하세요. Apple Silicon에서 PyTorch를 포함하는 엑스트라는 휠이 macosx_14_0_arm64를 대상으로 하므로 macOS 14 이상이 필요합니다. 코어 전용 설치는 macOS 11-13에서 정적 스캐닝용으로 계속 사용할 수 있습니다.

CLI 옵션

주요 명령:```bash modelaudit [PATHS...] # Default scan command modelaudit scan [OPTIONS] PATHS... # Explicit scan command modelaudit scan --list-scanners # List scanner IDs for targeted scans modelaudit metadata [OPTIONS] PATH # Extract model metadata safely (no deserialization by default) modelaudit doctor [--show-failed] # Diagnose scanner/dependency availability modelaudit debug [--json] [--verbose] # Environment and configuration diagnostics modelaudit cache [stats|clear|cleanup] [OPTIONS]

root@kitploit:~
일반적인 스캔 옵션:```text
--format {text,json,sarif}   Output format (default: auto-detected)
--output FILE                Write results to file
--strict                     Fail on warnings, scan all file types, strict license validation
--sbom FILE                  Generate CycloneDX SBOM
--stream                     Process files one-by-one; remote downloads are deleted after scanning
--assume-shard-family        Treat explicitly listed cross-directory shards as one model family
--max-size SIZE              Size limit (e.g., 10GB)
--timeout SECONDS            Override scan timeout
--dry-run                    Preview what would be scanned
--verbose / --quiet          Control output detail
--blacklist PATTERN          Additional patterns to flag
--no-cache                   Disable result caching
--cache-dir DIR              Set cache directory for downloads and scan results
--progress                   Force progress display
--scanners LIST              Only run selected scanners (IDs/classes; comma-separated or repeated)
--exclude-scanner NAME       Exclude a scanner from the active set (comma-separated or repeated)
--list-scanners              List scanner IDs, class names, extensions, and dependencies

대상 스캐너 선택:```bash

Discover scanner IDs and class names

modelaudit scan --list-scanners modelaudit scan --list-scanners --format json

Run only selected scanners

modelaudit scan ./models --scanners pickle,tf_savedmodel modelaudit scan ./model.pkl --scanners PickleScanner

Run the default scanner set except a noisy or slow scanner

modelaudit scan ./models --exclude-scanner weight_distribution

For container formats, include both the container scanner and nested scanner

modelaudit scan ./archive.zip --scanners zip,pickle

root@kitploit:~
`--scanners`는 명시적 허용 목록에서 시작합니다. `--exclude-scanner`는 해당 허용 목록 또는 기본 스캐너 세트에서 스캐너를 뺍니다. 스캐너 선택은 JSON 출력의 `scanner_selection` 아래에 반영됩니다.

원격 폴더의 경우 ModelAudit은 안전할 때 선택된 스캐너 확장자에 따라 다운로드를 제한합니다. 콘텐츠 기반 renamed-wrapper 라우팅은 획득 후 적용됩니다. 저장소 파일 이름이 의도적으로 오해를 불러일으킬 수 있는 경우 직접 파일 URL을 스캔하십시오.

## 메타데이터 추출```bash
# Human-readable summary (safe default: no model deserialization)
modelaudit metadata model.safetensors

# Machine-readable output
modelaudit metadata ./models --format json --output metadata.json

# Focus only on security-relevant metadata fields
modelaudit metadata model.onnx --security-only

--trust-loaders는 모델 콘텐츠를 역직렬화할 수 있는 스캐너 메타데이터 로더를 활성화합니다. 격리된 환경의 신뢰할 수 있는 아티팩트에서만 사용하세요.

종료 코드

  • 0: 보안 문제가 감지되지 않음
  • 1: 보안 문제가 감지됨
  • 2: 스캔 오류

텔레메트리 및 개인정보 보호

ModelAudit는 제품 안정성 및 사용 분석을 위한 텔레메트리를 포함합니다.

  • 수집되는 메타데이터에는 명령 및 기능 사용, 스캔 및 다운로드 시점 또는 크기 메타데이터, 스캐너/파일 형식 사용, 안정적인 규칙 또는 CVE 식별자, 심각도 집계, 등록된 파일 확장자, 대략적인 소스 또는 공급자 범주, 런타임 버전, 플랫폼 및 CI 메타데이터가 포함될 수 있습니다.
  • 텔레메트리에는 원시 로컬 경로, 파일 이름, 모델 ID 또는 이름, 저장소 또는 아티팩트 식별자, 버킷 또는 객체 키, 원격 URL 경로, 자유 형식 이슈 또는 오류 텍스트, URL 사용자 정보, 쿼리 문자열, 프래그먼트 또는 모델 바이너리 콘텐츠가 포함되지 않습니다.
  • 패키지 설치에서는 기본적으로 텔레메트리가 활성화됩니다. CI=true 또는 IS_TESTING=true가 설정되면 텔레메트리가 자동으로 비활성화되며, MODELAUDIT_TELEMETRY_DEV=1이 아닌 경우 편집 가능한 개발 설치에서도 비활성화됩니다. 다른 CI 제공자(TeamCity, CodeBuild, Bitbucket Pipelines, Jenkins)에서 전송된 이벤트는 다운스트림에서 필터링할 수 있도록 isRunningInCi=true로 태그가 지정됩니다.
  • 지속적인 익명 사용자 식별자는 Promptfoo와의 교차 도구 상관관계를 위해 ~/.promptfoo/promptfoo.yaml에 저장되며, 각 텔레메트리 세션은 새로운 세션 식별자를 사용합니다. ~/.modelaudit/user_config.json의 기존 ID는 업그레이드 후 첫 실행 시 마이그레이션됩니다. 해당 파일에 레거시 이메일 값이 있는 경우 분석 사용자 프로필에 첨부될 수 있습니다.

다음 환경 변수 중 하나로 명시적으로 옵트아웃하세요:```bash export PROMPTFOO_DISABLE_TELEMETRY=1

or

export NO_ANALYTICS=1

root@kitploit:~
editable/개발 설치 중 옵트인하려면:```bash
export MODELAUDIT_TELEMETRY_DEV=1

출력 예시```bash

JSON for CI/CD pipelines

modelaudit model.pkl --format json --output results.json

SARIF for code scanning platforms

modelaudit model.pkl --format sarif --output results.sarif

root@kitploit:~
## 문제 해결

- `modelaudit doctor --show-failed`를 실행하여 사용할 수 없는 스캐너와 누락된 선택적 종속성을 확인하세요.
- `modelaudit debug --json`를 실행하여 버그 보고용 환경/구성 진단 정보를 수집하세요.
- `modelaudit cache cleanup --max-age 30`을 사용하여 오래된 캐시 항목을 안전하게 제거하세요.
- `pip`이 이전 버전을 설치하는 경우 Python이 지원되는지 확인하세요 (`python --version`; ModelAudit은 Python 3.10-3.13을 지원합니다).
- 추가 문제 해결 및 클라우드 인증 지침은 다음을 참조하세요:
  - https://www.promptfoo.dev/docs/model-audit/
  - https://www.promptfoo.dev/docs/model-audit/usage/

## 문서

- **[전체 문서](https://www.promptfoo.dev/docs/model-audit/)** — 설정, 구성 및 고급 사용법
- **[사용 예제](https://www.promptfoo.dev/docs/model-audit/usage/)** — CI/CD 통합, 원격 스캔, SBOM 생성
- **[지원 형식](https://www.promptfoo.dev/docs/model-audit/scanners/)** — 상세 스캐너 문서
- **[지원 정책](https://github.com/promptfoo/modelaudit/blob/main/SUPPORT.md)** — 지원되는 Python/OS 버전 및 유지보수 정책
- **[보안 모델 및 제한 사항](https://github.com/promptfoo/modelaudit/blob/main/docs/user/security-model.md)** — ModelAudit이 보장하는 것과 보장하지 않는 것
- **[호환성 매트릭스](https://github.com/promptfoo/modelaudit/blob/main/docs/user/compatibility-matrix.md)** — 파일 형식 대 선택적 종속성
- **[스캐너 선택](https://github.com/promptfoo/modelaudit/blob/main/docs/user/scanner-selection.md)** — 대상 스캐너 허용 목록 및 제외
- **[메타데이터 추출 가이드](https://github.com/promptfoo/modelaudit/blob/main/docs/user/metadata-extraction.md)** — 안전한 메타데이터 워크플로 및 `--trust-loaders` 지침
- **[오프라인/에어갭 가이드](https://github.com/promptfoo/modelaudit/blob/main/docs/user/offline-air-gapped.md)** — 인터넷 접속 없이 안전한 운영
- **문제 해결** — `modelaudit doctor --show-failed`를 실행하여 스캐너 사용 가능 여부를 확인하세요

## 관련 패키지

- **[`modelaudit-picklescan`](https://pypi.org/project/modelaudit-picklescan/)** — ModelAudit의 pickle, PyTorch, ExecuTorch 및 PyTorch-ZIP 스캐너에서 사용되는 독립형 Rust 기반 pickle 스캐너입니다. 전체 스캐너 번들을 원하지 않고 pickle 분석만 필요하다면(CLI가 아닌 라이브러리로) 직접 설치하세요.

## 취약점 신고

의심되는 취약점에 대해 공개 이슈를 열지 마세요. 조정된 공개 절차는 [SECURITY.md](https://github.com/promptfoo/modelaudit/blob/main/SECURITY.md)를 참조하세요.

## 기여

이슈, 기능 요청 및 PR을 환영합니다. [CONTRIBUTING.md](https://github.com/promptfoo/modelaudit/blob/main/CONTRIBUTING.md)를 참조하세요.

## 라이선스

MIT 라이선스 — 자세한 내용은 [LICENSE](https://github.com/promptfoo/modelaudit/blob/main/LICENSE)를 참조하세요.
도구 다운로드
형식확장자위험도
Pickle.pkl, .pickle, .dill높음
PyTorch.pt, .pth, .ckpt, .bin높음
Joblib.joblib높음
NumPy.npy, .npz높음
R Serialized.rds, .rda, .rdata, 서명이 유효한 이름이 변경된 워크스페이스 아티팩트높음
TensorFlow.pb, .meta, SavedModel 디렉터리중간
Keras.h5, .hdf5, .keras중간
ONNX.onnx중간
CoreML.mlmodel, 구조적으로 유효한 이름이 변경된 아티팩트낮음
MXNet*-symbol.json, *-NNNN.params, 구조적으로 유효한 이름이 변경된 symbol JSON낮음
NeMo.nemo, 루트 구성이 있는 이름이 변경된 아카이브중간
CNTK.dnn, .cmf, 서명이 유효한 이름이 변경된 아티팩트중간
RKNN.rknn, 충돌하지 않는 이름 변경 접미사 아래의 서명이 유효한 아티팩트중간
Torch7직렬화된 아티팩트 (.t7, .th, .net 또는 이름 변경)높음
CatBoost.cbm중간
XGBoost.bst, .model, .json, .ubj, 확장자 없는 UBJSON중간
LightGBM.lgb, .lightgbm, .model, 서명이 유효한 이름이 변경된 아티팩트중간
Llamafile실행 가능한 래퍼 (.llamafile, .exe, 확장자 없음 또는 이름 변경)중간
TorchServe.mar높음
SafeTensors.safetensors낮음
GGUF/GGML.gguf, .ggml, .ggmf, .ggjt, .ggla, .ggsa, 서명이 유효한 이름이 변경된 아티팩트낮음
JAX/Flax.msgpack, .flax, .orbax, .jax, .checkpoint, .orbax-checkpoint낮음
TFLite.tflite, 충돌하지 않는 이름 변경 접미사 아래의 서명이 유효한 아티팩트낮음
ExecuTorch.ptl, .pte, 충돌하지 않는 이름 변경 접미사 아래의 서명이 유효한 독립형 아티팩트낮음
TensorRT.engine, .plan, .trt낮음
PaddlePaddle.pdmodel, .pdiparams낮음
OpenVINO.xml낮음
Skops.skops높음
PMML.pmml낮음
Compressed Wrappers.gz, .bz2, .xz, .lz4, .zlib중간