
에이전트 시대를 위해 구축된 CLI 보안 스캐너. CI/CD 설정 오류, 에이전트 권한 위험, MCP 도구 주입, 하드코딩된 비밀값, DMCA 플래그가 지정된 AI 종속성을 탐지합니다.
Ship Safe는 현대 소프트웨어 팀을 위한 AI 보안 스캐너입니다. 저장소 내에서 로컬로 실행되며 애플리케이션 코드, AI 에이전트, MCP 구성, 프롬프트, 의존성, CI/CD, 비밀 정보, 클라우드 관련 구성 전반의 문제를 찾아내고, 안전한 수정 사항을 검토하고 적용할 수 있도록 도와줍니다.
한 줄의 명령으로 스캔을 시작하세요:
npx ship-safe
가입 불필요. 스캔에 API 키가 필요 없습니다. 핵심 검사는 오프라인에서도 작동합니다. AI 기반 레드팀 모드는 사용 가능한 경우 구성된 공급자를 사용합니다.
--no-ai를 사용하면 완전히 로컬에서만 스캔이 보장됩니다. 공급자 기반 분류, 심층 분석, GPT-Red는 최선의 자격 증명 마스킹 후 제한된 컨텍스트를 선택한 공급자에게 직접 전송합니다. 정확한 경계와 컨텍스트 제한은 보안 및 데이터 흐름을 참조하세요.
# 대화형 REPL: 한 세션에서 스캔, 수정, 질문
npx ship-safe
# 전체 감사: 비밀 정보 + 29개 에이전트 + 의존성 + 수정 계획
npx ship-safe audit .
# 에이전트가 읽을 수 있는 콘텐츠에 대한 AI 에이전트 레드팀 시나리오
npx ship-safe red-team . --gpt-red
# 대화형 수정 에이전트: 계획, diff, 승인, 검증
npx ship-safe agent .
npx ship-safe agent . --severity critical # critical 심각도 결과만
npx ship-safe agent . --branch --pr # 브랜치에서 수정 + PR 열기
# 마지막 수정 실행 취소
npx ship-safe undo
# CI/CD 모드 — critical 심각도 발견 시 실패
npx ship-safe ci . --sarif results.sarif
npx ship-safe ci . --fail-on high # 더 엄격: critical 또는 high
| 영역 | 예시 |
|---|---|
| AI 및 LLM 보안 | 프롬프트 인젝션, 에이전트 하이재킹, 과도한 권한, 메모리 오염, RAG 오염, 안전하지 않은 도구 호출 |
| MCP 및 에이전트 구성 | 과도한 도구 권한, 오염된 레지스트리, 신뢰할 수 없는 전송, 위험한 허용 목록 |
| 애플리케이션 보안 | SQL/NoSQL 인젝션, XSS, SSRF, 인증 우회, 경로 탐색, 안전하지 않은 API 라우트 |
| 비밀 정보 및 규정 준수 | API 키, 토큰, 자격 증명, PII, git 히스토리에 유출된 비밀 정보 |
| 공급망 | 타이포스쿼팅, 의존성 혼동, 위험한 설치 스크립트, 고정되지 않은 AI 액션 |
| CI/CD | 파이프라인 오염, 고정되지 않은 GitHub Actions, 비밀 정보 로깅, 안전하지 않은 워크플로 트리거 |
ship-safe ci를 사용하여 위험한 빌드를 실패시키고 SARIF를 GitHub 코드 스캐닝에 업로드하세요.
오픈 소스 CLI는 모든 저장소를 로컬에서 스캔하는 가장 빠른 방법입니다. 동일한 스캐너를 중심으로 호스팅 워크플로가 필요할 때 업그레이드하세요:
| 필요 사항 | 사용 |
|---|---|
| 로컬 스캔, 감사, 에이전트 지원 수정 | 무료 CLI |
| 스캔 기록, 클라우드 대시보드, PDF 보고서 | Pro |
| 공유 작업 공간, PR Guardian, 팀 보고서, 협업 | Team |
플랜 비교는 shipsafe.sh/pricing에서 확인하세요.
스캔 기록, PR Guardian, 결제, 팀 워크플로를 위한 호스팅 대시보드인 Ship Safe Cloud는 상용 제품 코드와 호스팅 인프라 워크플로를 포함하므로 비공개 저장소에서 개발됩니다. 공개 ship-safe 저장소는 MIT 라이선스 CLI, 보안 에이전트, 규칙, 픽스처, CI 통합 및 문서에 집중합니다. 저장소 경계는 Ship Safe Cloud를 참조하세요.
모든 에이전트는 병렬로 실행됩니다. 각 에이전트는 관련 없는 프로젝트를 자동으로 건너뜁니다.
| 에이전트 | 카테고리 | 감지 항목 |
|---|---|---|
| InjectionTester | 코드 취약점 | SQL/NoSQL 인젝션, 명령 인젝션, XSS, 경로 탐색, XXE, ReDoS, 프로토타입 오염 |
| AuthBypassAgent | 인증 | JWT 결함 (alg:none, 약한 비밀 키), CSRF, OAuth 잘못된 구성, BOLA/IDOR, TLS 우회 |
| SSRFProber | SSRF | fetch/axios의 사용자 입력, 클라우드 메타데이터 엔드포인트, 내부 IP |
| SupplyChainAudit | 공급망 | 타이포스쿼팅, 와일드카드 버전, 의심스러운 설치 스크립트, 의존성 혼동 |
| ConfigAuditor | 구성 | Docker (root 사용자, :latest), Terraform, Kubernetes, CORS, CSP, Firebase, Nginx |
| SupabaseRLSAgent | 인증 | 클라이언트 코드의 service_role 키, RLS 없는 테이블, anon 키 삽입 |
| LLMRedTeam | AI/LLM | OWASP LLM Top 10: 프롬프트 인젝션, 과도한 권한, 시스템 프롬프트 유출 |
| MCPSecurityAgent | AI/LLM | MCP 서버 오용, 도구 오염, 타이포스쿼팅, 검증되지 않은 입력 |
| AgenticSecurityAgent | AI/LLM | OWASP Agentic AI Top 10: 에이전트 하이재킹, 권한 상승, Kimi K3/OpenAI 호환 도구 호출 오용 |
| RAGSecurityAgent | AI/LLM | 컨텍스트 인젝션, 문서 오염, 벡터 DB 접근 제어 |
| MemoryPoisoningAgent | AI/LLM | 에이전트 메모리 파일의 명령 인젝션, 숨겨진 유니코드 페이로드 (ASI-01, ASI-05) |
| PIIComplianceAgent | 규정 준수 | 소스 코드의 SSN, 신용카드, 이메일, 전화번호 |
| VibeCodingAgent | 코드 취약점 | AI 생성 코드 안티패턴: 검증 없음, 빈 catch, TODO-인증 |
| ExceptionHandlerAgent | 코드 취약점 | 빈 catch, 처리되지 않은 거부, 유출된 스택 트레이스 (OWASP A10:2025) |
| AgentConfigScanner | AI/LLM | .cursorrules, CLAUDE.md의 프롬프트 인젝션, 악성 Claude Code 훅 |
| MobileScanner | 모바일 | OWASP Mobile Top 10 2024: 안전하지 않은 저장소, WebView 인젝션, 디버그 모드 |
| GitHistoryScanner | 비밀 정보 | git 커밋 히스토리의 유출된 비밀 정보 |
| CICDScanner | CI/CD | 파이프라인 오염, 고정되지 않은 액션, 비밀 정보 로깅 (OWASP CI/CD Top 10) |
| APIFuzzer | API | 인증 없는 라우트, 대량 할당, GraphQL 인트로스펙션, 디버그 엔드포인트 |
후처리기: ScoringEngine · VerifierAgent (비밀 정보 활성 상태) · DeepAnalyzer (LLM 오염 분석)
$ ship-safe
███████╗██╗ ██╗██╗██████╗ ███████╗ █████╗ ███████╗███████╗
...
v9.4.1 · DeepSeek · ~/my-project
/scan으로 문제 찾기 · /agent로 수정하기 · /help로 더 보기
shipsafe ›
| 명령 | 기능 |
|---|---|
/scan | 프로젝트 다시 스캔 |
/agent | 대화형 수정 루프 실행 |
/findings | 마지막 스캔의 결과 목록 |
/show <n> | 결과 n의 전체 세부 정보 |
/plan <n> | 결과 n의 수정 계획 미리보기 (쓰기 없음) |
/undo [--all] | 마지막 수정 실행 취소 (또는 모든 수정) |
/share | 스캔 보고서를 공개 URL로 게시 (7일) |
/diff | git 작업 트리 diff 표시 |
/provider <name> | 세션 중 LLM 공급자 전환 |
/quit | 종료 (Ctrl-D 또는 Ctrl-C도 가능) |
/로 시작하지 않는 모든 것은 최신 스캔 결과를 컨텍스트로 하여 LLM에 자유 형식 질문으로 전송됩니다.
# .github/workflows/security.yml
name: Security Audit
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Security gate
run: npx ship-safe ci . --sarif results.sarif
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: results.sarif
GitLab CI 버전은 docs/examples/gitlab-security-workflow.yml에 있습니다.
critical 및 high 결과를 변경된 줄에 첨부하려면 pull_request 워크플로에서 Action을 사용하세요. 포크 기여의 경우 이 경로에서 pull_request_target을 사용하지 마세요: 체크아웃에 신뢰할 수 없는 코드가 포함될 수 있으므로 Ship Safe는 이 권한 있는 조합을 거부합니다.
name: Ship Safe
on:
pull_request:
permissions:
contents: read
pull-requests: write
security-events: write
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: asamassekou10/[email protected]
with:
fail-on: high
inline: true
인라인 주석은 선택 사항이며 critical/high 결과만 게시합니다. 작업을 다시 실행하면 중복 인라인 주석을 만들지 않고 요약이 업데이트됩니다.
모든 공급자와 호환 — 환경 변수에서 자동 감지됩니다. --provider <name>으로 재정의하세요.
Anthropic · OpenAI · Google · DeepSeek · Kimi K3 / Moonshot · Groq · Together · Mistral · xAI · Perplexity · Ollama · LM Studio · 모든 OpenAI 호환 엔드포인트
Kimi는 MOONSHOT_API_KEY 또는 KIMI_API_KEY를 통해 기본적으로 kimi-k3를 사용합니다. 장기 컨텍스트 GPT-Red 및 심층 분석 실행에는 --provider kimi --model kimi-k3를 사용하세요.
Kimi K3 특정 장기 컨텍스트 레드팀:
npx ship-safe red-team . --gpt-red --provider kimi --model kimi-k3 --k3-long-context
Ship Safe는 또한 Kimi K3 / OpenAI 호환 도구 호출 구현에서 프롬프트 컨텍스트의 동적 도구 로딩, 누락된 도구 허용 목록, 신뢰할 수 없는 입력에 대한 강제 도구 호출, 원본 어시스턴트 도구 호출 메시지 없이 재생된 도구 결과를 확인합니다.
핵심 스캔에는 API 키가 필요 없습니다. AI 분류 및 red-team --gpt-red는 사용 가능한 경우 구성된 공급자를 사용하며, GPT-Red 검사에는 결정적 오프라인 폴백이 있습니다.
password = get_password() # ship-safe-ignore
critical 결과는 항상 보고됩니다. 인라인 주석으로 숨길 수 없으며, 억제 시도는 스캔에 기록됩니다. 이 주석은 사람이 오탐을 배제하기 위한 것이며, AI 에이전트를 포함하여 소스 코드 한 줄을 쓸 수 있는 모든 것이 주석을 쓸 수 있으므로 가장 높은 심각도는 이를 인정하지 않습니다. 모든 억제는 집계되므로 결과를 숨긴 스캔은 결과가 없는 스캔처럼 읽히지 않습니다.
# .ship-safeignore
tests/fixtures/
docs/
재현율은 스캐너의 쉬운 절반입니다. 모든 것을 플래그하는 도구는 모든 것을 잡아내지만 쓸모가 없으므로, 우리는 나머지 절반을 측정합니다: 거의 확실히 괜찮은 코드에 대해 Ship Safe가 무엇을 말하는지.
v9.6.3 이전 동일한 네 프로젝트의 1031개 결과에서 감소했으며, NodeGoat 및 DVWA로 검증되어 감소가 탐지 손실이 아닌 노이즈 감소임을 확인했습니다. 남은 1개의 critical은 오탐이며 벤치마크는 어떤 것인지와 이유를 명시합니다.
코퍼스는 커밋으로 고정되고, 한 명령으로 재현 가능하며, 제한 사항이 문서화되어 있습니다: benchmarks/false-positives/
Ship Safe를 그들 대신이 아닌 함께 실행하세요. CodeQL은 Ship Safe가 시도하지 않는 프로시저 간 오염 분석을 수행하고, Gitleaks는 비밀 정보 전문가이며, Trivy는 실제 CVE 데이터베이스를 기반으로 합니다.
Ship Safe는 더 좁은 질문을 다룹니다: AI 코딩 에이전트가 방금 저장소, CI, 로컬 도구 구성에 무엇을 했는지. MCP 클라이언트 구성, 에이전트 메모리 오염, 환각 패키지 가져오기 및 AIBOM은 다른 네 도구에서 동등한 공개 규칙을 찾지 못한 영역입니다.
공개 레지스트리로 검증된 전체 적용 범위 매트릭스(그들이 우리를 능가하는 부분 포함): docs/comparison.md
[](https://shipsafe.sh)
10.0은 Hermes Agent 적용 범위입니다. Ship Safe는 이미 Hermes 배포를 스캔하지만, Hermes가 v0.20.0인 동안 v0.13.0을 기준으로 합니다 — ACP 어댑터, TUI 게이트웨이, 서버리스 터미널 백엔드, cron 블루프린트 및 플러그인 매니페스트가 그 사이에 모두 적용 범위 없이 출시되었습니다.
Ship Safe는 오픈 소스이며, 가장 좋은 기여는 AI 지원 개발을 더 안전하게 만드는 작고 집중된 개선입니다.
좋은 첫 영역:
여기서 시작하세요:
Ship Safe는 MIT 라이선스이며 영원히 무료입니다.
빠르게 배포하세요. 안전하게 배포하세요. — shipsafe.sh
| ManagedAgentScanner | AI/LLM | Claude 관리형 에이전트 잘못된 구성: always_allow 정책, 제한 없는 네트워킹 (ASI-03–ASI-07) |
| HermesSecurityAgent | AI/LLM | 도구 레지스트리 오염, 함수 호출 인젝션, 스킬 권한 드리프트 (ASI-01–ASI-10) |
| AgentAttestationAgent | 공급망 | 고정되지 않은 에이전트 버전, 누락된 무결성 해시, 서명되지 않은 매니페스트 (ASI-10, SLSA L0) |
| AgenticSupplyChainAgent | 공급망 | 과도한 권한의 AI CI 액션, OAuth 범위 확장, 서명되지 않은 AI 웹훅 수신기 (ASI-02, ASI-06) |
| RobloxSecurityAgent | 공급망 | 악성 Roblox/Luau Toolbox 자산 (런타임 자산 인젝션, rbxassetid:// 로더, HttpEnabled, 인스턴스 속성에 숨겨진 페이로드) |
| ModelScanAgent | 공급망 | ML 모델 가중치의 코드 실행 페이로드 (.pt/.pkl/.ckpt의 pickle opcode), weights_only 없는 torch.load, 스캐너 회피 아카이브 (CWE-502, CWE-506) |
| TrustBoundaryAgent | 에이전틱 | GhostApproval 심볼릭 링크 공격 ( |
| SlopSquatAgent | 공급망 | 환각/유령 패키지 가져오기 (슬롭스쿼팅) — 선언되지 않았거나, 설치되지 않았거나, 내장되지 않은 베어 가져오기 및 알려진 AI 환각 이름 (CWE-1357) |
| ClickFixAgent | 공급망 | ClickFix/가짜 CAPTCHA 붙여넣기-실행 유도 (가짜 오류 + Win+R/Ctrl+V/명령 모음 키 입력, PowerShell 크래들) 및 가짜 설치 프로그램 npm 수명 주기 스크립트 (CWE-1357, CWE-506) |
| InstallGuardAgent | 공급망 | 수명 주기 스크립트의 npm 웜 동작 (자격 증명 수집, 환경 변수 유출, 파괴적 rm -rf, 난독화된 node -e) 및 무기화된 binding.gyp node-gyp 액션 (CWE-506, CWE-829) |