Експерименталната система HTMLBubbles открита в бета версия за macOS, повдига въпроси за сигурността

В бета версията на Telegram за macOS е открита експериментална подсистема, наречена HTMLBubbles, която позволява изпълнение на JavaScript директно в съобщенията. Това съобщава Telegram Info, като информацията е базирана на анализ на тестовата версия 12.10.283300. Функцията все още не е достъпна за обикновените потребители и ботове и не е официално обявена от Telegram.

Според откритието, HTMLBubbles предвижда поддръжка на HTML, CSS и JavaScript в полето за съобщения, което ще позволи на потребителите да взаимодействат с интерактивни елементи, без да напускат чата. В тестовата версия са включени 64 демонстрационни сценария, сред които картички на онлайн магазини с избор на цвят и размер, бордни карти, списъци със задачи, интерактивни графики и шах. Има и по-сложни примери за разработчици, като преглед на код и панели за управление на софтуер.

Разлика с Mini Apps и технически ограничения

Основната разлика между HTMLBubbles и съществуващите Mini Apps е начинът на стартиране. Докато Mini Apps се отварят като отделна уеб страница в Telegram и комуникират със сървър, новият механизъм изпълнява скриптове директно в съобщението, без отделен WebView прозорец. За визуализация се използва litehtml – компактен енджин за HTML и CSS, който поддържа само част от уеб стандартите. JavaScript се изпълнява от отделен механизъм в специален „пясъчник“, който изолира кода от останалата част на системата.

Според описанието на прототипа, скриптовете нямат достъп до обектите document и window, не могат да изпращат заявки чрез fetch или XMLHttpRequest, нито да установяват мрежови връзки. WebSocket и localStorage също са недостъпни. Външните изображения по HTTP и HTTPS са блокирани, а елементите video, audio, iframe и canvas се игнорират. За оформление се използват вградени ресурси и системни икони.

Telegram е ограничил и потреблението на изчислителни ресурси: едно извикване на JavaScript може да отнеме не повече от 50 милисекунди, общото време за изпълнение е до 200 милисекунди, а едновременно са разрешени до 16 таймера. При надвишаване на лимита или грешка съобщението преминава към статична HTML версия. Анимациите се спират, когато елементите не се виждат на екрана.

Потенциални рискове за сигурността

Въпреки ограниченията, изпълнението на JavaScript в съобщенията създава нова възможност за атака. Ако злонамерен потребител успее да заобиколи изолацията или се възползва от грешка при обработката на HTML, CSS или събития, специално подготвено съобщение би могло да повлияе на работата на клиента. Мащабът на последствията зависи от архитектурата на „пясъчника“ и достъпните вътрешни функции на Telegram.

Тези опасения имат техническа основа. Наскоро беше открита уязвимост в Telegram Desktop, която позволява внедряване на JavaScript чрез текста на бутон в HTML експорта на кореспонденцията. Зловредният код се изпълнява при отваряне на запазения архив в браузър, а не при обикновен преглед на чата. Уязвимостта беше отстранена в Telegram Desktop 7.0.1, но случаят показа рисковете от недостатъчна обработка на недоверено съдържание.

Новият механизъм се различава принципно, тъй като HTMLBubbles от самото начало предвижда програмируеми съобщения. Затова разработчиците трябва да защитят не само обработката на маркировката, но и средата за изпълнение. Все още не е ясно дали скриптовете ще се стартират автоматично при появата на съобщение на екрана или само след действие от страна на потребителя. Няма публично техническо описание на това поведение.

Какво остава неясно

Наличието на експерименталния модул е потвърдено независимо от специалисти от общността Telegram Info, но действителното функциониране на всички обявени сценарии не е проверено. Информацията за 64-те демонстрации и конкретните ограничения се основава предимно на проучване на тестовата версия. Липсват официално обявяване на HTMLBubbles, независим одит за сигурност и потвърждения за практическото използване на уязвимости.

Не е известно как потребителите или разработчиците на ботове ще създават интерактивни съобщения, дали ще има поддръжка за Android, iOS и Windows и какви ограничения ще останат до публичното пускане. От Telegram не са обявили срокове. Възможно е разработчиците значително да променят механизма или да се откажат от експеримента. Засега HTMLBubbles показва възможна посока на развитие, при която съобщението се превръща в изпълним интерфейс.