Fuzzing-исследование PostgreSQL. Как мы искали и что мы нашли


Николай Шаплов

Postgres Professional

Fuzzing Engineer

25 сентября 16:40
Продолжительность 45 мин.

Фаззинг-исследование, это когда мы подаем в программу (или ее часть) случайные входные данные (на самом деле случайность весьма условна) и смотрим что из этого получится. И так много раз на многих процессорах.

Фаззинг исследование большого монолитного программного комплекса всегда не простая задача требующая неординарных решений. В этом докладе я расскажу что и как мы искали при помощи фаззинга и к каким результатам оно привело.

  • Исследование функций парсинга типов данных (input-функции): для разогрева;
  • Исследование функций реализующих операции между типами (op-функции): тут лучше учитывать структуру;
  • Фаззинг сетевой подсистемы: давайте притворимся, что мы POSIX-вызовы, так дешевле;
  • Восстановление дискового контекста: нужен день сурка.

Рассказ о смешных багах и нелепые жесты руками входят в комплект поставки.