Един API ключ на Cloudflare компрометира 100 000 уебсайта

Един откраднат API ключ на Cloudflare превърна инфраструктурата на маркетинговата платформа Brevo в разпространител на злонамерен код за около 100 000 външни уебсайта. Нападателите са получили дългосрочен API ключ на Cloudflare с пълни права, който Brevo е съхранявала директно в изходния код на приложението. Достъпът е позволявал създаването на Cloudflare Workers, промяната на маршрути и DNS записи във всички зони на компанията. На 14 септември нападателите са разгърнли собствен Worker, а след това са го свързали със сайтовете и клиентските компоненти на Brevo.

Основната особеност на атаката се крие на нивото на CDN. Worker е пренаписвал отговорите, след като те вече са напуснали сървърите на Brevo и е премахвал защитните Content-Security-Policy заглавия. По този начин изходните страници и JavaScript файловете са оставали непроменени, поради което стандартните проверки за целостта не са засичали подмяната. На посетителите на уебсайтовете се е показвало избирателно фалшива проверка на Cloudflare с опасната техника ClickFix, за която можете да прочетете повече тук.

Фалшивата страница изисква от потребителите да приложат клавишната комбинация Win+R, за да се вмъкне съдържанието на клипборда и да се изпълни злонаремена команда. След натискане на Enter компютърът изтегля злонамерен софтуер. На сайтовете, базирани на WordPress сценарият е още по-опасен: ако страницата се отваря от оторизиран администратор, скриптът се опитва незабележимо да инсталира злонамерен плъгин.

Един API ключ на Cloudflare компрометира 100 000 уебсайтаClickFix

Плъгинът се маскира като Web Media Optimizer, изчезва от обичайния списък с разширения и се копира в директорията с задължителните плъгини, за да се закрепи там. Модулът периодично получава нов JavaScript код от управляващия сървър, а вграденият ключ позволява да се създаде валидна администраторска сесия без да е необходима парола. Подобна атака срещу WordPress през юни се разпространи чрез доверена инфраструктура едновременно на 1,2 млн. ресурса.

След като откриха проникването, Brevo премахна Worker и домейните, създадени от хакера, отмени ключа и свързаните с него идентификационни данни, изчисти кеша на CDN и премахна тайния ключ от изходния код. Компанията възнамерява да съхранява ключовете на Cloudflare в HashiCorp Vault, да ги сменя автоматично и да проследява операциите с Workers, DNS и правата за достъп. Официалният анализ на инцидента препоръчва на администраторите на WordPress, които са влизали в сайтовете си на 14 септември да проверят инсталираните на този ден плъгини и да сменят паролите си.

Допълнителен анализ на плъгина показа, че зловредният код е запазил резервен JavaScript адрес в случай на изключване на управляващия сървър. На потребителите, които са изпълнили команда от фалшива проверка на Cloudflare се препоръчва да считат компютъра си за компрометиран, да го изключат от мрежата, да извършат пълна проверка и да сменят паролите, използвани на устройството.