Xakep #305. Многошаговые SQL-инъекции
KiwiSDR представляет собой software-defined radio (SDR), которое можно подключить, например, к одноплатному компьютеру Seeed BeagleBone Green (BBG), Raspberry Pi и так далее. KiwiSDR поставляется либо в виде отдельной платы, либо сразу с BBG, GPS-антенной и корпусом.
На этой неделе пользователи обнаружили, что в одном из последних обновлений разработчик удалил из кода бэкдор, который позволял подключаться к девайсам с root-правами. После этого удаленный администратор мог вносить изменения в конфигурацию, и, что гораздо хуже, получить доступ не только к самому KiwiSDR, но и к Raspberry Pi, BBG или другому устройству, к которому SDR подключен.
По словам самого автора, бэкдор в KiwiSDR был нужен только для удаленного администрирования и отладки. На днях разработчик опубликовал «исправление ошибки» на GitHub проекта, тихо удалив бэкдор, что вызвало негативную реакцию со стороны сообщества. Более того, после этого все оригинальные сообщения и комментарии автора, в которых хотя бы мельком упоминался бэкдор, были удалены.
Первым эту проблему заметил Марк Джессоп, инженер и радиооператор. Он наткнулся на интересное свежее сообщение на форуме, в котором автор проекта KiwiSDR признавался, что имеет удаленный доступ ко всем устройствам.
Interesting post on the KiwiSDR forums. Seems to imply the KiwiSDR author has remote access to all KiwiSDRs? Post has since been modified to remove the last paragraph and the thread locked :-/ https://t.co/cAi5dS7J49 pic.twitter.com/elqSsaUJ65
— Mark Jessop (@vk5qi) July 14, 2021
Хуже того, Джессоп обратил внимание, что бэкдор использует HTTP-соединение, открывая пароль (в виде простого текста) и данные любому, кто сможет отслеживать входящий или исходящий трафик устройства.
После этого другой пользователь откопал на форуме еще более старую ветку (2017 года), в которой разработчик KiwiSDR писал, что бэкдор в коде действительно дает ему удаленный доступ ко всем устройствам. Интересно, что теперь форум на сайте KiwiSDR и вовсе стал недоступен.
Not cool.https://t.co/pA2ZbGuMIA pic.twitter.com/cgbTWeYIzI
— M. (@TVqQAAMAAAAEAAA) July 14, 2021
Как отмечает ИБ-исследователь, известный под псевдонимом Hacker Fantastic, в настоящее время в сети доступны около 600 KiwiSDR с бэкдором. Дело в том, что такие устройства, как правило, обновляются редко, если обновляются вообще. То есть, несмотря на удаление бэкдора из кода, многие KiwiSDR так и останутся уязвимы.
Insane, some 600+ of these listed as publicly accessible right now and many may contain a straight-up remote backdoor put there by the author. https://t.co/Dyp2npfEma
— Hacker Fantastic (@hackerfantastic) July 14, 2021
Хотя в основном эти устройства работают как радиоприемники, любому удаленному атакующему, который воспользуется бэкдором, будет предоставлен root-доступ на уровне консоли. То есть потенциальный злоумышленник может захватить контроль над девайсом, а затем попробовать двинуться дальше, расширив атаку на устройства, к которым подключен KiwiSDR.
Сам бэкдор весьма прост: несколько строк кода позволяют разработчику (или кому-то другому) получить удаленный доступ к любому KiwiSDR, введя его URL-адрес в браузере и добавив пароль в конце. К примеру, ниже можно увидеть, как пользователь Twitter под ником xssfox использует бэкдор для root-доступа к своему BeagleBone. Делается это с помощью простого запроса HTTP GET: http://radio-device-domain.example.com:8074/admin?su= kconbyp
Quick video showing how the backdoor on the kiwisdr works.
— xssfox (@xssfox) July 15, 2021
I've also tested that touch /root/kiwi.config/opt.no_console mitigates the issue
Thanks @the6p4c for helping me test 🙂 pic.twitter.com/0xKD1NfvwL
Интересно, что пароль kconbyp, использованный выше, является старым, его хэш SHA256 раньше присутствовал на устройствах KiwiSDR. Более новый хэш отличается, то есть пароль «kconbyp» не будет работать на более поздних версиях KiwiSDR, там используется новый мастер-пароль.
При этом Джессоп пишет, что бэкдор, скорее всего, действительно создавался с добрыми намерениями, а разработчик KiwiSDR всегда был очень отзывчивым, быстро исправлял ошибки и охотно добавлял новые функции.
Пока не найдено никаких признаков того, что бэкдором вообще злоупотребляли, однако использование HTTP-соединения вызывает вполне понятные опасения. К тому же многие пользователи считают любые бэкдоры недопустимыми, и неважно, используют они HTTPS или нет.
Пользователи, которые захотят проверить, осуществлялся ли к их устройствам удаленный доступ, могут воспользоваться для этого командой zgrep -- "PWD admin" /var/log/messages*. Чтобы избавиться от бкэдора, потребуется выполнить обновление до версии 1.461.