Pull to refresh
13
0
Send message

Новая техника атак на основе Meltdown. Использование спекулятивных инструкций для детектирования виртуализации

Reading time4 min
Views9.9K
Атака Meltdown открыла новый класс атак на процессоры, использующий архитектурные состояния для передачи информации. Но спекулятивное исполнение, которое было впервые применено для атаки в Meltdown, позволяет не только выполнить код со снятием ограничений, но и узнать определенные детали работы процессора. Мы нашли новый способ реализации атаки с использованием архитектурных состояний. Он позволяет детектировать виртуализацию, опираясь на то, как процессор выбирает, отправлять инструкции на спекулятивное исполнение или нет. Мы сообщили о данном способе в Intel, и 21 мая 2018 года было выпущено оповещение об уязвимостях «Q2 2018 Speculative Execution Side Channel Update», в котором присутствует наша уязвимость CVE-2018-3640 или Spectre Variant 3a.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments12

Как на самом деле работает протокол Биткоин

Reading time28 min
Views209K
(Замечательное объяснение принципов работы сети Bitcoin авторства Michael Nielsen. Много текста, немного картинок. Обо всех корявостях перевода — в личку, буду исправлять по мере обнаружения)

Много тысяч статей было написано для того, чтобы объяснить Биткоин — онлайн, одноранговую (p2p) валюту. Большинство из этих статей поверхностно рассказывают суть криптографического протокола, опуская многие детали. Даже те статьи, которые «копают» глубже, часто замалчивают важные моменты. Моя цель в этой публикации — объяснить основные идеи, лежащие в протоколе Биткоин в ясной, легкодоступной форме. Мы начнем с простых принципов, далее пойдем к широкому теоретическому пониманию, как работает протокол, а затем копнем глубже, рассматривая сырые (raw) данные в транзакции Биткоин.
Читать дальше →
Total votes 70: ↑64 and ↓6+58
Comments18

Патчим процессы в Linux на лету при помощи GDB

Reading time11 min
Views15K
Техники перехвата функций в Linux хорошо известны и описаны в интернете. Наиболее простой метод заключается в написании динамической библиотеки с «функциями-клонами» и использовании механизма LD_PRELOAD для переопределения таблицы импорта на этапе загрузки процесса.

Недостаток LD_PRELOAD в том что необходимо контролировать запуск процесса. Для перехвата функций в уже работающем процессе или функций отсутствующих в таблице импорта можно использовать «сплайсинг» — запись команды перехода на перехватчик в начало перехватываемой функции.

Также известно, что в Python имеется модуль ctypes позволяющий взаимодействовать с данными и функциями языка Си (т.е. большим числом динамических библиотек имеющих Си интерфейс). Таким образом ничто не мешает перехватить функцию процесса и направить её в Python метод обёрнутый в С-callback с помощью ctypes.
Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments6

Меня попросили взломать программу на собеседовании. Часть 2

Reading time10 min
Views70K
Это перевод второй части публикации «Меня попросили взломать программу на собеседовании». Оригинальный текст можно найти здесь.

Предисловие


Привет, ребята. Если вы не знаете, что означает «Часть 2», пожалуйста прочитайте Часть 1.
Для начала я хотел бы поблагодарить всех прочитавших первую часть, поскольку в итоге я получил массу отличных отзыв.

Так же я бы хотел устранить некоторые недопонимания:
  1. Я более не работаю на данную компанию, я переехал в Барселону;
  2. Я проходил данное интервью почти год назад;
  3. Программы я взламывал в облаке ($5 тариф, да, вы угадали компанию), поэтому я не считаю, что использование root@'a является проблемой — я могу пересоздать новую среду за пару секунд. В итоге я все же переключился на пользователя eren@, так как gdb не принимал рутовые инит файлы.
  4. Не забудьте прочитать окончание статьи — вам обязательно понравится!

Поехали


На этот раз мы будем работать не с дверью, а с ядерной ракетой.
Читать дальше →
Total votes 83: ↑71 and ↓12+59
Comments38

CVE-2014-6271, CVE-2014-7169: удалённое выполнение кода в Bash

Reading time1 min
Views56K
image
Сегодня были опубликованы детали об уязвимости в Bash.
Вкратце, Bash позволяет экспортировать функции как переменные окружения:

$ myfunc() { echo "Hello"; }
$ export -f myfunc
$ env | grep -A1 ^myfunc
myfunc=() {  echo "Hello"
}


Уязвимость состоит в том, что если после тела функции (после последнего символа "}") добавить ещё какую-нибудь команду, и экспортировать её — она будет выполнена при вызове дочернего интерпретатора:
Читать дальше →
Total votes 78: ↑77 and ↓1+76
Comments64

NSA ищет новых сотрудников, сообщив об этом зашифрованным твитом

Reading time2 min
Views33K


Об NSA на Хабре писали много, а отношение как частных лиц так и корпораций к этой организации — самое неоднозначное. Скандал, связанный с NSA, не закончился до сих пор, поскольку всплывают все новые факты, свидетельствующие о том, что NSA имеет/имела доступы едва ли не к любой информации в компьютерных сетях.

Тем не менее, организация функционирует, и закрывать ее никто не собирается. Более того, NSA планирует нанять новых сотрудников. Об этом свидетельствует твит, опубликованный вчера в официальном твиттер-аккаунте агентства.

Читать дальше →
Total votes 59: ↑49 and ↓10+39
Comments20

Уязвимость в ядре Linux, позволяющая получить локальный root

Reading time1 min
Views58K

Уязвимость позволяет локальному пользователю повысить привилегии до root.
Уязвимые версии ядра c 2.6.31-rc3 по 3.15-rc5.
CVE-2014-0196

Проблема вызвана ошибкой в функции n_tty_write (drivers/tty/n_tty.c), в которой некорректно обрабатывалась ситуация доступа к виртуальному терминалу при использовании флагов «LECHO & !OPOST», что позволяло пользователю инициировать повреждение областей памяти ядра.

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

Эксплоит работает только на ядрах >= v3.14-rc1, т.к. в нем добавили:
tty: Halve flip buffer GFP_ATOMIC memory consumption

git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=acc0f67f307f52f7aec1cffdc40a786c15dd21d9
На который опирается эксплоит.
Читать дальше →
Total votes 94: ↑89 and ↓5+84
Comments52

Алгоритм решения задачи о рюкзаке ( версия 2, исправленная)

Reading time5 min
Views131K
Ниже приведен алгоритм точного решения целочисленной задачи о рюкзаке. Предлагаемый алгоритм требует меньше вычислительных ресурсов и возможно несколько проще алгоритма динамического программирования (ДП).

Причина побудившая автора к публикации


Первая версия описания алгоритма было послана мною в институт математики им. С. Л. Соболева Сибирского отделения РАН, откуда был прислан ответ что указанный алгоритм известен давно. Цитирую:
Одно из его первых упоминаний в книге Кереллера Nemhauser, Ullman, Discrete dynamic programming and capital allocation, Management Science, 15 p. 494-505, 1969.
Тем не менее я решил ознакомить сообщество с алгоритмом, т.к. в известных мне учебниках по дискретной математике я его не обнаружил (возможно плохо искал). В первой версии алгоритма была ошибка, указанная мне пользователем wataru. За это ему большое спасибо. Я постарался эту ошибку устранить. До алгоритма я дошел самостоятельно, так что надеюсь ничьих прав не нарушаю. Возможно кому нибудь описание будет интересно и пригодится.
Читать дальше →
Total votes 65: ↑48 and ↓17+31
Comments32

Information

Rating
Does not participate
Works in
Registered
Activity