[Безопасность] WordPress 2.5 — Уязвимость “Секретного ключа”

Звиняйте, пишу редко, ибо с головой ушёл в офф-лайн: йога, диплом, работа.

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

И так, начнём с простого вопроса — многие ли из вас, читатели, знают, что такое SECRET_KEY в новой версии движка?

Небольшой экскурс в кодекс или читайте мою интерпретацию)

В общем, многие знают, ну или подозревают, что до того, как попасть в базу данных пароль, вводимый пользователем, подвергается md5-преобразованию. Это делается для того, чтобы даже если злоумышленник получит список паролей, реальных паролей на руках у него не было. Проблема в том, что обычно пользователи указывают простые пароли вроде qwerty и прочих pass12345 у которых ВСЕГДА один и тот же md5-хэш. И введя в тот же гугл полученную из БД строку «зашифрованного» пароля, мы получим на выходе оригинал пароля. Так же существуют онлайн сервисы и оффлайн утилиты, которые просто генерят словари всех возможных слов с их md5-строками (получается некий брут-форс).

Что предприняли ушлые разработчики вордпресс в новом релизе?
Стоит отметить, что идея стара как мир, но ввели сей алгоритм в движок только сейчас.

Они решили добавить некий случайный элемент в генерацию хэша, который бы не позволил «угадывать» пароль по его md5, не зная этого элемента. Как вы поняли речь тут и идёт о SECRET_KEY, только проблема, на текущий момент такова, что о его существовании знают почти что только избранные (теперь и вы себя к ним можете причислить)).

WordPress 2.5 не предлагает сменить этот ключ при установке и использует всё время прописанный в wp-config.php по-умолчанию:
define(‘SECRET_KEY’, ‘put your unique phrase here’);
Так как 90% пользователей вордпресс создают wp-config.php через меню браузера, прописывая нужные параметры при установке, то получаем у 90% блогов один и тот же «случайный элемент».

Тов. J. Carlos Nieto, поднатужившись, написал огромное изыскание, где можно даже найти код программы для перебора паролей и местами это вообще похоже на hack-manual ]:->

Так что, уважаемые читатели, мораль сей басни такова:
«Если вы устанавливаете новую версию или апгрейдите старую до WordPress 2.5, то потрудитесь залезть в wp-config.php и исправить ‘put your unique phrase here’ на что угодно (вам даже не обязательно запоминать эту фразу), например, ‘Спасибо тебе Тарас за наше безопасное детство блоггерство’ «

[Безопасность] Список дырявых плагинов 2

Продолжаем публиковать список плагинов, которые стоит:
а) обновить до безопасной версии
б) отключить, если таковой не имеется.

Думаю конечному пользователю (т.е. тебе читатель) не столь интересно какими методами злоумышленники будут тебя ломать, а вот как от этого обезопасится — это уж всенепременно важно. Сегодня в список попали довольно популярные плагины (заодно сделаю мини-обзор), так что спешим обновляться:

  1. WP-People
  2. Плагин, который ищет в тексте поста имена, совпадающие с его базой и линкующий их на соответствующий профиль. Пример работы. Уязвимы версии до 1.6, с сайта же можно скачать Wp-People 1.6.1.
    Вообще пожалуй интересный плагин для создания некоего комьюнити на WordPress.

  3. Simple Forum
  4. simple forum plugin screenshot
    Плагин встраиваемого в WordPress форума. На сайте можно скачать помимо самого форума: локализации (русский язык для последней версии отсутствует, может кто посодействует автору, а?), скины и иконки.
    Если у вас стоит версия плагина «моложе» 2.1 build 237, то выключайте или обновляйте (текущую версию форума можно подглядеть в самом низу форумной страницы).

  5. WP Photo Album
  6. Одна из вариаций реализации фото-альбома для WordPress. Тут можно посмотреть как это работает (сайт автора).
    Уязвимы версии до 1.1, так что скачивайте и обновляйтесь.

  7. Search Unleashed
  8. Ещё один популярный плагин, на этот раз для реализации поиска по всему блогу, а не только постам. Русская версия у Кактуса.
    Взлом зарегистрирован во всех версиях до 2.11, причём забавно то, что на сайте плагина скачать можно только 2.10, зато в других местахрусский вариант) уже предлагают безопасные версии.

  9. Sniplets
  10. Это вообще какая-то мега тулза по замене текста в посте в зависимости от условий, добавление подсветки и т.д. БлогСекьюрити сообщают, что уязвимы версии до 1.1.2, но судя по Version History с сайта — багфикса нет и в текущей (1.2.2) версии, на это же указывает и, например, вот этот взлом.
    Так что, если вы его применяли, то отключаем и/или ищем замену.


Йех, наконец-то удалось что-то написать, а то почти неделю без интернета дома — это какой-то кошмар.
Успел за это время досмотреть аниме Death Note, одноименный фильм и Зеленую милю. Последнее настоятельно советую, если вдруг кто ещё не видел.

[Безопасность] Список дырявых плагинов

Все уже знают, что очередной релиз WordPress 2.3.3 в основном призван исправить бреши в безопасности (как обычно русскую версию можно скачать у Кактуса), но гарантирует ли это, что на ваш блог не смогут посягнуть?

Можно ответить «Нет», если вы не уверены в тех плагинах, которые у вас установлены.
Например, сами разработчики WordPress настоятельно рекомендуют не использовать плагин WP-Forum, а я несколько расширю этот список за счёт информации с сайта БлогСекьюрити.

  1. WP TextLinkAds
  2. Плагин для размещения ссылок от известной конторы TLA версии ниже 1.1.3 подвержен уязвимости, благодаря которой злоумышленник может получить доступ к БД и компрометировать весь блог.
    Для исправления советуют либо скачать новую версию, либо найти строку 512 ($postId = $postId;) и заменить её на $postId = (int) $postId;.

  3. dmsguestbook
  4. Гостевая книга dmsguestbook вообще одна сплошная дыра. Тут вам и возможность дефейса, получение доступа к данным из wp-config.php, управление файлами и папками на сервере, и даже множественные XSS-уязвимости в купе с различными SQL-инъекциями.
    БлогСекюрити советуют вообще нафиг отключить этот плагин, т.к. даже в последней (1.8) версии много багов и уязвимостей.

  5. st_newsletter 2.x
  6. Плагин рассылки st_newsletter позволяет, применив специальный запрос, содержащий SQL-инъекцию, получить список всех пользователей и хэши их паролей.
    Заплаток пока что нет, так что отключаем плагин от греха подальше.

  7. Wordspew
  8. Относительно известный Live-чат Wordspew тоже подвержен злостным инъекциям, и тоже пока что нет официальных (и не официальных) багфиксов. Отключаем.

  9. wp-footnotes 2.2
  10. Известная добавлялка подписей к постам wp-footnotes тоже обросла уязвимостью, из-за которой «злодей» получает доступ к админ.панели плагина, просто обратившись по определенному УРЛ к сайту. И, следовательно, может «добавить» свой текст к вашим постам.
    И этот плагин без фикса, так что используйте на свой страх и риск.

На этом всё. Надеюсь теперь вы чувствуете себя ещё более защищенными.

А мужики то не знают: защита в WordPress 2.4, дыры и апдейт в 2.3 и подсветка синтаксиса

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

Улучшенная система безопасности в WordPress 2.4

Хоть сам движок ещё готов процентов на 30, но уже заявлены приятные нововведения, такие как использование безопасных куки и новый алгоритм шифрования хранимых паролей.
Про протокол безопасных куки (secure cookie protocol) можно прочитать в этом .pdf (116Kb на англ.), если кратко, то новые куки выглядят так:
имя пользователя|время действия|HMAC(имя пользователя|время действия|ключ)
Причём ключ = HMAC(имя пользователя|время действия|секретный ключ), во как!

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

Пароли же теперь буду хэшироваться при помощи phpass, который к обычному md5-хэшированию добавляет ещё возможность подсолить («salt» — представляет собой некий набор символов; обычно это символы обоих регистров, цифры и спецсимволы, которые накладываются или склеиваются с самим паролем или с хэш-суммой пароля) и даже растянуть короткий пароль. Всё вместе это значительно увеличивает сложность взлома путём перебора хэшей.

Так же не стоит забывать, что phpass так же будет применяться в Drupal и phpBB, а значит, существует вероятность, что можно будет использовать одни и те же регистрационные данные в пределах сайта для каждого пользователя, причём без дополнительных извращений.

В принципе, код, отвечающий за кукисы и шифрование phpass’ом, уже можно скачать и опробовать, вот только не делайте этого на активном блоге, т.к. таблица пользователей будет безнадёжно испорчена, а уж если вы ещё и бэкап не сделали…


Некоторые активные дыры в WordPress 2.3.x

1. Существует возможности при выполнении определенных действий, получить доступ к Черновикам (Drafts), созданным другими пользователями, в том числе и администратором. Поэтому старайтесь не хранить в черновиках конфиденциальную информацию. Пока что дыра есть в 2.3.1 и скорее всего во всех предыдущих версиях. Ждём-с багфикса с апдейтом.

2. Дыра в плагине Wp-ContactForm, при помощи которой злоумышленник может выполнить инъекцию HTML кода и получить пересылаемые данные. Баг фикса нет, но сам плагин старенький, поэтому советую вам просто поменять его на Cforms II, тем более вы можете скачать русскую версию у Соники.

3. Уязвимость обнаружили ребята из Seo Egghead. Заключается она в возможности внедрять ссылки в старые посты, причём, обычно выглядит это так, как будто и должно быть, только вот PR естественно снизится. Подвержены такому «хаку» все версии с 2.1 по 2.3.1 включительно.
Яйцеголовые ребята советуют произвести поиск по блогу по таким словам, как: mp3, download, adshelper, softicana, casino, viagra и тому подобному (не мне вам рассказывать, чем обычно спамят)))


Обнови пермалинки правильно

У некоторых пользователей после перехода на 2.3.1 появился скверный глюк, а точнее ошибка:
«Warning: Invalid argument supplied for foreach() in /home/wallis3/public_html/wordpress/wp-includes/classes.php on line 92»
Лечится это довольно просто, но и не очевидно одновременно: нужно сперва сбросить пермалинки на те, что установлены по умолчанию (Настройки > Постоянные ссылки > По умолчанию > «Обновить шаблоны ссылок»), после чего можно вернуть свои старые шаблоны и обновить повторно — глюк должен исчезнуть.


Разметка кода на блогхостинге WordPress.com

Возможно, полезность данной заметки сомнительна, потому как у нас большой популярностью WordPress.com (не путать с бесплатной блог-платформой WordPress) не пользуется, куда чаще используют BlogSpot/Blogger или ЖЖшку, но была — не была.
Если вы ведете блог на WordPress.com, то для красивой разметки исходных кодов, у вас есть строенная реализация. Работает это так
[sourcecode language='язык']
строчка код 1
...
строчка код n
[/sourcecode]

, где язык — это на выбор: cpp, csharp, css, delphi, java, jscript, php, python, ruby, sql, vb, xml.
За основу взят SyntaxHighlighter, нашего соотечественника (как я понял) Алекса Горбачева.


Помоги найти трэкбэк

Оказывается, среди тэгов разметки WordPress есть такое чудо, как trackback_rdf, который внедряет на страницу не видимый для пользователя код, применяемый некоторыми программами и поисковыми ботами, для определения адреса трэкбэка. Сам тэг должен размещаться внутри Loop’а и быть скрыт в html-комментарий, чтобы не попадаться на глаза читателю. Выглядит это примерно вот таким образом:


Ну вот на сегодня и всё. До скорого. И берегите себя и свой блог.

Осторожно! Злая тема… для WordPress!

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

Вообще, в последнее время очень сильно повысилось количество постов о взломе разных блогов на WordPress’е, а всё потому, что люди забывают обновляться до последней версии. Но даже наличие последней стабильной версии с офф.сайта не даёт гарантий, что вас не «поимеют».

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

Для тех, кто не очень дружит с ангельским языком, расскажу вкратце о чём там речь:
Некий дизайнер Derek Punsalan сделал темку (а точнее даже несколько) для WordPress и решил их подарить всему миру. В итоге она разлетелась по куче разных тематических архивов, одним из которых был WpSphere. И что вы думаете?

После скачивания и установки с этого сайта, некоторые пользователи заметили, что в тексте страниц находится примерно такой код

Если вы не разбирается в PHP, поясню — такой метод применяется, чтобы скрыть реальный исполняемый код, потому что после декодирования (функция, base64_decode), текст будет выглядеть несколько более подозрительно

В результате выполнения этого скрипта, с одного из серверов (я указал лишь часть исходника) подгружался java-script. По словам одного из блоггеров, Пола Кэрола, который проводил исследования по поводу «вредоносности» данного кода, выходит, что ничего плохого не происходило, а Wp-Sphere просто мониторили количество установок тем.

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

Весь этот пост написан для того, чтобы вы задумались перед установкой очередной темы, скаченой из не проверенных источников. Или, во всяком случае, проверили, что там у неё внутри, а если не можете сами (по причине, что любой код для вас — набор бессмысленных знаков), то попросите того, кто понимает, можно и меня.

И напоследок, к проверенным источникам с лёгкостью могу отнести сайт themes.wordpress.net, ибо официальный, а так же советую ознакомиться с «Кратким руководством по безопасности WordPress» от Максима, скоро постараюсь опубликовать не краткое, а большое и разностороннее.

Мира вам и безопасного интернета и WordPress.