
AI가 작성한 소프트웨어를 위한 독립형 보안 에이전트. 문제를 찾아내고, 그것이 실제인지 조사하며, 증거를 보여줍니다. 결정론적 코어, API 키 불필요, JSON 및 SARIF 출력.
AI가 작성한 소프트웨어를 위한 독립형 보안 에이전트입니다. 문제를 찾아내고, 그것이 실제인지 조사하며, 증거를 보여줍니다.
웹사이트 · 문서 · 보안 및 데이터 흐름 · 벤치마크 · 가격 · 블로그 · 기여하기
Ship Safe는 저장소 내에서 로컬로 실행되며 두 계층으로 동작합니다.
결정론적 엔진은 애플리케이션 코드, AI 에이전트, MCP 구성, 프롬프트, 의존성, CI/CD, 시크릿, 그리고 클라우드 인접 구성 전반에서 문제를 찾아냅니다. 빠르고 반복 가능하며 벤치마크된 이 계층은 센서 계층입니다.
그다음 조사 계층이 발견 사항의 가치를 판단합니다. 싱크에 도달하는 값을 추적하고, 규칙이 누락되었다고 말하는 제어 항목을 프로젝트에서 검색하며, 단일 파일에는 담기지 않은 구성 전반에 걸쳐 공격 체인을 구성하고, 요청 시 유출된 키를 해당 제공자에 대해 검사합니다. 모든 결론에는 그것에 도달한 패스와 읽은 줄이 함께 제공됩니다:
CONFIRMED — traced end to end (10)
NoSQL Injection via $where [high]
app/data/allocations-dao.js:78 NOSQL_INJECTION_WHERE
why: threshold is assigned from the HTTP request and reaches the sink without validation on that path.
decided by: dataflow
1. value reaches NOSQL_INJECTION_WHERE here app/data/allocations-dao.js:78
2. getByUserIdAndThreshold is called here with threshold app/routes/allocations.js:23
3. threshold is assigned here app/routes/allocations.js:20
fix: Replace $where with standard MongoDB operators ($eq, $gt, $regex, etc.)
OWASP NodeGoat에 대해 ship-safe investigate를 실행한 실제 출력입니다. 오염된 값은 라우트 파일에서 구조 분해되고 세 디렉터리 떨어진 DAO로 전달됩니다.
한 명령으로 시작하세요:
npx ship-safe
가입이 필요 없습니다. 스캔에 API 키가 필요하지 않습니다. 핵심 검사는 오프라인에서 작동합니다. AI 기반 레드팀 모드는 사용 가능한 경우 구성된 공급자를 사용합니다.
완전히 로컬 스캔을 보장하려면 --no-ai를 사용하세요. 공급자 기반 분류, 심층 분석, GPT-Red는 최선의 자격 증명 마스킹 후 제한된 컨텍스트를 선택한 공급자에게 직접 전송합니다. 정확한 경계와 컨텍스트 제한은 보안 및 데이터 흐름을 참조하세요.
22.x 라인의 Node.js 22.13+ 또는 Node.js 24+가 필요합니다. Node 18과 20은 현재 개발 버전에서 더 이상 지원되지 않습니다.
# Interactive REPL: scan, fix, and ask questions in one session
npx ship-safe
# Full audit: secrets + 31 agents + deps + remediation plan
npx ship-safe audit .
# Investigate: confirmed / likely / unresolved / refuted, with the evidence
npx ship-safe investigate .
npx ship-safe investigate . --all # also detail unresolved and refuted
npx ship-safe investigate . --verify # probe leaked keys against their providers
# Before you open an unfamiliar folder with an agent: what runs on open?
npx ship-safe trust ~/Downloads/take-home
npx ship-safe trust . --json
# What can an AI agent working in this repo actually reach?
npx ship-safe capabilities .
# AI agent red-team scenarios for agent-readable content
npx ship-safe red-team . --gpt-red
# Interactive fix agent: plan, diff, approve, inspect the static rescan
npx ship-safe agent .
npx ship-safe agent . --severity critical # critical findings only
npx ship-safe agent . --branch --pr # fix on a branch + open a PR
# Undo the last fix
npx ship-safe undo
# CI/CD mode — fails on any critical finding
npx ship-safe ci . --sarif results.sarif
npx ship-safe ci . --fail-on high # stricter: critical or high
# Gate on evidence instead of severity: block only what was established
npx ship-safe ci . --fail-on-verdict confirmed
npx ship-safe ci . --ignore-refuted # do not block on what was argued away
pull request의 경우, 신뢰할 수 있는 base 스캔과 head 스캔을 비교하여 기존 저장소 부채가 관련 없는 변경 사항을 차단하지 않으면서도 계속 표시되도록 합니다:
# On the trusted base revision
npx ship-safe ci . --fail-on none --no-deps \
--write-baseline-report /tmp/ship-safe-base.json
# On the pull request head
npx ship-safe ci . --base-report /tmp/ship-safe-base.json --fail-on high
기본 아티팩트에는 해시된 발견 항목 식별자, 상대 경로, 규칙 메타데이터가 포함됩니다. 원시 매칭된 시크릿은 저장하지 않습니다. PR 결과는 발견 항목을 도입됨, 해결됨, 변경 없음, 불확실로 분류하며, 모호한 매칭은 표시되지만 풀 리퀘스트를 차단하지 않습니다.
scan --json, audit --json, ci --json에는 schemaVersion: 1, Ship Safe 버전, UTC generatedAt 타임스탬프가 포함됩니다. 발견 항목 경로는 기본적으로 프로젝트 상대 경로이므로 로컬 디렉터리 이름을 노출하지 않고 워크스테이션과 CI 간에 보고서를 이동할 수 있습니다. 소비자가 호스트 경로를 명시적으로 필요로 하는 경우에만 --absolute-paths를 사용하십시오. SARIF 보고서는 도구 메타데이터에 동일한 패키지 버전을 포함합니다.
| 영역 | 예시 |
|---|---|
| AI 및 LLM 보안 | 프롬프트 인젝션, 에이전트 하이재킹, 과도한 권한, 메모리 포이즈닝, RAG 포이즈닝, 안전하지 않은 도구 호출 |
| MCP 및 에이전트 구성 | 과도하게 넓은 도구 권한, 오염된 레지스트리, 신뢰할 수 없는 전송, 위험한 허용 목록 |
| 애플리케이션 보안 | SQL/NoSQL 인젝션, XSS, SSRF, 인증 우회, 경로 순회, 안전하지 않은 API 라우트 |
| 시크릿 및 규정 준수 | API 키, 토큰, 자격 증명, PII, git 기록에 유출된 시크릿 |
| 공급망 | 타이포스쿼팅, 의존성 혼동, 위험한 설치 스크립트, 고정되지 않은 AI 액션 |
| CI/CD | 파이프라인 포이즈닝, 고정되지 않은 GitHub Actions, 시크릿 로깅, 안전하지 않은 워크플로 트리거 |
ship-safe ci를 사용하여 위험한 빌드를 실패시키고 SARIF를 GitHub 코드 스캐닝에 업로드하십시오.
그렇게 할 수 있고, 또 그래야 합니다. 실제 문제를 찾아낼 것입니다. 하지만 에이전트가 자신의 작업에 대해 구조적으로 답할 수 없는 세 가지 질문이 있습니다.
이 코드를 작성한 에이전트가 자기 숙제를 스스로 채점한 것은 아닌가? 작성자에게 작성자가 실수했는지 묻는 것은 리뷰가 아닙니다. Ship Safe는 별도의 방법론을 가진 별도의 리뷰어이며, 공개적으로 자기 자신과 의견이 갈립니다. 데이터 흐름 추적은 휴리스틱 패스를 뒤집고, 라이브 프로브는 둘 모두를 뒤집습니다.
에이전트가 접근할 수 있는 것을 볼 수 있는가? 저장소를 리뷰하는 코딩 에이전트는 MCP 서버 구성을 읽을 수 없고, 자신이 실행된 권한을 열거할 수 없으며, 바로 그 접근 범위가 문제의 대상인 행위자입니다. ship-safe capabilities는 이 모든 것을 외부에서 읽고, 개별적으로는 평범하지만 함께 있을 때 위험한 조합을 보고합니다: