MemorySanitizer (MSAN), когда он нужен и как внедрять
По разным оценкам, до 10% уязвимостей в коде на C и C++ являются следствием использования неинициализированной памяти (источники: 1, 2). Задача MemorySanitizer (далее, MSAN) - выявлять использование неинициализированной памяти в коде, то есть мусора, например в блоке кода типа if (uninit_var) {...}. Кроме уязвимостей, неинициализированная память даёт о себе знать при портировании приложения на другую платформу, смене компилятора (или поднятии версии используемого), изменении уровня оптимизации или изменении кода таким образом, что то, что раньше "случайно" инициализировалось нулями, стало инициализироваться мусором.
MSAN не является статическим анализатором, то есть для его работы требуется выполнение кода (нужны тесты/fuzzing/реальная нагрузка). Прежде чем переходить к самому MSAN, сначала разберемся почему недостаточно (или достаточно?) статического анализа, ведь даже компиляторы умеют предупреждать об использовании неинициализированных данных.
Читать далееИсточник: Хабрахабр
Похожие новости
- Глухарь ESPшный — мемуары охотника
- Когнитивная эргономика в веб-дизайне: Как не отупеть от собственного интерфейса
- Процесс охоты за угрозами
- Прихоть или безопасность: как компаниям использовать биометрию в новых реалиях
- За четыре года доля пользователей облачных сервисов в РФ выросла втрое и достигла 54%
- Ньюстальгия: как говорить с ностальгирующей аудиторией
- Распознаем STL-код легко: std::vector
- Есть ли жизнь после Cisco ISE? Распаковка и тест-драйв российского NAC от Eltex в сетевой лаборатории
- ИИ взломали. Кто бы мог подумать?
- DPI, ТСПУ и операторы: архитектура блокировки трафика в России