Уязвимост в Android, позволяваща заобикаляне на заключването на екрана

В платформата Android е установена уязвимост (CVE-2022-20465), която позволява деактивиране на блокировката на екрана чрез подмяна на SIM картата и въвеждане на PUK код. Демонстрирано е, че възможността за деактивиране на блокировката е налична на устройства Google Pixel, но тъй като корекциите засягат основната кодова база на Android, вероятно проблемът засяга и фърмуерите от други производители. Проблемът е отстранен в ноемврийския пакет с корекции за сигурността на Android. Изследователят, привлечен от проблема, е получил награда в размер на 70 хиляди долара от компанията Google.

Проблемът е причинен от неправилна обработка на отключването след въвеждане на PUK код (Личен ключ за отключване), който се използва за възстановяване на работата на SIM картата, блокирана след многократно неправилно въвеждане на PIN код. За да деактивирате блокировката на екрана, е достатъчно да поставите SIM картата си в телефона, върху която е активирана защита на базата на PIN код. След смяна на SIM картата, защитена с PIN код, на екрана първоначално се показва запитване за PIN код. Ако три пъти се въведе неправилен PIN код, SIM картата ще бъде блокирана, след което ще бъде предоставена възможност да се въведе PUK код за отключване. Оказва се, че правилният вход на PUK кода не само отключва SIM картата, но също така води до преминаване в основния интерфейс, заобикаляйки екрана за заключване, без да се изисква потвърждение с основната парола или графичния ключ.

Пуснете видеото

Уязвимостта е причинена от грешка в логиката на проверката на PUK кодове в обработчика KeyguardSimPukViewController, който отговаря за показването на допълнителен екран за автентикация. В Android се използват няколко типа екрани за автентикация (за PIN, PUK, парола, графичен ключ, биометрична автентикация) и тези екрани се извикват последователно, когато е необходимо извършването на няколко проверки, например, когато се изискват PIN и графичен ключ.

При правилно въвеждане на ПИН кода, активирана е втората фаза на проверката, която изисква въвеждане на основния код за отключване, но при въвеждане на PUK кода, такава фаза се пропуска и достъпът се предоставя без искане на основната парола или графичния ключ. Пропускането на следващия етап на отключване се извършва, тъй като при извикване на KeyguardSecurityContainerController#dismiss() не се извършва сравнение на очаквания и преминалия метод на проверка, т.е. обработчикът счита, че промяна в метода на проверка не е настъпила и завършването на проверката на PUK кода свидетелства за успешно потвърждение на пълномощията.

Уязвимостта беше открита случайно — на потребителя му се изтощи телефонът и след зареждане и включване, той няколко пъти сгреши при въвеждане на ПИН кода, след което отключи с PUK кода и се учуди, че системата не изиски основната парола, използвана за разшифроване на данни, а след това зависна с съобщение „Pixel is starting…“. Потребителят се оказа педантичен, реши да разбере в какво е проблемът и започна да експериментира с въвеждането на ПИН и PUK кодовете, докато случайно не забрави да рестартира устройството след смяна на SIM картата и не получи вместо зависване достъп до околната среда.

Особен интерес представлява реакцията на Google на съобщението за уязвимостта. Информацията за проблема беше изпратена през юни, но до септември изследователят не успя да получи задоволителен отговор. Той сметна, че подобно поведение се дължи на факта, че не е първият, който съобщава за тази грешка. Съмненията, че нещо не е наред, възникнаха през септември, когато проблемът остана неотстранен след инсталиране на обновление на фърмуера, пуснато 90 дни след това, когато вече беше изтекъл обявеният период за неразгласяване.

Тъй като всички опити да се разбере състоянието на изпратеното съобщение за проблема водеха единствено до автоматизирани и шаблонни отговори, изследователят опита да се свърже лично с работниците на Google, за да изясни ситуацията с подготовката на корекция, и дори демонстрира уязвимост в лондонския офис на Google. Само след това работата по премахването на уязвимостта се придвижи напред. При разглеждането се оказа, че някой вече е съобщавал за проблема, но Google реши да направи изключение и да изплати възнаграждение за повторното съобщение за проблема, тъй като само благодарение на настойчивостта на автора на проблема вниманието беше насочено към него.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster