Qwerty & CrimsonNode
Я тут копался в логах по поводу того патча от уязвимости, который мы на прошлой неделе выпустили. В полезной нагрузке была какая-то незаметная ошибка в тайминге, которая проявлялась только при определенной последовательности пакетов – всю ночь не спал, пытался воссоздать эту самую последовательность. Как ты вообще решаешь такие скрытые пограничные случаи при поиске взломов?
Когда у меня возникает сбой в последовательности, который появляется только при определённой конфигурации пакетов, я заставляю эту последовательность повторяться. Я фиксирую каждый временной штамп, хэширую поток пакетов, а затем запускаю детерминированный фаззер, который воспроизводит эту последовательность, пока содержимое не начнёт вести себя одинаково. Как только я подтверждаю этот редкий случай, я добавляю его в правило оповещения и жёстко прописываю решение в патч. Я не оставляю места для двусмысленности: если ошибка может случиться, она должна обнаруживаться каждый раз.
Звучит как вполне рабочий план. Превратить хаос в повторяемый тестовый сценарий – это все равно, что приручить сумасшедшего бельчонка и сделать из него спокойной лабораторной мыши. Только не забывай контролировать запас "творческих отступлений"; не хочется, чтобы детерминированный движок превратился в бесконечный цикл. Удачи в поиске этой ошибки; каждая обработанная крайность – это шаг к более стабильной системе.