Подтвердить что ты не робот

Удивительные уязвимости программного обеспечения или эксплойты?

Каковы наиболее странные/сложные/удивительные/глубоко скрытые программные уязвимости или эксплойты, которые вы когда-либо видели? Места в коде, где вы думали, что нет никакой угрозы, но были неправы?

[Чтобы уточнить: всем известны инъекции SQL, переполнение XSS или переполнение буфера - ошибки, которые часто возникают из-за небрежного кодирования. Но такие вещи, как Ken Thompson, скрытые трояны (Reflections on Trusting Trust: http://cm.bell-labs.com/who/ken/trust.html), недавняя уязвимость разыменования NULL в ядре Linux (http://isc.sans.org/diary.html?storyid=6820), или сложная атака на RNG с использованием отказа в обслуживании (http://news.ycombinator.com/item?id=639976) меня очень беспокоили.]

Обновление: Спасибо всем за ответы, они были великолепны. У меня был жесткий выбор. В конечном итоге я решил присудить награду боковым каналам/силовой мониторинг. Тем не менее, все ваши ответы в совокупности показывают, что я должен больше узнать о безопасности, поскольку это действительно глубокий вопрос:).

4b9b3361

Ответ 1

Мое любимое и самое впечатляющее, что я видел до сих пор, - это класс криптографических методов, известных как Side Channel Attacks.

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

Ответ 2

Все знают о SQL-инъекциях, но один из самых неожиданных эксплойтов, о котором я недавно слышал, заключался в том, что SQL-инъекции были введены в штрих-коды. Тестеры должны проверять ВСЕ входы для вредоносного SQL. Злоумышленник может появиться на мероприятии и нарушить регистрационную систему, изменить цены в магазинах и т.д. Я думаю, что просто хакерский код вообще удивил меня. Нет никакого фактора wow, просто что-то еще, о чем нужно знать.

EDIT: Только что обсуждалось, где была поднята идея ввода SQL-инъекции на магнитную карточную ленту. Я думаю, вы можете поместить его в любом месте, поэтому протестируйте любой вход, особенно от пользователей и этих устройств хранения данных.

Ответ 3

Я думаю, что относительно недавняя уязвимость Linux подходит для описания кода эксплойта, который кажется безопасным (хотя и немного туманным).

Это был кусок кода в ядре Linux:

struct sock *sk = tun->sk;  // initialize sk with tun->sk
…
if (!tun)
    return POLLERR;  // if tun is NULL return error

Из-за оптимизации GCC, оператор if и тело удаляются (что разумно для кода пользователя, а не для кода ядра). Благодаря некоторой ловкости человек смог вывести из этого эксплойт.

Резюме:

http://isc.sans.org/diary.html?storyid=6820

Опубликованный эксплойт:

http://lists.grok.org.uk/pipermail/full-disclosure/2009-July/069714.html

EDIT. Ниже приведено более подробное описание того, как этот код был использован. Это короткое чтение, но очень хорошее объяснение механизмов, используемых для эксплойта.

http://lwn.net/SubscriberLink/342330/f66e8ace8a572bcb/

Ответ 4

Классический эксплойт был взломан Кеном Томпсоном, чтобы дать ему корневой доступ к каждой системе Unix на Земле.

Назад, когда Bell Labs был единственным поставщиком Unix, они распространяли исходный код, поэтому каждая установка могла создавать и настраивать собственную ОС. Этот источник включал команду входа в систему Unix. Кен модифицировал компилятор C, чтобы узнать, компилирует ли он команду входа в систему, и если это так, добавьте начальную проверку пароля. Этот пароль был его собственным волшебным и предоставил корневой доступ.

Конечно, любой, кто читает источник компилятора C, увидит это и вытащит его. Итак, Кен снова модифицировал компилятор C, чтобы, если он компилировал компилятор C, он снова включил бы взлом входа.

Теперь приходит мысленная часть; Кен скомпилировал компилятор C с его взломанным компилятором, затем удалил все следы своего взлома, удалив его из источника, резервных копий, источника управления, всего. Он существовал только в скомпилированном двоичном файле, который был частью дистрибутива Unix.

Любой, кто получил эту Unix от Bell Labs, получил взломанный логин и компилятор C. Если бы они посмотрели на источник, это было безопасно. Если они перестроят ОС, взломанный компилятор взломал бы пересозданный компилятор, который повторно вложил бы взломанный код в команду входа.

Урок, который я беру из этого, заключается в том, что вы не можете гарантировать безопасность от любого статического анализа (проверка исходного кода, ОС, приложений).

Кен показал это в статье ACM под названием Размышления о доверии Trust.

Ответ 5

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

Через 2 дня, пытаясь разобраться, как это было сделано, и как вы могли обойти это, друг посетил друг. Используя инструмент операционной системы (щелчок и перетаскивание, чтобы максимизировать распределение памяти RMA), он ограничил доступную оперативную память для того, чтобы процесс работал только немного больше размера .exe. Затем он побежал. Сразу же после дешифрования он попытался выделить память, потерпел неудачу и разбился. Затем он сохранил дешифрованную программу из памяти. Общее время трещины: около 2 минут, используя только перетаскивание мышью и команду сохранения командной строки.

Я узнал из этого, что не стоит тратить слишком много времени и сил на защиту вашего программного обеспечения - если кто-то хочет взломать его, и, вероятно, они сделают это с помощью простого средства, которое вам никогда не приходило в голову.

(Отказ от ответственности: мы оба купили юридические копии этой программы и никогда не использовали какой-либо взломанный код. Это действительно было упражнение для интеллектуального программирования)

Ответ 6

Хорошо, это не программная уязвимость или эксплойт, но даже так:

" Van Eck Phreaking - это процесс подслушивания содержимого CRT и ЖК-дисплея путем обнаружения его электромагнитных излучений". (Из Википедии)

Просто... вау...

Ответ 7

Я читал об умном способе украсть историю вашего браузера только вчера: добавив JavaScript, который смотрит на цвет ваших ссылок (они меняют цвет для сайтов, которые вы посетили).

Это можно использовать для атаки сайтов, которые добавляют маркер безопасности URL (если этот токен не слишком длинный), просто попробуйте все возможные комбинации.

Ответ 8

Да, да, мы все знаем о SQL Injection - и все мы знаем, как защитить от него, верно?
Ваше приложение должно выполнять проверку ввода, вызов хранимых процедур и т.д. И т.д.

Но знаете ли вы, что в определенных ситуациях SQL-контрабанда может легко обойти все это?
Самое шокирующее в этом заключается в том, что это вызвано малоизвестной, в основном недокументированной "особенностью" в некоторых базах данных, фреймворках, объектах db и т.д. Короче говоря, база данных (или сантехника там) может сделать вас благосклонность счастливо - и молча - перевод какого-то незнакомого персонажа в какой-то другой! Например, символ Unicode U + CABC может стать цитатой (U + 0027), которую вы пытались заблокировать в своем приложении, но, к сожалению, БД решила создать и позволить злоумышленнику снова смонтировать свою атаку SQLi прямо через вашу защиту.

Да, я опубликовал связанную статью, но когда я изначально обнаружил это поведение, я был в шоке.

Ответ 10

Одна из наименее сложных атак, которые я когда-либо видел, была одной из самых эффективных. Тестер, которого я знал, работал над тестированием приложения VB6 под Win98. Приложение было создано для открытия в окне фиксированного размера. Тестер, будучи умным, создал ярлык для приложения и установил ярлык, чтобы открыть приложение максимально. Когда приложение открылось в гораздо большем размере, чем разработчик, когда-либо предназначенный, он обнаружил элемент управления данными, который обычно не был бы видимым. Ручным нажатием на элемент управления данными тестер смог перейти к записи, которую он не должен был просматривать, и изменить его...

Ответ 12

холодные атаки на загрузку - это, скорее, аппаратная атака, но тем не менее очень интересная и удивительная.

Они показали, что после перезагрузки вы можете прочитать содержимое обычной RAM. При охлаждении стружки до -50 ° C с помощью аэрозоля с консервированным воздухом (не жидкий азот или что-то в этом роде) они обнаружили, что менее 10% битов были перевернуты через 10 минут без питания (!)

Это серьезная атака на все программы шифрования диска. Они должны хранить ключ дешифрования в ОЗУ и, если вы можете перезагрузить компьютер, вы, вероятно, можете получить доступ к ключу. Вы можете сказать, что не хотите, чтобы люди перезагрузили вашу машину, но подумайте о похищенных ноутбуках в режиме ожидания. Они проснутся и представит экранную заставку с просьбой ввести пароль. В это время ключ шифрования диска находится в RAM = > перезагрузка позже, когда ключ может находиться в состоянии плохого парня...

У них есть видео и очень читаемый документ конференции на их домашняя страница.

Ответ 14

Кто не помнит Killer Poke (нетехническое объяснение): старый Commodore 64 имеет медленную видеопамять. Используя POKE, вы можете написать специальное значение для адреса в видеопамяти - это вызывает все виды вуду, не в последнюю очередь из которых меняется напряжение некоторых схем, что имеет счастливое следствие того, что экран больше обновляет быстро.

Когда Commodore обновил свое видеооборудование, та же самая команда poke заставляет напряжение перебирать все типы винтов и поджаривать оборудование. Эксплуатация программного обеспечения может нанести аппаратный ущерб. Высокий.

Ответ 15

Чрезвычайно простой способ связаться со своим веб-приложением: если приложение позволяет пользователям добавлять изображения в профили, сообщения или сообщения в блогах, злоумышленник может настроить URL-адрес изображения, например "/Account/LogOut" (или любой другой действительный локальный URL-адрес, вызывающий действия, которые мы не хотим). Если ему удастся опубликовать свой профиль/сообщение/сообщение "до главной страницы" - каждый пользователь будет выходить из системы сразу после входа в систему (браузер выполнит запрос te/Account/LogOut в контексте текущего пользователя для загрузки изображение), поэтому функциональность страницы будет сильно повреждена.

Ответ 16

Мои фавориты - это класс довольно специфических атак, известных как Format String Attack. Они используют теги форматирования, подобные printf, для перезаписи данных в стеке. Некоторые из них используют неясные токены, такие как% n, которые, хотя довольно редко встречаются, могут быть введены в код, если программист небрежен достаточно, чтобы позволить нефильтрованному входу достичь строки формата.

Хотя они, по-видимому, не отличаются от переполнения буфера, они несут дополнительную сложность: при переполнении буфера вы просто перезаписываете обратный адрес в стеке. С помощью форматирования String Attack вы должны тщательно адаптировать свою атаку, чтобы иметь возможность перенаправлять поток выполнения, не вызывая краха, поэтому они сложнее разрабатывать.

Еще одна интересная атака - ошибка off-by-one. Опять же, это нелегко использовать, но определенно выполнимо.

Ответ 17

Вот однострочная команда оболочки, которая выполняет эскалацию привилегий для OS X:

osascript -e 'tell app "ARDAgent" to do shell script "whoami"'

Это не так просто, как кажется, поскольку для доступа к оболочке пользователя требуется отдельный вектор атаки, но это действительно крутая полезная нагрузка.

Я не уверен, что это уже работает, но я помню, как это делалось на моем Mac в то время (с простой копией, вставкой), и он с радостью сообщил "root".

Здесь статья slashdot:

http://it.slashdot.org/article.pl?sid=08/06/18/1919224

Ответ 18

Подпрограмма запроса на межсайтовый поиск.

Я считал это одним из самых простых, но разрушительных. До тех пор, пока CSRF не прибудет на место происшествия, веб-разработчики предположили, или, скорее, доверенные браузеры для отправки запросов, генерируемых пользователем, но не более того. Классический пример смущенный депутат.

Ответ 19

Лучший из тех, что я видел до сих пор, - это комментарий mrand.c к пакетам Debian SSL, потому что очищение жаловалось на использование неинициализированных данных. Это не ошибка кода, а больше ошибок рефакторинга, она была введена специалистом, комментируя строку кода. Строка, которая была прокомментирована, была вызовом функции, которая была там, чтобы обеспечить энтропию для ключевых поколений, но поскольку она использовала неинициализированные данные для этого, жалуется valgrind.

В электронном письме сопровождающего был отправлен список рассылки SSL, в котором было бы интересно прокомментировать эту строку, поскольку все, что он делал, это добавление некоторых случайных данных, кто-то сказал, что это безопасно, и строка была прокомментирована, оставив все SSL ключ, сгенерированный библиотекой debian ssl, небезопасен.

Это продолжалось несколько лет и было обнаружено только по ошибке, когда Лучано Белло создал сотни ключей для проекта колледжа и заметил несколько ключевых столкновений.

Эти ошибки являются реальной угрозой, они продолжаются годами, и как вы проверяете, что PRNG действительно случайна? alt text http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/2000/300/2318/2318.strip.gif

Точная строка:

md_rand.c

MD_Update(&m,buf,j); /* purify complains */

Вы можете прочитать все об этой удивительной ошибке здесь: текст ссылки

Ответ 20

Месяц назад я был на французской конференции по безопасности ИТ (SSTIC), где парень объяснил, почему и как нельзя доверять текущей доверенной вычислительной архитектуре. Как? Он показал нам "acpi backdoor", который дал ему uid 0 (root privs) после отсоединения/повторного подключения пару раз к электрическому кабелю его ноутбука. Можно прочитать бумагу и слайды (на французском, но я думаю, что поиск google на loic duflot + acpi должен дать некоторые результаты на английском языке): http://actes.sstic.org/SSTIC09/ACPI_et_routine_de_traitement_de_la_SMI/

Ответ 21

Несколько лет назад студент PhD в VU в Амстердаме придумал вирусы для RFID-меток: http://www.rfidvirus.org/

Ответ 22

Еще один неожиданный и недавний эксплойт - Clickjacking, что еще раз показывает неадекватность нашей текущей модели того, что такое веб-браузер и должно быть. Легко обойти большинство средств защиты от XSS, CSRF и т.д., А также позволяет злоумышленнику "красть" контроль над вашим кликом и неправильно направлять их в определенное место на другом веб-сайте - например, кнопку "ОК" на странице "Трансфертные фонды" на вашем сайте банка или в диалоговом окне "Параметры Flash", позволяющее злоумышленнику ПРОСМОТРЕТЬ ВАШ WEBCAM БЕЗ ВАШИХ ЗНАНИЙ!
Шокирующая и блестящая...

Ответ 23

Интересно, все время, не один? В эти годы "Не может быть реальным... но ничего себе" было загрязнение параметров и обнюхивать вашу историю без использования JavaScript.

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

Мне нравится.

И это нелегко смягчить, не нарушая нескольких вещей. На самом деле я здесь неправ, вы можете помешать "невидимым" iframe в браузере. Не знаю, действительно ли кто-то хочет этого.

Ответ 25

Прочитайте это, это взорвет ваш ум (это, безусловно, взорвало мой разум!).

http://news.ycombinator.com/item?id=639976

Один хакер сломал сайт "Hacker News", используя случайное генерирование файлов cookie на самом деле не случайно. Комментарий к той же теме дает отличное описание для взлома,

Спасибо dfranke. Все эти годы, когда я думал об истинном хакере, это то, что я изобразил в конце мой разум - материал достаточно сложный для мне взять мою статистику и вкладыш Алгебра. Каждый другой веб-хак попытка за последнее десятилетие XSS, плохие пароли и глупая форма вопросы подачи. Честно говоря, я отказавшись от существования истинного белых хакеров до этого поста. Головные уборы к вам сэр.

Похвала хакера:

Участники хакеров, обратите внимание. Вот как вы решаете проблему! dfranke - это Пандора, крыса в лабиринте, Шерлок Холмс, генерал Шерман, Уильям Рэндольф Херст, а твой отец все завернутый в один.

Как Пандора, ему так любопытно, что он чтобы проверить это.

Как крыса в лабиринте, он продолжает идти ищет четкий путь.

Как и Шерлок Холмс, он применяет логику для определения следующего шага.

Как и генерал Шерман, он держит поход, строительные инструменты по пути так как он им нужен.

Как и Уильям Рэндольф Херст, он определяет ландшафт. ( "Вы предоставляете картины, я обеспечу войну".) "поэтому я решил более активную подход: крушить его!" (веселый)

И, как и любой родитель, он не ушел пока не ходил ребенок.

Спасибо, Даниэль. Я надеюсь, что вы нашел способ направить этот талант в ваша дневная работа.

Ответ 26

Уязвимость Hyper-Threading:

Этот недостаток позволяет получить локальную информацию раскрытие, включая непривилегированный пользователь, чтобы украсть RSA закрытый ключ, используемый на одном и том же машина.

Ответ 27

Не совсем программное обеспечение, но я уверен, что он где-то играет.

Недавно было обнаружено, что вы можете перехватывать и декодировать электромагнитное излучение, излучаемое клавишами all, а не только беспроводные варианты. Это можно использовать для создания удаленного кейлоггера.

http://lasecwww.epfl.ch/keyboard/

Ответ 28

Второе издание Справочник Shellcoder: обнаружение и использование дыр в безопасности довольно интересно:

Проверяет, откуда возникают дыры в безопасности, как их обнаружить, как хакеры эксплуатируют их и ежедневно контролируют системы, и, самое главное, как закрыть эти дыры в безопасности, чтобы они никогда не возникали снова.

Google Books

Ответ 29

LWN.net опубликовал сообщение о эксплойте Cheddar Bay с помощью нулевых указателей, что само по себе не является опасным, но с помощью оптимизации кода gcc он может выполнять нежелательный код, даже если вы настроили SElinux.

Кроме того, использование javascript inejction в веб-страницах с помощью mitm-атак для создания кейлоггера (onkey (нажмите/вверх/вниз) и сообщение в URL-адрес довольно из коробки, думаю, думаю.