The OpenNET Project / Index page

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

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

03.12.2018 11:10

Сформирован корректирующий выпуск интерпретатора языка программирования 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 обязательно
Обсуждение (27) Ajax | 1 уровень | Линейный | Раскрыть всё | 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 +/
    Все верно, но там смысл другой.

    читайте внимательно

    > когда непроверенные данные непосредственно внутри regexp-выражения, а не при проверке при помощи regexp
    > а не при проверке при помощи regexp

    Анон дочитал и был прав, а толпа бестолочей заминусовала анона.

    #неидизатолпой

     
  • 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:
    Текст:



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

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