Модернизация пространственной ... Заметка

Модернизация пространственной безопасности для сотен миллионов строк C++

Уязвимости безопасности пространственной памяти, которые возникают, когда код обращается к памяти за пределами намеченных границ, представляют собой значительный риск безопасности и были использованы злоумышленниками для компрометации систем и конфиденциальных данных. Согласно данным проекта Google Project Zero, эти уязвимости составляют 40% эксплуатируемых в дикой природе уязвимостей безопасности памяти за последнее десятилетие. Чтобы решить эту проблему, Google предпринимает всесторонний подход к безопасности памяти, включая использование языков программирования, безопасных для памяти, в новом коде и модернизацию существующих баз кода C++ с учетом принципов безопасности. Одной из ключевых стратегий является реализация проверки границ для обычных структур данных, начиная с укрепления стандартной библиотеки C++ (libc++). Укрепленная libc++ вводит проверки безопасности для обнаружения уязвимостей, таких как доступы за пределами границ в производстве. Google сделала укрепленную libc++ по умолчанию на своих серверных системах производства, улучшая пространственную безопасность памяти во всех своих сервисах. Воздействие на производительность этих изменений было удивительно низким, с средним воздействием 0,30% на сервисы. Включение укрепленной libc++ уже предотвратило эксплуатацию, сократило количество сбоев и улучшило корректность кода, с более чем 1000 выявленных ошибок и сокращением количества сегментационных ошибок на 30%. Google намерена расширить проверку границ на другие библиотеки и перенести свой код на безопасные буферы, требуя проверки границ для всех обращений. Компания рекомендует другим организациям, использующим C++, включать режим укрепления своей стандартной библиотеки по умолчанию повсеместно.