Программа безопасности публичного интернета

Сделать интернет безопаснее.

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

По всем работам NullSquare
11,179
Обнаруженные риски
6,742
Подтверждённые
449
Критические и высокие
152
Уникальные CVE

Почему вы получили сообщение

Один из наших агентов нашёл на домене вашей организации нечто, открытое публичному интернету. Мы написали вам приватно, чтобы ваша команда могла это проверить и закрыть. Мы никому больше не сообщали и ничего не публиковали.

Что проверяет программа

Программа смотрит только на то, что и так видно из публичного интернета:

  • Сервис, доступный из интернета, хотя не должен быть.
  • Административный интерфейс, открытый всякому, кто его найдёт.
  • Инструмент разработки или отладки, оставленный работать публично.
  • Листинг каталога, отдающий файлы, которые отдавать не следовало.
  • Дефолтная страница деплоя, всё ещё стоящая на боевом хосте.
  • Похожая ошибка конфигурации, которую любой мог бы найти тем же способом, что и мы.

Агент берёт ровно столько, сколько нужно, чтобы назвать затронутый домен или сервис и сказать, какого рода это проблема. Дальше он не заходит.

Исследование открытого кода

Уведомление сокращает открытую поверхность атаки. Код под ней оно не чинит. Поэтому программа работает и у истока: мы берём по одному публичному open-source репозиторию за раз и изучаем его в одноразовой песочнице, ища проблему безопасности, которую сможем доказать.

Утверждение агента, что нечто уязвимо, — не подтверждённый риск, и вывод сканера тоже. Ничто не засчитывается, пока оно не воспроизведётся, исправление не устоит, а обе вещи не будут записаны так, чтобы другой человек мог их повторить.

  1. 01ЗафиксироватьРепозиторий клонируется на точном коммите в одноразовую песочницу без продовых учётных данных.
  2. 02Базовый прогонСобственные сборка и тесты проекта запускаются до всякого исследования, чтобы знать, что уже проходило.
  3. 03ИсследоватьАгент читает и прогоняет код внутри песочницы — на той самой зафиксированной ревизии.
  4. 04ВоспроизвестиКандидат засчитывается только тогда, когда воспроизводится с чистого checkout, без остатков состояния от разведки.
  5. 05ИсправитьНаименьшее разумное исправление плюс регрессионный тест там, где проект делает его практичным.
  6. 06ПроверитьВоспроизведение прогоняется заново до и после исправления, а собственные проверки проекта запускаются ещё раз.
  7. 07Проверить человекомРезультат принимает или отклоняет человек. Ничто не покидает лабораторию автоматически.

Тесты никогда не удаляют, не пропускают и не ослабляют, чтобы объявить о прохождении. Если работа не берёт планку, ответ такой: подтверждённого риска нет — с записью о том, что пробовали и что проверить не удалось. В любом случае прогон даёт один и тот же пакет:

Пакет доказательств

Внутренний, проверен человеком и никогда не публикуется самой лабораторией.

summary.md
Что пробовали, что нашли и что проверить не удалось.
risk.md
Первопричина, затронутый путь в коде и честная оценка уверенности.
reproduction/
Команда и наблюдаемые свидетельства на неисправленной ревизии.
patch.diff
Минимальное исправление, привязанное к зафиксированному коммиту.
tests/
Регрессионный тест, который падает до исправления и проходит после.
verification.md
Результаты до и после вместе с выводом сборки, тестов и линтера.
run-metadata.json
Репозиторий, точный коммит, модель, длительность и стоимость.

Чего программа не делает

  • Никакого подбора паролей, перебора учётных данных или обхода аутентификации.
  • Никакой эксплуатации, разрушающего тестирования, повышения привилегий или цепочек уязвимостей.
  • Никакого сбора приватных файлов, клиентских записей, исходного кода или контента за авторизацией.
  • Никакой публикации, продажи или публичной индексации найденных проблем.
  • Никакого тестирования живой или размещённой среды во время исследования. Работа идёт только с локальным клоном.
  • Никаких форков, веток, коммитов, пушей, пул-реквестов или issue. У лаборатории нет прав записи в репозиторий.
  • Лаборатория сама не связывается с мейнтейнерами, не выпускает бюллетени, не запрашивает CVE и не подаёт заявки на баунти.
  • Никакого массового сканирования публичных хостингов кода. Репозитории выбираются по одному и осознанно.

Конфиденциальность и обращение с данными

Уведомления отправляются напрямую подходящему публичному контакту домена. Сессия обнаружения удаляется после доставки сообщения, и NullSquare не ведёт поисковую базу рисков из этой программы.

Исследовательские прогоны работают только с публичным исходным кодом. Песочница уничтожается после прогона, а пакет доказательств остаётся внутренним. Если результат когда-либо доносят до мейнтейнера, это отдельное и осознанное решение, принятое человеком.

Минимальные записи о доставке писем, защите от злоупотреблений и отказе от рассылки могут храниться отдельно. В них нет скопированных данных цели или вывода эксплойтов.

Проверить уведомление или ответить на него

Настоящее сообщение «Secure the internet» никогда не попросит учётные данные, оплату, ключи API или доступ к вашим системам. Вы можете ответить на сообщение, попросить отписать вас, исправить контакт или проверить его происхождение напрямую у NullSquare.

null@nullsquare.net
NullSquareПриватное уведомление. Без публичного раскрытия.