Уязвимост в TightVNC Viewer може да позволи на атакуващи да изпълняват код на компютри с Windows, преди да се появи подкана за парола. Проучването, приписано на SeongJoon Cho от SSD Labs Korea, включва доказателствен код за концепция на експлойт (PoC), насочен към TightVNC 2.8.88 x64. Атаката използва злонамерен VNC сървър за изпращане на данни за екрана, които повреждат паметта на клиентското приложение (viewer).
Засегнатият компонент е клиентът за преглед (viewer), а не просто всяка Windows машина, на която работи сървър на TightVNC. Атакуващите се нуждаят или от мрежов достъп до клиент в режим на слушане (Listening Mode), или от потребител, който свързва клиента със сървър, контролиран от атакуващия. Предоставеното разкритие не установява активна експлоатация.
Пропускът започва, когато сървърът обяви размера на своя екран чрез протокола Remote Framebuffer (RFB). TightVNC изчислява паметта, необходима за съхраняване на този екран, но преобразува резултата в 32-битово цяло число. Големите размери водят до превъртане на стойността (integer overflow), оставяйки по-малко заделена памет от очакваното.
В докладвания пример сървърът обявява екран с размери 32,768 на 32,769 при 32 бита на пиксел. Клиентът заделя само 128 KB, докато запазва размери, представляващи повече от 4 GB пикселни данни. По-късните актуализации на екрана записват извън този малък буфер, тъй като изчисляването на указателя няма проверка спрямо заделения размер.
Уязвимост в TightVNC за отдалечено изпълнение на код преди автентикация
PoC кодът превръща това повреждане на паметта в изпълнение на код. Първо той променя дължината на изходящ буфер, за да извлече съседна памет, разкривайки адреси, необходими за заобикаляне на рандомизацията на адресното пространство (ASLR).
След това пренасочва извикване на функция и използва обектно-ориентирано към връщане програмиране (ROP), което използва повторно съществуващ код, за да стартира процес чрез функцията CreateProcessW на Windows.
Режимът на слушане (Listening Mode) излага клиента на TCP порт 5500 и, според разкритието, приема входящи сървърни връзки без парола или ограничение по IP адрес.
Атакуващ, който има достъп до този порт, може да атакува клиента директно. Изходяща връзка към фалшив сървър за поддръжка създава друг маршрут, като експлоатацията се извършва преди автентикацията.
Тези условия се различават от прехващането на VNC връзки, което разчита на слаби пароли. Те се различават и от инструментите за отдалечен достъп, маскирани като инсталатори, при които потребителите инсталират легитимен софтуер под фалшив претекст. Тук атаката е насочена към управлението на паметта в самия клиент.
Изследователите твърдят, че разработчикът не е отговорил и е коригирал уязвимостта на 3 октомври 2026 г. Официалните бележки към изданията на TightVNC обаче посочват корекции за сигурност от 2 октомври и 5 октомври, така че точната дата на отстраняване остава неясна. Разработчикът посочва, че версии 2.8.89 и 2.8.90 адресират проблеми със сигурността във Viewer и препоръчва версия 2.8.90 за този клон.
Администраторите трябва да актуализират засегнатите клиенти, да изключат ненужния режим на слушане (Listening Mode), да ограничат порт 5500 до доверени системи и да избягват недоверени VNC сървъри. Мрежовите ограничения намаляват излагането на риск, но не заменят инсталирането на корекции за сигурност за уязвимия клиент.