Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ship-safe — AI가 작성한 소프트웨어를 위한 독립형 보안 에이전트. 문제를 찾아내고, 그것이 실제인지 조사하며, 증거를 보여줍니다. 결정론적 코어, API 키 불필요, JSON 및 SARIF 출력. | Kitploit
도구/GitHubGitHub/asamassekou10/ship-safe
Cloud Infrastructure SecurityStatic AnalysisContainer SecurityAPI Security TestingConfiguration AuditingDevSecOpsMobile SecuritySecret DetectionSupply Chain SecurityRed TeamingAI Security
785978415일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
asamassekou10/ship-safe

ship-safe

AI가 작성한 소프트웨어를 위한 독립형 보안 에이전트. 문제를 찾아내고, 그것이 실제인지 조사하며, 증거를 보여줍니다. 결정론적 코어, API 키 불필요, JSON 및 SARIF 출력.

저장소 보기웹사이트
<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/49363/b1f8834990a38d393bed6703c926c2f633c9d6afc19261eb02c67e9d45b7f350.png" alt="Ship Safe 로고" width="180" />
</p>
<p align="center"><strong>AI가 작성한 소프트웨어를 위한 독립형 보안 에이전트입니다. 문제를 찾아내고, 그것이 실제인지 조사하며, 증거를 보여줍니다.</strong></p>
<p align="center"><a href="https://shipsafe.sh">웹사이트</a> · <a href="https://shipsafe.sh/docs">문서</a> · <a href="https://shipsafe.sh/security">보안 및 데이터 흐름</a> · <a href="https://shipsafe.sh/benchmarks">벤치마크</a> · <a href="https://shipsafe.sh/pricing">가격</a> · <a href="https://shipsafe.sh/blog">블로그</a> · <a href="https://github.com/asamassekou10/ship-safe/contribute">기여하기</a></p>

<p align="center">
  <a href="https://www.npmjs.com/package/ship-safe"><img src="https://badge.fury.io/js/ship-safe.svg" alt="npm 버전" /></a>
  <a href="https://www.npmjs.com/package/ship-safe"><img src="https://img.shields.io/npm/dm/ship-safe.svg" alt="npm 다운로드" /></a>
  <a href="https://github.com/asamassekou10/ship-safe/actions/workflows/ci.yml"><img src="https://github.com/asamassekou10/ship-safe/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="라이선스: MIT" /></a>
  <a href="https://github.com/asamassekou10/ship-safe/stargazers"><img src="https://img.shields.io/github/stars/asamassekou10/ship-safe?style=social" alt="GitHub 스타" /></a>
  <a href="https://github.com/sponsors/asamassekou10"><img src="https://img.shields.io/badge/Sponsor-%E2%9D%A4-ea4aaa?logo=github" alt="후원" /></a>
</p>

## Ship Safe CLI

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.)
```

<sub>OWASP NodeGoat에 대해 <code>ship-safe investigate</code>를 실행한 실제 출력입니다. 오염된 값은 라우트 파일에서 구조 분해되고 세 디렉터리 떨어진 DAO로 전달됩니다.</sub>

한 명령으로 시작하세요:

```bash
npx ship-safe
```

가입이 필요 없습니다. 스캔에 API 키가 필요하지 않습니다. 핵심 검사는 오프라인에서 작동합니다. AI 기반 레드팀 모드는 사용 가능한 경우 구성된 공급자를 사용합니다.

완전히 로컬 스캔을 보장하려면 `--no-ai`를 사용하세요. 공급자 기반 분류, 심층 분석, GPT-Red는 최선의 자격 증명 마스킹 후 제한된 컨텍스트를 선택한 공급자에게 직접 전송합니다. 정확한 경계와 컨텍스트 제한은 [보안 및 데이터 흐름](https://shipsafe.sh/security)을 참조하세요.

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/49363/75988a5baca705edcd06c5d39049d35be36f660fad2362de6700cf40eb72d2dd.gif" alt="Ship Safe REPL 데모" width="800" />
</p>

---

## 빠른 시작

22.x 라인의 Node.js 22.13+ 또는 Node.js 24+가 필요합니다. Node 18과 20은
현재 개발 버전에서 더 이상 지원되지 않습니다.

```bash
# 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 스캔을 비교하여 기존 저장소 부채가 관련 없는 변경 사항을 차단하지 않으면서도 계속 표시되도록 합니다:

```bash
# 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 보고서는 도구 메타데이터에 동일한 패키지 버전을 포함합니다.

## Ship Safe가 찾는 것

| 영역 | 예시 |
|------|----------|
| AI 및 LLM 보안 | 프롬프트 인젝션, 에이전트 하이재킹, 과도한 권한, 메모리 포이즈닝, RAG 포이즈닝, 안전하지 않은 도구 호출 |
| MCP 및 에이전트 구성 | 과도하게 넓은 도구 권한, 오염된 레지스트리, 신뢰할 수 없는 전송, 위험한 허용 목록 |
| 애플리케이션 보안 | SQL/NoSQL 인젝션, XSS, SSRF, 인증 우회, 경로 순회, 안전하지 않은 API 라우트 |
| 시크릿 및 규정 준수 | API 키, 토큰, 자격 증명, PII, git 기록에 유출된 시크릿 |
| 공급망 | 타이포스쿼팅, 의존성 혼동, 위험한 설치 스크립트, 고정되지 않은 AI 액션 |
| CI/CD | 파이프라인 포이즈닝, 고정되지 않은 GitHub Actions, 시크릿 로깅, 안전하지 않은 워크플로 트리거 |

## 작동 방식

1. **로컬에서 스캔** - Ship Safe는 대상 에이전트로 저장소를 검사하고 적용되지 않는 검사는 건너뜁니다.
2. **각 발견 항목 조사** - 별도의 패스가 실제인지 판단하며, 더 저렴한 패스가 더 비싼 패스를 뒤집지 않도록 순위가 매겨집니다. 추적된 데이터 경로는 동일 파일에 대한 모델의 판독보다 우선하며, 인증에 성공한 프로브는 둘 모두보다 우선합니다.
3. **증거 읽기** - 발견 항목은 확인됨, 유력함, 미해결, 반박됨으로 판정되며, 각각 결론의 근거가 된 줄을 인용하므로 심각도 레이블 대신 특정 단계에 이의를 제기할 수 있습니다.
4. **통제된 수정** - 에이전트는 계획과 diff를 제안하고, 쓰기 전에 확인을 요청하며, 정적 재스캔 증거를 보고하고, 변경을 되돌릴 수 있게 유지합니다. 탐지기 소멸은 독립적인 재테스트가 아닙니다. [수정 결과](https://github.com/asamassekou10/ship-safe/blob/main/docs/fix-verification.md)를 참조하십시오.
5. **CI에서 게이팅** - `ship-safe ci`를 사용하여 위험한 빌드를 실패시키고 SARIF를 GitHub 코드 스캐닝에 업로드하십시오.

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/49363/31125a0161ee16c772304e3097cdea464c8988cdc8e818ebf8356506fa1f1314.gif" alt="Ship Safe 에이전트 데모" width="800" />
</p>

---

## "그냥 내 코딩 에이전트에게 저장소를 리뷰하라고 하면 안 되나요?"

그렇게 할 수 있고, 또 그래야 합니다. 실제 문제를 찾아낼 것입니다. 하지만 에이전트가 자신의 작업에 대해 구조적으로 답할 수 없는 세 가지 질문이 있습니다.

**이 코드를 작성한 에이전트가 자기 숙제를 스스로 채점한 것은 아닌가?** 작성자에게 작성자가 실수했는지 묻는 것은 리뷰가 아닙니다. Ship Safe는 별도의 방법론을 가진 별도의 리뷰어이며, 공개적으로 자기 자신과 의견이 갈립니다. 데이터 흐름 추적은 휴리스틱 패스를 뒤집고, 라이브 프로브는 둘 모두를 뒤집습니다.

**에이전트가 접근할 수 있는 것을 볼 수 있는가?** 저장소를 리뷰하는 코딩 에이전트는 MCP 서버 구성을 읽을 수 없고, 자신이 실행된 권한을 열거할 수 없으며, 바로 그 접근 범위가 문제의 대상인 행위자입니다. `ship-safe capabilities`는 이 모든 것을 외부에서 읽고, 개별적으로는 평범하지만 함께 있을 때 위험한 조합을 보고합니다:

```
  CRITICAL  Repository-controlled instructions reach an unattended write capability
    1. CLAUDE.md is read as instructions and can be changed by anyone who lands a commit
       CLAUDE.md:1
    2. Claude Code runs without per-action approval
       .claude/settings.json:2
    3. shell execute granted: Bash(git push:*)
       .claude/settings.json:3
    4. filesystem write granted: Write
       .claude/settings.json:3
    5. mcp-tool write granted: mcp__github__create_pull_request
       .claude/settings.json:3
    Impact: Text committed to this repository can direct the agent to write files
            or run commands with no human in the loop.
    Boundary: Require approval for write and execute tools during sessions on
              untrusted branches, or remove the pre-granted entries.
```

그 각각의 줄은 그 자체로는 특별할 것이 없다. 그러나 그것들이 모이면 풀 리퀘스트에서 권한 있는 쓰기로 이어지는 경로가 되며, 어떤 단일 파일 검토도 이를 볼 수 없다. 왜냐하면 어떤 단일 파일도 그것을 담고 있지 않기 때문이다.

**일관성이 있는가, 그리고 개선되었음을 증명할 수 있는가?** 두 번 물으면 두 가지 답이 나온다. Ship Safe의 엔진은 결정론적이며, 그 결론은 패턴 커버리지가 아니라 *결론 품질*을 평가하는 벤치마크에 의해 CI에서 게이트된다. 즉, 얼마나 많은 알려진 실제 발견을 확정하는지, 얼마나 많은 알려진 노이즈를 반박하는지, 그리고 실제인 것을 반박하는 경우가 있는지 여부다. 마지막 수치의 예산은 0이다. 이는 취약점을 조용히 놓치는 유일한 오류 클래스이기 때문이다. [benchmarks/](https://github.com/asamassekou10/ship-safe/blob/main/benchmarks)를 참고하라.

## 개발자들이 사용하는 이유

- **AI 네이티브 앱을 위해 설계됨**: 에이전트, MCP 서버, 프롬프트, RAG 흐름, 관리형 에이전트 구성, AI 기반 CI의 위험을 포착한다.
- **AI 클라이언트와 연동됨**: 로컬 stdio 서버를 통해 Ship Safe를 Codex, Claude Desktop, Cursor, Windsurf 및 기타 MCP 클라이언트에 노출한다.
- **빠른 로컬 피드백**: 코드를 호스팅 스캐너로 전송하지 않고 PR 전, 리뷰 중, 또는 CI 내에서 실행한다.
- **검토 가능한 수정**: 모든 제안된 변경은 파일에 적용되기 전에 diff로 표시된다.
- **여러분의 스택과 연동됨**: JavaScript, TypeScript, Python, 구성 파일, 인프라 파일, GitHub Actions 등.
- **오픈 소스 코어**: 문서, 예제, 성장하는 에이전트 시스템을 갖춘 MIT 라이선스 CLI.

## 무료 CLI, 유료 팀 워크플로

오픈 소스 CLI는 모든 저장소를 로컬에서 스캔하는 가장 빠른 방법이다. 동일한 스캐너를 둘러싼 호스팅 워크플로가 필요할 때 업그레이드하라:

| 필요 사항 | 사용 |
|------|-----|
| 로컬 스캔, 감사, 에이전트 지원 수정 | 무료 CLI |
| 스캔 기록, 클라우드 대시보드, PDF 보고서 | Pro |
| 공유 워크스페이스, PR Guardian, 팀 보고서, 협업 | Team |

요금제 비교는 [shipsafe.sh/pricing](https://shipsafe.sh/pricing)에서 확인하라.

스캔 기록, PR Guardian, 청구, 팀 워크플로를 위한 호스팅 대시보드인 Ship Safe Cloud는 상용 제품 코드와 호스팅 인프라 워크플로를 포함하고 있기 때문에 비공개 저장소에서 개발된다. 공개 `ship-safe` 저장소는 MIT 라이선스 CLI, 보안 에이전트, 규칙, 픽스처, CI 통합, 문서에 계속 집중한다. 저장소 경계에 대해서는 [Ship Safe Cloud](https://github.com/asamassekou10/ship-safe/blob/main/docs/cloud.md)를 참고하라.

---

## 보안 에이전트

모든 에이전트는 병렬로 실행된다. 각 에이전트는 관련 없는 프로젝트를 자동으로 건너뛴다.

| 에이전트 | 카테고리 | 탐지 대상 |
|-------|----------|-----------------|
| **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 서버 오용, 도구 중독, 타이포스쿼팅, 검증되지 않은 입력 |
| **A2ASecurityAgent** | AI/LLM | A2A 에이전트 카드 중독, 인증 누락, 평문 엔드포인트, 안전하지 않은 푸시 콜백, 고정되지 않은 원격 카드 ([coverage](https://github.com/asamassekou10/ship-safe/blob/main/docs/a2a-security.md)) |
| **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-auth |
| **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 인트로스펙션, 디버그 엔드포인트 |
| **ManagedAgentScanner** | AI/LLM | Claude Managed Agent 설정 오류: 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 옵코드), `weights_only` 없는 `torch.load`, 스캐너 회피 아카이브 (CWE-502, CWE-506) |
| **TrustBoundaryAgent** | 에이전틱 | GhostApproval 심볼릭 링크 공격(`~/.ssh`/`~/.aws`/`.env`를 가리키는 설정 이름 링크), 트리 밖으로 벗어나는 저장소 심볼릭 링크, 에이전트가 읽는 문서 내 Friendly Fire 리뷰 시 실행 지시 (CWE-59, CWE-61) |
| **SlopSquatAgent** | 공급망 | 환각/유령 패키지 임포트(slopsquatting) — 선언되거나 설치되지 않았거나 내장되지 않은 베어 임포트, 그리고 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) |

**조사 패스**, 증거의 우선순위가 서로를 능가하는 순서대로:

| 패스 | 순위 | 입증하는 것 |
|------|------|---------------------|
| **VerifierAgent** | 휴리스틱 | 발견 사항 주변의 패턴 검사. "가능성 있음" 이상은 절대 진술하지 않음 |
| **DeepAnalyzer** | 분석 | 발견 사항과 그 파일에 대한 LLM 오염 분석, 인용 검증 포함 |
| **DataflowInvestigator** | 데이터 흐름 | 값을 한 함수 경계를 넘고 다른 파일로 이어져 원점까지 추적. JavaScript, TypeScript, Python |
| **AbsenceInvestigator** | 존재 여부 | 규칙이 누락되었다고 말하는 제어를 프로젝트 또는 핸들러에서 검색 |
| **LiteralContextInvestigator** | 존재 여부 | 작성된 값에 대한 발견 사항을 주변 맥락 — 산문, 도움말 문자열, 예약 주소 — 으로 판단 |
| **CapabilityGraph** | 체인 | 단일 파일에 포함되지 않은 구성으로부터 공격 체인 구축 |
| **RedosReproducer** | 재현 | 마감 시간이 있는 워커에서 생성된 입력에 대해 플래그된 패턴 실행 |
| **SecretsVerifier** | 재현 | 유출된 키를 제공자에게 제시. 옵트인: 키가 공개됨 |

인용된 파일이나 줄이 확인되지 않는 주장은 기록되지만 판정을 결정하지 않는다. 동일한 순위의 두 패스가 불일치하면 더 무서운 판정이 아니라 미해결로 귀결된다.

**또한:** ScoringEngine

---

## REPL

```
$ ship-safe

  ███████╗██╗  ██╗██╗██████╗     ███████╗ █████╗ ███████╗███████╗
  ...

  v9.4.1  ·  DeepSeek  ·  ~/my-project

  /scan to find issues  ·  /agent to fix them  ·  /help for more

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에 전송됩니다.

---

## CI/CD

```yaml
# .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](https://github.com/asamassekou10/ship-safe/blob/main/docs/examples/gitlab-security-workflow.yml)에 있습니다.

### 인라인 PR 결과가 포함된 GitHub Action

변경된 라인에 심각 및 높은 등급의 결과를 첨부하려면 `pull_request` 워크플로에서 Action을 사용하세요. 포크된 기여의 경우 이 경로에서 `pull_request_target`을 사용하지 마세요. 체크아웃에 신뢰할 수 없는 코드가 포함될 수 있기 때문에 Ship Safe는 해당 권한 조합을 거부합니다.

```yaml
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
```

인라인 주석은 선택 사항이며 심각/높음 등급의 발견 사항에만 게시됩니다. 작업을 다시 실행하면
중복 인라인 주석을 생성하지 않고 요약이 업데이트됩니다.

---

## LLM 지원

모든 제공업체와 함께 작동합니다 — 환경 변수에서 자동 감지됩니다. `--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 전용 장문 컨텍스트 레드 팀 작업의 경우:

```bash
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 검사에는 결정론적 오프라인 폴백이 있습니다.

---

## 오탐 억제

```python
password = get_password()  # ship-safe-ignore
```

`critical` 발견 항목은 항상 보고됩니다. 인라인 주석으로 이를 숨길 수 없으며, 숨기려는 시도는 스캔에 기록됩니다. 이 주석은 사람이 오탐을 배제하기 위한 것이며, AI 에이전트를 포함해 소스 한 줄을 작성할 수 있는 무엇이든 그 주석도 작성할 수 있으므로, 최고 심각도 항목에는 이 주석이 적용되지 않습니다. 모든 억제는 집계되므로, 발견 항목을 침묵시킨 스캔은 아무것도 없었던 스캔처럼 보이지 않습니다.

일반 코드 규칙은 Markdown 산문이나 펜스 코드 예제를 배포된 소스로 평가하지 않습니다. 시크릿은 여전히 모든 곳에서 스캔되며, `AGENTS.md` 및 `CLAUDE.md`와 같은 에이전트가 읽을 수 있는 파일은 전용 프롬프트 인젝션 및 신뢰 경계 검사를 유지합니다. 펜스 예제를 의도적으로 검토하려면 `scan`, `audit` 또는 `ci`와 함께 `--include-doc-examples`를 사용하십시오.

```gitignore
# .ship-safeignore
tests/fixtures/
docs/
```

### 얼마나 노이즈가 많은가?

재현율은 스캐너의 쉬운 절반이다. 모든 것을 표시하는 도구는 모든 것을 잡아내지만 쓸모가 없으므로, 우리는 또한 Ship Safe가 알려진 활성 취약점이 없는 성숙한 프로젝트에서 보고하는 내용도 추적한다. 이는 확인된 결함이 아닌 원시 발견 사항이다.

| 프로젝트 | 원시 발견 사항 | 심각 | 점수 | 등급 |
|---|---:|---:|---:|:---:|
| [express](https://github.com/expressjs/express) | 10 | 0 | 88.2 | B |
| [requests](https://github.com/psf/requests) | 7 | 0 | 95.5 | A |
| [flask](https://github.com/pallets/flask) | 17 | 0 | 81.4 | B |
| [chalk](https://github.com/chalk/chalk) | 4 | 0 | 89.4 | B |

원래 네 개는 총 38개의 원시 발견 사항으로, v9.6.3 이전의 1,031개에서 감소했다. 현재의 5개 프로젝트 클린 코퍼스에는 Hermes Agent도 포함되며, 이는 66개의 심각 항목을 포함하여 662개의 발견 사항을 보고한다. 어느 수치도 오탐률이나 정확성 주장이 아니다. 자동화된 조사 레이블과 남은 작업량은 벤치마크에 문서화되어 있다. NodeGoat 및 DVWA에 대한 탐지 하한 검사는 여전히 통과한다.

커밋으로 고정된 코퍼스, 단일 명령으로 재현 가능, 한계 문서화:
**[benchmarks/false-positives/](https://github.com/asamassekou10/ship-safe/blob/main/benchmarks/false-positives)**

### Semgrep, Gitleaks, Trivy, CodeQL과 어떻게 비교되는가?

Ship Safe를 그것들 대신이 아니라 그것들과 함께 실행하라. CodeQL은 Ship Safe가 시도하지 않는 절차 간 오염 분석을 수행하고, Gitleaks는 시크릿 전문 도구이며, Trivy는 실제 CVE 데이터베이스를 뒷받침으로 갖고 있다.

Ship Safe는 더 좁은 질문을 다룬다: AI 코딩 에이전트가 방금 당신의 저장소, CI, 로컬 도구 구성에 무엇을 했는가. MCP 클라이언트 구성, 에이전트 메모리 오염, 환각된 패키지 임포트, AIBOM은 우리가 다른 네 도구에서 동등한 공개 규칙을 찾지 못한 영역이다.

전체 커버리지 매트릭스, 그들의 공개 레지스트리에 대해 검증됨, 그들이 우리를 앞서는 부분 포함: **[docs/comparison.md](https://github.com/asamassekou10/ship-safe/blob/main/docs/comparison.md)**

---

## 배지 추가

```markdown
[![Ship Safe](https://img.shields.io/badge/Ship_Safe-A+-22c55e)](https://shipsafe.sh)
```

## 다음 단계

**10.1은 정밀 릴리스입니다.** 검증된 Hermes Agent 10.0
기준선을 유지하고, Ship Safe 자체의 권고 인용이 서명되지 않은 에이전트 리소스로
오인되지 않도록 증명(attestation)을 강화합니다. 기존 플러그인 및 어댑터 검사는
부분적이며, 터미널 상태, ACP/TUI, 현재 cron 라이프사이클, 자격 증명 도달 가능성은
암시적 커버리지가 아닌 명시적 작업으로 남아 있습니다. [커버리지 매트릭스](https://github.com/asamassekou10/ship-safe/blob/main/docs/hermes-coverage-matrix.md)를 참조하세요.

무엇이 계획되어 있고 무엇이 의도적으로 제외되었는지는 [로드맵](https://github.com/asamassekou10/ship-safe/blob/main/ROADMAP.md)을
참조하세요. 집중적인 기여와 벤치마크 기반 수정을 환영합니다.

## 기여하기

Ship Safe는 오픈 소스이며, 가장 좋은 기여는 AI 지원 개발을 더 안전하게 만드는 작고 집중적인 개선입니다.

좋은 첫 시작 영역:

- AI, MCP, CI, 클라우드 또는 공급망 위험을 위한 집중 보안 에이전트 추가
- 기존 에이전트에 정밀한 보안 규칙 추가
- 취약한 픽스처와 회귀 테스트 추가
- 로컬 스캔, CI 게이트, 레드팀 워크플로, MCP/에이전트 설정을 위한 예제 작성

여기서 시작하세요:

- [Good first issues](https://github.com/asamassekou10/ship-safe/contribute)
- [기여자 가이드](https://github.com/asamassekou10/ship-safe/blob/main/CONTRIBUTING.md)
- [에이전트 추가](https://github.com/asamassekou10/ship-safe/blob/main/docs/adding-an-agent.md)
- [보안 규칙 추가](https://github.com/asamassekou10/ship-safe/blob/main/docs/adding-a-security-rule.md)
- [사용자 정의 에이전트 플러그인 작성](https://github.com/asamassekou10/ship-safe/blob/main/docs/custom-agent-plugins.md)
- [MCP 환경 변수를 안전하게 처리](https://github.com/asamassekou10/ship-safe/blob/main/docs/mcp-env-safety.md)
- [Codex와 함께 Ship Safe 사용](https://github.com/asamassekou10/ship-safe/blob/main/docs/integrations/codex.md)
- [Claude Code와 함께 Ship Safe 사용](https://github.com/asamassekou10/ship-safe/blob/main/docs/integrations/claude-code.md)
- [Cursor와 함께 Ship Safe 사용](https://github.com/asamassekou10/ship-safe/blob/main/docs/integrations/cursor.md)
- [수정 결과와 정적 검증의 한계 이해](https://github.com/asamassekou10/ship-safe/blob/main/docs/fix-verification.md)
- [릴리스 프로세스](https://github.com/asamassekou10/ship-safe/blob/main/docs/releasing.md)

---

## 스폰서

Ship Safe는 MIT 라이선스이며 영구히 무료입니다.

<p align="center">
  <a href="https://github.com/sponsors/asamassekou10">
    <img src="https://img.shields.io/badge/Sponsor%20Ship%20Safe-%E2%9D%A4-ea4aaa?style=for-the-badge&amp;logo=github" alt="Sponsor Ship Safe" />
  </a>
</p>

---

## 스타 히스토리

[![Star History Chart](https://star-history.dera.page/svg?repos=asamassekou10/ship-safe&type=Date)](https://star-history.dera.page/#asamassekou10/ship-safe&type=date)

---
**빠르게 배포하세요. 안전하게 배포하세요.** — [shipsafe.sh](https://shipsafe.sh)
도구 다운로드