Как стать автором
Обновить

Как найти 56 потенциальных уязвимостей в коде FreeBSD за один вечер

Время на прочтение 28 мин
Количество просмотров 9.3K
Всего голосов 48: ↑39 и ↓9 +30
Комментарии 10

Комментарии 10

По поводу Coverity — скорее всего Scan выдает еще раза в 4 больше предупреждений вида «unchecked input X taints
variable Y», и в потоке подобного рода сообщений тонут настоящие предупреждения.
Если еще не проверяли, попробуйте проверить ядро OpenBSD, разработчики которого давно уже хвалятся качеством кода и отсутствием эксплуатируемых уязвимостей (очень похоже на Неуловимого Джо, конечно, но тем не менее).
Мы пробовали проверять OpenBSD, даже портировали туда анализатор, но на этом всё. Не нашлось простого способа проверить проект без интеграции в его сборочную систему. Самой системой крайне неудобно пользоваться в виртуальной машине и информации по кросс-компиляции не встретилось.

Если Вы знаете, как собрать OpenBSD в Linux, то мы сможем проверить. Так проверяли Haiku OS когда-то.
По поводу ложных срабатываний. Насколько я помню, вы же не сами препроцессируете файлы, а используете внешний препроцессор? Иначе можно было бы запомнить, что вот этот кусок кода получился при разворачивании макроса, а вот этот литерал был передан ему параметром. И если он сравнивается с таким же литералом, не выдавать предупреждение.
Если честно, я не уловил суть. Как по мне, в независимо от того, насколько хорошо мы можем анализировать макросы, одинаково сложно понять, надо ругаться на 1.3 == 2, или нет. Поэтому прошу сформулировать поподробнее.
Чёрт, прошу прощения, ерунду написал. Я думал, что вы ругаетесь на сравнение двух литералов (т.е. когда оба операнда константные, и результат всегда true или false), а на самом деле там сравнение int и double. Вопрос снимается.
CWE-805 весьма коварный «не ошибка». Натыкался на аналогичное предупреждение в cURL.
Надеюсь, что проблема надумана и никто не придумает, как её использовать.
Андрей, а можно вас попросить https://github.com/ethereum/cpp-ethereum посмотреть?
P.S.

Мы перепроверили с помощью PVS-Studio свежую версию исходных кодов проекта FreeBSD. Git revision: 59fe28863e6a0903b50b37c616f21a2a865bbbf2

Мы немного поработали с отчетов, отфильтровав явно лишние на наш взгляд сообщения. В списке конечно всё равно осталось много ложных срабатываний, но дальше уже нет возможности убирать лишние предупреждения крупными группами. Оставшиеся предупреждения следует смотреть по отдельности.

Отчет выкладываем в двух форматах (tasks и csv). Тому, кто будет работать с отчетом в начале следует произвести автоматическую замену SOURCE_ROOT на нужный путь, чтобы правильно заработала навигация.

Tasks: http://cppfiles.com/freebsd.plog.tasks

Csv: http://cppfiles.com/freebsd.plog.csv
Зарегистрируйтесь на Хабре , чтобы оставить комментарий