Исследование: Более 8 800 плагинов для WordPress имеют уязвимости

Исследование: Более 8 800 плагинов для WordPress имеют уязвимости

Исследование: Более 8 800 плагинов для WordPress имеют уязвимости

Исследователи из RIPS Technologies, специализирующиеся на безопасности веб-приложений, проанализировали 44 705 из приблизительно 48 000 плагинов в официальном каталоге WordPress. Оказалось, что более чем 8 800 из них затрагивает, по крайней мере, одна уязвимость.

Компания загрузила все плагины и использовала свой статический анализатор кода, чтобы проверить те, у которых есть, по крайней мере, один PHP-файл. Анализ размера этих модулей показал, что примерно 14 000 из них имеют только 2-5 файлов и только в 10 500 из них есть более 500 строк кода.

Проанализировав плагины с более чем 500 строками кода (были классифицированы как «большие плагины»), эксперты пришил к выводу, что 4 559 или 43% из них имеют, по крайней мере, одну брешь средней степени опасности, например, межсайтовый скриптинг.

Также анализ RIPS показал, что в почти 36 тысячах плагинов нет каких-либо уязвимостей, а 1426 имеют бреши только низкого уровня опасности. Дыры средней степени были найдены в более чем 4 600 плагинах, высокой в 2 799, а критические в 41 плагине.

В общей сложности в плагинах было обнаружено 67 486 уязвимостей. Эксперты отметили, что большинство модулей не затрагивают уязвимости из-за их небольшого размера (меньше строк кода).

Что касается типов уязвимостей, то тут процентное соотношение распределилось следующим образом: более 68% XSS-брешей, чуть более 20% SQL-инъекции. XSS-уязвимости могут представлять серьезную опасность в случае с WordPress, но их эксплуатация требует взаимодействия с администратором. SQL-инъекции, с другой стороны, могут быть использованы без взаимодействия с пользователем и атаки могут быть автоматизированы.

В период с января по декабрь 2016 года, приманка компании RIPS обнаружила более 200 атак на плагины WordPress. 69 атаки были нацелены на Revolution Slider, 46 на Beauty & Clean Theme, 41 на MiwoFTP и 33 на Simple Backup. Эти атаки экслуатировали давно известные и хорошо задокументированные уязвимости.

Расширения Chrome могут слить секреты URL через атаку по стороннему каналу

Как оказалось, расширения Chrome можно использовать для слива кодов авторизации, сеансовых ID и других секретов из URL любой открытой вкладки. Никаких специальных разрешений для этого не понадобится, только доступ к declarativeNetRequest API.

Этот механизм, пришедший на смену webRequest API, позволяет расширениям сообщать браузеру, что следует изменить или заблокировать на загружаемой странице (заголовки, реклама, трекеры).

Правила обработки запросов при этом добавляются динамически, а фильтрация осуществляется по регулярным выражениям, соответствующим подмножествам знаков, которые могут присутствовать на определенных позициях в URL.

Исследователь Луан Эррера (Luan Herrera) обнаружил, что блокировку, диктуемую правилами, Chrome производит почти мгновенно, за 10-30 мс, а остальные запросы выполняются дольше (~50-100ms) — из-за сетевых подключений. Эту разницу во времени расширение может использовать для бинарного поиска с целью посимвольного слива URL.

// extensions/browser/api/web_request/extension_web_request_event_router.cc:1117-1127
case DNRRequestAction::Type::BLOCK:
  ClearPendingCallbacks(browser_context, *request);
  DCHECK_EQ(1u, actions.size());
  OnDNRActionMatched(browser_context, *request, action);
  return net::ERR_BLOCKED_BY_CLIENT;

Оракул для подобной тайминг-атаки строится с использованием chrome.tabs.reload для перезагрузки страницы и перехватчика chrome.tabs.onUpdated, помогающего отследить событие status === "complete". Замер времени между reload и завершением загрузки покажет, заблокирован запрос или успешно обработан.

Повторение проверок и бинарного поиска позволяет получить полный URL (с довеском после «?»), затратив на каждый знак строки несколько прогонов. Таким образом, можно незаметно для пользователя украсть включенные приложением в адрес секреты — токены OAuth и сброса пароля, API-ключи, ссылки на контент, закрытый для поисковых систем.

Проверка PoC проводилась на Windows 11 24H2 с использованием Chrome разных версий:

  • 144.0.7559.97 (Stable)
  • 145.0.7632.18 (Beta)
  • 146.0.7647.4 (Dev)
  • 146.0.7653.0 (Canary)

В Google подтвердили возможность подобной атаки по стороннему каналу, но заявили, что решить проблему нереально.

RSS: Новости на портале Anti-Malware.ru