SIM-карты — один из самых популярных компьютерных стандартов. В данный момент в обращении находится около 7 миллиардов этих карт, практически все они изготовлены двумя компаниями — Gemalto и Oberthur Technologies. Безопасность чипов гарантируется производителями, но эти заявления трудно проверить из-за закрытости платформы, которая представляет собой программируемое Java-окружение.
Немецкий криптолог Карстен Нол (Karsten Nohl) из компании Security Research Labs сообщил о взломе системы шифрования старого формата SIM-карт. По его словам, встроенное программное окружение Java Card неправильно сконфигурировано и генерирует слабые ключи, используя старый шифр Data Encryption Standards (DES), созданный в 70-е годы. Другими словами, система неграмотно спроектирована как на аппаратном, так и на программном уровне.
Карстен Нол подробно расскажет о взломе SIM-карт во время своего доклада на конференции Black Hat. Доклад назначен на 31 июля. Автор говорит, что это первый взлом подобного рода за последние десять лет. Он с коллегами разработал метод получения рутового доступа путем отправки на телефон обычного SMS-сообщения.
Уязвимость уже проверили примерно на 1000 телефонов с разными SIM-картами. Эксплойт срабатывает не везде и проявляется случайным образом. Автор говорит, что в одной партии SIM-карт он может сработать, а в другой — нет. По примерным оценкам, уязвим примерно каждый восьмой телефон.
SIM-карты можно обновлять в дистанционном режиме, посылая на них специальное служебное сообщение по протоколу OTA (over-the-air programming). Пользователь не получает уведомления о приходе такого сообщения, в то время как злоумышленник может сделать с телефоном практически что угодно, в том числе установить дополнительное программное обеспечение или отправить SMS на платные номера.
Карстен Нол изучает протокол OTA с 2011 года, он заметил, что некоторые SIM-карты при получении служебного сообщения рапортуют об ошибке и прилагают к сообщению криптографический ключ, он уникальный у каждой карты. Карстен говорит, что по радужным таблицам расшифровать этот ключ занимает две минуты: как выяснилось, это 56-битный ключ DES. Зная ключ, вы получаете рутовый доступ к телефону и можете отправлять ему команды в дистанционном режиме.
Кроме того, хакер нашел еще одну уязвимость, не связанную с первой, — в реализации механизма песочницы в Java Card. Эта уязвимость присутствует почти во всех SIM-картах и позволяет приложению получить рутовый доступ.