Фаззинг браузера Chrome: 6000 инстансов, 50 млн вариантов в сутки

в 23:25, , рубрики: chrome, Google Chrome, поиск уязвимостей, тестирование, метки: , ,

Компания Google раскрыла некоторые подробности, как осуществляется тестирование браузера Chrome на уязвимости. Для этого они применяют метод фаззинга (fuzz testing), то есть используют методику тестирования, при которой на вход программы подаются невалидные, непредусмотренные или случайные данные.

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

В кластере одновременно работают около 6000 инстансов Chrome. Кластер автоматически берёт последнюю сборку Chrome LKGR (Last Known Good Revision) и прогоняет её примерно через 50 млн тестовых случаев в сутки.

Google не жалеет ресурсов на ClusterFuzz: с момента запуска системы в конце 2011 года её мощность нарастили в четыре раза и планируют в ближайшие недели увеличить ещё вчетверо.

В системе автоматизирована не только генерация тестов и регистрация сбоев, но и ряд задач более высокого уровня:

  • Генерация ровного потока тестовых случаев, распределение их по тысячам инстансов Chrome, обработка результатов.
  • Анализ сбоев: важными являются только сбои, которые с точки зрения информационной безопасности могут привести к созданию эксплойтов, так что здесь используется быстрый детектор ошибок в памяти Address Sanitizer, чтобы обработать бинарник Chrome и выдать подробные отчёты по случаям, которые потенциально подходят для эксплойтов.
  • Минимизация тестов: тесты для фаззинга зачастую представляют собой весьма громоздкие файлы, обычно в несколько сотен килобайт каждый, так что после генератора эти файлы дробят на более мелкие, значимые фрагменты.
  • Идентификация регрессий: поиск изменений в исходном коде, которые привели к появлению сбоя.
  • Верификация патчей: проверка ранее выявленных сбоев на новой сборке LKGR.

С момента запуска кластера ClusterFuzz в конце прошлого года он обнаружил 95 уникальных уязвимостей в тестовых сборках Chrome. Из них 44 были идентифицированы и закрыты ещё до того, как этот код дошёл до стабильного релиза. После апгрейда системы компания Google надеется, что до выхода в стабильный релиз она будет исправлять ещё больше ошибок и у себя, и в open source проектах, на которых основан Chrome. Это, в том числе, WebKit и FFmpeg.

Автор: alizar

Поделиться

* - обязательные к заполнению поля