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