Специалисты компании WordFence опубликовали детальный отчет о проблемах, которым подвержен механизм обновления WordPress.

Исследователи пишут, что основная проблема заключается в том, что api.wordpress.org использует функцию GitHub webhook, что позволяет ключевым разработчикам CMS синхронизировать код в SVN репозитории wordpress.org, а также использовать в качестве репозитория GitHub. По сути, как только на GitHub сделан какой-либо коммит, api.wordpress.org подхватывает это обновление автоматически. URL, посредством которого GitHub связывается с api.wordpress.org, это и есть webhook, написанный на PHP. Код, который используется для работы webhook, опенсорсный и его можно найти в этом репозитории.

Произведя анализ данного кода, специалисты WordFence обнаружили RCE-уязвимость, которая фактически позволяет атакующим получить доступ и выполнить собственный код на api.wordpress.org, скомпрометировав таким образом не только сервер обновлений, но миллионы сайтов по всему миру. Ведь по данным W3techs.com, на базе WordPress работают 27,1% всех сайтов в интернете, а автоматическое получение обновлений включено по умолчанию.

478682793

Проблема в том, что для верификации кода и обновлений разработчики могут использовать алгоритм хеширования по своему выбору. Если атакующие используют крайне слабый алгоритм, как часть процесса верификации, это позволит в течение нескольких часов брутфорсом подобрать общедоступный секретный ключ (shared secret key). При этом число попыток перебора будет небольшим и не привлечет внимания защитных механизмов. Так, использование алгоритма adler32 (proof-of-concept) снизило число возможных хешей с 4,3 миллиардов (2^32) до 100 000-400 000.

«Это уже приемлемое количество попыток перебора, которые нам понадобится направить на webhook, используемый api.wordpress.org. Все может быть сделано за несколько часов. Как только webhook принял наш запрос, на api.wordpress.org  будет выполнена shell-команда, которая даст нам доступ к лежащей в его основе ОС, после чего api.wordpress.org полностью скомпрометирован», — пишет ведущий разработчик WordFence Мэтт Барри (Matt Barry).

Исследователи предупреждают, что распространив вредоносное обновление, злоумышленники могут заставить все пострадавшие сайты отключить автоматические обновления, что дополнительно ухудшит ситуацию.

Аналитики WordFence объясняют, что WordPress не проводит верификацию должным образом, проверяя подписи, вместо этого он доверяет всем URL и пакетам, полученным от api.wordpress.org. И данная проблема волнует не только специалистов WordFence. Ранее на этой неделе исследователь компании Paragon Initiative Enterprises описывал практически аналогичный сценарий атак и пояснял, что верификация загруженных файлов производится только по контрольной сумме MD5, а криптографические подписи не используются.

Стоит отметить, что об этой проблеме писали еще три года назад, еще только пользователи предлагали подписывать обновления, однако их воззвания были проигнорированы.

Специалисты WordFence сообщили о проблеме создателям WordPress, компании Automattic, еще 2 сентября 2016 года. Исправление было выпущено уже 7 сентября, однако оно по-прежнему не решает проблему полностью. Исследователи убеждены, что api.wordpress.org по-прежнему является «слабым звеном» экосистемы WordPress. Ведь именно через механизм обновлений возможно скомпрометировать сразу миллионы сайтов. Хотя впоследствии Мэтт Барри и его коллеги пытались связаться с Automattic для продолжения диалога и хотели убедить разработчиков в необходимости усиления безопасности процесса автоматических обновлений (хотя бы начав использовать подписи), все их запросы так и остались без ответов.



5 комментариев

  1. Int

    23.11.2016 at 19:05

    > Произведя анализа данного кода

  2. P1TH0N

    23.11.2016 at 19:44

    Простите, что не в тему, но прошу помощи. В общем, все знакомы с утилитой Clean Master под андроид. Сегодня баловался с снуффингомм в своей сети и нашел такую строчку —
    GET /cleanmaster/controller/controller.php?phonelanguage=ru_RU&cmlanguage=ru_RU&apkversion=5.8.3.2157&dataversion=2016.11.14.736&sdkversion=4.1.2&device=GT-P3110&networkstate=wifi&channelid=200001&realchannelid=200001&pkg=com.cleanmaster.mguard&resolution=552*1024&mem_size=770&minsdk=14&trdmarket=1&vtype=2&currenttime=1479927936827&recommendedty
    Я понимаю, что там отправляются данные об устройстве, версии программы. Но зачем?

    • Velvi

      24.11.2016 at 17:56

      Возможно,если для улучшения работы программы. Например будут отправлять отчеты о сбоях и т.д.

Оставить мнение