В популярной утилите strings, входящей в состав пакета GNU binutils и используемой для выделения из файла строковых данных, выявлена (http://lcamtuf.blogspot.ru/2014/10/psa-dont-run-strings-on-u... опасная уязвимость, которая может привести к выполнению кода при открытии специально оформленного файла в формате ELF. Проблема заключается в том, что по умолчанию для исполняемых файлов в strings помимо обычного алгоритма выделения строк используются функции библиотеки libbfd (https://en.wikipedia.org/wiki/Binary_File_Descriptor_library) (данное поведение отключается при указании опции "-a"), ошибка в коде разбора заголовков формата ELF в которой приводит к переполнению буфера.
Библиотека libbfd также используется в других утилитах, в том числе в objdump, gdb, nm, stringme и readelf, но утилита strings более популярна и обычно первым делом используется исследователями безопасности при анализе содержимого тех или иных файлов, загруженных извне. Уязвимости в strings никто не ожидал, так как считается, что strings выполняет простую операцию фильтрации печатных символов, в которой маловероятно возникновение ошибок, способных привести к уязвимостям. При этом мало кто знает, что при разборе объектных файлов, вариант утилиты strings из пакета GNU binutils привлекает внешнюю библиотеку libbfd для определения исполняемого файла и разбора его заголовков.
Пример файла, при обработки которого происходит крах можно загрузить здесь (http://lcamtuf.coredump.cx/strings-bfd-badptr). По предварительной оценке (http://openwall.com/lists/oss-security/2014/10/24/10) уязвимость вполне пригодна для эксплуатации и в скором времени можно ожидать создания рабочего эксплоита. Так как, вероятно, что проблемы в libbfd не ограничиваются одной уязвимостью, разработчикам дистрибутивов рекомендуется перейти к включению по умолчанию опции "-a" в утилите strings.
За появлением патча с устранением проблемы можно проследить на данной странице (https://sourceware.org/bugzilla/show_bug.cgi?id=17510) (сообщается, что выпущенное в августе исправление (https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=bd... устраняет проблему, но данная информация ещё не подтверждена). Обновления пакетов для дистрибутивов пока не выпущены, идентификатор CVE не присвоен. Интересно, что ранее уже публиковались сообщения об ошибках, связанных с данной проблемой, например, пользователи Gentoo обратили внимание (https://bugs.gentoo.org/show_bug.cgi?id=91398) на крахи утилит из состава binutils ещё в 2005 году. Аналогичные проблемы с разбором ELF-файлов на днях также обнаружены (https://security-tracker.debian.org/tracker/CVE-2014-3710) в коде readelf.c из состава библиотеки libmagic, а также в основанных на данной библиотеке пакете "file (https://github.com/file/file/commit/39c7ac1106be844a5296d3eb... и в PHP-модуле (http://git.php.net/?p=php-src.git;a=commitdiff;h=1803228) "fileinfo (https://bugs.php.net/bug.php?id=68283)".URL: http://openwall.com/lists/oss-security/2014/10/23/4
Новость: http://www.opennet.me/opennews/art.shtml?num=40931
Хороший способ защиты от отладки:$ 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
Ошибка сегментирования
Большинство отладчиков, как я понял, использует подмену символов стандартных либ и вставки кода, что в общем случае наивно. Нормальная отладка должна быть через ядро, что-то вроде виртуализации, так чтобы бинарь даже не заметил присутствия дебаггера.
Все вы не правильно поняли, подавляющее большинство отладчкиков опираются на предоставляемые процессором возможности отлаживать себя.Можете начать изучение отсюда:
man int3
Необходимо ли владеть исходником куска проприетари, чтобы это вставить, причём так, чтобы проприетарь не догадалась?
Иногда уровень деградации просто поражает. Но на вопрос отвечу, нет не нужно. Более того, для свободного софта это тоже не вставляется в исходный код.
$ 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)
ну-ну
> strings-bfd-badptr: Нет такого файла или каталога.Очевидно, Вы не поняли.
Ха-ха-ха, юный комментатор опростоволосился.
Расстраивают опять GNU. Вроде простая задача, но и тут нашли проблему.
> Расстраивают опять GNU. Вроде простая задача, но и тут нашли проблему.Да нет же, анонимов гораздо больше, чем три GNU ;)
1. Сделай лучше. Код же открыт, никто не запрещает изучить его и поправить все проблемы.
2. В очередной раз нам предоставлен убедительный пример того, что не стоит ничего хоть сколь-нибудь неведомого запускать из под root'а. (даже man-страницы поставленные с не полностью доверенным софтом запускать из под root'а *опасно*)
> Расстраивают опять GNU. Вроде простая задача, но и тут нашли проблему.Потому что горе от ума. За каким буем они полезли в хидеры? Ж...а просила приключений? Ок, приключения нашлись!
Правильно! Не ошибаются те, кто ничего не делает.
Я безошибочно на диване лежу - и никаких вам глюков, уязвимостей и прочих.
Берите пример.
Лезть куда-то надо понимая что делать и как. А оценивая че твориться с ядром и вообще разработкой под линь - большинство писак под линукс не понимает изза лени, нежелания изучения или отсутствия документации, потому как предыдущий "ПИСАТЕЛЬ" не удосужился ее написать, изобретает свой велосипед - к чему и приводит.
А не ошибается только тот кто ДЕЛАЕТ аккуртано, а не тяп-ляп.
И это мы уже обсуждали.
я тебя сейчас расстрою, но мир так устроен, что никто не понимает до конца как он действует, значит, надо всем идти лежать на диван, потому-что вдруг чего случится! ай-яй-яй!
> Лезть куда-то надо понимая что делать и как. А оценивая че твориться
> с ядром и вообще разработкой под линь"Демократия - хреновый режим. Проблема в том что лучше неё все равно ничего нет!" (С) У. Черчилль (если не врут).
Так вот сынок - линукс хреновая штука ... :)> А не ошибается только тот кто ДЕЛАЕТ аккуртано, а не тяп-ляп.
А теперь сядь. Или лучше ляжь. Ошибаются даже такие :)
> И это мы уже обсуждали.
Со своим психологом? :)
>> Лезть куда-то надо понимая что делать и как. А оценивая че твориться
>> с ядром и вообще разработкой под линь
> "Демократия - хреновый режим. Проблема в том что лучше неё все равно
> ничего нет!" (С) У. Черчилль (если не врут).
> Так вот сынок - линукс хреновая штука ... :)Не смотря на то, что это сказал Аноним, не могу не согласиться.
И как, у каждой демократии свои скелеты в шкафу, так и каждого линукса свои дыры в коде.
>>> Лезть куда-то надо понимая что делать и как. А оценивая че твориться
>>> с ядром и вообще разработкой под линь
>> "Демократия - хреновый режим. Проблема в том что лучше неё все равно
>> ничего нет!" (С) У. Черчилль (если не врут).
>> Так вот сынок - линукс хреновая штука ... :)
> Не смотря на то, что это сказал Аноним, не могу не согласиться.
> И как, у каждой демократии свои скелеты в шкафу, так и каждого
> линукса свои дыры в коде.Та щас же каникулы!
>Ок, приключения нашлись!Может быть, что приключения их сами нашли.
Нда, очередной ответ на вопрос, а хер ли ж софт столько места жрёт,
и подтверждение истины, хочешь, чтобы работало хорошо - напиши сам.
Ибо некоторые программисты максимум пользы приносят только будучи привязаны к стулу вместе с руками, но тем не менее им дают комиттить патчи.
> Нда, очередной ответ на вопрос, а хер ли ж софт столько места жрёт,Ну ты и деб^W - не не дебиан, ты балбес мягко говоря :)"А в Киеве - дядька!"
> и подтверждение истины, хочешь, чтобы работало хорошо - напиши сам.
Где урл на GitHUb с вашей нетленкой? Мы уже в очереди, чтобы вкусить мудрости безглючного кода :)
> Ибо некоторые программисты максимум пользы приносят только будучи
> привязаны к стулу вместе с руками,А ... то есть ты пишешь из горяшего^W из своей психушки?
> но тем не менее им дают комиттить патчи.
наврали вам санитары то! :) Вам дают постить на опеннет, коммиты - это о другом :)
> наврали вам санитары то! :) Вам дают постить на опеннетВам тоже, но санитар-батыр порой таки приходит.
Намёк понял :)
Но я всё таки надеюсь что я с той стороны стекла, где сидят доктора и студенточки :)
хидеры? Гы :D
Поражает как же люди до сих пор не могут выучить английский, чтобы хоть _читать_ уметь правильно, не говоря о том чтобы произносить :(
Простая задача?
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.
Я так понимаю, что ты каждый день решаешь такие простые задачи, ну покажи нам свою сложную.
> Простая задача?
> 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.
> Я так понимаю, что ты каждый день решаешь такие простые задачи, ну
> покажи нам свою сложную.Нееет, только не в понедельник с утра ;)
> В популярной утилите strings, входящей в состав пакета GNU binutilsO_o первый раз о такой слышу
> O_o первый раз о такой слышуА таблицу умножения уже осилил?
йуный аптгетчик?
вы просто ещё её не проходили,чтобы понять что возвращает strings, сначала изучают букварь
Ждём уязвимостей в hexdump?
Ждём раскрытия уязвимостей в hexdump.
Главное чтобы не в cat. Это будет вообще уже...
Ждём уязвимостей в /dev/null!
Кстати да... В /dev/null чего только не копируют, если повесить на нем выдергиватель приватной инфы, то можно много чего насобирать. :)
Жёлтая пресса так любит делать из мухи слона... :)
Да ладно вам, весьма любопытно наблюдать за реакцией т.н. "сообщества".
Просто раньше желтая пресса знать не знала про то, как софт разрабатывается, а потом GitHub пропиарил багтрекеры и СКВ, и теперь журналисты каждый security bug оборачивают в шпионские игры АНБ.
ну шутки шутками а б-во хотсеров соурсфорджа были замечены в модицификации бинарей, да и сам оный - не младенец. хотя с голой ж его как cnet не ловили конечно и прочих.