Перейти к содержимому
ossscanner.org

Как это работает

От ссылки на репозиторий до подтвержденных уязвимостей

Конвейер сканирования повторяет описанный Anthropic для Anthropic OSS Scanner: модель угроз, аудит, перепроверка, первопричина, исправление. В его основе — передовые модели Claude, доступные через публичный API.

  1. 1

    Безопасное клонирование

    Мы получаем нужную вам ветку с помощью поверхностного git clone с фильтрацией blob по HTTPS. Git hooks отключены, символические ссылки извлекаются как обычные файлы, а все протоколы передачи данных, кроме HTTPS, запрещены. Доступ к адресам внутренних сетей блокируется, поэтому сканер нельзя направить на внутренние хосты.

    Код из репозитория никогда не выполняется: мы не собираем проект, не устанавливаем пакеты и не запускаем тесты. По завершении сканирования рабочая копия удаляется.

  2. 2

    Инвентаризация и ранжирование по риску

    Каждый текстовый файл с исходным кодом учитывается вместе с указанием языка и размера. Вендорный код, сгенерированные файлы, минифицированные сборки и файлы блокировок пропускаются. Для каждого файла рассчитывается оценка риска с учетом опасных операций — копирования памяти, выполнения команд оболочки, десериализации, построения SQL-запросов, рендеринга шаблонов, объединения путей, а также криптографического кода и кода аутентификации — и критических участков, таких как парсеры, обработчики протоколов и маршрутизация запросов.

  3. 3

    Модель угроз

    Если в репозитории есть .oss-scanner/threat_model.md (тот же файл, который читает сканер Anthropic), SECURITY.md или модель угроз, предоставленная вами при подключении проекта, сканер использует ее. В противном случае модель анализирует README, структуру каталогов и файлы с наибольшим риском и составляет модель угроз: что представляет собой проект, где в него поступают недоверенные данные и что не входит в область проверки.

    Модель угроз также выбирает файлы для фокусной проверки, чтобы аудит сосредоточился на коде, до которого действительно может добраться злоумышленник.

  4. 4

    Аудит

    Рискованные файлы собираются в большие пакеты с номерами строк и отправляются модели рассуждений вместе с приложенной моделью угроз. Она ищет проблемы, о которых сообщил бы внимательный аудитор:

    • безопасность памяти: переполнения, использование после освобождения, усечение целых чисел
    • инъекции: SQL, команды, шаблоны, обход путей, SSRF
    • логика аутентификации, авторизации и сеансов
    • небезопасная десериализация и неоднозначность разбора данных
    • неправильное использование криптографии и обработка секретов

    Для быстрых сканирований используется Claude Haiku с умеренным лимитом. Для глубоких сканирований зарегистрированных проектов используется Claude Sonnet, который анализирует до четырех раз больше кода.

  5. 5

    Независимая проверка

    Каждая предполагаемая проблема передается отдельному агенту-верификатору с чистым контекстом. Его задача — опровергнуть ее: проследить поток данных, проверить, не выполняется ли валидация в другом месте, и выяснить, действительно ли злоумышленник может контролировать входные данные согласно модели угроз. Остаются только проблемы, которые он подтверждает или считает вероятными; остальные учитываются как отклоненные.

    Для оставшихся проблем верификатор описывает первопричину, приводит воспроизводящий пример и предлагает минимальное исправление в виде унифицированного diff.

  6. 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.