Удалённо эксплуатируемая root-уязвимость в утилите ping, поставляемой во FreeBSD

Во FreeBSD выявлена уязвимость (CVE-2022-23093) в утилите ping, входящей в базовую поставку. Проблема потенциально может привести к удалённому выполнению кода с правами root при проверке при помощи ping внешнего хоста, подконтрольного злоумышленнику. Исправление предложено в обновлениях FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 и 12.3-RELEASE-p10. Подвержены ли другие BSD-системы выявленной уязвимости пока не ясно (отчётов об уязвимости в NetBSD, DragonFlyBSD и OpenBSD пока не появилось).

Уязвимость вызвана переполнением буфера в коде разбора ICMP-сообщений, приходящих в ответ на проверочный запрос. Код отправки и приёма ICMP-сообщений в ping использует raw-сокеты и выполняется с повышеннымми привилегиями (утилита поставляется с флагом setuid root). Обработка ответа производится на стороне ping через реконструкцию IP- и ICMP-заголовков пакетов, получаемых из raw-сокета. Выделенные IP- и ICMP-заголовки копируются функцией pr_pack() в буферы, не принимая во внимание то, что в пакете после заголовка IP могут присутствовать дополнительные расширенные заголовки.

Подобные заголовки выделяются из пакета и включаются в блок заголовков, но не учитываются при расчёте размера буфера. В случае если хост в ответ на отправленный ICMP-запрос вернёт пакет с дополнительными заголовками, их содержимое будет записано в область за границей буфера в стеке. В итоге атакующий может перезаписать до 40 байт данных в стеке, что потенциально позволяет добиться выполнения своего кода. Опасность проблемы смягчает то, что в момент проявления ошибки, процесс находится в состоянии изоляции системных вызовов (capability mode), что затрудняет получение доступа к остальной системе после эксплуатации уязвимости.

Источник: opennet.ru

Добавить комментарий