Анализ исходного кода ОС FreeBSD выявил более тысячи серьезных ошибок

image

Теги: исследование, исходный код, FreeBSD

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

Разработчик системы статического анализа кода PVS-Studio Святослав Размыслов исследовал исходный код операционной системы FreeBSD на предмет потенциальных уязвимостей и некритичных ошибок. Всего эксперт обнаружил порядка тысячи серьезных предупреждений анализатора.

Размыслов установил PC-BSD и написал утилиту на C++, позволяющую сохранить рабочее окружение компиляторов на момент сборки ядра. Полученную информацию специалист использовал для получения и анализа препроцессированных файлов. Подобный способ позволил исследователю провести глубокий анализ кода и найти наиболее сложные и интересные ошибки.

В ходе анализа кода было обнаружено множество опечаток, одинаковых фрагментов и прочих ошибок в исходном коде операционной системы. Исследователь сообщил о найденных неисправностях разработчикам FreeBSD. На момент написания новости создатели операционной системы приступили к устранению найденных ошибок.

В качестве примера можно привести ошибку приоритетов операций, меняющую логику вычислений. Анализатор обнаружил проблему в следующем фрагменте кода:

int mfi_tbolt_send_frame(struct mfi_softc *sc, struct mfi_command *cm)
 {
   ....
   if (cdb[0] != 0x28 || cdb[0] != 0x2A) {  // <='
     if ((req_desc = mfi_tbolt_build_mpt_cmd(sc, cm)) == NULL) {
       device_printf(sc->mfi_dev, "Mapping from MFI "
           "to MPT Failed \n");
       return 1;
     }
   }
   else
     device_printf(sc->mfi_dev, "DJA NA XXX SYSPDIO\n");
 ....
 }
 

В данном случае первое условное выражение всегда истинно, и ветвь “else” никогда не получает управления. 

Telegram Подписывайтесь на канал "SecurityLab" в Telegram, чтобы первыми узнавать о новостях и эксклюзивных материалах по информационной безопасности.

comments powered by Disqus