Вразливість у чіпах Qualcomm, що дозволяє витягти закриті ключі зі сховища TrustZone

Дослідники з компанії NCC Group розкрили деталі вразливості (CVE-2018-11976) у чіпах Qualcomm, що дозволяє визначити вміст закритих ключів шифрування, розміщених в ізольованому анклаві Qualcomm QSEE (Qualcomm Secure Execution Environment), заснованому на технології ARM TrustZone. Проблема проявляється у більшості SoC Snapdragon, які набули поширення в смартфонах на базі платформи Android. Виправлення, що усувають проблему, вже включені у квітневе оновлення Android та нові випуски прошивок для чіпів Qualcomm. На підготовку виправлення компанії Qualcomm знадобилося більше року – спочатку відомості про вразливість були направлені до Qualcomm ще 19 березня 2018 року.

Нагадаємо, що технологія ARM TrustZone дозволяє створювати апаратно ізольовані захищені оточення, які повністю відокремлені від основної системи та виконуються на окремому віртуальному процесорі з використанням окремої спеціалізованої операційної системи. Основним призначенням TrustZone є забезпечення ізольованого виконання обробників ключів шифрування, біометричної автентифікації, платіжних даних та іншої конфіденційної інформації. Взаємодія з основною ОС здійснюється опосередковано через інтерфейс диспетчеризації. Закриті ключі шифрування розміщуються всередині апаратно ізольованого сховища ключів, що при належній реалізації дозволяє запобігти їх витоку у разі компрометації основної системи.

Вразливість пов'язана з недоопрацюванням у реалізації алгоритму обробки еліптичних кривих, що призводило до витоку інформації про перебіг обробки даних. Дослідники розробили техніку атаки по сторонніх каналах, що дозволяє по наявних непрямих витоках відновити вміст закритих ключів, розміщених в апаратно ізольованому Сховище ключів Android. Витіки визначаються на основі аналізу активності блоку передбачення переходів та зміни часу доступу до даних у пам'яті. У ході експерименту дослідники успішно продемонстрували відновлення 224- та 256-розрядних ключів ECDSA з апаратно ізольованого сховища ключів, що використовується у смартфоні Nexus 5X. Для відновлення ключа знадобилася генерація близько 12 тисяч цифрових підписів, на яку пішло понад 14 годин. Для проведення атаки використовувався інструментарій Cachegrab.

Основною причиною виникнення проблеми є спільне використання загальних апаратних компонентів та кешу для обчислень у TrustZone та в основній системі – ізоляція виконана на рівні логічного поділу, але з використанням загальних обчислювальних блоків та з осіданням слідів обчислень та інформації про адреси переходів у загальному процесорному кеші. За допомогою методу Prime+Probe, що ґрунтується на оцінці зміни часу доступу до прокешованої інформації, можна через перевірку наявності певних шаблонів у кеші з досить високою точністю відстежувати потоки даних та ознаки виконання коду, пов'язаного з обчисленнями цифрових підписів у TrustZone.

Більшість часу формування цифрового підпису з використанням ключів ECDSA в чіпах Qualcomm витрачається виконання операцій множення у циклі з використанням постійного кожному підпису вектора ініціалізації (нунцій). Якщо атакуючий зможе відновити хоча б кілька бітів з інформацією про цей вектор, з'являється можливість атаки по послідовному відновленню всього закритого ключа.

У випадку з Qualcomm виявлено два місця витоку подібної інформації в алгоритмі множення: при виконанні операцій пошуку в таблицях та коді умовного вилучення даних на основі значення останнього біта у векторі «nonce». Незважаючи на наявність у коді Qualcomm заходів щодо протидії витокам відомостей по сторонніх каналах, розроблений метод атаки дозволяє обійти ці заходи та визначити кілька бітів значення «nonce», яких достатньо для відновлення 256-розрядних ключів ECDSA.

Джерело: opennet.ru

Додати коментар або відгук