Независимый агент безопасности для программного обеспечения, написанного ИИ. Находит проблемы, выясняет, реальны ли они, и показывает вам доказательства. Детерминированное ядро, API-ключ не требуется, вывод в форматах JSON и SARIF.
Независимый агент безопасности для программного обеспечения, написанного ИИ. Он находит проблемы, выясняет, реальны ли они, и показывает вам доказательства.
Сайт · Документация · Безопасность и поток данных · Бенчмарк · Цены · Блог · Участие
Ship Safe работает локально в вашем репозитории и состоит из двух слоёв.
Детерминированный движок находит проблемы в коде приложения, ИИ-агентах, конфигурациях 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.)
Реальный вывод ship-safe investigate против OWASP NodeGoat. Загрязнённое значение деструктурируется в файле маршрута и передаётся в DAO через три каталога.
Начните с одной команды:
npx ship-safe
Без регистрации. Для сканирования не требуется API-ключ. Основные проверки работают офлайн. Режимы red-team на базе ИИ используют настроенного вами провайдера, если он доступен.
Используйте --no-ai, чтобы гарантировать полностью локальное сканирование. Классификация на стороне провайдера, глубокий анализ и GPT-Red передают ограниченный контекст напрямую выбранному вами провайдеру после маскирования учётных данных по мере возможности. Точные границы и ограничения контекста см. в разделе Security & Data Flow.
Требуется Node.js 22.13+ в линейке 22.x или 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'ов сравните доверенное сканирование базовой ветки со сканированием головной ветки, чтобы существующий долг репозитория оставался видимым и при этом не блокировал несвязанные изменения:
# 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 классифицируют находки как внесённые, устранённые, неизменённые или неопределённые; неоднозначные совпадения отображаются, но не блокируют pull request.
scan --json, audit --json и ci --json включают schemaVersion: 1, версию
Ship Safe и метку времени UTC generatedAt. Пути находок по умолчанию
относительны проекта, чтобы отчёты можно было переносить между рабочими станциями и CI
без утечки имён локальных каталогов. Используйте --absolute-paths только когда
потребителю явно нужны пути хоста. Отчёты SARIF содержат ту же версию пакета
в своих метаданных инструмента.
| Область | Примеры |
|---|---|
| Безопасность ИИ и LLM | Prompt injection, перехват управления агентом, чрезмерные полномочия, отравление памяти, отравление RAG, небезопасные вызовы инструментов |
| MCP и конфигурации агентов | Слишком широкие разрешения инструментов, отравленные реестры, недоверенные транспорты, опасные списки разрешений |
| Безопасность приложений | SQL/NoSQL-инъекции, XSS, SSRF, обход аутентификации, path traversal, небезопасные маршруты API |
| Секреты и соответствие требованиям | API-ключи, токены, учётные данные, PII, утёкшие секреты в истории git |
| Цепочка поставок | Тайпсквоттинг, путаница зависимостей, рискованные скрипты установки, не закреплённые версии AI-действий |
| CI/CD | Отравление конвейера, не закреплённые версии GitHub Actions, логирование секретов, небезопасные триггеры workflow |