1.1, Имя (?), 19:49, 19/11/2012 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
хе-хе, обратная сторона jit
а способы защиты придумают?
| |
|
|
3.11, Аноним (-), 20:46, 19/11/2012 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Интересует другое - как запустить код с однобайтовым смещением?
Через баг в ядре. Если вы его найдете.
| |
|
4.29, Аноним (-), 00:34, 20/11/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Через баг в ядре. Если вы его найдете.
Почему "баг" - в единственном числе? Таких багов же куча. Сотни обнаружили, десятки - еще нет, тысячи - добавят в будущем.
| |
|
5.32, Аноним (-), 10:21, 20/11/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Почему "баг" - в единственном числе?
Потому что для эксплуатации хватит и одного.
| |
|
|
|
2.22, Anonim (??), 23:02, 19/11/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
Аппаратная защита за атакующими никогда не будет поспевать. Интел родит следущие процы только через год, а сабжевая технология уже бесполезна как и все предыдущие.
| |
|
1.4, Аноним (-), 20:13, 19/11/2012 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
только вот совсем забыли указать, как же осуществить "передачу управления с однобайтовым смещением".
теоретики, такие теоретики
| |
1.6, anonymous (??), 20:29, 19/11/2012 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
breakin news!
можно бинарные инструкции записать в строку char* и передать их как содержимое сетевого пакета или в функцию sprintf, и тогда если передать управление на смещение этих данных, они будут выполнены!
| |
|
2.8, Аноним (-), 20:32, 19/11/2012 [^] [^^] [^^^] [ответить]
| +4 +/– |
> breakin news!
> можно бинарные инструкции записать в строку char* и передать их как содержимое
> сетевого пакета или в функцию sprintf, и тогда если передать управление
> на смещение этих данных, они будут выполнены!
Вы понимаете что такое execution prevention в кернел спейсе от всего что в юзерспейсе?
| |
2.9, Аноним (-), 20:33, 19/11/2012 [^] [^^] [^^^] [ответить]
| +4 +/– |
не будут, так как будут записаны в noexec область c данными.
| |
|
1.10, Аноним (-), 20:46, 19/11/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
> При передаче управления c однобайтовым смещением
Epic cheat! Парни из интеля усиленно делят на ноль от такой наглости :)
| |
|
2.13, Аноним (-), 20:57, 19/11/2012 [^] [^^] [^^^] [ответить]
| +2 +/– |
А вас не смущает, что "mov $0xa8XXYYZZ, %eax" занимает 5 байт и следующая инструкция будет с пятибайтовым смещением или что указатель не обязательно должен быть чётным числом ? :-)
| |
|
3.15, Аноним (-), 21:07, 19/11/2012 [^] [^^] [^^^] [ответить]
| +3 +/– |
> А вас не смущает, что "mov $0xa8XXYYZZ, %eax" занимает 5 байт и
> следующая инструкция будет с пятибайтовым смещением или что указатель не
> обязательно должен быть чётным числом ? :-)
Тем не менее, можно вполне годно подогнать данные так чтобы выполнилось нечто осмысленное.
Это вы еще не видели просто прототип кода который запускается на трех напрочь разных архитектурах и выбрасывает в конце концов "свой" процессор на "свой" кусок кода. После того как я увидел это - я уже ничему не удивляюсь.
| |
|
4.18, mavriq_ (?), 21:37, 19/11/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Это вы еще не видели просто прототип кода который запускается на трех напрочь разных архитектурах и выбрасывает в конце концов "свой" процессор на "свой" кусок кода
и у вас пример есть? или хотя-бы ключевые слова по которым гуглить?
все-таки, допустим, arm-овский код довольно сильно отлиачется от x86 или mips
это конечно гипотетически возможно, но сильно слабо верится что есть реализация
Вообще - какие ТРИ разные архитектуры предполагаются
| |
|
5.24, pavlinux (ok), 00:03, 20/11/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
Древний пример, '84 году, под VAX, PDP и ещё кого-то
short main[] = {
277, 04735, -4129, 25, 0, 477, 1019, 0xbef, 0, 12800,
-113, 21119, 0x52d7, -1006, -7151, 0, 0x4bc, 020004,
14880, 10541, 2056, 04010, 4548, 3044, -6716, 0x9,
4407, 6, 5568, 1, -30460, 0, 0x9, 5570, 512, -30419,
0x7e82, 0760, 6, 0, 4, 02400, 15, 0, 4, 1280, 4, 0,
4, 0, 0, 0, 0x8, 0, 4, 0, ',', 0, 12, 0, 4, 0, '#',
0, 020, 0, 4, 0, 30, 0, 026, 0, 0x6176, 120, 25712,
'p', 072163, 'r', 29303, 29801, 'e'
};
| |
|
|
|
2.27, Аноним (-), 00:30, 20/11/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Epic cheat! Парни из интеля усиленно делят на ноль от такой наглости :)
Вообще-то, именно от такой наглости они и оборонялись. Но не прокатило.
| |
|
1.12, Аноним (-), 20:52, 19/11/2012 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
А что в ядре без этого мало кода, который хотелось бы запустить?
Зачем там shell-код? Кто-то запускает shell в ядре? Хотим, например, файл прочитать, а прав нет. Так передаём управление в код read на место после проверки прав. Всё.
| |
|
2.14, Аноним (-), 21:03, 19/11/2012 [^] [^^] [^^^] [ответить]
| +/– |
Что всё? Вот у вас /proc/jump, пишете в него адрес - ядро выполняет код по этому адресу, пускай даже SMEP не включен, покажите пример как прочитать файл?
Ну есть у вас адрес sys_read, "передали вы ему управление", аргументы ему пушкин скормит?
| |
|
3.16, Аноним (-), 21:09, 19/11/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Ну есть у вас адрес sys_read, "передали вы ему управление", аргументы ему
> пушкин скормит?
Можно перезаписать код какой-то процедуры своим кодом и сигануть на него :). Но даже и просто jump-ом куда попало можно наделать дел, да.
| |
|
4.17, Аноним (-), 21:12, 19/11/2012 [^] [^^] [^^^] [ответить]
| +3 +/– |
> перезаписать код какой-то процедуры своим кодом и сигануть на него :).
бинго, Ваш перезаписанный код находится ниже 0xbfffffff (читай в юзерспейсе), а тут внезапно SMEP. Что делать?
> просто jump-ом куда попало можно наделать дел
Просто kernel oops нафиг надо, повысить привилегии вот цель
| |
|
|
|
1.19, Васька (??), 22:03, 19/11/2012 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
а я то как дурак думал что все данные выравниваются по границам четверного слова.
| |
|
2.21, Аноним (-), 22:27, 19/11/2012 [^] [^^] [^^^] [ответить]
| +4 +/– |
> а я то как дурак думал что все данные выравниваются по границам четверного слова.
данные != исполняемые инструкции. Инструкции не выравниваются.
| |
|
1.20, Анонище (?), 22:11, 19/11/2012 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
Все эти ваши языки программирования... кто знает ассемблер, тот правит миром.
| |
|
2.25, Аноним (-), 00:07, 20/11/2012 [^] [^^] [^^^] [ответить]
| +5 +/– |
Кто знает ассемблер, тот знает ассемблер.
И если уж править, то не миром, а ограниченным одной архитектурой мирком.
| |
|
3.28, Аноним (-), 00:32, 20/11/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Кто знает ассемблер, тот знает ассемблер.
> И если уж править, то не миром, а ограниченным одной архитектурой мирком.
Обычное утверждение из серии "кто знает slackware, тот знает linux". Обычно, заявляющие это люди слабо знакомы с предметной областью, и поэтому полагают ее на редкость однообразной и примитивной.
| |
|
2.26, pavlinux (ok), 00:08, 20/11/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Все эти ваши языки программирования... кто знает ассемблер, тот правит миром.
А можно я сразу в опкодах писать буду?
| |
|
3.30, Аноним (-), 01:42, 20/11/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
55 89 e5 83 ed 04 68 6e 6f 0a 00 bb 01 00 00 00 89 e9 b8 04 00 00 00 89 c2 cd 80 89 e5 5d b8 01 00 00 00 31 db cd 80 c3
| |
|
|
|