Хакер #305. Многошаговые SQL-инъекции
В конце июня 2020 года мы рассказывали о том, что в работе Blu-ray плееров и домашних кинотеатров компании Samsung возникли серьезные проблемы.
В зависимости от модели устройства эти сбои выглядели по-разному, но чаще всего проблема заключалась в том, что гаджеты уходят бесконечную перезагрузку сразу после включения. Некоторые пользователи писали и о других появлениях, например, устройство могло издавать странные звуки и постоянно пыталось прочитать диск, даже если никого диска в приводе нет; устройства могли выключаться через несколько секунд после включения; в других случаях плееры переставали реагировать на какие-либо команды и нажатия кнопок.
Тогда некоторые пользователи и исследователи предполагали, что проблема могла быть вызвана неудачным обновлением прошивки или устаревшим сертификатом SSL, но точная причина происходящего была неизвестна. Представители Samsung в итоге советовали клиентам возвращать неработающие устройства в сервисные центры для ремонта, так как софтверный патч не решил бы возникшую проблему.
Теперь издание The Register сообщает, что спустя месяц причину загадочных сбоев все же установили. Корнем проблемы оказался файл XML, который подключенные к сети устройства Samsung время от времени загружали с серверов компании.
Когда данный файл сохранялся во флеш-памяти устройства и обрабатывался, он вызывал сбой в работе девайса и принудительную перезагрузку. После перезагрузки плеер вновь анализировал тот же файл XML, снова возникал сбой, и устройство опять перезагружалось. При этом анализ «плохого» файла XML производился до загрузки новой версии из интернета, из-за чего многие плееры Samsung намертво застряли в петле бесконечных ребутов.
Независимый ИБ-специалист и читатель The Register, известный под ником Gray, помог журналистам издания разобраться в проблеме. Он объясняет, что Blu-ray плееры компании регистрировали свои действия и регулярно отправляли копии этих логов с телеметрией на серверы Samsung (во время проверок обновлений ПО). В таких логах, например, хранилась информация о том, когда пользователь запускал приложение Netflix и когда его закрывал.
Что именно устройство должно регистрировать и отправлять на серверы производителя, было определено в специальном XML-файле политики ведения журналов, который регулярно загружался с адреса https://configprd.samsungcloudsolution[.]net/openapi/dict/logpolicyconfig.
Gray рассказывает, что плееры не передавали свои логи на серверы компании до тех пор, пока пользователь не принимал уведомление о конфиденциальности данных. Это уведомление появлялось, когда клиент подключал свое устройство к интернету и пытался использовать сетевые сервисы (к примеру, Netflix). После того как пользователь выражал свое согласие, Blu-ray плееры более ни о чем не спрашивали и начинали отправлять телеметрию на серверы Samsung во время проверки обновлений.
Проблема заключалась в том, что даже если владелец устройства не использовал сервисы вроде Netflix, не соглашался с уведомлением о конфиденциальности, не загружал обновления ПО, но просто подключал свой плеер к интернету, тот все равно регулярно скачивал с серверов производителя файл политики ведения журналов, связанных с телеметрией, и автоматически его анализировал. Именно поэтому от сбоя пострадали даже те устройства, которые не получали никаких обновлений и не использовали сетевые сервисы.
«Плееры превратились в “кирпичи”, хотя пользователи никогда не пытались обновить их удаленно. Было достаточно того, что плеер в принципе подключен к интернету. Samsung никогда не спрашивала своих пользователей, можно ли загрузить бомбу», — пишет исследователь.
Баг в XML-файле появился 18 июня 2020 года. В тот день файл не был отформатирован должным образом и содержал пустой элемент list, как видно на скриншоте ниже. Пустой список создавал недопустимую ссылку на ячейку памяти в основной программе устройства, bdpprog, что вынуждало ядро экстренно завершить работу, и приводило к перезагрузке. Как уже было сказано выше, после перезагрузки плеера проблемный файл XML обрабатывался снова, и все повторялось.
Gray пишет, что способа разорвать этот «порочный круг» штатным средствами, похоже, не существует. Единственный способ справиться с проблемой: удалить проблемный файл XML из флэш-памяти устройства или обновить прошивку плеера до версии, в которой исправлена ошибка парсинга XML. Но, к сожалению, на данный момент такой обновленной прошивки попросту не существует.
«К сожалению, оба эти способа требуют низкоуровневого доступа к последовательному порту отладки плеера, пайки на материнской плате, проприетарного аппаратного и программного обеспечения, а также глубоких знаний архитектуры устройства. Такое не под силу обычному пользователю. Следовательно, лучшее решение, которое Samsung может и предлагает своим клиентам: отправка плеера в авторизованный сервисный центр», — резюмирует специалист.
Журналисты отмечают, что 27 июня текущего года инженеры Samsung заменили проблемный файл на своем сервер, то есть количество пострадавших более не будет возрастать. Однако исправление файла никак не поможет уже «окирпиченным» устройствам.