Pull to refresh

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

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

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

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

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

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

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

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

Articles