Публикувани са корективни издания на X.Org Server 21.1.12 и DDX компонента (Device-Dependent X) xwayland 23.2.5, осигуряващи пускането на X.Org Server за изпълнение на X11 приложения в среди базирани на Wayland. В новата версия на X.Org Server са отстранени 4 уязвимости. Една уязвимост може да бъде експлоатирана за повишаване на привилегиите в системи, в които X-серверът се изпълнява с права root, а също и за дистанционно изпълнение на код в конфигурации, където за достъп се използва пренасочване на X11 сеанса посредством SSH.
Останалите три уязвимости могат да доведат до изтичане на съдържание от паметта сървър или до аварийно приключване на работа. Тези три уязвимости се експлоатират чрез използване на клиентска страна с друг ред на байтовете, отколкото на сървър. В тази връзка в новото издание е предложена възможността за блокиране на свързването на клиенти от системи с друг ред на байтовете. За деактивиране може да се използва конфигурационният параметър «AllowByteSwappedClients» или опцията от командния ред «+byteswappedclients».
Промяната на стойността по подразбиране осигурява защита срещу възможни все още неоткрити уязвимости, манипулиращи реда на байтовете. Същността на тези уязвимости е, че промяната на реда на байтовете за стойности с размер води до неправилна интерпретация и четене или запис в паметта на значително по-голям размер, отколкото може да побере заделеният буфер.
По подразбиране все още се запазва поддръжката на клиенти с различен ред на байтовете, въпреки че на практика преобразуването на реда на байтовете се използва изключително рядко, тъй като работни станции, на които се изпълнява X-сервер, обикновено са оборудвани с процесори с ред на байтовете little-endian (от младши към старши байт) и свързването на тях X-клиенти с ред на байтовете big-endian, като платформата s390x (IBM zSystems), е голяма рядкост.
Открити проблеми:
- CVE-2024-31080, CVE-2024-31081, CVE-2024-31082 — четене на данни извън буфера чрез манипулации с функциите ProcXIGetSelectedEvents, ProcXIPassiveGrabDevice и ProcAppleDRICreatePixmap, които използват поле с размер, без да взимат под внимание реда на байтовете в стойността, предадена от клиента. Съответно, при различия в реда на байтовете между клиента и сървъра, функциите връщат на клиента повече данни. Първите две проблеми се проявяват от версия xorg-server-1.7.0 (2009 година), а третият — от xorg-server-1.15.0 (2012 година).
- CVE-2024-31083 — достъп до вече освобождадена памет (User-after-free) в функцията ProcRenderAddGlyphs, която извиква функцията AllocateGlyph() за запазване на нови глифове, предадени от клиента. Функцията AllocateGlyph() връща нов глиф с нулев брояч на референции (refcount=0), а повторното указване на глифа не води до увеличаване на брояча на референции, поради което масивът glyph_new може да включва няколко записа, сочещи към един глиф без брояч на референции. При освобождаването на паметта от ProcRenderAddGlyphs() за глифа, в масива остава и може да се използва излишен екземпляр на указател към глифа, за който паметта вече е освободена. Проблемът се проявява в X.Org Server и не засяга xwayland.
Източник: opennet.ru
