Android приложение, което може да рисува върху други прозорци и да записва в споделеното хранилище, може да промъкне инструкции към AI агента, управляващ телефона, чрез текст, който никое човешко око няма да види. Още две стъпки и същото приложение вече изпълнява команди на компютъра, управляващ агента.

Изследователи демонстрираха тази верига от атаки, заедно с още шест други, срещу пет рамки за мобилни агенти с отворен код: AppAgent, AppAgentX, Mobile-Agent-v3, Open-AutoGLM и MobA. Всички системи са се огънали пред поне шест от седемте атаки.

Докладът беше публикуван в arXiv на 1 юли и бе преработен на 14 юли. Авторите са от Университета „Саймън Фрейзър“, Китайския университет в Хонконг, Университета Шандун и лабораторията Xingtu към китайската фирма за киберсигурност QAX.

Никое от откритията няма класификация CVE, а първият автор Зидонг Чанг заяви пред The Hacker News, че екипът няма доказателства техниките да са използвани извън контролирана среда. Медията The Hacker News провери всички пет рамки и установи, че пътищата за екранни снимки, извикването на обвивката (shell) и резервният механизъм за излъчване (broadcast) все още присъстват в основните им разклонения към 17 юли.

Чанг каза, че екипът е изпратил имейл на засегнатите поддържащи среди частно преди публикуването на предварителния доклад, но „до днешна дата не е получен отговор“.

Ескалацията на привилегиите е най-малко екзотичната част. Контролерът на AppAgent изпълнява subprocess.run(adb_command, shell=True) и изгражда текстовия вход, като поставя изхода от модела директно в adb shell input text {input_str}. Листингът в доклада показва, че функцията изобщо няма филтриране или саниране на данните.

Работещият код се представя съвсем малко по-добре, но крайно недостатъчно: премахва интервалите и единичните кавички преди интерполацията, оставяйки останалите служебни метасимволи на обвивката недокоснати (без филтрация за ;, & или >). Така че низ, който моделът прочита от екрана и надлежно въвежда, се разделя от хост обвивката и втората му част се изпълнява на операторската машина с Windows.

Зловреден код (payload), проектиран да стартира calc.exe, е постигнал точно това в 20 от 20 опита срещу AppAgent, AppAgentX, Mobile-Agent-v3 и MobA. Отделно пълнофункционално изпълнение срещу AppAgent използва test;pwd>rce_success и записва работната директория на хоста във файл.

Поставянето на този низ пред модела е състояние на надпревара при файловете (file race). Open-AutoGLM изпълнява screencap -p /sdcard/tmp.png и след това отделен adb pull. Mobile-Agent-v3 записва във фиксиран файл /sdcard/screenshot.png и изчаква половин секунда между двете операции. AppAgentX записва в /sdcard/ с имена, съдържащи времеви маркер и нарастващ брояч на стъпките – модел, който атакуващият може да следи. Включената конфигурация config.yaml на AppAgent все още задава по подразбиране директорията за екранни снимки на /sdcard.

Изследователите са засекли този времеви прозорец между рамките на 50 до 500 ms, със средна стойност около 210 ms при 100 изпълнения. Фонова услуга, която прави запитвания на всеки 5 до 10 ms, разполага с достатъчно време да заключи файла, да прерисува PNG изображението и да го освободи, преди агентът да го събере. Манипулацията е била успешна в 19/20 до 20/20 от случаите срещу четири от петте системи.

За да разширят още повече времевия прозорец, те показват на агента невидим слой (overlay), твърдейки, че се извършва мрежова синхронизация, и го молят да изчака три секунди. Моделът се е предоставил на тази манипулация.

Всички шест визуални модела, тествани от изследователите, са прочели текст с 2% непрозрачност в поне 18 от 20 лабораторни опита. В доклада се посочва, че такова ниво е под прага на засичане от човешко око при нормален преглед. GPT-4o, Claude Opus 4.5, Gemini 3 Pro и GLM-4V постигат 20 от 20 успеха. Резултатите не нарастват с увеличаване на видимостта на текста, тъй като още от началото са на максималното ниво.

AutoGLM-Phone (9B модел, работещ на самото устройство) е бил най-слабият от шестте с 18 от 20 успеха. Човешкото зрение прилага праг на възприемане, докато екранната снимка – не.

Асиметрията има и хардуерно изражение. Телефоните заоблят ъглите си и имат отвори за камери, но буферът за кадри (frame buffer) остава правоъгълен, така че пикселите в тези зони остават под рамката, но попадат във всяка екранна снимка. При Pixel 4 това оставя около 78 пиксела скрита ширина в единия ъгъл – напълно достатъчно за кратка команда, като и петте агента са успели да прочетат инжектирания зловреден код от там.

Трети трик изобщо избягва незабележимостта: услуга за достъпност (accessibility service) поставя фалшив екран за вход (login Activity) над истинското приложение и кара агента да въведе идентификационните данни на потребителя в него. Човек би се поколебал при неочаквано искане на парола, но нито един от петте агента не е показал колебание в 100 опита.

Никой не е удостоверил клавиатурата

Агентите нямат официално разрешен канал към телефона, затова използват каналите за отлаждане. От там произтича и най-евтината атака в комплекта. Open-AutoGLM кодира въвеждания текст в base64 и го изпраща към ADB_INPUT_B64 – имплицитно излъчване, засичано от ADB Keyboard (инструмент за автоматизирано тестване, създаден да приема текст от всичко, което го излъчва).

Това е неговата документирана цел и той все още се поддържа, като версия от април съдържа корекция за Android 16. ADB Keyboard прави точно това, което обещава в документацията си. Самите агенти са тези, които са превърнали тестовата среда в тръбопровод за въвеждане на данни в реална среда.

Mobile-Agent-v3 поддържа тесен списък с разрешени символи: букви, цифри и често срещани препинателни знаци се изпращат чрез adb shell input text, а всичко останало (всички non-ASCII символи) се изпраща символ по символ през ADB_INPUT_TEXT. MobA действа по-директно – неговата функция type_text тества целия низ с text.isascii(), така че дори едно емотиконче променя поведението.