Как это работает
От ссылки на репозиторий до подтвержденных уязвимостей
Конвейер сканирования повторяет описанный Anthropic для Anthropic OSS Scanner: модель угроз, аудит, перепроверка, первопричина, исправление. В его основе — передовые модели Claude, доступные через публичный API.
- 1
Безопасное клонирование
Мы получаем нужную вам ветку с помощью поверхностного git clone с фильтрацией blob по HTTPS. Git hooks отключены, символические ссылки извлекаются как обычные файлы, а все протоколы передачи данных, кроме HTTPS, запрещены. Доступ к адресам внутренних сетей блокируется, поэтому сканер нельзя направить на внутренние хосты.
Код из репозитория никогда не выполняется: мы не собираем проект, не устанавливаем пакеты и не запускаем тесты. По завершении сканирования рабочая копия удаляется.
- 2
Инвентаризация и ранжирование по риску
Каждый текстовый файл с исходным кодом учитывается вместе с указанием языка и размера. Вендорный код, сгенерированные файлы, минифицированные сборки и файлы блокировок пропускаются. Для каждого файла рассчитывается оценка риска с учетом опасных операций — копирования памяти, выполнения команд оболочки, десериализации, построения SQL-запросов, рендеринга шаблонов, объединения путей, а также криптографического кода и кода аутентификации — и критических участков, таких как парсеры, обработчики протоколов и маршрутизация запросов.
- 3
Модель угроз
Если в репозитории есть .oss-scanner/threat_model.md (тот же файл, который читает сканер Anthropic), SECURITY.md или модель угроз, предоставленная вами при подключении проекта, сканер использует ее. В противном случае модель анализирует README, структуру каталогов и файлы с наибольшим риском и составляет модель угроз: что представляет собой проект, где в него поступают недоверенные данные и что не входит в область проверки.
Модель угроз также выбирает файлы для фокусной проверки, чтобы аудит сосредоточился на коде, до которого действительно может добраться злоумышленник.
- 4
Аудит
Рискованные файлы собираются в большие пакеты с номерами строк и отправляются модели рассуждений вместе с приложенной моделью угроз. Она ищет проблемы, о которых сообщил бы внимательный аудитор:
- безопасность памяти: переполнения, использование после освобождения, усечение целых чисел
- инъекции: SQL, команды, шаблоны, обход путей, SSRF
- логика аутентификации, авторизации и сеансов
- небезопасная десериализация и неоднозначность разбора данных
- неправильное использование криптографии и обработка секретов
Для быстрых сканирований используется Claude Haiku с умеренным лимитом. Для глубоких сканирований зарегистрированных проектов используется Claude Sonnet, который анализирует до четырех раз больше кода.
- 5
Независимая проверка
Каждая предполагаемая проблема передается отдельному агенту-верификатору с чистым контекстом. Его задача — опровергнуть ее: проследить поток данных, проверить, не выполняется ли валидация в другом месте, и выяснить, действительно ли злоумышленник может контролировать входные данные согласно модели угроз. Остаются только проблемы, которые он подтверждает или считает вероятными; остальные учитываются как отклоненные.
Для оставшихся проблем верификатор описывает первопричину, приводит воспроизводящий пример и предлагает минимальное исправление в виде унифицированного diff.
- 6
Коммит, в котором появилась проблема, и отчет
Дубликаты с общей первопричиной объединяются. Команда git blame для уязвимых строк находит последний коммит, в котором они изменялись, — обычно тот, где появилась ошибка. Так вы можете добавить тег Fixes: и выяснить, какие выпуски затронуты.
Отчет хранится под случайным, неугадываемым ID. Его можно экспортировать в Markdown для рекомендации по безопасности, в JSON для инструментов или в SARIF 2.1.0 для сканирования кода в GitHub.
Чего сканер не делает
- Он не запускает и не собирает ваш код и не загружает зависимости.
- Он не публикует результаты, не создает задачи и не связывается ни с кем, кроме подключенных сопровождающих проектов.
- Он не хранит копию исходного кода после сканирования. В отчетах содержатся короткие фрагменты затронутых строк.
- Он ничего не гарантирует: модели пропускают ошибки и иногда сообщают о несуществующих проблемах. Отсутствие проблем в отчете не является сертификатом безопасности.
Почему воспроизводящие примеры скрыты
Любой может вставить ссылку на публичный репозиторий, в том числе тот, кто не сопровождает проект. Описание первопричины и исправление помогают защитникам, а работоспособное доказательство концепции в первую очередь помогает злоумышленникам. Поэтому воспроизводящие примеры остаются скрытыми, пока кто-нибудь не добавит в репозиторий файл-токен — доказательство того, что он может выпустить исправление. Это соответствует рекомендациям ядра Linux: воспроизводящие примеры ошибок, найденных ИИ, следует предоставлять по запросу сопровождающих.
Чем этот сканер отличается от OSS Scanner от Anthropic
Anthropic запускает сканер в изолированных средах без доступа к сети и собирает проект по Dockerfile. Благодаря этому агенты могут компилировать и выполнять код, чтобы динамически подтверждать ошибки. Сканер использует самые мощные модели Anthropic, включая Claude Mythos, которая не доступна публично. Мы статически анализируем код с помощью общедоступных моделей Claude. Зато ossscanner.org можно использовать за несколько минут — без заявки и Dockerfile.