The OpenNET Project / Index page

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

Переполнение буфера в функции glob из состава Glibc

21.10.2017 23:47

В системной библиотеке GNU C Library (glibc) выявлена уязвимость (CVE-2017-15670), которая может потенциально привести к выполнению кода злоумышленника при выполнения поиска имен файлов по шаблону при помощи функции glob(). Проблема проявляется при использование флага GLOB_TILDE (расширение GNU) в процессе обработки домашних директорий при помощи оператора "~", идущего после длинной строки (при обработке пути вида "~длинная_строка/a/b").

Проблема присутствует во всех версиях Glibc и исправлена в находящейся в разработке ветке 2.27. Для ветки 2.26 доступен патч. Обновления для дистрибутивов пока не доступны, проследить за появлением исправлений можно на следующих страницах: Arch Linux, Debian, RHEL, Fedora, SUSE, openSUSE, Ubuntu.

  1. Главная ссылка к новости (http://seclists.org/oss-sec/20...)
  2. OpenNews: Ошибка в библиотке libc привела к уязвимости большинства FTP-серверов
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/47428-glob
Ключевые слова: glob, glibc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (49) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, saahriktu (ok), 02:24, 22/10/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Патч для glibc 2.26: https://github.com/saahriktu/saahriktu-patchesandbugfixes/blob/master/glibc-2. .
     
     
  • 2.5, Zenitur (ok), 07:24, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А есть для 2.17?
     
     
  • 3.9, 0x0 (?), 10:49, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Для 2.17 патч не нужен.
     
     
  • 4.10, Zenitur (ok), 10:57, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    "Проблема присутствует во всех версиях Glibc"
     
     
  • 5.11, 0x0 (?), 11:02, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > ...и исправлена в находящейся в разработке ветке 2.27
     
     
  • 6.47, Аноним (-), 19:25, 25/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    2.17 != 2.27 ;)
     
  • 5.12, 0x0 (?), 11:05, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > "Проблема присутствует во всех версиях Glibc"

    Sorry! :)) Для .17 нужен -- в репозиториях своего дистра исправление подождать лучше, наверное.

     
     
  • 6.17, Аноним (-), 11:52, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    а для 2.4 будет?
     
     
  • 7.19, 0x0 (?), 11:59, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Да, будет и, скорее всего, ещё много-много раз :))
     
  • 3.13, saahriktu (ok), 11:12, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, есть. https://github.com/saahriktu/saahriktu-patchesandbugfixes/blob/master/glibc-2.
     
     
  • 4.23, Аноним (-), 18:37, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Сишный код такой сишный.

    Любители dst++ = ++ptr = src++ должны страдать. Жаль, что и остальным приходится за компанию.

     
     
  • 5.26, Аноним (-), 19:40, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    остальные могут взять свои остальные языки и написать на них свое ядро/ос/библиотеку/etc.
     
     
  • 6.33, fidaj (ok), 15:59, 23/10/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    https://www.redox-os.org/
    так и сделали.
     
     
  • 7.34, dq0s4y71 (ok), 16:31, 23/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Очередная игрушечная ОС?

    At this time, Redox supports:

        All x86_64 CPUs.
        Graphics cards with VBE support (all nvidia, intel, and amd cards from the past decade have this).
        AHCI disks.
        E1000 or RTL8168 network cards.
        Mouse and keyboard with PS/2 emulation.

     
     
  • 8.36, Andrey Mitrofanov (?), 17:14, 23/10/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У терминалки Торвальдса тоже было примерно так с железом поначалу И это ничего ... текст свёрнут, показать
     
  • 7.48, Аноним (-), 19:29, 25/10/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > https://www.redox-os.org/
    > так и сделали.

    Так и пользуйся наздоровье. Очередной ответ на все проблемы человечества, уже 42-й по счету после Minix-а.

     
  • 5.28, pavlinux (ok), 21:36, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Сишный код такой сишный.
    > Любители dst++ = ++ptr = src++ должны страдать.

    dst++ &= &!++ptr++ = &!src++

    От такого у тя должно порвать пукан.

     
  • 5.29, Аноним (-), 23:19, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Код как код, префиксный и постфиксный инкременты. Во всех нормальных языках так можно. Причем тут C...
     
     
  • 6.40, пох (?), 15:15, 24/10/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Код как код, префиксный и постфиксный инкременты. Во всех нормальных языках так можно.

    а вот смысл?  *p++ - это особенность архитектуры PDP11, где оно транслировалось в одну команду (причем *++p - в две ;-) и для тех древних процессоров это давало ну охренительный выигрыш в производительности (если *p - word, разумеется).

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

    А код становится невозможно ни прочитать, ни понять.

     
     
  • 7.43, Аноним (-), 22:01, 24/10/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А код становится невозможно ни прочитать, ни понять

    Идите уже в дворники, вас там ждут.

     
  • 7.49, Аноним (-), 19:33, 25/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > а вот смысл?  *p++ - это особенность архитектуры PDP11, где оно
    > транслировалось в одну команду (причем *++p - в две ;-)

    Оно и на современных процах так же зачастую.

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

    А гугл почему-то наворачивает в своем кодеке ассемблерные вставки до сих пор. С разницами в 30 раз иногда. Видимо, оптимизатор не всегда хорошо разбирается. Даже на чистом си.

     
  • 5.35, dq0s4y71 (ok), 16:37, 23/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Любители dst++ = ++ptr = src++ должны страдать.

    Нет по ссылке такого кода, врать-то зачем? Не хватало "- 1", такую ошибку можно на любом ЯП сделать, даже на самом "наибезопаснейшем".

     
     
  • 6.41, пох (?), 15:39, 24/10/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Нет по ссылке такого кода, врать-то зачем? Не хватало "- 1", такую
    > ошибку можно на любом ЯП сделать, даже на самом "наибезопаснейшем".

    нет ножек - нет варенья. Если язык не умеет работать с адресной арифметикой и произвольными блоками памяти (тыщи их) - выехать за границу массива в нем не получится.
    Правда, и написать системную библиотеку тоже.

     
     
  • 7.50, Аноним (-), 19:42, 25/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Но тогда и писать шустрые программы не получится. Вместо перекидывания указателей будете как миленькие копировать все 20 мегабайтов там и тут.
     
     
  • 8.56, Аноним (-), 19:53, 26/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, ну да pass by reference value нигде тем более, даже в базиках не был... текст свёрнут, показать
     
     
  • 9.57, Аноним (-), 20:12, 26/10/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Pass by reference не позволит быстро флипнуть пару 20-меговых буферов, например ... большой текст свёрнут, показать
     
     
  • 10.59, Аноним (-), 23:19, 26/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Яснопонятно ... текст свёрнут, показать
     
  • 7.55, dq0s4y71 (ok), 17:46, 26/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Я имел ввиду, забыть написать "- 1" можно в любом языке. И это будет ошибкой даже в "безопасном" языке.
     
  • 2.7, 0x0 (?), 10:08, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Для F27 исправление готово, но пока не добавлено в тестовый репозиторий:
    https://koji.fedoraproject.org/koji/buildinfo?buildID=987290
     

  • 1.25, Аноноим (?), 19:38, 22/10/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Дебиан жжет напалмом.

    > [stretch] - glibc <no-dsa> (Minor issue)
    > [jessie] - glibc <no-dsa> (Minor issue)

    Not a bug © L.Poettering

     
     
  • 2.30, Аноним (-), 23:21, 22/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Леня же из клана красных колпаков, а не дебянов.

    p.s. It's not a bug.

     
     
  • 3.39, Аноним (-), 23:54, 23/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Леня же из клана красных колпаков, а не дебянов.

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

     
  • 2.31, Аноним (-), 13:10, 23/10/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так там перезапись одного байта за пределом буфера нулём. Из этого в худшем случае DoS можно соорудить, и то не факт.
     
     
  • 3.38, Аноним (-), 23:53, 23/10/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну, у леньки тоже мега-проблема была - инит демонов от рута запускал, видите ли. А от кого инит демонов должен запускать?
    А вони было, как будто он домой звонит и шеллкод запускает.

    Люблю настоящих экспертов.

     
     
  • 4.42, Аноним84701 (ok), 16:14, 24/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну, у леньки тоже мега-проблема была - инит демонов от рута запускал, видите ли. А от кого инит демонов должен запускать?

    От указанного в настройках пользователя?
    А если указанный пользователь есть в системе (например, потому что не все забивают на POSIX и пользователя [0-9]+[A-Za-z]+ вполне можно добавить штатными средствами) , но комба^W инит считает его невалидным, то ... возможно, НЕ стоит запускать демона автоматом от рута?

    Ваш КО

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

    Т.е. если у вас DM будет давать некоторым пользователям с невалидным ником доступ в качестве рута, то это будет в порядке вещей?


    > Люблю настоящих экспертов.

    Нарциссизм -- серьезное расстройство.


     
     
  • 5.61, Аноним (-), 18:24, 29/10/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А в sysvinit есть способ указать пользователя в настройках Раз уж мы про иниты ... большой текст свёрнут, показать
     
     
  • 6.63, Аноним84701 (ok), 19:44, 29/10/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, что вы О том же daemon ize -u приходилось только мечтать, вплоть до явл... большой текст свёрнут, показать
     
  • 4.45, Аноним (-), 14:51, 25/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Что тебе не так? Никто, в отличие от Лёни, не говорит, что это не баг. Баг, но далеко не самый страшный.
     
     
  • 5.62, Аноним (-), 18:25, 29/10/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Что тебе не так? Никто, в отличие от Лёни, не говорит, что
    > это не баг. Баг, но далеко не самый страшный.

    Пользователь Аноним84701 выше пытается доказать, что эта мега-супер-дыра всех времен и народов :-)

     

  • 1.37, Ordu (ok), 18:42, 23/10/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Надо переписать glibc на rust.
     
     
  • 2.44, Аноним (-), 02:09, 25/10/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ага, на C# еще скажи.
     
     
  • 3.46, Ordu (ok), 16:31, 25/10/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ага, на C# еще скажи.

    Не. Про C# сам говори, если считаешь нужным.

     
  • 2.51, Аноним (-), 21:39, 25/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Надо переписать glibc на rust.

    Тогда он не будет glibc. А у rust и так есть своя стандартная библиотека.

     
     
  • 3.52, Ordu (ok), 22:56, 25/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >> Надо переписать glibc на rust.
    > Тогда он не будет glibc.

    Да, название придётся сменить. Есть даже очевидный вариант: rlibc.

    > А у rust и так есть своя стандартная библиотека.

    Стандартная библиотека rust совершенно не подходит для использования её из C. Да и не выставишь её наружу через C'шный ABI.

     
     
  • 4.53, Аноним (-), 23:51, 25/10/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Да, название придётся сменить. Есть даже очевидный вариант: rlibc.

    Нахрен сишникам либа на Rust?

    > Стандартная библиотека rust совершенно не подходит для использования её из C.

    Либа которая сишным компилером даже не соберется ужасно необходима сишниакм. И это ты еще не видел сколько лет glibc и gcc оптимизировали, чтобы получить максимальную скорость. А так есть всякие musl и uclibc, там кода в разы меньше и уязвимостей тоже. Но меньше и фич и скорость работы, чудес не бывает. А кипа кода будет забагованой на любом ЯП.

    Вообще, верить что ЯП магически исправит все проблемы - бреда кусок. Во, полюбуйся, https://habrahabr.ru/post/338880/ - очень дельно пишут. Представляешь, вебари массово переполняют буфера даже когда им доступ в память вроде бы уж зарубили.

     
     
  • 5.54, Ordu (ok), 03:01, 26/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >> Да, название придётся сменить. Есть даже очевидный вариант: rlibc.
    > Нахрен сишникам либа на Rust?

    Какая им разница, на чём написана библиотека?

    >> Стандартная библиотека rust совершенно не подходит для использования её из C.
    > Либа которая сишным компилером даже не соберется ужасно необходима сишниакм.

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

    > И это ты еще не видел сколько лет glibc и gcc оптимизировали, чтобы
    > получить максимальную скорость.

    Ну и отлично. Теперь можно, заглядывая в код glibc, не исследовать возможности оптимизации заново, а просто повторить то, что уже сделано, но без переполнений буферов, без целочисленных переполнений, и без прочего гумна, которое отловить в C невозможно даже статическим анализатором. Выставляя наружу C'шное API, конечно же, придётся иметь баги в своём коде: тот же sprintf, например, небезопасен по задумке своей, и поэтому придётся осознанно писать на rust'е код, который может переполнить буфер, используя для этого unsafe. Но в libc предостаточно кода, который может переполнить буфер не потому, что стандарт к этому принуждает, а просто так, по фану, и вот от этого фана libc вполне можно избавить.

    > Вообще, верить что ЯП магически исправит все проблемы - бреда кусок.

    Бреда кусок -- это...
    блестяще побеждать в битве с соломенным чучелом.

    > Во, полюбуйся, https://habrahabr.ru/post/338880/ - очень дельно пишут. Представляешь, вебари
    > массово переполняют буфера даже когда им доступ в память вроде бы
    > уж зарубили.

    Ай. Ещё один диванный специалист, с доморощенным проектом нового интернета, который знает наилучшие способы решения всех проблем. Мне до сих пор неясно, почему интернет, набитый специалистами такого класса, до сих пор ещё не стал идеальным с технической точки зрения.

     
     
  • 6.58, Аноним (-), 20:59, 26/10/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Типы данных, удобство сборки, а при необходимости и патчинга, etc Опенсорсом, п... большой текст свёрнут, показать
     
     
  • 7.60, Ordu (ok), 01:43, 27/10/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Может ты и прав, для кого то его писанина и может выглядеть умно, наверное Да-д... большой текст свёрнут, показать
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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