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

    Компания 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.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 25

      +8
      Интересно как дела обстоят с этим у оперы, мозилы, ие?
        +21
        [сарказм]Сидят пару челов в кабинете и тестят :) [/сарказм]
          +3
          Насчёт оперы и мозиллы не знаю, но про майкрософт слышал, что сотрудник, закоммитивший плохой, проваливший тесты код, может быть поднят по тревоге в любое время суток для срочного исправления содеянного. Не помню, правда, про какой из продуктов шла речь :)
            +1
            Абсолютно про любой достаточно крупный. Если не собирается ежедневный ночной билд — будь добр вскочить и в час ночи мчаться в офис, чтобы исправить ().
              0
              А зачем именно в офис? VPN у них запрещены издому?
                0
                У них всегда есть ветка Main, в которую запрещены коммиты, можно только мерджить. Скорее всего, не всё так ужасно там для обычных разработчиков — свою ветку можно на некоторое время сломать.
                  0
                  Что за бред? Если чей-то коммит ломает тесты, а автор коммита недоступен в ближайшее время, коммит должен просто ревертиться, вот и всё.
                  0
                  Они постили в блоге как-то. Тоже стоит целая ферма которая ганяет тєсты.
                  0
                  здесь дается детальное описание тестирования и Win8, и IE10, например.
                    0
                    убили простые дестопы на фотографии, а как же виртуализация итп?
                      0
                      как пишется в самом блоге: физ. устройства необходимы для наиболее точной эмуляции возможной среды исполнения.
                      Различные классы компьютеров включают в себя как дискретные, так и интегрированные графические платформы, чтобы обеспечить использование браузером Internet Explorer полного спектра преимуществ аппаратного ускорения в рамках всей экосистемы устройств.

                      Они охватывают широкий диапазон систем — от мощных настольных компьютеров на базе платформы x64 до нетбуков с пониженным энергопотреблением и сенсорных планшетных устройств (и все, что лежит между ними). Поскольку повторяемость измерений является важнейшим требованием, все тестовые клиенты являются физическими компьютерами.

                      Если требуется еще большее разнообразие, Internet Explorer Performance Lab может также использовать возможности системы Windows Graphics Lab. Система Windows Graphics Lab включает в себя практически все произведенные наборы графических микросхем. Компьютеры можно объединять в любые мыслимые конфигурации и затем использовать для тестирования производительности. Система Windows Graphics Lab бесценна при диагностировании проблем с графикой для разных наборов микросхем и версий драйверов.
                        0
                        Про планшеты итп, согласен, но дектопы то зачем?
                          0
                          наверное, для десктопов наиболее важным является комбинация различных GPU. и, конечно же, режимы x86 vs. x64.
                      +1
                      Это для тестирование производительности при разных конфигурациях, но никак не для нахождения уязвимостей.
                      Видимо очень много юнит-тестов.
                        0
                        да, так и есть.
                        В общей сложности система Performance Lab измеряет более 850 различных метрик

                        как одна из техник для предупреждения возможных атак, связанных с памятью, IE использует настройки самого компилятора.
                        0
                        У майкрософт есть специальные группа, которая занимается подобным тестированием всех продуктов, в том числе фаззингом. Где-то на чэнел найн есть интервью с русскоязычным парнем из команды.
                        +46
                        Как известно, при достаточной мощности ClusterFuzz новые версии Chrome можно будет генерировать, просто заполняя выполняемый файл случайными значениями — кластер сам выберет правильную версию.
                          +6
                          Скайнет, детство.
                            +1
                            — Тётенька, скушайте конфетку!
                            — Спасибо, мальчик, вкусная!
                            — Странно, почему тогда собака и кошка ее выплевывали?

                            Из таких детей и вырастают фаззеры. Впихнуть не впихуемое :)
                              0
                              А вот мне интересно — по ссылке написано, что они тестируют уже скомпиленные бинарники. Раз Chrome — GUI приложение, то без графической подсистемы вроде Х его не запустишь. Неужели каждый из этих 6000 инстансов работает на отдельном сервере с графикой? Как они это все распараллеливают?
                                0
                                к примеру есть xvfb
                                  0
                                  Спасибо, не знал про такое. Похоже как раз именно оно.
                                    0
                                    А ещё есть Selenium
                                +1
                                Если сыпать случайными данными — легко пропустить какой-то из вариантов специально подобранного кода, роняющего программу. Как про обезьян с пишущими машинками.

                                Only users with full accounts can post comments. Log in, please.