Эффективный фаззинг: пример ис... Заметка
RSS Проект Ноль

Эффективный фаззинг: пример использования Dav1d

Ник Гэллоуэй, старший инженер безопасности, обнаружил переполнение целого числа в декодере видео AV1 dav1d в 2023 году. Это переполнение приводит к записи вне границ памяти, что потенциально может вызвать уязвимость для удаленного выполнения кода. Dav1d - это высоко оптимизированный декодер AV1 с разными путями кода для различных архитектур. Он широко поддерживается в веб-браузерах и является привлекательной целью для fuzzing. Открытие Гэллоуэя было сделано с помощью модифицированной версии fuzzera dav1d в oss-fuzz, который определяет конфигурации для сборки dav1d_fuzzer и dav1d_fuzzer_mt. Fuzzer реализует LLVMFuzzerTestOneInput и инициализирует структуру Dav1dSettings с значениями по умолчанию. Fuzzer Гэллоуэя нашел переполнение, выполнив как можно больше строк кода с помощью небольшого набора тестовых случаев. Переполнение происходит, когда используются несколько потоков декодирования и вычисляются значения для массива смещения начала плитки. Переполненные значения затем передаются в setup_tile(), что приводит к записям вне границ. Были предоставлены два тестовых случая с ошибкой, один из которых более вероятно может быть эксплуатируемым.