Pull to refresh

Comments 6

Не нашел конструкции вида:
func(type *ptr){
int a= ptr;
}

Кривая попытка присвоить адрес встречалась в нескольких местах, компиляторы gcc 5.3.0 и vs2015 её не видели с максимальным уровнем предупреждений, cppcheck и pvs-studio их тоже не увидели.
После доработок cppcheck в codacity таки нашел только последнюю оставшуюся. Но я ее уже исправил в codeblock.
Дело в том, что существовала (к сожалению) распространённая практика хранить указатели в int. Поэтому искать такое в старых С-программах дело неблагодарное, а в C++ это уже не скомпилируется. Впрочем, можно подумать, как сделать эту диагностику с приемлемым количеством ложных срабатываний.

Сейчас PVS-Studio ругается только 64-битной диагностикой, так как нехорошо запихивать указатель в int, обрезая старшие биты: V103: Implicit type conversion from memsize to 32-bit type.

Вот вам парочка идей в тему статьи.


Проект OpenVPN недавно прошёл целых два аудита кода. Однако, энтузиасты всё ещё находят уязвимости:
https://guidovranken.wordpress.com/2017/06/21/the-openvpn-post-audit-bug-bonanza/


На днях вышла новая версия аудио-кодека Opus 1.2. И на странице релиза упомянуто, что они провели дополнительное тестирование безопасности, в т.ч. с использованием "фаззинга". При этом существенных уязвимостей обнаружено не было.
https://jmvalin.ca/opus/opus-1.2/

Как я понимаю, для найденных в OpenVPN уязвимостей статический анализ ничего не показал бы (и не показал, т.к. аудит выполнялся именно статическим анализом кода). Они так же были выявлены фаззингом.

Да, некоторые из описанных ошибок действительно не получилось бы найти статическим анализатором.
(Откуда ему знать, что для правильного освобождения памяти надо использовать GENERAL_NAMES_free, а не sk_GENERAL_NAME_free?)


Но некоторые выглядят вполне "по зубам" PVS-Studio. Например, отсутствие проверки возвращаемого значения ASN1_STRING_to_UTF8.
Или, скажем, вот это: tib_len = buf2[0x28];. Здесь buf2 имеет тип char. Т.е. значение tib_len может оказаться отрицательным, а оно дальше передаётся в memcpy.


Или PVS-Studio пока ещё не умеет data flow analysis?

Или PVS-Studio пока ещё не умеет data flow analysis?


Умеет. Ограничено. Впрочем, любой статический анализатор в той или иной степени умеет именно ограниченно.
Sign up to leave a comment.