В CVE опубликованы отчёты о ложных уязвимостях в curl, PostgreSQL и других проектах

Дэниел Cтенберг (Daniel Stenberg), автор утилиты для получения и отправки данных по сети curl, предупредил пользователей о публикации организацией MITRE, отвечающей за ведение базы данных общеизвестных уязвимостей, отчёта с информацией о ложной критической уязвимости. Проблеме присвоен CVE-идентификатор CVE-2020-19909 и выставлен уровень опасности 9.8 из 10, свойственный для удалённо эксплуатируемых уязвимостей, приводящих к выполнению кода с повышенными привилегиями.

На деле отчёт об уязвимости ссылается на проблему в коде разбора параметра командной строки “–retry-delay”, которая была устранена в 2019 году и приводила к целочисленному переполнению. Так как ошибка проявляется только при явной передаче некорректного значения при запуске утилиты из командной строки и приводит к неверной интерпретации задержки перед повторной отправкой данных (несколько секунд вместо заданных миллиардов лет), ошибка не была отнесена разработчиками к категории уязвимостей.

Тем не менее, спустя три кода кто-то отправил в MITRE отчёт об уязвимости и присвоил проблеме критический уровень опасности. Вопрос также вызывает то, как MITRE мог согласиться с заявленным уровнем опасности, так как даже если бы это была эксплуатируемая уязвимость, проблемы, приводящие к отказу в обслуживании, обычно помещаются в категорию неопасных. Примечательно, что разработчики curl обратились в MITRE с просьбой отменить CVE-отчёт, но представители MITRE ограничились отпиской, отказались удалить CVE и лишь пометили его как спорный (“DISPUTED”).

Данный инцидент можно было бы считать единичным случаем, но проект PostgreSQL сообщил о выявлении подобного ложного отчёта, также отправленного 22 августа и привязанного к старому CVE-идентификатору, выданному в 2020 году.
Отчёт об уязвимости CVE-2020-21469, которой присвоен статус опасной (7.5 из 10), ссылается на исправленную в 2020 году ошибку, проявляющуюся при обработке сигнала SIGHUP серверным процессом PostgreSQL. В CVE заявлено, что через повторяющуюся отправку сигнала SIGHUP серверному процессу можно добиться отказа в обслуживании. Разработчики PostgreSQL не считают данную ошибку уязвимостью, так как для её проявления требуется выполнение действий с правами администратора или пользователя postgres, имеющего полный доступ к СУБД (нет смысла вызывать отказ в обслуживании, когда достаточно прав для штатного завершения процесса и удаления БД).

Анализ нетипичных CVE, созданных 22 августа, показал, что в этот день было добавлено около 150 отчётов (1, 2, 3, 4, 5, 6) под идентификаторами, выданными в 2020-2022 годах. Идентификаторы охватывают большое число открытых проектов и, на первый взгляд, также интерпретируют обычные ошибки, не связанные с обработкой внешних данных, как опасные уязвимости. Например, среди заявленных проблем, которым присвоен статус критически опасных:

  • CVE-2022-48522 – переполнение стека в функции S_find_uninit_var из Perl 5.34.0. Указано, что наблюдаемое аварийное завершение может привести к удалённому выполнению кода или локальному повышению привилегий.
  • CVE-2022-48174 – переполнение стека в интерпретаторе ash из набора busybox. Заявлена возможность выполнения кода злоумышенника при выполнении команд в ash.
  • CVE-2022-47022 – ошибка в topology-linux.c из open-mpi hwloc 2.1.0, приводящая к отказу в обслуживании через glibc-cpuset.
  • CVE-2022-36648 – ошибка при эмуляции of_dpa_cmd_add_l2_flood в QEMU 7.0.0. Заявлено о потенциальной возможности добиться выполнения кода на стороне хост-системы через выполнения определённого кода в гостевой ОС.
  • CVE-2022-26592 – переполнение стека в libsass 3.6.5, затрагивающее функцию CompoundSelector::has_real_parent_ref.
  • CVE-2020-24295,
    CVE-2020-24293,
    CVE-2020-24292, CVE-2021-40263,
    CVE-2021-40265 – серия проблем в пакете FreeImage, проявляющихся при разборе изображений в разных форматах.
  • CVE-2021-29390 – переполнение кучи в функции decompress_smooth_data (jdcoefct.c) из библиотеки libjpeg-turbo 2.0.90, позволяющее прочитать 2 байта из области вне буфера.
  • CVE-2020-35357 – переполнение буфера в функции gsl_stats_quantile_from_sorted_data из библиотеки GSL (GNU Scientific Library) 2.5 и 2.6, которое может привести к выполнению кода при обработке специально оформленных входных данных.
  • CVE-2020-22219 – переполнение буфера в функции bitwriter_grow_ в кодировщике flac, которое может привести к выполнению кода при обработке специально оформленных входных данных.
  • CVE-2020-22217– переполнение буфера в функции ares_parse_soa_reply (ares_parse_soa_reply.c) из пакета c-ares.

Спорные отчёты направлены анонимно через сервис информирования об уязвимостях NIST. Мотив публикации не ясен, вероятно кто-то решил продемонстрировать отсутствие должного аудита при приёме отчётов об уязвимостях, возможность использования CVE как механизма для дискредитации проектов или привлечь внимание к исправлению в коде потенциально опасных проблем без анализа их влияния на безопасность. Наиболее вероятно, что кто-то подготовил отчёты на основе изучения исправленных ошибок, которые потенциально были способны привести к уязвимостям, но были признаны разработчиками основных проектов, как не влияющие на безопасность (например, могло быть переполнение буфера, но оно проявлялось только при обработке внутренних данных, на которые не может влиять пользователь).

Release. Ссылка here.