The OpenNET Project / Index page

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

Опасная уязвимость в GNU strings и других утилитах binutils

26.10.2014 09:30

В популярной утилите strings, входящей в состав пакета GNU binutils и используемой для выделения из файла строковых данных, выявлена опасная уязвимость, которая может привести к выполнению кода при открытии специально оформленного файла в формате ELF. Проблема заключается в том, что по умолчанию для исполняемых файлов в strings помимо обычного алгоритма выделения строк используются функции библиотеки libbfd (данное поведение отключается при указании опции "-a"), ошибка в коде разбора заголовков формата ELF в которой приводит к переполнению буфера.

Библиотека libbfd также используется в других утилитах, в том числе в objdump, gdb, nm, stringme и readelf, но утилита strings более популярна и обычно первым делом используется исследователями безопасности при анализе содержимого тех или иных файлов, загруженных извне. Уязвимости в strings никто не ожидал, так как считается, что strings выполняет простую операцию фильтрации печатных символов, в которой маловероятно возникновение ошибок, способных привести к уязвимостям. При этом мало кто знает, что при разборе объектных файлов, вариант утилиты strings из пакета GNU binutils привлекает внешнюю библиотеку libbfd для определения исполняемого файла и разбора его заголовков.

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

За появлением патча с устранением проблемы можно проследить на данной странице (сообщается, что выпущенное в августе исправление устраняет проблему, но данная информация ещё не подтверждена). Обновления пакетов для дистрибутивов пока не выпущены, идентификатор CVE не присвоен. Интересно, что ранее уже публиковались сообщения об ошибках, связанных с данной проблемой, например, пользователи Gentoo обратили внимание на крахи утилит из состава binutils ещё в 2005 году. Аналогичные проблемы с разбором ELF-файлов на днях также обнаружены в коде readelf.c из состава библиотеки libmagic, а также в основанных на данной библиотеке пакете "file" и в PHP-модуле "fileinfo".

  1. Главная ссылка к новости (http://openwall.com/lists/oss-...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/40931-strings
Ключевые слова: strings
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (40) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 09:57, 26/10/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Хороший способ защиты от отладки:

    $ gdb strings-bfd-badptr
    GNU gdb (GDB) 7.4
    Copyright (C) 2010 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "i486-linux-gnu".

    Ошибка сегментирования


    $ nm strings-bfd-badptr
    Ошибка сегментирования

    $ objdump -x strings-bfd-badptr
    Ошибка сегментирования

    $ strings strings-bfd-badptr
    Ошибка сегментирования

     
     
  • 2.5, Аноним (-), 12:28, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Большинство отладчиков, как я понял, использует подмену символов стандартных либ и вставки кода, что в общем случае наивно. Нормальная отладка должна быть через ядро, что-то вроде виртуализации, так чтобы бинарь даже не заметил присутствия дебаггера.
     
     
  • 3.12, AAAAAAaaAAAAAA (?), 13:30, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Все вы не правильно поняли, подавляющее большинство отладчкиков опираются  на предоставляемые процессором возможности отлаживать себя.

    Можете начать изучение отсюда:

    http://en.wikipedia.org/wiki/X86_debug_register

     
  • 3.13, asdfghjkl (?), 14:00, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    man int3
     
     
  • 4.16, Аноним (-), 14:45, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Необходимо ли владеть исходником куска проприетари, чтобы это вставить, причём так, чтобы проприетарь не догадалась?
     
     
  • 5.39, angra (ok), 03:04, 27/10/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Иногда уровень деградации просто поражает. Но на вопрос отвечу, нет не нужно. Более того, для свободного софта это тоже не вставляется в исходный код.
     
  • 2.22, EverWinter (?), 17:08, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/


    $ gdb strings-bfd-badptr
    GNU gdb (Debian 7.7.1+dfsg-3) 7.7.1
    Copyright (C) 2014 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "x86_64-linux-gnu".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    strings-bfd-badptr: Нет такого файла или каталога.
    (gdb)


    ну-ну
     
     
  • 3.30, Michael Shigorin (ok), 20:28, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > strings-bfd-badptr: Нет такого файла или каталога.

    Очевидно, Вы не поняли.

     
     
  • 4.41, Анотим (?), 08:04, 27/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ха-ха-ха, юный комментатор опростоволосился.
     

  • 1.3, Аноним (-), 11:02, 26/10/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    Расстраивают опять GNU. Вроде простая задача, но и тут нашли проблему.
     
     
  • 2.7, vi (ok), 12:55, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Расстраивают опять GNU. Вроде простая задача, но и тут нашли проблему.

    Да нет же, анонимов гораздо больше, чем три GNU ;)

     
  • 2.8, RomanCh (ok), 12:55, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +6 +/
    1. Сделай лучше. Код же открыт, никто не запрещает изучить его и поправить все проблемы.
    2. В очередной раз нам предоставлен убедительный пример того, что не стоит ничего хоть сколь-нибудь неведомого запускать из под root'а. (даже man-страницы поставленные с не полностью доверенным софтом запускать из под root'а *опасно*)
     
  • 2.11, Аноним (-), 13:23, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Расстраивают опять GNU. Вроде простая задача, но и тут нашли проблему.

    Потому что горе от ума. За каким буем они полезли в хидеры? Ж...а просила приключений? Ок, приключения нашлись!

     
     
  • 3.15, Аноним (-), 14:27, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Правильно! Не ошибаются те, кто ничего не делает.
    Я безошибочно на диване лежу - и никаких вам глюков, уязвимостей и прочих.
    Берите пример.
     
     
  • 4.20, bOOster (?), 15:00, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Лезть куда-то надо понимая что делать и как. А оценивая че твориться с ядром и вообще разработкой под линь - большинство писак под линукс не понимает изза лени, нежелания изучения или отсутствия документации, потому как предыдущий "ПИСАТЕЛЬ" не удосужился ее написать, изобретает свой велосипед - к чему  и приводит.
    А не ошибается только тот кто ДЕЛАЕТ аккуртано, а не тяп-ляп.
    И это мы уже обсуждали.
     
     
  • 5.21, Аноним (-), 16:27, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    я тебя сейчас расстрою, но мир так устроен, что никто не понимает до конца как он действует, значит, надо всем идти лежать на диван, потому-что вдруг чего случится! ай-яй-яй!
     
  • 5.25, Аноним (-), 17:36, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Лезть куда-то надо понимая что делать и как. А оценивая че твориться
    > с ядром и вообще разработкой под линь

    "Демократия - хреновый режим. Проблема в том что лучше неё все равно ничего нет!" (С) У. Черчилль (если не врут).
    Так вот сынок - линукс хреновая штука ... :)

    > А не ошибается только тот кто ДЕЛАЕТ аккуртано, а не тяп-ляп.

    А теперь сядь. Или лучше ляжь. Ошибаются даже такие :)

    > И это мы уже обсуждали.

    Со своим психологом? :)

     
     
  • 6.27, vi (ok), 17:53, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >> Лезть куда-то надо понимая что делать и как. А оценивая че твориться
    >> с ядром и вообще разработкой под линь
    > "Демократия - хреновый режим. Проблема в том что лучше неё все равно
    > ничего нет!" (С) У. Черчилль (если не врут).
    > Так вот сынок - линукс хреновая штука ... :)

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


     
     
  • 7.54, vi (ok), 09:50, 28/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >>> Лезть куда-то надо понимая что делать и как. А оценивая че твориться
    >>> с ядром и вообще разработкой под линь
    >> "Демократия - хреновый режим. Проблема в том что лучше неё все равно
    >> ничего нет!" (С) У. Черчилль (если не врут).
    >> Так вот сынок - линукс хреновая штука ... :)
    > Не смотря на то, что это сказал Аноним, не могу не согласиться.
    > И как, у каждой демократии свои скелеты в шкафу, так и каждого
    > линукса свои дыры в коде.

    Та щас же каникулы!

     
  • 3.17, umbr (ok), 14:53, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >Ок, приключения нашлись!

    Может быть, что приключения их сами нашли.

     
  • 3.19, Мимокрокодил (?), 15:00, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нда, очередной ответ на вопрос, а хер ли ж софт столько места жрёт,
    и подтверждение истины, хочешь, чтобы работало хорошо - напиши сам.
    Ибо некоторые программисты максимум пользы приносят только будучи привязаны к стулу вместе с руками, но тем не менее им дают комиттить патчи.
     
     
  • 4.26, Аноним (-), 17:40, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Нда, очередной ответ на вопрос, а хер ли ж софт столько места жрёт,

    Ну ты и деб^W - не не дебиан, ты балбес мягко говоря :)"А в Киеве - дядька!"

    > и подтверждение истины, хочешь, чтобы работало хорошо - напиши сам.

    Где урл на GitHUb с вашей нетленкой? Мы уже в очереди, чтобы вкусить мудрости безглючного кода :)

    > Ибо некоторые программисты максимум пользы приносят только будучи
    > привязаны к стулу вместе с руками,

    А ... то есть ты пишешь из горяшего^W из своей психушки?

    > но тем не менее им дают комиттить патчи.

    наврали вам санитары то! :) Вам дают постить на опеннет, коммиты - это о другом :)

     
     
  • 5.31, Michael Shigorin (ok), 20:30, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > наврали вам санитары то! :) Вам дают постить на опеннет

    Вам тоже, но санитар-батыр порой таки приходит.

     
     
  • 6.34, Аноним (-), 22:15, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Намёк понял :)
    Но я всё таки надеюсь что я с той стороны стекла, где сидят доктора и студенточки :)
     
  • 3.44, Василий. Пупкин конечно же. (?), 09:43, 27/10/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    хидеры? Гы :D
    Поражает как же люди до сих пор не могут выучить английский, чтобы хоть _читать_ уметь правильно, не говоря о том чтобы произносить :(
     
  • 2.40, angra (ok), 03:18, 27/10/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Простая задача?
    As of 2003, it supports approximately 50 file formats for some 25 processor architectures.

    Its key services include handling byte order differences, such as between a little-endian host and big-endian target, correct conversion between 32-bit and 64-bit data, and details of address arithmetic specified by relocation entries.

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

     
     
  • 3.42, vi (ok), 08:16, 27/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Простая задача?
    > As of 2003, it supports approximately 50 file formats for some 25
    > processor architectures.
    > Its key services include handling byte order differences, such as between a
    > little-endian host and big-endian target, correct conversion between 32-bit and 64-bit
    > data, and details of address arithmetic specified by relocation entries.
    > Я так понимаю, что ты каждый день решаешь такие простые задачи, ну
    > покажи нам свою сложную.

    Нееет, только не в понедельник с утра ;)

     

  • 1.28, all_glory_to_the_hypnotoad (ok), 18:22, 26/10/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –11 +/
    > В популярной утилите strings, входящей в состав пакета GNU binutils

    O_o первый раз о такой слышу

     
     
  • 2.37, Led (ok), 01:00, 27/10/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > O_o первый раз о такой слышу

    А таблицу умножения уже осилил?

     
  • 2.38, Куяврег (?), 01:42, 27/10/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    йуный аптгетчик?
     
  • 2.47, linvinus (?), 10:42, 27/10/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вы просто ещё её не проходили,чтобы понять что возвращает strings, сначала изучают букварь
     

  • 1.29, Anonymus (?), 18:53, 26/10/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ждём уязвимостей в hexdump?
     
     
  • 2.32, Аноним (-), 21:13, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ждём раскрытия уязвимостей в hexdump.
     
  • 2.46, Аноним (-), 09:57, 27/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Главное чтобы не в cat. Это будет вообще уже...
     
  • 2.50, vitalif (ok), 15:29, 27/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ждём уязвимостей в /dev/null!
     
     
  • 3.51, Аноним (-), 15:35, 27/10/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кстати да... В /dev/null чего только не копируют, если повесить на нем выдергиватель приватной инфы, то можно много чего насобирать. :)
     

  • 1.33, Аноним (-), 21:16, 26/10/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Жёлтая пресса так любит делать из мухи слона... :)
     
     
  • 2.35, Ordu (ok), 22:58, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Да ладно вам, весьма любопытно наблюдать за реакцией т.н. "сообщества".
     
  • 2.36, Аноним (-), 23:14, 26/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Просто раньше желтая пресса знать не знала про то, как софт разрабатывается, а потом GitHub пропиарил багтрекеры и СКВ, и теперь журналисты каждый security bug оборачивают в шпионские игры АНБ.
     
     
  • 3.52, Аноним (-), 16:33, 27/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    ну шутки шутками а б-во хотсеров соурсфорджа были замечены в модицификации бинарей, да и сам оный - не младенец. хотя с голой ж его как cnet не ловили конечно и прочих.
     

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



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

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