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

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

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

Уязвимостта е причинена от грешка в логиката за проверка на PUK кодове в манипулатора на KeyguardSimPukViewController, който отговаря за показването на допълнителен екран за удостоверяване. Android използва няколко вида екрани за удостоверяване (за ПИН, PUK, парола, шаблон, биометрично удостоверяване) и тези екрани се извикват последователно, когато са необходими множество потвърждения, като например когато са необходими както ПИН, така и модел.

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

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

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

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

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

Добавяне на нов коментар