Dmitry Astapov (_adept_) wrote,
Dmitry Astapov
_adept_

Category:

Атака на SIM OTA апдейты

Привет.

Мне тут пишут про то, что Карстен Нол нарыл очередную дыру (и таки да!). Правда, почему-то присылают при этом бестолковые ссылки типа вот этой.

Так вот, бестолковые ссылки читать не надо. Надо читать либо первоисточник, либо журналистов, которые умеют копать и думать самостоятельно.

Краткое изложение для тех, кому лень читать многабукв.Поскольку я ленив, я не стал перечитывать спеку на JavaCard, и буду вам рассказывать по памяти, рассчитывая на то, что если что - меня закидают шапками вежливо поправят знающие товарищи :)

В современных SIM-картах, в какую не плюнь, есть процессор и память, и как не удивительно - обкоцанная среда исполнения Java. Кому хочется пикантных подробностей - ищите в гугле по словам JavaCard или ходите по ссылкам, которые я давал на pro-gsm. При этом помните, что JavaCard - это не только про SIM-ки, а про все SmartCard-ы вообще (например, кредитки или всякие проездные).

А что же исполняется в этом Java runtime-а? А что, что туда положит заказчик SIM-карты, то есть оператор. Это может быть, например, прикольное или дебильное анимированное меню или "каталог сервисов" или еще что-то подобное.

Единственный канал связи с "внешним миром" у этого софта лежит через телефон, то есть данные можно принимать или отправлять по SMS (в обе стороны), USSD (в обе стороны) или через cell broadcast-ы (только принимать). Вплоть до версии 3 в JavaCard Spec не было возможности открывать сокеты (читай - интернета не было), но в версии 3 интернет таки завезли. Как находящиеся в оборте симки разбиваются по версиям JavaCard Spec, которая в них реализована - мне с наскоку найти не удалось.

Почему я заговорил про каналы связи? А потому, что оператору хочется время от времени обновлять этот софт или закидывать ему какие-то данные. Делается это обычно через каналы связи, которые оператор полностью контролирует - через SMS, реже - USSD или cell broadcast. Почему именно SMS? Потому, что USSD должен инициировать сам пользователь (т.е. нельзя сделать push), а cell broadcast - без обратной связи (непонятно, сколько симок реально обновилось).

UPD: Меня поправляют USSD push таки бывает (но, как я понимаю, не везде).

Чтобы обновить софт, или как-то еще порыться в потрохах симки, оператор отправляет специальный подписанный SMS. Этот SMS перехватывается SIM Toolkit-ом, подпись проверяется, содержимое извлекается и с ним что-то делается.

Так вот, Карстен обнаружил, что можно послать кривоподписанный SMS и получить в ответ сообщение об ошибке, в котором будет криптографически подписанная симкой часть. Если для используется DES, то можно взять его и сломать при помощи rainbow tables и получить в результате правильный секретный ключ. А им уже можно подписать правильный вредоносный SMS и наворотить дел.

Очевидно, что этот способ работает при выполнении определенных условий:
* SIM Toolkit принимает служебные сообщения с произвольного номера ИЛИ есть возможность подставить произвольный номер отправителя
* SIM Toolkit отправляет сообщения об ошибке, в которых есть зашифрованная часть
* Для шифрования используется DES (а не AES или что-то другое)

Из доступных материалов пока непонятно, насколько большую статистику собрал Карстен (и собирал ли). Статья в Форбс утверждает (со ссылкой на него), что атаке подвержено "большое количество" карточек, выпускаемых Gemalto и Oberture. Учитывая объемы этих производителей, даже уязвимость 10% от выпушенных карточек может обернуться многозначными цифрами. Операторы и производители карточек говорят, что на самом деле у них все шито-крыто, и масштабы бедствия сильно преувеличены.

Правы, что характерно, могут быть и те и другие.

31 июля Карстен будет выступать на конференции Black Hat, где обещается демонстрация вживую. Интересно, будут ли в выступлении статистика по кол-ву уязвимых карт и ее обоснование.

UPD: Продолжение
Tags: gsm
Subscribe

  • Умница Уилл Хантинг:)

    Недавно один мой коллега Н принес на работу головоломку Bedlam cube. А другой мой коллега Д заинтересовался и стал его складывать. Головоломка,…

  • -Подарим ему футболку? - А зачем, у него ж одна уже есть?

    Я внезапно понял, что сегодня я обязательно должен рассказать вам про Одну Футболку. Когда-то - неважно, когда - я регулярно наведывался в компанию…

  • Скромное очарование SQLite

    СЯУ, что sqlite обладает двумя совершенно очаровательными "фичами": 1)Когда ты бэкапишь базу, "CREATE VIEW" выписываются в порядке, в котором они…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 18 comments

  • Умница Уилл Хантинг:)

    Недавно один мой коллега Н принес на работу головоломку Bedlam cube. А другой мой коллега Д заинтересовался и стал его складывать. Головоломка,…

  • -Подарим ему футболку? - А зачем, у него ж одна уже есть?

    Я внезапно понял, что сегодня я обязательно должен рассказать вам про Одну Футболку. Когда-то - неважно, когда - я регулярно наведывался в компанию…

  • Скромное очарование SQLite

    СЯУ, что sqlite обладает двумя совершенно очаровательными "фичами": 1)Когда ты бэкапишь базу, "CREATE VIEW" выписываются в порядке, в котором они…