The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Критическая уязвимость в Drupal

28.03.2018 23:33

В системе управления контентом Drupal выявлена критическая уязвимость (CVE-2018-7600), которую можно использовать для удалённого выполнения кода на сервере через отправку специально оформленного запроса без аутентификации. Проблема достаточно проста в эксплуатации и затрагивает ветки Drupal 8, 7 и 6. Всем пользователям рекомендуется срочно установить обновления Drupal 8.5.1, 7.58, 8.3.9, 8.4.6 или использовать патч.

Для эксплуатации уязвимости достаточно передать параметр запроса или Cookie, начинающийся с символа "#", который будет обработан как спецключ для вызова произвольного PHP-обработчика через Render Arrays и Drupal Form API.

  1. Главная ссылка к новости (https://www.drupal.org/sa-core...)
  2. OpenNews: Уязвимости в системе управления web-контентом Drupal
  3. OpenNews: Обновление Drupal 8.3.4 и 7.56 с устранением критической уязвимости
  4. OpenNews: Конфликт в сообществе Drupal из-за расхождения личных взглядов и общественных ценностей
  5. OpenNews: Критическая уязвимость в PHPMailer, применяемом в WordPress, Drupal и Joomla
  6. OpenNews: Критические уязвимости в системе управления web-контентом Drupal 8
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: drupal
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (47) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.2, Аноним (-), 23:59, 28/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +18 +/
    Это не дыра, это фича!
     
     
  • 2.34, Аноним (-), 21:17, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    господи друпал это жи грех какой то
     

  • 1.3, Аноним (-), 00:02, 29/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А патчи в стили PHP, годы идут, ничего не меняется. Мы тут ввод подчистим, вместо, того чтоб принципиально дыру прикрыть.
     
     
  • 2.4, пох (?), 00:32, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    принципиальная дыра - это вообще работать с каким-либо user input? В противном случае, у меня для вас плохие новости... по крайней мере, для машин с фон-неймановской архитектурой и тьюринг-полных языков.

    а на "parser3" вы современный сайт делать не захотите (он не тьюринг-полный, untrusted данные изолированы. Щастья своим разработчикам не принес.)

     
     
  • 3.33, YetAnotherOnanym (ok), 18:56, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Принципиальная дыра - это ожидать, что в user input будет только то, что там должно быть по представлениям разработчика.
     
     
  • 4.48, пох (?), 16:16, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >  Принципиальная дыра - это ожидать, что в user input будет только то, что там должно быть по
    > представлениям разработчика.

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

    это не лечится, это будет всегда.


      

     
  • 2.43, anomymous (?), 11:55, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Принципиально дыра в головах. Прикрыть будет ооооочень сложно.
     

  • 1.5, th3m3 (ok), 01:15, 29/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Что, опять?
     
  • 1.6, Sylvia (ok), 07:03, 29/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    https://www.drupal.org/files/issues/2018-03-28/SA-CORE-2018-002.patch

    для Drupal6

     
     
  • 2.51, dq0s4y71 (ok), 23:16, 28/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Drupal6 упоминается почему-то только в одной ссылке. В двух других только 7 и 8. Там вообще про одну и ту же уязвимость?
     

  • 1.7, Аноним (-), 08:05, 29/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Одним словом - пехапе
     
     
  • 2.8, IRASoldier (?), 08:21, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Одним словом - не пехапе, а ошибки пейсателей парсеров пользовательских запросов

    Не язык должен быть "безошибочным", а код. Так-то.
     
     
  • 3.11, Аноним (-), 10:29, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ну, на самом-то деле, изначальное отсутствие в языке с низким порогом вхождения... текст свёрнут, показать
     
     
  • 4.15, KonstantinB (ok), 11:18, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В современном PHP все уже есть.

    А в старом коде времен php4, да, я видел "парсеры" XML и JSON через eval(). "Ну а чо, так проще же". Один такой eval() одной компании как-то обошелся в полмиллиона долларов.

     
     
  • 5.17, Аноним (-), 12:30, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > одной компании как-то обошелся в полмиллиона долларов

    так это одной. А полмиллиона других компаний сэкономили на этом по доллару - и вот уже общий баланс неотрицательный :)

     
     
  • 6.23, KonstantinB (ok), 13:04, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сразу вспоминается модификация анекдота про ковбоев, которые увеличили ВВП.
     
  • 4.40, Аноне (?), 10:34, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    htmlspecialchars, filter_var
     
     
  • 5.46, пох (?), 13:45, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > htmlspecialchars, filter_var

    это слишком низкоуровневые конструкции, и к тому же они by design неверны (если использовать filter не для валидации, с этим-то все в порядке, кроме названия).
    То есть малейшая неаккуратность, и получаем дыру типа описанной.

    трансляцию надо выполнять не на обработке input (потому что совершенно неизвестно, что мы с тем input делать собираемся - мы его может вообще сейчас as-is бросим обратно в рожу пользователю в тот textarea, из которого получили, потому что он капчу неверно набрал - и зачем, спрашивается, было куда-то транслировать?)
    ее надо выполнять в том месте, где ты с этим input что-то собрался делать.

    Если в базу собрался положить - тебе нужен sql translator, если в html - html'ный, в js - js'овый. Ну, надеюсь, eval() мы не собираемся? Хотя php-транслятором лучше сразу озаботиться ;-)

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

     

  • 1.9, Fy (?), 08:53, 29/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Дырень касается всех или только тех у кого есть какие-то пользователи и они чего-то куда-то вводят?
     
     
  • 2.10, ваш К.О. (?), 10:17, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    если у твоего локалхоста нет пользователей - нет, тебя не касается. Особенно если и drupal ты из архива не распаковывал.

     
     
  • 3.26, Солнышко (??), 14:08, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Тонко
     
     
  • 4.41, Аноним (-), 16:22, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да куда уж тоньше. Словно сайты без аунтификации и прочих форм ввода бывают только на локалхосте.
     
  • 2.12, 123 (??), 10:39, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Касается всех, даже включение режима обслуживания не спасет. Ошибка прямо с бутстрапа ядра как-то тянется. В общем без вариантов, надо обновлять.
     

  • 1.13, Солнышко (??), 11:12, 29/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Drupal весьма хорош для крупных порталов, для тех, кто не хочет изучать программирование, но нужна гибкая настройка сущностей. А шкурку натянуть можно какую хочешь. Скорость правда не ахти, но для корпоратпорталов и не надо.
     
     
  • 2.16, Аноним (-), 12:29, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Скорость правда не ахти

    И безопасность, как видим, тоже. Но шкурку натянуть можно, это да.

     
     
  • 3.19, Солнышко (??), 12:38, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Скорость правда не ахти
    > И безопасность, как видим, тоже. Но шкурку натянуть можно, это да.

    Для бизнеса чаще всего важнее шкурка, а не содержание. В таком мире мы живем.

     
     
  • 4.22, KonstantinB (ok), 13:01, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Для бизнеса важны бабки, а как следствие - важно все. Просто некоторые осознают важность качественного безопасного кода только после того, как понесут миллионные убытки.

    Я всегда объясняю нетехническим бизнесменам понятие технического долга через бабки, прекрасно понимают.

     
     
  • 5.25, ыы (?), 14:05, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >как понесут миллионные убытки.

    или не понесут.. а при удачном раскладе еще и страховку нехилую получат...


    >долга через бабки, прекрасно понимают

    раскрутить лоха на бабки.. да.. есть мастера еще какие :)

     
     
  • 6.27, Солнышко (??), 14:08, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>как понесут миллионные убытки.
    > или не понесут.. а при удачном раскладе еще и страховку нехилую получат...
    >>долга через бабки, прекрасно понимают
    > раскрутить лоха на бабки.. да.. есть мастера еще какие :)

    Или продадут "успешный" стартап, а отдуваться будет подрядчик фирмы, кто его купит )

     
  • 6.30, KonstantinB (ok), 15:28, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > раскрутить лоха на бабки.. да.. есть мастера еще какие :)

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

     
     
  • 7.32, ыы (?), 16:33, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> раскрутить лоха на бабки.. да.. есть мастера еще какие :)
    > Да вот прямо сейчас последствия работы таких мастеров разгребаю. До человека, к
    > сожалению, дошло только после того, как слили всю его базу.

    "Неприятности происходят вне зависимости от того делаете вы что-то или нет." (с)

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

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

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

    и все будут просить дай, дай денег дай.....

     
     
  • 8.35, KonstantinB (ok), 23:28, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Простите, вы какие-то вещества употребляете, или это ваш естественный ход мыслей... текст свёрнут, показать
     
     
  • 9.36, Аноним (-), 00:08, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну чел вообще-то в чём-то прав Вы с ним не согласны ... текст свёрнут, показать
     
     
  • 10.42, KonstantinB (ok), 05:22, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Два еврея пришли к раввину, чтобы он разрешил их спор - Ребе, вот я говорю, что... текст свёрнут, показать
     

  • 1.14, KonstantinB (ok), 11:16, 29/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Оу шыт! Вы посмотрите на этот патч. Он выкидывает все параметры GET/POST-запросов и куки, имена которых начинаются с символа "#".

    Это же что там с ними делается, что у них означает этот маркер, что его использованием можно запустить произвольный код? Eval? Call_user_func? Кому вообще пришло в голову такое сделать? И сколько же таких мест, что вместо того, чтобы их переписать по-человечески, надо делать глобальную фильтрацию?

    Это не php, это люди, которых нельзя пускать за клавиатуру.

     
     
  • 2.20, 123 (??), 12:46, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Система render array https://www.drupal.org/docs/8/api/render-api/render-arrays
     
     
  • 3.21, KonstantinB (ok), 12:58, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее https://api.drupal.org/api/drupal/developer%21topics%21forms_api_ref
     
  • 2.28, Солнышко (??), 14:09, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Оу шыт! Вы посмотрите на этот патч. Он выкидывает все параметры GET/POST-запросов
    > и куки, имена которых начинаются с символа "#".
    > Это же что там с ними делается, что у них означает этот
    > маркер, что его использованием можно запустить произвольный код? Eval? Call_user_func?
    > Кому вообще пришло в голову такое сделать? И сколько же таких
    > мест, что вместо того, чтобы их переписать по-человечески, надо делать глобальную
    > фильтрацию?
    > Это не php, это люди, которых нельзя пускать за клавиатуру.

    Будь мужиком, покажи класс. Напиши свой патч, а мы посмотрим, ок?

     
     
  • 3.29, KonstantinB (ok), 15:26, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Там изначальная архитектурная ошибка со смешением данных и колбэков в одном массиве, с префиксом "#" у колбэков.

    Если делать по-хорошему, надо вместо этого массива сделать класс, в котором данные отдельно и колбэки отдельно. Учитывая объем кода, включая сотни сторонних плагинов, нормального способа исправления уже нет, и приходится делать вот такой костыль. А вот тот идиот, который изначально такое смешение придумал, заложил в проект бомбу замедленного действия, и лучше бы его не пускали за клавиатуру.

     
     
  • 4.31, ыы (?), 16:27, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    "В тот момент эта идея мне показалась привлекательной" (с) анек
     
     
  • 5.37, Аноним (-), 00:11, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А можно весь анекдот? Сходу не нагуглил :(
     
     
  • 6.38, Led (ok), 01:21, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > А можно весь анекдот?

    Так это он весь и есть: "ыы"


     
  • 4.44, anomymous (?), 11:58, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Там изначальная архитектурная ошибка со смешением данных и колбэков в одном массиве,
    > с префиксом "#" у колбэков.

    Смешение user input и callbacks в одном массиве?
    OH SHI...
    Закoпать и не откапывать.

     
     
  • 5.47, пох (?), 13:49, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Смешение user input и callbacks в одном массиве?

    "когда мы это писали - классов в php (4?) еще не было"

    а им надо было донести до обработчика и данные, и какое-то обозначение, что с ними делать.

     
     
  • 6.49, KonstantinB (ok), 20:27, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да были классы.

    В конце концов, можно было бы просто два разных массива сделать.

     

  • 1.39, Аноним (-), 07:43, 30/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Проверьте кому не лень залатали ли эту уязвимость на сайте Белого дома?
     
     
  • 2.45, redwolf (ok), 12:45, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Он уже миллион лет не на Друпале. Это всё реклама.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру