Бесплатно Экспресс-аудит сайта:

19.07.2021

Уязвимость в Cloudflare CDN поставила под угрозу взлома почти 13% сайтов в интернете

Компания Cloudflare, предоставляющая в том числе услуги CDN, исправила опасную уязвимость, поставившую под угрозу компрометации около 12,7% всех сайтов в интернете.

Согласно ИБ-исследователю, известному как RyotaK, проблема затрагивает CDNJS – сеть доставки контента, предназначенную для ускорения доставки JavaScript-библиотек, а сама уязвимость заключается в возможности подмены JavaScript-библиотек, отдаваемых сайтами, и выполнения произвольного кода на серверах CDN.

В ходе анализа cdnjs.com исследователь заметил, что пользователи могут запрашивать библиотеки, которых еще нет в CDNJS. Кроме того, выяснилось, что cdnjs/bot-ansible и cdnjs/tools содержат автоматически обновляемые скрипты, обеспечивающие автоматическую загрузку обновлений библиотек.

CDNJS осуществляет загрузку пакетов из Git или репозитория NPM, и позволяет любому сайту бесплатно воспользоваться сетью доставки контента Cloudflare для ускорения загрузки JavaScript-библиотек. При этом, для распаковки NPM-пакетов в архивах tgz применяется модуль archive/tar на языке Go, выдающий список файлов без нормализации путей.

В рамках эксперимента, RyotaK опубликовал тестовую библиотеку под названием hey-sven в CDNJS и добавил новые версии hey-sven в репозиторий NPM. В одну из версий исследователь внедрил скрытые в архивах ZIP/TGZ Bash-скрипты, эксплуатирующие уязвимость обхода каталога (Path Traversal).

Более того, эксперт смог внедрить GITHUB_REPO_API_KEY (ключ API, предоставляющий права записи) и WORKERS_KV_API_TOKEN (может использоваться для модификации библиотек в кеше Cloudflare Workers) в скрипты, выдаваемые CDN (cdnjs.cloudflare.com).

«Сочетая эти разрешения, возможно модифицировать ключевую часть CDNJS, такую как данные о происхождении CDNJS, кеш KV и даже web-сайт CDNJS», - пояснил исследователь.

RyotaK сообщил Cloudflare о проблеме в рамках программы по раскрытию уязвимостей на платформе HackerOne в апреле нынешнего года, и она была исправлена в течение 24 часов.