Ищем баги в продакшене всем миром: 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 — ожидаемое хардварное расширение, которое позволит обнаруживать ошибки использования памяти с высокой вероятностью и низкими накладными расходами.


Почему этот доклад в программе

Чем хорош спикер: Константин — один из авторов ASan и GWP-ASan. Он прекрасно знает эту технологию, так как сам её создал. Кроме того, он отличный докладчик — его доклады всегда точны, подробны и интересны даже для неподготовленного зрителя.

Чем хороша тема: Ошибки «heap-use-after-free» и «heap-buffer-overflow» — одни из главных источников уязвимостей в С++ софте. При этом требования к надежности софта растут от кода к году. Эти классы ошибок возможно ловить с помощью ASan, однако не всегда возможно применять этот инструмент в продакшне. Поэтому зачастую приходится ограничиваться прогоном тестов на инструментированных сборках. Это дает далеко не полное покрытие всех продакшн-сценариев. GWP-ASan дает возможность без ущерба для производительности внедрить эти проверки в продакшн. Это позволяет находить ошибки и уязвимости до того, как они выстрелят. Это отличное дополнение к ASan и другим техникам поиска этих классов ошибок.

Кому будет полезно: Всем, кому важна надежность приложений на С++. Про эту технологию нужно как минимум знать.

Почему здесь и сейчас: Во-первых, требования к надежности ПО растут. Во-вторых, как следствие, сейчас пробуют разные подходы для повышения надежности и устранения этих классов ошибок — вплоть до перехода с C++ на Rust. В-третьих, на предыдущей конференции у нас были доклады про ASan, и доклад GWP-ASan от автора будет логичным продолжением серии докладов на эту тематику.