Методы безопасного кодирования C
Я ищу исчерпывающую информацию о методах безопасного кодирования на языке C. Поскольку я не нашел такого списка, существующего здесь, мы могли бы также превратить его в вики сообщества для дальнейшего использования. Я ищу решения для проблем безопасности, таких как переполнение и недополнение буфера на основе стека и кучи, целочисленные переполнения и недопустимости, атаки форматной строки, разыменование нулевого указателя, атаки проверки кучи / памяти и т. Д.
NB: Помимо практики кодирования, стоит упомянуть и защищенные библиотеки, защищающие от подобных атак.
Л.Э.: Как видно из этого вопроса, методы кодирования Secure C++, но только для языка Си.
2 ответа
Стандарт CERT C "de facto" довольно хорошо известен и в некоторой степени решает эти проблемы:
SEI CERT C Стандарт кодирования
На рынке должно быть несколько статических анализаторов, поддерживающих CERT C.
Из описания:
Читатели узнают:
Как избежать распространенных ошибок программирования, таких как переполнение буфера, состояние гонки и проблемы форматной строки
Как правильно SSL-включить приложения
Как создать безопасные каналы для связи клиент-сервер без SSL
Как интегрировать инфраструктуру открытых ключей (PKI) в приложения Лучшие практики для правильного использования криптографии Методы и стратегии для правильной проверки правильности ввода в программы
Как безопасно запускать программы
Как правильно использовать механизмы доступа к файлам
- Методы защиты приложений от обратного проектирования