1.7, бедный буратино (ok), 14:08, 21/08/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
короче, 6.2 будет суперзащищённой, но половина портов работать не будет :)
ещё после перехода на clang не все порты работоспособны, а тут ещё и это.
| |
1.9, Аноним (-), 15:13, 21/08/2017 [ответить] [﹢﹢﹢] [ · · · ]
| +5 +/– |
> "xorl %rsp,(%rsp)" для x86_64 или "xorl %esp,(%rsp)" для 32-разрядных систем x8
Здесь какой-то берд написан. XORL - 32-битная инструкция, она не может применяться к %rsp. Адресация с ипользование 64-битного %rsp на 32-битных системах тоже сомнительна.
| |
|
|
3.36, pavlinux (ok), 17:44, 23/08/2017 [^] [^^] [^^^] [ответить]
| +3 +/– |
Сам-то смотрел?
+#ifdef _KERNEL /* 32 bit */
+#define RETGUARD_CFI .cfi_escape 0x16, 0x10, 0x0d, 0x09, 0xf8, 0x22, 0x12, \
+ 0x06, 0x16, 0x0c, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x27
+#define RETGUARD_START RETGUARD_CFI; xorl %esp,(%rsp)
+#define RETGUARD_END xorl %esp,(%rsp)
+#else
+#define RETGUARD_CFI .cfi_escape 0x16, 0x10, 0x06, 0x09, 0xf8, 0x22, 0x12, \
+ 0x06, 0x27
+#define RETGUARD_START RETGUARD_CFI; xorq %rsp,(%rsp)
+#define RETGUARD_END xorq %rsp,(%rsp)
+#endif
| |
|
4.42, pavlinux (ok), 01:14, 24/08/2017 [^] [^^] [^^^] [ответить]
| +/– |
> +#ifdef _KERNEL /* 32 bit */
> +#define RETGUARD_START RETGUARD_CFI; xorl %esp,(%rsp)
> +#define RETGUARD_END xorl %esp,(%rsp)
Ну чаво, хацкеры, кто ответит, чо занах 32-бита и rsp ?
| |
|
5.45, pavlinux (ok), 04:17, 26/08/2017 [^] [^^] [^^^] [ответить]
| +/– |
>
>> +#ifdef _KERNEL /* 32 bit */
>> +#define RETGUARD_START RETGUARD_CFI; xorl %esp,(%rsp)
>> +#define RETGUARD_END xorl %esp,(%rsp)
>
> Ну чаво, хацкеры, кто ответит, чо занах 32-бита и rsp ?
Панятно.
Кароч это кусок для 32-битных бинарников работающих в 64-битной ОСи.
| |
|
|
|
|
1.11, Аноним (-), 15:27, 21/08/2017 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Да сделайте уже отдельный стек для данных и отдельный - для адресов возврата!
| |
|
2.13, Аноним (-), 16:29, 21/08/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Да сделайте уже отдельный стек для данных и отдельный - для адресов возврата!
Т.е. предлагаете сменить архитектуру процессора? "За чей счёт этот банкет? Кто оплачивать будет?" (С)
| |
|
|
|
|
6.20, A.Stahl (ok), 18:49, 21/08/2017 [^] [^^] [^^^] [ответить]
| +/– |
Не несите туда деньги! Они будут потрачены на БСД! А может и на что ещё похуже...
| |
|
|
|
|
2.38, pavlinux (ok), 18:11, 23/08/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Да сделайте уже отдельный стек для данных и отдельный - для адресов возврата!
И зашифровать.
| |
|
1.16, Kodir (ok), 17:16, 21/08/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –4 +/– |
Ф*у*фло, а не защита. Это далеко не самая проблемная часть кода! Первый эшелон - это бестолковейшие функции приёма данных (scanf, recv, etc) - там вся жесть, переполнения, переходы на код и т.п. Потом идут крuв@рукие системные функции, которые как кисейные барышни - верят любой ш*н%яге, которую ей передают и не проверяют. ВОТ ЭТО всё надо категорически разгромить (через написание новой ОС), а потом уже играть в "угадай, кто тебя вызвал".
| |
|
|
3.47, Аноним (-), 06:58, 29/08/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Денис, это ты?
Написано "Кирилл Муковников". Приятно когда ламеры подписываются чтобы все знали кто это.
| |
|
2.21, ZloySergant (ok), 20:20, 21/08/2017 [^] [^^] [^^^] [ответить]
| +3 +/– |
>Первый эшелон - это бестолковейшие функции приёма данных (scanf, recv, etc) - там вся жесть, переполнения, переходы на код и т.п.
Первый эшелон - это "острое высказывание в рамках несодержательного комментария, проявляющее неуважение к собеседнику и его коллегам, не умеющим пользоваться низкоуровневыми функциями" . (точка)
| |
|
3.37, pavlinux (ok), 18:02, 23/08/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
>>Первый эшелон - это бестолковейшие функции приёма данных (scanf, recv, etc) - там вся жесть, переполнения, переходы на код и т.п.
> Первый эшелон - это "острое высказывание в рамках несодержательного комментария, проявляющее
> неуважение к собеседнику и его коллегам, не умеющим пользоваться низкоуровневыми функциями"
Да он сам-то не понимает, скопипастил то, что в интернетах начитался.
| |
|
|
1.22, Аноним (-), 20:36, 21/08/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Лучше бы криптозащиту от Дэна ввиди MAC для адресов возврата допилили до продакшна. Да и вообще не нужно, у интела есть технология control flow guard.
| |
|
2.35, Аноним (-), 00:58, 23/08/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Лучше бы криптозащиту от Дэна ввиди MAC для адресов возврата допилили до
> продакшна. Да и вообще не нужно, у интела есть технология control
> flow guard.
Control Flow Guard про другое, он не защищает от ROP — а retguard именно про это.
MAC для адресов возврата, если не ошибаюсь, дороговато выходит в плане потребления CPU...
| |
|
1.24, Baz (?), 21:03, 21/08/2017 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
на взлом защиты "Ретгард" надо первый эксплоит назвать "Данмер", "Аргонианин"...
| |
|
2.28, Аноним (-), 08:36, 22/08/2017 [^] [^^] [^^^] [ответить]
| +3 +/– |
Если эксплоит может выполнить любой код, то ему вся это свистопляска с гаджетами и вызовом чужого кода не нужна. Но обычно он имеет возможность только поменять указать для переброса управления, т.е. может выстроить цепочку вызовов, но не может произвольно выполнить определённые инструкции из-за noexec на стеке.
| |
|
|
4.33, Аноним84701 (ok), 14:12, 22/08/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Что мешает найти в коде инстукции pop... xor ... ret?
Зачем их искать? Их теперь встраивать будут.
Искать, как и раньше, можно <нужная инструкция/и, подготовка retaddr, ret>
А тут задумка, как я понимаю, как раз в том чтобы усложнить использование "штатных" ret (со всеми "гаджетами"), генерированных компилятором.
| |
|
5.48, Аноним (-), 07:03, 29/08/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Искать, как и раньше, можно <нужная инструкция/и, подготовка retaddr, ret>
Такая конструация обычно будет перед ret. Гаджет который сделает только ret - малополезен. В диком виде такое сочетание команд встречается не часто. Так что любителям гаджетов добавится долботни.
| |
|
4.39, pavlinux (ok), 18:13, 23/08/2017 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Что мешает найти в коде инстукции pop... xor ... ret?
Точка старта не известна. Cдвиг на 1 бит превратит xor в скажем в mul
| |
|
5.46, xor (??), 19:47, 27/08/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
Но если посмотреть патч - там не очень много вариантов инструкций получается. Если только получится реализовать базовую булевую операцию...
| |
5.49, Аноним (-), 07:04, 29/08/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Точка старта не известна. Cдвиг на 1 бит превратит xor в скажем в mul
Один _бит_? Как эксплойт позиционировать в памяти побитово, для начала?
| |
|
|
|
|
|