Безопасны ли плагины WordPress?
Опубликовано: 2020-04-16Многолетние исследования показали, что более 20% из 50 самых популярных плагинов WordPress уязвимы для распространенных веб-атак. Кроме того, целенаправленное исследование плагинов электронной коммерции показало, что 7 из 10 самых популярных плагинов электронной коммерции содержат уязвимости. К сожалению, хакеры обычно используют эти уязвимые приложения для доступа к конфиденциальной информации, такой как медицинские записи и финансовые данные. В других случаях уязвимости позволяют хакерам искажать сайты или перенаправлять их на другие сайты, контролируемые злоумышленниками.

В более поздних случаях мы видели, как вредоносные плагины WordPress использовались не только для обеспечения доступа к скомпрометированным серверам, но и для майнинга криптовалюты. Итак, это ставит вопрос о том, насколько безопасны плагины WordPress.
В этом блоге мы сосредоточимся на плагинах WordPress как на потенциальных источниках нарушений безопасности.
Веб-разработка на основе плагинов.
Вообще говоря, WordPress является самой популярной системой управления контентом (CMS) в мире, так как на ней работает более 30% Интернета.
Тем не менее, основная сила WordPress заключается в его способности настраивать сайты с помощью обширного предложения десятков тысяч плагинов и тем. Эти плагины различаются по типу и функциональности — от добавления контактной формы на сайт до оптимизации блога для SEO или даже автоматической публикации новых сообщений в Facebook.
Сторонняя разработка.
Основная идея разработки на основе плагинов состоит в том, чтобы предложить дополнительные функции для расширения основных возможностей системы. По сути, ядро приложения обычно поддерживается группой долгосрочных разработчиков, в то время как третьи лица создают ряд плагинов вокруг ядра приложения.
Этот процесс полезен как для поставщика приложения, так и для поставщика подключаемого модуля, поскольку поставщик приложения может больше сосредоточиться на основных функциях, в то время как поставщику подключаемого модуля не нужно беспокоиться об инфраструктуре подключаемого модуля, которая предоставляется основной функциональностью приложения. Как правило, WordPress также поддерживается глобальным сообществом тысяч разработчиков и энтузиастов коммерческого программного обеспечения и программного обеспечения с открытым исходным кодом.
Нет правил безопасности
В целом, хотя существует некоторый набор стандартов и рекомендаций по кодированию, технически нет ни руководств по безопасности, ни стандартных требований, которых должен строго придерживаться разработчик плагинов. Это означает, что уязвимость в одном плагине может распространиться на миллионы веб-сайтов.
И поскольку WordPress широко используется, он, следовательно, является популярной целью для атак. Так что, по сути, хакер, использующий уязвимость плагина, может заразить тысячи сайтов. Сценарий, свидетелями которого уже стали многие блоггеры.
К сожалению, уязвимости, связанные с подключаемыми модулями, также имеют тенденцию повторяться, их можно использовать и их трудно обнаружить. Следовательно, необходимо глубже понять такие уязвимости, чтобы смягчить любые соответствующие угрозы безопасности. Давайте копнем глубже, а?

Действительно ли WordPress безопасен?
Прежде всего, давайте ответим на этот вопрос. По большей части WordPress как необработанная экосистема очень безопасна, если соблюдаются передовые методы безопасности WordPress. В среднем каждый день в сети взламывается около 30 000 новых веб-сайтов. Эти хакеры, как правило, нацелены на веб-сайты WordPress из-за уязвимостей плагинов, слабых паролей и устаревшего программного обеспечения. Таким образом, для достижения наилучшей безопасности требуется определенный уровень преднамеренности, что означает соблюдение нескольких основных рекомендаций по безопасности WordPress, чтобы снизить вашу уязвимость для атак.
Подробнее: 11 эффективных способов масштабирования вашего сайта WordPress для высокой посещаемости
Откуда берутся эти уязвимости?
Недавний отчет wpscan.org показал, что WordPress имеет около 4000 известных уязвимостей безопасности. Подавляющее большинство этих уязвимостей было вызвано плагинами. И хотя некоторые из этих связанных с плагинами уязвимостей могут иметь серьезные последствия, многие остаются незамеченными в течение многих лет, прежде чем их исправят. В большинстве случаев их обычно можно исправить небольшими и локализованными изменениями в их исходном коде.
Однако, прежде чем забегать вперед, давайте сделаем шаг назад.
Что такое плагины?
По сути, плагины — это программные расширения, которые дополняют приложения новыми пользовательскими функциями и поведением. В частности, WordPress предлагает тысячи подключаемых модулей (более 52 000), которые использовались для создания тысяч настраиваемых веб-приложений.
Поскольку веб-приложения на основе подключаемых модулей стали более популярными, все больше разработчиков обратили свое внимание на изучение своего потенциала для переосмысления веб-приложений путем создания, настройки и расширения различных подключаемых модулей с передовыми функциями.
Последствия разработки плагинов
При этом возможность использовать плагины для расширения веб-систем дополнительными и настраиваемыми функциями имеет как положительные, так и отрицательные последствия для разработчиков. Во-первых, с положительной точки зрения, обычно существует несколько вариантов настройки, из которых можно выбирать, что дает разработчикам возможность быстро и легко создавать веб-приложения, адаптированные к потребностям пользователей. Таким образом, облегчая быстрое прототипирование и разработку.
Однако с другой стороны, веб-приложение может оказаться сложной композицией нескольких плагинов из разных источников. Что в конечном итоге вызывает опасения, связанные с безопасностью плагинов. Например, TimThumb, плагин, который использовался миллионами приложений на основе WordPress, как сообщается, был открыт для эксплойта, с помощью которого злоумышленники могли преднамеренно выполнять удаленный код.
На самом деле примерно 15% уязвимостей в веб-системах можно считать критическими согласно Национальной базе данных уязвимостей США (NVD), причем почти 35% из них являются легко эксплуатируемыми уязвимостями.
Каковы последствия скомпрометированных плагинов?
Помимо потери финансовой информации пользователями или даже компрометации их медицинских записей, чем серьезнее уязвимость, тем больше финансовые последствия для компаний-разработчиков программного обеспечения. Кроме того, это еще больше усугубляется, если разработчики не выпустят жизнеспособный путь во время раскрытия информации. Таким образом, производители плагинов обычно стремятся создавать более безопасные приложения.
Давайте теперь исследуем некоторые уязвимости безопасности, обычно встречающиеся в подключаемых модулях, чтобы получить более широкое представление об их последствиях и последствиях.
Уязвимости безопасности
Как мы выяснили, уязвимости открывают возможности для потенциального неправомерного использования программных систем. В конечном счете, поскольку WordPress позволяет миллионам разработчиков по всему миру создавать свои собственные плагины, нереалистично ожидать, что плагины не будут подвергаться компрометации.
В результате безопасность может быть нарушена непредвиденным взаимодействием подключаемых модулей с базовой системой, что приводит к уязвимостям, которые потенциально могут быть использованы злоумышленниками. Это означает, что безопасность веб-систем зависит от контроля уязвимостей как основной системы, так и подключаемых модулей.
Сложность WordPress
Из-за сложности WordPress иногда возникают уязвимости. Например, WordPress предоставляет интуитивно понятную инфраструктуру, в которую плагины могут вносить новые функции, изменяя общее глобальное состояние или запуская функцию в определенный момент выполнения ядра системы. Следовательно, уязвимость подключаемого модуля может возникнуть, когда подключаемый модуль отправляет вредоносные входные данные основным компонентам без надлежащей очистки или проверки ввода.
Примеры уязвимостей плагинов
В конечном счете, наиболее распространенными уязвимостями плагинов являются межсайтовые сценарии, SQL-инъекция и подделка межсайтовых запросов. В целом наиболее опасным типом уязвимости, которым могут легко воспользоваться злоумышленники, является SQL-инъекция. Однако существуют и другие уязвимости, источники взлома и компрометации, а именно:
- Ошибки обработки данных
- Неправильная проверка ввода
- Информационное воздействие
- Обход пути
- Функции безопасности
- Контроль доступа
- Неправильный контроль доступа
- Неправильная авторизация
- Неправильная аутентификация
- Подделка межсайтовых запросов
- Неограниченная загрузка файла
- Файлы, доступные внешним сторонам
- Ссылка после
- Открыть перенаправление
- Внедрение команд
- Внедрение команд ОС
- Межсайтовый скриптинг
- SQL-инъекция
- Внедрение кода

Для большего контекста давайте рассмотрим наиболее распространенные атаки и уязвимости.
- · Внедрение SQL : Внедрение SQL обычно происходит, когда злоумышленник получает доступ к базе данных WordPress пользователя и ко всем данным их веб-сайта. SQL-инъекции также можно использовать для вставки новых данных в базу данных, включая ссылки на вредоносные или спам-сайты.
SQL-инъекции позволяют выполнять команды на внутреннем сервере, например извлекать конфиденциальную информацию. В размещенной среде атака путем внедрения SQL-кода может быть использована в качестве трамплина для атак на неуязвимые сайты.
- · Межсайтовый скриптинг: Эта атака позволяет запустить скрипт на клиенте, чтобы обойти контроль доступа. Обычно он нацелен на всех посетителей сайта. В размещенной среде такая атака может использоваться для кражи файлов cookie сеанса администратора сайта, что позволяет злоумышленнику выдавать себя за администратора.
- · Подделка межсайтовых запросов: Эта уязвимость позволяет хакеру выполнять транзакцию на уровне приложения от имени жертвы. В размещенной среде злоумышленник может войти на сайт от имени администратора и выполнять вредоносные действия, такие как перенаправление пользователей или выполнение административных транзакций.
Уязвимости межсайтового скриптинга, распространенные в плагинах WordPress, работают следующим образом: злоумышленник находит способ заставить жертву загружать веб-страницы с небезопасными скриптами JavaScript.

Где появляется больше всего уязвимостей?
Техническое исследование показало, что большинство уязвимостей (около 92%) появляются в коде плагинов. Кроме того, согласно результатам, такие уязвимости, как межсайтовый скриптинг и подделка межсайтовых запросов, чаще встречались в коде плагинов, тогда как другие уязвимости чаще встречались в основном коде. Кроме того, исследование показало, что качество плагинов было разным и что не было корреляции между рейтингом плагинов и количеством найденных в них уязвимостей.

Процесс написания кода PHP
Процесс написания кода может стать источником любой уязвимости или компрометации. Вообще говоря, PHP хорошо известен тем, что поддерживает выполнение произвольного кода на стороне сервера без прямого вызова основной операционной системы. Тем не менее, всякий раз, когда разработчики проявляют небрежность в процессе написания кода, это повышает вероятность появления уязвимостей межсайтового скриптинга в коде плагина.
С другой стороны, SQL-инъекция является распространенной уязвимостью, поскольку ее легко обнаружить и использовать. По иронии судьбы, даже веб-сайт с небольшой пользовательской базой может подвергнуться попытке атаки SQL Injection.
Часть подверженности уязвимостям связана с разработчиками, использующими небезопасные ресурсы. Точно так же правильная проверка ввода по-прежнему является серьезной проблемой для разработчиков плагинов, потому что многие из недавно разработанных плагинов были созданы не очень квалифицированными разработчиками.
Критичны ли уязвимости, вызванные плагинами WordPress?
Все учтено; уязвимость может негативно повлиять на веб-систему несколькими способами. Например, успешная эксплуатация уязвимости может привести к полной потере конфиденциальности, но без потери доступности.
Как уже отмечалось, SQL-инъекция является наиболее опасным типом уязвимости, хотя она лишь частично влияет на целостность, доступность и конфиденциальность системы. Однако такая уязвимость может предоставить злоумышленникам неограниченный доступ к файлам или информации.
Таким образом, непреднамеренно большинство уязвимостей могут привести к утечке данных, в то время как некоторые уязвимости не обязательно подвергают веб-приложение серьезным рискам безопасности. В любом случае важно не рисковать с такими шансами.
Как долго может сохраняться уязвимость в коде плагина WordPress?
Обычно уязвимости в коде имеют тенденцию проходить через различные состояния, варьирующиеся от введения, минуя раскрытие, до выпуска исправления, устраняющего угрозу безопасности.
Как правило, уязвимость раскрывается, когда первооткрыватель раскрывает детали угрозы безопасности для более широкой аудитории. В конечном итоге уязвимость устраняется, когда разработчик выпускает патч, устраняющий основную угрозу безопасности. Однако иногда уязвимость остается незамеченной в веб-приложении в течение многих лет, прежде чем ее обнаруживают и устраняют.
Возможные способы смягчения последствий и методы обнаружения
Профилактика лучше, чем лечение, как говорит большинство людей. Таким образом, если разработчики подключаемых модулей смогут полностью понять, обнаружить и устранить межсайтовые сценарии, SQL-инъекцию и подделку межсайтовых запросов, вполне возможно, что у нас будут подключаемые модули с на 75% меньшим количеством уязвимостей.
Однако стоит отметить, что эти три уязвимости — не единственные уязвимости, которыми могут воспользоваться злоумышленники. А точнее, это самые распространенные уязвимости.
Таким образом, хотя эти предлагаемые стратегии смягчения последствий не гарантируют, что данный плагин будет полностью безопасным, они, тем не менее, устанавливают хорошие принципы предотвращения уязвимостей. Например:
- Поймите, как используются данные и кодировка, ожидаемая основными частями WordPress. В этом случае разработчики должны всегда считать все вводимые данные вредоносными и отклонять любые вводимые данные, которые строго не соответствуют требуемому шаблону кодирования, или преобразовывать их в действительные вводимые данные.
- Чтобы защитить базы данных от SQL-инъекций, разработчики должны использовать параметризованные операторы SQL, отделяя код от манипулирования данными. Кроме того, всегда проверяйте заголовки, чтобы убедиться, что запрос исходит от того же источника. Кроме того, также может быть полезно избегать раскрытия данных злоумышленникам, не прошедшим проверку подлинности.
- Хорошей практикой является избегание метода GET для любого запроса, который вызывает изменение состояния.
Обнаружение уязвимостей
К сожалению, не существует последовательного метода обнаружения наиболее распространенных уязвимостей кода со 100% точностью и охватом. К сожалению, даже современные методы, использующие анализ потока данных для обнаружения межсайтового скриптинга, иногда дают ложные срабатывания.
Напротив, методы ручного анализа, такие как проверка кода, как правило, более эффективны, чем полностью автоматизированные методы, особенно для уязвимостей, связанных с дизайном. Например, межсайтовую подделку запросов особенно сложно надежно обнаружить с помощью автоматизированных методов, поскольку каждое приложение имеет свою собственную политику безопасности и способ указать, какие запросы требуют твердой уверенности в том, что пользователь намеревается сделать запрос.
Однако, с другой стороны, ручной анализ может быть полезен для обнаружения SQL-инъекций, хотя он может не обеспечить желаемого охвата кода за ограниченное время. Это может стать трудным для слабых мест, которые необходимо учитывать для всех входных данных, поскольку поверхность атаки может быть слишком большой.
Следовательно, некоторые организации подчеркивают важность сбалансированного подхода, включающего как ручную проверку, так и автоматический анализ, охватывающий все этапы процесса разработки веб-системы.
Лучшие практики для защиты вашего приложения WordPress
- Загружайте плагины только из авторитетных источников, таких как WordPress.org: поскольку любой может разработать плагин WordPress, хакеры, как известно, используют эту уязвимость, чтобы скрыть свои собственные вредоносные плагины. Магазин с хорошей репутацией может не гарантировать полностью доступ к безвредным плагинам, но рекомендуется в качестве смягчающей меры.
- Всегда следите за тем, чтобы все ваши плагины были обновлены: пользователи WordPress обычно получают уведомления по электронной почте, которые они часто игнорируют. Обязательно настройте свои плагины на автоматическое обновление или, по крайней мере, обновите их вручную.
- Проверьте состояние безопасности подключаемого модуля, просканировав его на наличие проблем с безопасностью. Большинство подключаемых модулей имеют открытый исходный код, что означает, что их исходный код доступен. Поэтому обязательно используйте инструмент статического анализа исходного кода, который предоставит вам «справку о работоспособности» плагина. Некоторые продвинутые сканеры могут даже указать вам оптимальные и самые быстрые рекомендации по устранению неполадок.
- Удалите все неиспользуемые плагины: К сожалению, код старых, неиспользуемых плагинов обычно остается на сервере, даже если плагины неактивны. Поэтому всегда удаляйте неиспользуемые плагины в рамках обслуживания вашего сайта WordPress.
Рекомендации для разработчиков плагинов
- Всегда включайте безопасность во время разработки плагинов: уязвимости влекут за собой более высокие затраты на исправление позже, поэтому всегда интегрируйте безопасность в разработку плагинов как часть процесса безопасного жизненного цикла разработки программного обеспечения (SDLC).
- Запустите плагин через сканер кода, чтобы убедиться, что он соответствует последним стандартам безопасности. Обязательно проведите комплексный анализ исходного кода во время разработки и перед выпуском.
Разработка безопасных плагинов
Как уже отмечалось, разработчики плагинов должны стремиться писать безопасный код. К сожалению, многие разработчики до сих пор не знают, как это сделать, поскольку они не очень квалифицированы. В частности, учитывая характер наиболее распространенных уязвимостей, упомянутых выше, становится ясно, что многие разработчики не понимают распространенных атак, функций безопасности, предоставляемых языком и платформой, которые они используют, и того, как использовать применимые методы для смягчения проблем безопасности.
Следовательно, наша рекомендация в Creole Studios заключается в том, что, возможно, следует разработать новые методологии, адаптированные к разработчикам плагинов. Такие методологии должны обеспечивать безопасность на этапах требований и проектирования, поскольку разработчики являются наиболее важными субъектами в области безопасности программного обеспечения.
Последние мысли
Подводя итог, можно сказать, что плагины WordPress могут быть скомпрометированы, причем наиболее распространенными уязвимостями являются межсайтовый скриптинг, SQL-инъекция и подделка межсайтовых запросов.
К сожалению, исследования показывают, что частота появления этих уязвимостей не снижается со временем. Можно с уверенностью предположить, что основная причина этого заключается в том, что большинство разработчиков плагинов WordPress недостаточно квалифицированы в отношении безопасного программирования.
При этом первой линией защиты должна быть команда разработчиков! И мы считаем, что как только будут реализованы лучшие методы обеспечения безопасности, пользователи смогут лучше спать по ночам, зная, что они защищены от киберпреступников.
Для получения дополнительной информации о наших методах обеспечения безопасности WordPress обязательно обратитесь за консультацией.