The OpenNET Project / Index page

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

03.12.2018 11:10  Уязвимости в интерпретаторе Perl, связанные с обработкой переменных окружения и regexp

Сформирован корректирующий выпуск интерпретатора языка программирования Perl 5.28.1, в котором устранена опасная уязвимость (CVE-2018-18311). Проблема позволяет инициировать целочисленное переполнение, которое в дальнейшем приводит к переполнению буфера, при присвоении переменной окружения очень большого значения (более 4 Гигабайт).

Уязвимости подвержены приложения на языке Perl, которые выставляют переменные окружения через хэш %ENV с использованием в них значений на основе передаваемых пользователем данных. Проблема вызвана переполнением 32-разрядного счётчика размера строки в функции Perl_my_setenv.

Кроме того, в обновлении Perl 5.28.1 устранены три уязвимости в обработчике регулярных выражений (regcomp.c), которые могут привести к переполнению буфера: CVE-2018-18312 (reg_node), CVE-2018-18313 (S_grok_bslash_N) и CVE-2018-18314 (S_regatom). Уязвимости могут использоваться для атаки на приложения, в которых при построении регулярных выражений используются непроверенные внешние данные (когда непроверенные данные непосредственно внутри regexp-выражения, а не при проверке при помощи regexp) .

  1. Главная ссылка к новости (https://www.nntp.perl.org/grou...)
  2. OpenNews: Релиз языка программирования Perl 5.28.0
  3. OpenNews: Языку Perl исполнилось 30 лет
  4. OpenNews: Сравнения языков программирования с позиции безопасности написанного на них кода
  5. OpenNews: Неявные свойства языков программирования, которые могут привести к уязвимостям
  6. OpenNews: В Bugzilla устранена опасная уязвимость, открывшая новый вид атак на web-приложения
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: perl
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.2, Аноним (2), 11:39, 03/12/2018 [ответить] [показать ветку] [···]    [к модератору]
  • –12 +/
    Грош цена таким разрабам, которые непроверенные внешние данные пихают в regexp
     
     
  • 2.3, КО (?), 11:47, 03/12/2018 [^] [ответить]    [к модератору]
  • –1 +/
    Если regexp заменить на "переменные окружения", то будет еще логичнее, а то проверка 32Tb ухе сама может вызвать кучу приятных эмоций.
     
  • 2.11, evkogan (?), 14:51, 03/12/2018 [^] [ответить]    [к модератору]
  • +/
    Как раз через регэкспы их и проверяют зачастую.
     
     
  • 3.33, Аноним (-), 07:49, 06/12/2018 [^] [ответить]     [к модератору]
  • +1 +/
    Все верно, но там смысл другой читайте внимательно Анон дочитал и был прав, а т... весь текст скрыт [показать]
     
  • 2.13, Аноним (13), 14:58, 03/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Это один из немногих способов снять с них taint
     
  • 2.21, Аноним (21), 17:55, 03/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Так проблема же не в regexp как таковом, а в конкретной реализации regcomp.c

    PS Никоим образом не пропагандирую переписать на Хрусте.

     
  • 1.5, Нанобот (ok), 12:24, 03/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    по таким мелочам можно было и не клепать новость
     
  • 1.6, Аноним (6), 12:36, 03/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    А родительский процесс не сдохнет, когда будет устанавливать такую переменную перед запуском перла?
     
     
  • 2.12, Аноним84701 (ok), 14:53, 03/12/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    > А родительский процесс не сдохнет, когда будет устанавливать такую переменную перед запуском перла?

    Если я правильно понял man execve
    [code]
    applications are guaranteed to have at
           least as much argument and environment space as was provided by Linux
           2.6.23 and earlier.  (This guarantee was not provided in Linux 2.6.23
           and 2.6.24.)  Additionally, the limit per string is 32 pages (the
           kernel constant MAX_ARG_STRLEN), and the maximum number of strings is
           0x7FFFFFFF.[/code]
    то для появления уязвимости нужно всего лишь подправить константу:
    [code]
    /*
    * These are the maximum length and maximum number of strings passed to the
    * execve() system call.  MAX_ARG_STRLEN is essentially random but serves to
    * prevent the kernel from being unduly impacted by misaddressed pointers.
    * MAX_ARG_STRINGS is chosen to fit in a signed 32-bit integer.
    */
    #define MAX_ARG_STRLEN (PAGE_SIZE * 32)
    #define MAX_ARG_STRINGS 0x7FFFFFFF
    [/code]
    и пересобрать ядро.

     
  • 1.8, Аноним (8), 13:59, 03/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    > regcomp.c
    > могут привести к переполнению буфера
    > regcomp.c
    > .c

    Совпадение? Не думаю. Впрочем, ничего нового.

     
     
  • 2.10, ананим.orig (?), 14:42, 03/12/2018 [^] [ответить]    [к модератору]  
  • +3 +/
    > Аноним
    > Аноним

    !

     
  • 2.14, Акакжев (?), 15:09, 03/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Целочисленное переполнение проще всего проверить на ассемблере. Переписывайте.
     
  • 1.9, InuYasha (?), 14:04, 03/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –4 +/
    Мне одно не понятно - как в регэкспах не может быть проблем в принципе =)
     
     
  • 2.24, Sw00p aka Jerom (?), 22:52, 03/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Если не понятно, почитай Брауэра - Теория конечных автоматов.
     
  • 2.26, cutlass (?), 04:47, 04/12/2018 [^] [ответить]    [к модератору]  
  • +/
    У инуяши хорошо получается только мечом махать
     
  • 1.23, iZEN (ok), 18:50, 03/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Дык
    DEFAULT_VERSIONS= perl5=5.26
     
  • 1.25, трурль (?), 01:37, 04/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    * Daemon потыкал палочкой в wd
    <wd> яя
    <Daemon> а чиво станет с перлом, если в хеш загнать 2 гига данных и заставить перл его сортировать?
    <wd> будет сортировать
    <ghoulWork> неожиданно

    https://bash.im/quote/394858

     
  • 1.27, Денис Александрович (?), 10:41, 04/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Сегодня запустил vim с 1.8ГБ текста. Всё зависло на*й. Минут 30 ждал пока завершится vim.
     
     
  • 2.28, КГБ СССР (?), 12:09, 04/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    > Сегодня запустил vim с 1.8ГБ текста. Всё зависло на*й. Минут 30 ждал
    > пока завершится vim.

    Вот что бывает, когда не хочется изучать grep, awk, sed.

    В суперкомпьютере Cray T3D ( ru.wikipedia.org/wiki/Cray_T3D ) процессоры работали на частоте 150 МГц (мега-, а не гига-), а всей памяти в машине было как в типичном десктопе продвинутой современной веб-макаки. Подумай над этим, анон.

     
  • 2.35, нах (?), 13:01, 10/12/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    сегодня в хз какой раз запустил вимя с 2.счемтотам gb текста (mysqldump без улучшизмов)  которым тестирую сторадж под mysql'ем.
    Ну да, оно довольно долго его жует (особенность vim и его recover), но ни разу не 30 минут.

     
  • 1.29, Денис Александрович (?), 12:15, 04/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Зачем мне grep, awk и sed если я знаю Perl?
     
     
  • 2.30, КГБ СССР (?), 13:15, 04/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > Зачем мне grep, awk и sed если я знаю Perl?

    Зачем открывать текстовым редактором два гига текста? Что ты хотел там вычитать в этих двух гигах?

     
     
  • 3.31, Денис Александрович (?), 09:39, 05/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Надо было понять почему женщина в красном не может войти в систему
     
  • 1.32, Аноним (32), 09:54, 05/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    У меня проги тоже логи в редакторе смотрят;)
     
  • 1.34, Michael Shigorin (ok), 21:09, 07/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Как же мудр наш майнтейнер perl, не спешащий тянуть в репозиторий 5.xx.0...
     
     
  • 2.36, нах (?), 13:02, 10/12/2018 [^] [ответить]    [к модератору]  
  • +/
    на perl4 сидите? netch@ бы одобрил, да.
     
     
  • 3.37, Michael Shigorin (ok), 13:38, 10/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > на perl4 сидите? netch@ бы одобрил, да.

    Dear Netch какое-то время вполне себе одобрял, пока не майданулся (надо отдать ему должное, на это ушло месяца два хорового убеждения в том, что чёрное -- это белое).  Но perl вполне себе 5.26.2.

     

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


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