Всему виной популярный плагин, расширяющий встроенный функционал.
LearnPress — это подключаемый модуль системы управления обучением (LMS), который позволяет веб-сайтам на WordPress легко создавать онлайн-курсы, уроки, викторины и тесты. Он предоставляет посетителям веб-сайта удобный интерфейс и не требует знаний программирования от разработчика.
Уязвимости в плагине, используемом на более чем 100 000 активных сайтов, были обнаружены специалистами PatchStack в период с 30 ноября по 2 декабря 2022 года и доведены до сведения поставщика программного обеспечения.
Проблемы были устранены 20 декабря 2022 г. с выпуском LearnPress версии 4.2.0. Однако, согласно статистике WordPress.org, только 25% пользователей обновили плагин до последней версии. Это означает, что примерно 75 000 веб-сайтов до сих пор используют уязвимую версию LearnPress и подвержены атакам злоумышленников.
Активные версии LearnPress
Первой уязвимостью, обнаруженной PatchStack, стала CVE-2022-47615 — уязвимость включения локальных файлов без проверки подлинности (LFI), которая позволяет хакерам отображать содержимое локальных файлов, хранящихся на веб-сервере. Это может привести к раскрытию учетных данных, токенов авторизации и ключей API, что приведет к дальнейшей компрометации.
Уязвимость обнаружена в фрагменте кода, обрабатывающем запросы API для веб-сайта, расположенном в функции list_courses, которая не проверяет должным образом определенные переменные ($template_pagination_path, $template_path и $template_path_item).
Вторая критический уязвимость, CVE-2022-45808 — неаутентифицированная SQL-инъекция, которая может привести к раскрытию конфиденциальной информации, изменению данных и выполнению произвольного кода.
Эта уязвимость заключается в обработке SQL-запросов для веб-сайта, которая неправильно очищает и проверяет переменную «$filter» в параметрах запроса, что позволяет злоумышленнику вставить в нее вредоносный код.
Пример SQL-инъекции
Третьей уязвимостью, затрагивающей более старые версии LearnPress, является CVE-2022-45820 — ошибка внедрения SQL-кода с проверкой подлинности в двух шорткодах плагина («learn_press_recent_courses» и «learn_press_featured_courses»), не позволяющая должным образом проверить и очистить ввод переменной «$ args».
Представители PatchStack уже предоставили PoC-эксплойт, демонстрирующий, как пользователь «Contributor» может инициировать SQL-инъекцию, используя специально созданный шорткод в черновике публикации. Реализовать уязвимость могут только пользователи с возможностью редактировать или создавать новую запись в блоге, что ограничивает риск её применения.
Разработчики LearnPress в последнем обновлении внедрили белый список и очистили уязвимые переменные, убрав возможность включать шаблоны в пользовательский ввод. Владельцам веб-сайтов, использующим LearnPress, рекомендуется либо обновиться до версии 4.2.0, либо временно отключить плагин, пока они не смогут применить доступное обновление для системы безопасности.
Гравитация научных фактов сильнее, чем вы думаете