Помимо традиционных уязвимостей, вроде вшитого пароля для SSH, отсутствующей или легко взламываемой защиты коммуникаций по проприетарному сетевому протоколу, в устройстве ZKTeco была обнаружена возможность проведения атаки с помощью «вредоносного» QR-кода. Отсутствие необходимых проверок вводимых пользователем данных либо приводит к аварийной перезагрузке биометрического терминала, либо, что гораздо интереснее, позволяет провести SQL-инъекцию и таким образом обойти систему аутентификации. Подробные технические описания каждой уязвимости
Исследуемый терминал ZKTeco выглядит так:
А вот так выглядит «взлом» этого терминала с помощью подготовленного QR-кода:
В QR-код закодирован запрос к базе данных. Из-за того что проверка пользовательского ввода практически отсутствует, этот запрос успешно выполняется. Это приводит к тому, что терминал без проблем «открывает» доступ. Дальнейший анализ прошивки показал, что у данного метода атаки есть одно небольшое ограничение: размер обрабатываемых данных ограничен 20 байтами:
Это не позволяет проводить сложные SQL-инъекции, но в любом случае имеется возможность полностью обойти систему защиты, для которой терминал, собственно, и предназначен. Более того, если «показать» устройству QR-код c большим объемом закодированных данных (1 килобайт или больше), он будет считан, но приведет к зависанию обработчика. Отсутствие ответа данной функции расценивается как аварийная ситуация, что приводит к принудительной перезагрузке устройства. Помимо этой успешно найденной уязвимости, в исследовании показаны и тупиковые направления поиска. Например, подключение к выводам последовательного интерфейса на плате хоть и позволило считать лог загрузки, но не помогло в поиске уязвимостей. Анализ сетевых интерфейсов выявил возможность общения с устройством по протоколу SSH на нестандартном порту, а также проприетарный сетевой протокол на порту TCP 4370. Эта информация пригодилась в дальнейшем, после анализа прошивки устройства.
В сети удалось найти обновление прошивки для одного из вариантов данного терминала. Ее анализ показал, что апдейт зашифрован, точнее — легко обфусцирован при помощи функции XOR, где ключом являются последние 16 байт файла обновления и его размер. После расшифровки выяснилось, что апдейт не содержит в себе полную прошивку устройства, вместо этого обновляются отдельные файлы. Полную прошивку, тем не менее, удалось вытащить из микросхемы флеш-памяти самого терминала. И вот уже анализ прошивки выявил целый набор уязвимостей. Во-первых, пароль для подключения по интерфейсу SSH оказался фиксированным. Хотя это не дает максимальные привилегии на устройстве, логин по SSH открыл доступ к чувствительным данным. Для авторизации по проприетарному протоколу (доступному на порту 4370) используется отдельный пароль, но по умолчанию он даже не задан. Даже если оператор устройства сменил этот пароль, он представляет собой целое число от 0 до 999999, и его легко подобрать либо считать, залогинившись по SSH.
Дальнейший анализ команд, доступных по проприетарному сетевому интерфейсу, выявил еще ряд уязвимостей. В частности, команда CMD_DELETE_PICTURE предполагает передачу на устройство имени файла, который требуется удалить. Корректность этих данных также не проверяется, а выполняется команда с системными привилегиями. В результате это позволяет получить полный контроль над устройством:
Там же было обнаружено несколько уязвимостей, приводящих к переполнению буфера и в дальнейшем к выполнению произвольного кода, а также еще один набор потенциально уязвимых мест для SQL-инъекции. Наконец, исследователи смоделировали ситуацию, когда устройство подключается к вредоносному управляющему серверу, что делает возможным ряд сценариев по перехвату управления.
Большинство обнаруженных уязвимостей требуют проникновения в (предположительно) защищенную локальную сеть, к которой подключено устройство. Естественно, кроме атаки по QR-коду. Анализ уязвимостей в прошивке устройства теоретически позволит обойти систему контроля доступа, где установлен подобный терминал. Общий итог проведенной работы следующий: 6 SQL-инъекций, 7 переполнений буфера на стеке, 5 инъекций команд, 4 сценария записи произвольных файлов, 2 варианта чтения произвольных файлов.
Что еще произошло
Еще одно
Microsoft
Интересная
Критическая уязвимость
В свежем наборе патчей от Microsoft
Издание 404media