Уязвимость в libcue, приводящая к выполнению кода при загрузке файлов в GNOME

В библиотеке libcue, используемой для разбора метаданных cо сведениями о порядке и длительности звуковых треков, выявлена уязвимость (CVE-2023-43641), позволяющая организовать выполнение кода при обработке специально оформленных cue-файлов. Библиотека используется в некоторых мультимедийных проигрывателях и звуковых редакторах, включая Audacious, и может быть использована для компрометации системы при открытии в них непроверенных данных.

Более того, библиотека libcue используется в поисковом движке tracker-miners, применяемом в пользовательском окружении GNOME. Так как tracker-miners автоматически индексирует новые мультимедийные файлы в домашнем каталоге, для атаки на системы с GNOME и организации выполнения кода злоумышленника достаточно, чтобы пользователь просто загрузил специально оформленный файл в каталог ~/Downloads, ~/Music или ~/Videos, без необходимости его открытия (например, в некоторых случаях достаточно нажатия на ссылку в браузере).

Выявившие уязвимость исследователи подготовили рабочий эксплоит и продемонстрировали возможность эксплуатации окружений на базе Ubuntu 23.04 и Fedora 38. Код эксплоита будет опубликован позднее, чтобы дать время пользователям установить обновление с устранением уязвимости. Эксплоит стабилен в работе, но требует адаптации для каждого дистрибутива.

Уязвимость вызвана целочисленным переполнением в коде разбора синтаксиса параметра INDEX и проявляется при указании в данном параметре слишком больших числовых значений, не укладывающихся в тип “int”. Для преобразования строки в число используется функция atoi, например, при указании числа 4294567296 оно будет преобразовано в -400000. Непосредственно к уязвимости приводит отсутствие проверки полученного значения на то, что оно может быть отрицательным. В итоге, в коде после преобразования atoi выполняется операция “track->index[i] = ind”, в котором “i” можно присвоить отрицательное число для перезаписи области памяти вне буфера значением “ind”, которое также загружается из обрабатываемого файла.

В большинстве дистрибутивов с GNOME компонент tracker-miners активируется по умолчанию и загружается как жёсткая зависимость к файловому менеджеру Nautilus (GNOME Files). Для отключения tracker-miners для текущего пользователя можно использовать команды:

Release. Ссылка here.