Эпизод 9: Адриан Тейлор в Маунтин-Вью (декабрь 2019 г.)
Предыдущие серии
Вы можете обнаружить, что вас просят исправить высокоприоритетные ошибки безопасности, обнаруженные ClusterFuzz. Что это такое? Стоит ли относиться к этим ошибкам серьезно? Как вы можете помочь?
ClusterFuzz передает входные данные в Chrome и отслеживает сбои. В некоторых из этих сборок Chrome включены дополнительные проверки, например AddressSanitizer , который ищет ошибки безопасности памяти.
ClusterFuzz назначает компоненты в зависимости от места сбоя и назначает серьезность в зависимости от типа сбоя и того, произошло ли оно в изолированном процессе . Например, использование кучи после освобождения будет иметь высокий уровень серьезности, если только оно не находится в процессе браузера, и в этом случае это критично (нет песочницы, чтобы ограничить влияние!):
class Foo {
Widget* widget;
};
void Foo::Bar() {
delete widget;
...
widget->Activate(); // Bad in the renderer process, worse in the
// browser process. Obviously, real bugs are
// more subtle. Usually.
ClusterFuzz генерирует входные данные от фаззеров или ошибок, отправленных извне. Некоторые фаззеры работают на libFuzzer , который развивает входные данные для увеличения покрытия кода. Некоторые понимают грамматику входного языка, преобразованную в protobufs
. Как только ClusterFuzz обнаружит сбой, он попытается свести к минимуму входной тестовый пример и даже разделить его пополам, чтобы найти вызывающий ошибку коммит . Он находит много...
Вы можете помочь:
- Будьте параноиком в отношении времени жизни объектов и целочисленных переполнений.
- Добавляйте новые фаззеры, особенно когда вы обрабатываете ненадежные данные или IPC (см. ссылки ниже, часто <20 строк кода).
- Исправьте ошибки, о которых сообщил ClusterFuzz: эвристике серьезности можно доверять, поскольку они основаны на реальных возможностях использования : даже переполнение одного байта приводило к выполнению злоумышленником произвольного кода.
Ресурсы
- Фазз-тестирование в Chromium : как добавить новые фаззеры в ClusterFuzz для новых форматов данных или просто потому, что вы хотите получить признание за обнаружение потрясающих уязвимостей.
- Обновление программы Chrome Fuzzer и инструкции : фаззеры также пишутся внешними участниками. Узнайте об их опыте и о том, как легко можно начать.