Автор статьи наткнулся на раздражающее окно консоли на новом игровом ПК и выяснил, что его вызывает AMD AutoUpdate. Решил наказать софт и декомпилировал его, а заодно случайно нашёл тривиальную RCE-уязвимость.
Выяснилось, что URL для обновлений лежит прямо в app.config программы. Странно, что в production используется «Develpment»-ссылка, но она через HTTPS, так что вроде безопасно. Проблема в другом: если открыть этот XML в браузере, все ссылки на сами исполняемые файлы идут по HTTP. Любой злоумышленник в сети (или провайдер) может устроить MITM-атаку и подсунуть любой вредоносный exe. Автор надеялся, что есть проверка подписи, но декомпилированный код показал — никакой валидации нет, скачанный файл запускается сразу.
Он сообщил об этом в bug bounty AMD. Но там ответили: MITM-атаки не входят в scope программы, и закрыли отчёт. После того как история попала на Hacker News, AMD PSIRT (внутренняя команда безопасности) сама вышла на автора, попросила удалить пост до патча и сообщила, что выдадут CVE, но денег не заплатят — уязвимость касается опционального инструмента и требует MITM.
Автор согласился, но потом пожалел. AMD запросила «больше времени» сверх стандартных 90 дней, мотивируя это тем, что проблема затрагивает несколько продуктов. Хотя, по мнению автора, фикс — просто добавить букву s в http на https в XML-файле. В итоге он ждал 124 дня с момента первого отчёта.
Самый смешной момент: в процессе выяснилось, что автопатчер AMD сломан по другой причине. Раньше пакеты хостились на ati.com, потом перенесли на drivers.amd.com, но XML-ссылку не обновили. Браузер делает редирект, а AutoUpdater не умеет его обрабатывать — виснет или падает. Так что уязвимость фактически неэксплуатируема: программа до этого участка кода просто не доходит. Классическая ситуация «Catch-22»: чтобы починить автопатчер, нужно обновить его, но он не обновляется из-за бага с редиректом.
Финальный патч от AMD для Ryzen Master: убрали автообновление из установщика, перенесли в приложение, перевели все коммуникации на HTTPS и добавили, как они утверждают, проверку подписи. Автор проверил: подписи нет, стоит лишь CRC-32 — он не криптографически безопасен. Всем пользователям автор советует полностью снести софт AMD и скачать свежие версии вручную с сайта.