- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

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

Автор: alizar


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/testirovanie/6444

Ссылки в тексте:

[1] подробности: http://blog.chromium.org/2012/04/fuzzing-for-security.html

[2] фаззинга: http://habrahabr.ru/post/128503/

[3] LKGR (Last Known Good Revision): http://dev.chromium.org/developers/how-tos/get-the-code#TOC-LKGR

[4] Address Sanitizer: http://code.google.com/p/address-sanitizer/

[5] WebKit: http://www.webkit.org/

[6] FFmpeg: http://ffmpeg.org/