Итальянский ИБ-специалист и CTO компании Remoria VR Маттео Писани (Matteo Pisani) придумал, как открыть для себя бесконечный кредит в торговых автоматах компании Argenta. Такие автоматы весьма широко распространены в Италии и используются для продажи самых разных вещей, от напитков до сигарет. Они поддерживают Bluetooth Low Energy (BLE) и Near Field Communication (NFC), то есть позволяют покупателям расплачиваться при помощи смартфонов.
Писани решил повнимательнее изучить мобильное приложение Argenta, декомпилировал его, перепаковал и установил на свой смартфон, чтобы понаблюдать за его активностью. Вскоре он обнаружил признаки работы RushOrm, Android-инструмента, который используется для мапинга классов Java в SQL-таблицах. Таким образом специалист сумел понять, что приложение использует базу данных argenta.db, которая тут же перекочевала на ноутбук Писани.
Хотя БД и была защищена паролем, исследователь нашел файл конфигурации RushOrm и выяснил, что для ее защиты используется лишь IMEI устройства. Так Писани удалось «вскрыть» базу данных и обнаружить в ней интересную таблицу UserWallets («кошельки пользователя»), содержащую доступное для редактирования поле walletCredit («кредит кошелька»).
Как нетрудно догадаться по названию, это значение действительно отвечало за кредит, который могут предоставить пользователю автоматы Argenta. В итоге специалист написал простой Android-инструмент, автоматически взаимодействующий с БД и изменяющий параметры, связанные с кошельком. Писани отмечает, что изначальная сумма кредита могла равняться нулю, это никак не мешало изменению параметров. К примеру, на фото ниже исследователь предоставил себе кредит в размере 999 евро.
Писани пишет, что в результате этих изысканий ему удалось обнаружить огромное количество «чистого» кода, без какой-либо обфускации, то есть защита данных пользователей приложения и его защита от реверс-инжиниринга определенно оставляют желать лучшего. Видео, которое Писани разместил на YouTube в категории «Юмор», демонстрирует атаку на торговый автомат на практике.
Месяц назад Писани уже сообщил о проблеме разработчикам Argenta, но он признается, что порекомендовал им не просто устранить баги, но полностью отказаться от текущей архитектуры и разработать с нуля более надежное и безопасное решение.