Ищем баги в продакшене всем миром: GWP-ASan и что дальше

RU / День 2 / 19:00 / Зал 1

Несмотря на продолжительные усилия по тестированию и фаззингу, ошибки продолжают пробираться в продакшн код. Улучшая тестирование и фаззинг, нам необходим еще слой тестирования: обнаружение ошибок в продакшене. Использование «очищенных» или «отладочных» сборок, упрощающих нахождение ошибок, обычно чрезмерно дорогостоящее предприятие. GWP-ASan использует основанный на выборке подход в обнаружении ошибок в продакшене. В частности, GWP-ASan обнаруживает ошибки heap-use-after-free и heap-buffer-overflow в бинарниках C/C++ с очень низкой вероятностью, но также с небольшой затратой. Мы преодолеваем низкую вероятность обнаружения ошибок при большом масштабе развертывания.

В этом докладе мы обсудим, как работает GWP-ASan, что он может найти и как его развернуть. Также мы поразмышляем о будущем использовании того же подхода для других классов ошибок и других языков программирования. Интересная тема для исследования в этой области — могут ли GWP-ASan подобные инструменты рассматриваться как средства защиты. Да, они не защищают каждое выполнение, но что будут делать злоумышленники, если их атаки будут обнаруживать с вероятностью в 0.1% на каждый инстанс?

В конце, мы коротко обсудим Arm MTE — ожидаемое скоро хардварное расширение, которое позволит обнаруживать ошибки использования памяти с высокой вероятностью и низкими накладными расходами.