
Сервис, который собирает подключённые open-source репозитории в изолированных офлайн-виртуальных машинах и сканирует их на наличие уязвимостей безопасности, отправляя по электронной почте результаты с воспроизводителями и предлагаемыми патчами.
OSS Scanner — это сервис от Anthropic для сканирования критически важных open-source репозиториев на предмет уязвимостей безопасности. Подробнее о сервисе: red.anthropic.com/oss-scanner.
Обратите внимание: использование этого инструмента регулируется условиями, изложенными в OSS Scanner terms.
Зарегистрируйте open-source проект, открыв pull request, который добавляет один каталог:
projects/<name>
Наш сканер безопасности собирает ваш проект в изолированной виртуальной машине, затем анализирует его без доступа к Интернету и отправляет найденное по электронной почте на primary_contact (и любые адреса в CC), каждый с воспроизведением и предлагаемым патчем, где это возможно. Отчёты генерируются моделью и не проверяются человеком. По этой причине мы не устанавливаем 90-дневный период раскрытия для этих находок и не делаем их публичными. Владельцам проектов следует предоставить project.yaml (для настройки сканера), Dockerfile (указывающий, как собрать проект) и, опционально, threat_model.md (с описанием модели угроз, специфичной для проекта).
Начните с templates/project.yaml:
repo: https://github.com/example/project # required: the git repository to scan; add #branch to pin one
primary_contact: [email protected] # required: reports and build problems go here (one address)
auto_ccs: # optional: more addresses on every mail
- [email protected]
homepage: https://example.org # optional
disabled: false # optional: true pauses reports without removing the enrolment
dockerfile: .oss-scanner/Dockerfile # required unless a Dockerfile sits in this repo next to your project.yaml
threat_model: .oss-scanner/threat_model.md # optional; also supports placing the file in this repository
repo и primary_contact обязательны всегда. dockerfile обязателен, если только вы не держите свой Dockerfile рядом с project.yaml (см. ниже). Остальные поля опциональны.
Адреса электронной почты в project.yaml являются публичными. Используйте адреса, которые вы не против видеть опубликованными, например, алиас для вопросов безопасности.
Чтобы получать отчёты в зашифрованном виде, добавьте свой публичный ключ OpenPGP в armored-формате. Тогда отчёты будут отправляться только на primary_contact; pgp нельзя комбинировать с auto_ccs:
pgp: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF...
-----END PGP PUBLIC KEY BLOCK-----
Вы должны предоставить Dockerfile ровно в одном из двух мест:
dockerfile: путь к нему (мы рекомендуем размещать его где-то вроде .oss-scanner/Dockerfile). Это предпочтительный вариант, поскольку он позволяет обновлять сборку без pull request сюда; илиproject.yaml, как projects/<name>/Dockerfile, без установки ключа Dockerfile: в project.yaml. Если вы предпочитаете не добавлять файлы в свой репозиторий, положите его здесь, и сканер соберёт его точно так же, как собрал бы копию внутри репозитория.(Модель угроз работает так же. Установите поле threat_model с указанием её расположения в вашем репозитории или разместите её здесь по пути projects/<name>/threat_model.md.)
Назначение Dockerfile — настроить ваше окружение, установить все зависимости и собрать проект. Первоначальная настройка проекта выполняется с включённым доступом к сети, но последующий аудит безопасности выполняется без доступа к Интернету. Всё, что нужно для сборки или тестов, должно быть загружено во время первоначальной настройки Dockerfile. Мы рекомендуем проверить, что ваши тесты проходят внутри собранного образа.
Файл threat_model.md (опциональный, но настоятельно рекомендуемый) позволяет предоставить сканеру документацию о ваших предполагаемых целях безопасности. Мы обнаружили, что наиболее полезно давать указания о том, как вы оцениваете серьёзность отчётов (например, считаете ли вы SQLi после аутентификации высоким или критическим? ограничены ли переполнения буфера без продемонстрированных эксплойтов уровнем high? когда хранимый XSS является medium, high и critical?). Этот файл также может описывать, что делает проект, откуда поступает недоверенный ввод, какие компоненты важны, а какие вне области охвата, как вы хотели бы видеть отчёты и патчи, или что-либо ещё, что вы считаете важным или полезным.
Мы рекомендуем выполнить две команды перед открытием pull request:
tools/validate.py проверяет projects/<name>/ на соответствие правилам выше.tools/check <name> собирает ваш проект так, как это сделает наш сканер, и открывает оболочку в готовом образе без сети. Если ваши тесты проходят в этом контейнере, наш сканер, скорее всего, сработает с вашим проектом. tools/check --qemu <name> делает то же самое внутри виртуальных машин, устроенных как у сканера.Для этих инструментов на вашем хосте должны быть установлены git, Docker и Python 3 с PyYAML (pip install pyyaml); для --qemu требуется Linux на x86-64 с QEMU вместо Docker.
primary_contact письмо с сообщением об ошибке.primary_contact и любые дополнительные адреса в CC с шагами воспроизведения и предлагаемым патчем, где это возможно.Вы можете редактировать свой проект в любое время с помощью PR. Чтобы отменить регистрацию проекта, установите поле disabled в true, чтобы приостановить отчёты, или удалите projects/\<name\>/, чтобы полностью отозвать проект.
tools/check запускает Dockerfile вашего проекта с доступом к сети, как это сделал бы docker build. С --qemu сборка выполняется внутри виртуальной машины, что изолирует её от ваших файлов, но она всё ещё может достигать сервисов на вашем компьютере и в вашей локальной сети. Проверяйте только те проекты, которым доверяете, или используйте машину, которую не жалко.tools/check устанавливает Claude Code в образ, который он собирает (как это делает сканер). На Claude Code распространяются его собственные условия.Пожалуйста, посетите red.anthropic.com/oss-scanner.
Статус поддержки: этот репозиторий активно поддерживается Anthropic. Мы рассматриваем и сливаем только pull request'ы на регистрацию (изменения в projects/<name>/); мы не принимаем другие вклады, включая изменения в tools/ или templates/. См. CONTRIBUTING.md о том, как зарегистрироваться, SECURITY.md для сообщения об уязвимости в этом репозитории и CODE_OF_CONDUCT.md.