GNU coreutils uniq уязвим к чтению за пределами границ из-за неправильной обработки многобайтового ввода при использовании опции -w (--check-chars). Функция find_field() неправильно рассчитывает длину символов в байтах, многократно обрабатывая фиксированный указатель вместо прохождения входных данных, что приводит к завышению значения длины. Эта неправильная длина позже используется в операции memcmp, что приводит к чтению за пределами выделенного буфера при обработке созданного многобайтового ввода.
При запуске GNU coreutils uniq с аргументами, предоставленными злоумышленником, такое поведение приводит к сбою и потенциальному раскрытию памяти соседней кучи. Эта проблема исправлена в коммите d64e35a8a4c0e4608321433e0d84d917e4e36371.
Показать оригинальное описание (EN)
GNU coreutils uniq is vulnerable to an out‑of‑bounds read due to incorrect handling of multibyte input when the -w (--check-chars) option is used. The find_field() function miscalculates the byte length of characters by repeatedly processing a fixed pointer instead of advancing through the input, resulting in an inflated length value. This incorrect length is later used in a memcmp operation, causing reads beyond the allocated buffer when processing crafted multibyte input. When running GNU coreutils uniq with attacker-provided arguments, this behavior leads to a crash and potential adjacent heap memory exposure. This issue has been fixed in the commit d64e35a8a4c0e4608321433e0d84d917e4e36371.
Характеристики атаки
Последствия
Строка CVSS v4.0