Вразливість в iOS дозволила створити в ній віртуальний комп'ютер

Дослідники з Google Project Zero виявили розроблений ізраїльською компанією NSO Group експлойт для iOS, що дозволяв отримати доступ до пристрою і його даних. Для його запуску достатньо відправити на пристрій жертви файл з розширенням GIF, який формує в пам'яті гаджета віртуальний комп'ютер з більш ніж 70 тисяч логічних вентилів.


NSO Group спеціалізується на розробці шпигунського програмного забезпечення Pegasus, що дозволяє зламувати смартфони на iOS і Android. Після злому зловмисники можуть отримувати зі смартфона дані з мікрофона і камери, паролі та іншу конфіденційну інформацію. Особливість Pegasus серед іншого полягає в тому, що воно, як правило, працює з актуальними версіями програмного забезпечення завдяки тому, що розробники NSO постійно досліджують операційні системи на предмет вразливостей і розробляють складні схеми їх експлуатації. Так, у 2016 році дослідники з The Citizen Lab виявили експлойт у вигляді SMS з посиланням, просто клікнувши на яку жертва, не знаючи того, запускала злом.


Тепер дослідники з Google Project Zero виявили нову атаку від NSO, яка, по-перше, взагалі не вимагає дій від жертви і працює в тлі, а по-друге, влаштована дуже незвичайним чином. Новий експлойт працює через повідомлення в iMessage. Для запуску атаки зловмиснику необхідно відправити на смартфон жертви файл з розширенням GIF. Для того, щоб анімація була зацикленою, iMessage бере вихідний файл і рендерить у новий файл цю ж анімацію, але з позначкою про повторне програвання. Насправді замість GIF-файлу зловмисник, який використовує експлойт, надсилає на пристрій файл PDF, який і намагається рендерити компонент iMessage.

У PDF-файлі знаходиться JBIG2-потік. JBIG2 - це старий стандарт стиснення бінарних зображень, що часто застосовувався раніше в сканерах і факсах. Для ефективного стиснення сканів з втратами він використовує розпізнавання схожих форм. Наприклад, він може знайти одну і ту ж літеру в усьому тексті і замість того, щоб зберігати інформацію про всіх, просто запам'ятати одну і на місцях інших посилатися на неї. У JBIG2 є і можливість стиснення без втрат. При такому режимі в файл записується одне повне зображення символу і не тільки посилання на нього, але й різниця - тобто ті пікселі, які потрібно додати або відняти з цього зразкового зображення. Важлива деталь цього методу полягає в тому, що різниця обчислюється окремими кроками за допомогою логічних операторів НЕ, І, АБО і виключає АБО (XOR).

Розробники з NSO знайшли вразливість, що дозволяє отримати доступ до читання і запису в будь-які ділянки пам'яті, але для нормальної роботи експлойту йому потрібно дізнатися зміщення адрес у пам'яті. І на цьому етапі відбувається те, за що дослідники з Project Zero назвали експлойт «неймовірним» і «одним з найбільш технічно складних» за їх кар'єру: розробникам з NSO вдалося реалізувати за допомогою базових логічних операцій при накладанні різниці в JBIG2-потоці повний по Тьюрингу віртуальний комп'ютер з більш ніж 70 тисяч логічних вентилів. На цьому віртуальному комп'ютері виконується код для пошуку зміщень пам'яті і втечі з пісочниці, який у свою чергу фактично дає зловмиснику повний доступ до пристрою, в тому числі до запуску довільного коду.

Фахівці з Google Project Zero заздалегідь поінформували Apple про свою знахідку, тому компанія виправила описану вразливість 13 вересня в iOS 14.8.

Це не перша велика атака на iOS, яку знайшли дослідники з Project Zero. У 2019 році вони розповіли про виявлення групи сайтів, які встановлювали на смартфони жертв програму, що отримувала root-права і завантажувала конфіденційні дані на сервери зловмисників. Примітно, що невідомі творці сайтів кілька разів модифікували експлойти, тому вони працювали з актуальними версіями iOS протягом більш ніж двох років.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND