AI 아티팩트를 위한 안티바이러스를 만들다: CI/CD 파이프라인에서 사용하는 방법
요약
AI 시스템의 아티팩트(RAG 문서, 데이터셋 등)는 이제 소프트웨어처럼 보안 위협에 노출됩니다. AegisGate Scanner는 이러한 AI 아티팩트를 위한 정적 분석 도구로, 프롬프트 주입이나 PII 유출 같은 보안 취약점을 CI/CD 파이프라인에서 스캔할 수 있게 합니다.
핵심 포인트
- AI 아티팩트 전용 보안 스캐너 출시 (AegisGate Scanner)
- 기존 코드 스캐닝 도구로는 AI 특화 위협(프롬프트 주입 등) 탐지 불가
- CI/CD 파이프라인에 통합하여 자동화된 보안 검사가 가능함
AI 시스템은 소프트웨어 시스템이 의존성을 소비하는 방식과 동일하게 아티팩트(artifacts)를 소비합니다. RAG 문서, 훈련 데이터셋, 모델 구성, 에이전트 스킬 등 모든 것이 AI가 무엇을 수행할지 결정하는 입력값입니다. 단 하나의 오염된 문서만으로도 악성 프롬프트를 주입하거나, 비밀 정보를 유출시키거나, 모델의 비정상적인 동작을 유발할 수 있습니다.
저는 AegisGate Security의 1인 창업자이며, 프로덕션에 도달하기 전에 AI 아티팩트에서 보안 위협을 스캔하는 정적 분석 도구인 AegisGate Scanner v0.3.0를 출시했습니다.
268개의 탐지 패턴. 9가지 카테고리. 8가지 출력 형식. Apache 2.0 라이선스. 원격 측정 기능 없음(No telemetry).
작동 방식과 사용 방법을 알려드리겠습니다.
이 도구를 만든 이유
기존의 도구 환경을 살펴보고 저는 격차를 발견했습니다:
| 위협 | Semgrep / CodeQL | TruffleHog / Gitleaks | AegisGate Scanner |
|---|---|---|---|
| 프롬프트 주입 (Prompt injection) | ❌ | ❌ | ✅ 17개 패턴 + ML |
| ... | |||
| Semgrep과 CodeQL은 코드 레벨의 데이터 흐름 분석에 탁월합니다. TruffleHog과 Gitleaks는 비밀 정보 찾기에 좋습니다. 하지만 이들 중 어느 것도 RAG 코퍼스에 내장된 프롬프트 주입, 에이전트 스킬 파일에 숨겨진 위험한 함수 호출, 또는 훈련 데이터셋을 통해 유출되는 PII(개인 식별 정보)를 스캔하지는 못합니다. |
Scanner는 기존 도구들의 대체재가 아닙니다. AI 아티팩트 공격 표면(attack surface)만을 위해 특별히 설계된 보완적인 도구입니다.
빠른 시작: 첫 번째 스캔까지 30초
# 설치 (curl — 체크섬 검증이 포함된 원라인 설치 프로그램)
curl -fsSL https://raw.githubusercontent.com/aegisgatesecurity/aegisgate-scanner/main/install.sh | bash
...
끝입니다. 설정 파일이나 API 키가 필요 없습니다. 원격 측정 기능도 없습니다. 그냥 스캔만 합니다.
탐지하는 것들
9가지 카테고리에 걸친 268개의 정규 표현식 패턴과 선택적 신경망 탐지 레이어:
| 카테고리 | 패턴 | 예시 |
|---|---|---|
| 프롬프트 주입 (Prompt Injection) | 17 | "Ignore all previous instructions", SSTI 프로브, base64-encoded 페이로드, 간접 주입 (indirect injection) |
| ... |
ML 레이어는 선택적이며 추가적인 기능을 제공합니다. 스캐너는 두 가지 빌드로 배포됩니다: 라이트 빌드(lite build) (순수 Go 언어, CGO 없음, 약 20MB Docker 이미지)와 ML 빌드(ML build) (ONNX Runtime 포함, 약 150MB). 둘 다 동일한 268개의 정규 표현식 패턴을 공유합니다.
CI/CD 통합: GitHub Action
여기서 스캐너의 강점이 발휘됩니다. 원하는 워크플로우에 추가하여 GitHub 코드 스캔 UI에서 SARIF 결과를 얻으세요:
name: AegisGate Scanner
on: [push, pull_request]
...
이 Action은 GitHub Marketplace에서 사용할 수 있습니다. 최신 주요 버전으로 자동 업데이트하려면 @v0을 사용하고, 재현성을 위해 @v0.3.0과 같이 버전을 고정할 수 있습니다.
사용 가능한 입력값:
| 입력 (Input) | 기본값 (Default) | 설명 (Description) |
|---|---|---|
path | . | 스캔할 디렉터리 |
| ... |
Docker: 사용 사례별 두 가지 이미지
# ML 활성화 버전 (전체 탐지, 약 150MB)
docker build --target ml -t aegisgate-scanner .
docker run --rm -v $(pwd):/github/workspace aegisgate-scanner scan /github/workspace
...
라이트 이미지는 distroless입니다. 즉, 쉘(shell)도 없고 패키지 관리자도 없어 공격 표면이 최소화되어 있습니다. 가장 작은 크기의 이미지가 필요하고 ML 탐지가 필요하지 않은 CI 파이프라인에 완벽합니다.
8가지 출력 형식
스캐너는 기본적으로 8가지 출력 형식을 지원합니다. 각 형식을 언제 사용해야 하는지 알려드립니다:
# Text — 터미널 / 사람이 읽기 쉬움 (기본값)
aegisgate-scanner scan ./project
...
알아두면 좋은 고급 기능
폭탄 방지 기능을 갖춘 아카이브 추출
스캐너는 .zip, .tar.gz, 및 .tar.bz2 아카이브 내부를 추출하여 스캔합니다:
aegisgate-scanner scan ./project --extract-archives
아카이브 폭탄 보호 기능은 100MB 추출 제한과 10,000 파일 개수 제한을 적용합니다. 경로 탐색(Path traversal) (Zip Slip / Tar Slip)은 차단됩니다. 이는 중요합니다 — 공격자가 여러분의 RAG 코퍼스 내에 겉보기에 무해한 아카이브 안에 오염된 문서를 숨길 수 있기 때문입니다.
CI/CD 게이팅을 위한 기준선 설정(Baseline Suppression)
기존 발견 사항 때문에 파이프라인이 막히는 것을 방지하세요. 먼저 기준선을 만들고, 새로운 발견 사항만 스캔하도록 하세요:
aegisgate-scanner scan ./project --format json -o baseline.json
...
이것이 제가 CI/CD 게이팅을 위해 추천하는 패턴입니다: 모든 PR에서 스캔하지만, 새로운 발견 사항에 대해서만 빌드를 실패시킵니다. 기존 문제는 별도로 추적하고 수정할 수 있습니다.
콘텐츠 해시 캐싱(Content-Hash Caching)
실행 간 변경되지 않은 파일의 재스캔을 건너뛰세요:
aegisgate-scanner scan --cache .
결과는 SHA-256(content)으로 캐시됩니다 — 이름이 바뀐 파일도 여전히 캐시에 접근합니다. 콘텐츠가 변경되거나, 패턴이 변경되거나, 스캐너 버전이 올라갈 때만 캐시가 무효화됩니다. 수천 개의 파일로 구성된 모노레포(monorepo)에서 이는 증분 스캔을 거의 즉각적으로 만듭니다.
Git 히스토리 스캐닝(Git History Scanning)
발견 사항이 언제 도입되었는지 확인하세요:
aegisgate-scanner scan-history ./project
커밋별로 스캔하여, 비밀 정보나 프롬프트 주입(prompt injection)이 처음 추가된 시점과 누가 했는지를 보여줍니다. 이는 사고 대응 및 감사 추적(audit trails)에 유용합니다.
Stdin/Pipe 모드
파일로 작성하지 않고 파이프된 콘텐츠를 스캔하세요:
cat suspicious_agent_skill.py | aegisgate-scanner scan - --stdin-ext .py
curl -s https://example.com/rag-doc.md | aegisgate-scanner scan - --stdin-ext .md
사용자 지정 패턴(Custom Patterns)
.aegisgate.yml을 통해 자체 탐지 패턴을 추가하세요:
custom_patterns:
- name:
| Input Size | Latency | Throughput |
| --- | --- | --- |
| 1 KB | 18.7 ms | ~53 KB/s |
| ... |
That은 line-by-line 키워드 사전 필터링과 이진 탐색(binary-search) 라인/컬럼 조회 방식을 통해 v0.2.0 대비 **12배 향상**되었습니다 (기존 12.7초/MB에서 현재 1.88초/MB로). 지연 시간은 입력 크기에 선형적으로 비례합니다.
The 1 KB 케이스(~19ms)는 실시간 IDE 통합에 충분히 빠릅니다. 스캐너 자체 코드베이스(61개 Go 파일)를 자가 스캔하는 작업은 최대 메모리 14MB를 사용하여 5.8초 만에 완료됩니다.
## 테스트 (Testing)
저는 테스트를 매우 중요하게 생각합니다. 이 스캐너는 다음과 같은 기능을 갖추고 있습니다:
| Test Type | Count | Description |
| --- | --- | --- |
| Unit tests | 1,080+ | 함수별 정확성 (Per-function correctness) |
| ... |
모든 9개의 테스트 가능한 패키지는 ≥90%의 커버리지를 유지합니다. 레이스 디텍터(race detector)는 CI에서 실행되며, 퍼즈 테스팅(Fuzz testing)도 CI에서 실행됩니다.
## 설정 (Configuration)
프로젝트 루트에 `.aegisgate.yml`을 생성하세요:
무시할 경로 (glob 패턴)
ignore_paths:
- AegisGate Platform — 서버 측 게이트웨이(Server-side gateway). 실시간 API 호출, 223 탐지 패턴, 30개 이상의 규정 준수 프레임워크를 가로챕니다. 프로덕션 환경에서 AI를 운영하는 팀을 위한 솔루션입니다.
- AegisGate Rampart — 무료 로컬 프록시(Free local proxy). AI 코딩 도구를 사용할 때 비밀 정보가 기기를 떠나기 전에 가로챕니다. 개인 개발자를 위한 솔루션입니다.
- AegisGate MCP — 23개 보안 계층을 갖춘 안전한 MCP 서버 프레임워크(Secure MCP server framework). MCP 서버를 구축하는 팀을 위한 솔루션입니다.
- AegisGate Scanner — AI 아티팩트용 정적 분석(Static analysis). CI/CD 환경 또는 로컬에서 실행됩니다. 파일이 AI 시스템에 도달하기 전에 스캔합니다.
Scanner는 런타임 제품(runtime products)의 'Shift Left' 보완재입니다. 파일이 AI 파이프라인에 들어온 후가 아니라, 전에 스캔하세요.
향후 계획 (What's Next)
v0.3.0이 최초 공개 버전입니다. 로드맵에는 다음 내용이 포함되어 있습니다:
- 전용 테스트 코퍼스(test corpora)를 사용한 Scanner 전용 코퍼스 평가
- TruffleHog, Gitleaks, Semgrep 대비 경쟁 벤치마크 보고서
- 트랜스포머 기반 ML 모델 업그레이드 (DistilBERT/BERT)
- 멀티모달 아티팩트 지원 (이미지 기반 프롬프트 주입)
- 매우 큰 파일을 위한 스트리밍 스캔 모드
- 추가 압축 파일 형식(.7z, .rar)
사용해 보기 (Try It)
curl -fsSL https://raw.githubusercontent.com/aegisgatesecurity/aegisgate-scanner/main/install.sh | bash
aegisgate-scanner scan ./my-project
- GitHub: aegisgatesecurity/aegisgate-scanner
- Marketplace: AegisGate Scanner Action
- Website: aegisgatesecurity.io/scanner/
- License: Apache 2.0
이 내용이 유용하다면, 레포지토리를 스타(star)해주세요. 다른 사람들이 이 도구를 발견하는 데 도움이 됩니다.
모든 AI 상호작용을 안전하게 보호하세요 (Secure Every AI Interaction).
조쉬 콜빈(Josh Colvin)은 오픈소스 기반의 자체 호스팅 AI 보안 솔루션인 AegisGate Security의 설립자입니다. Apache 2.0 라이선스를 따르며, 원격 측정(telemetry)이나 데이터 외부 전송(data egress)이 없습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기