1.1, JL2001 (ok), 21:32, 09/11/2010 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
а почему нельзя весь код сделать запрещённым для записи после инициализации (загрузил модуль и замок на него) а на все данные - запрет на исполнение ?
| |
|
2.6, GG (?), 22:30, 09/11/2010 [^] [^^] [^^^] [ответить]
| +5 +/– |
видимо потому, что бывает надо что-нибудь позаписывать
бывает иногда
| |
|
3.34, JL2001 (ok), 13:15, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
> видимо потому, что бывает надо что-нибудь позаписывать
> бывает иногда
а что надо то позаписывать ? и почему позаписываемое требуется исполнять ??? это специально сделанная задняя калитка для хакеров ?
| |
|
2.9, demimurych (ok), 22:34, 09/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
если я ничего не забыл
из за языков высокого уровня компиляторы которых часто перемешивают области данных с областями кода. т.е. нет четкой разницы что обозначив эту страницу памяти только на чтение ты тем самым не поставишь только на чтение часть данных.
поправьте меня если я подзабыл.
| |
|
3.14, Аноним (-), 23:27, 09/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
если ты пытался указать на трамплины, то они только в стеке.
Остальные компиляторы уже давно не путают код и данные, особенно те которые с модификатором const или static.
| |
|
4.32, dq0s4y71 (??), 12:47, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
И я не помню чтобы путали. Си[++] всегда рассовывал код и данные с разными типами хранения по соответствующим сегментам. Не знаю насчет старых версий Паскаля, но сейчас он, вроде бы, делает так же. Может быть, бейсики какие-нибудь валят код и данные в одну кучу?
| |
|
|
2.29, Frank (ok), 08:27, 10/11/2010 [^] [^^] [^^^] [ответить]
| –1 +/– |
Мешает отсутствие поддержки такого запрета на уровне процессора для многих архитектур (линукс не ограничивается работой только с современными CPU с поддержкой NX-бита, да).
| |
|
3.33, JL2001 (ok), 13:14, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
NX-бит это "новость" конешно.. "The ARM architecture refers to the feature as XN for eXecute Never; it was introduced in ARM v6"
но со времён пентиумов (или даж 386, не помню) есть же это на x86 ???
http://fat-crocodile.narod.ru/protected/02_segments.html
Таблица 1. Формат дескриптора сегмента кода/данных.
3-й бит пятого байта Code/Data Если флаг установлен, дескриптор описывает сегмента кода, если сброшен – сегмент данных.
Свойства сегмента определяют его тип и правила использования (попытка использовать сегмент не по правилам обычно приводит к исключению #GP). Не вдаваясь в детали, можно выделить следующие типы сегментов:
* Сегмент кода (code segment). Допустимо исполнение, может быть разрешено чтение.
* Сегмент данных (data segment). Допустимо чтение, может быть разрешена запись.
используется в Глобальная таблица дескрипторов и заполняется при переходе в защищённый режим процессора, является одной из основ защищённого режима
можно же было для x86 почесаться, это же не один процессор и даже не несколько процессоров одной фирмы !
| |
|
4.36, dalco (ok), 13:59, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
Кабы не соврать, но NX бит, случаем, не с четвертых пней (Prescott(?)) пошел? Если так, то раритетных компов еще слишком много.
P.S. Мне так вспоминается, что поддержкой NX оффтопик во времена XP SP2 хвастаться начал. А это не так уж давно было.
| |
|
5.37, JL2001 (ok), 14:41, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
> Кабы не соврать, но NX бит, случаем, не с четвертых пней (Prescott(?))
> пошел? Если так, то раритетных компов еще слишком много.
> P.S. Мне так вспоминается, что поддержкой NX оффтопик во времена XP SP2
> хвастаться начал. А это не так уж давно было.
я скопипастил описание не NX-бита а механизм защиты памяти защищённого режима 386 процессоров (ну мб 486 или пентиумов), и работал я на 486 с 95 виндой...
почему сей механизм не используется на x86 компах ?
| |
|
6.39, Daemontux (ok), 16:39, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
>> Кабы не соврать, но NX бит, случаем, не с четвертых пней (Prescott(?))
>> пошел? Если так, то раритетных компов еще слишком много.
>> P.S. Мне так вспоминается, что поддержкой NX оффтопик во времена XP SP2
>> хвастаться начал. А это не так уж давно было.
> я скопипастил описание не NX-бита а механизм защиты памяти защищённого режима 386
> процессоров (ну мб 486 или пентиумов), и работал я на 486
> с 95 виндой...
> почему сей механизм не используется на x86 компах ?
в документации к pax и grsecurity все разжеванно
| |
|
7.43, JL2001 (ok), 22:55, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
>>> Кабы не соврать, но NX бит, случаем, не с четвертых пней (Prescott(?))
>>> пошел? Если так, то раритетных компов еще слишком много.
>>> P.S. Мне так вспоминается, что поддержкой NX оффтопик во времена XP SP2
>>> хвастаться начал. А это не так уж давно было.
>> я скопипастил описание не NX-бита а механизм защиты памяти защищённого режима 386
>> процессоров (ну мб 486 или пентиумов), и работал я на 486
>> с 95 виндой...
>> почему сей механизм не используется на x86 компах ?
> в документации к pax и grsecurity все разжеванно
можно ссылку ? боюсь я не смогу самостоятельно найти
| |
|
|
|
|
|
|
1.3, non anon (?), 21:39, 09/11/2010 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– |
Мило. Только почему-то не упоминается, в результате всего этого счастья в некоторых случаях ядро будет падать при загрузке.
>The reason the RO/NX patch from Siarhei Liakh is not upstream yet is rather mundane: it introduced regressions - it caused boot crashes on one of my testboxes.
Надеюсь, что эта инновация не пройдет в апстрим. Ну а в ubuntu она будет смотреться очень органично ;-)
| |
|
2.7, GG (?), 22:31, 09/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
врядли изза этого
просто пока пилили одно - отпилили что-то другое
так бывает
| |
|
|
4.17, Аноним (-), 01:23, 10/11/2010 [^] [^^] [^^^] [ответить]
| +2 +/– |
"But there is no fundamental reason why it shouldnt be upstream. We can push it
upstream if the crashes are resolved"
Там речь о конкретных багах.
| |
|
|
2.15, Аноним (-), 23:28, 09/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
> Мило. Только почему-то не упоминается, в результате всего этого счастья в некоторых
> случаях ядро будет падать при загрузке.
>>The reason the RO/NX patch from Siarhei Liakh is not upstream yet is rather mundane: it introduced regressions - it caused boot crashes on one of my testboxes.
> Надеюсь, что эта инновация не пройдет в апстрим. Ну а в ubuntu
> она будет смотреться очень органично ;-)
Ну а фигли - пытаются ставить NX bit на стек, а gcc туда сует трамплины.. вот и получаем бяку..
| |
|
3.16, Ананимуз (?), 23:59, 09/11/2010 [^] [^^] [^^^] [ответить]
| +1 +/– |
Тогда было бы логично, если бы бяка случалась чуть чаще, чем "on one of testboxes"
| |
3.19, Дима (??), 03:29, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
>Ну а фигли - пытаются ставить NX bit на стек, а gcc туда сует трамплины.. вот и получаем бяку..
Ещё пять лет назад были патчи на glibc, gcc и остальных, заменящие такой код.
| |
|
|
5.26, paxuser (ok), 07:03, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
Во-первых, трамплины можно эмулировать: http://pax.grsecurity.net/docs/emutramp.txt
Во-вторых, вложенные функции для Си *не* стандартизированы и крайне редко встречаются. Но даже при отсутствии эмуляции код с вложенными функциями можно в порядке исключения (!) запускать на исполняемом стеке - paxctl и аналоги в помощь.
| |
|
6.35, JL2001 (ok), 13:26, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
> Во-первых, трамплины можно эмулировать: http://pax.grsecurity.net/docs/emutramp.txt
> Во-вторых, вложенные функции для Си *не* стандартизированы и крайне редко встречаются.
> Но даже при отсутствии эмуляции код с вложенными функциями можно в
> порядке исключения (!) запускать на исполняемом стеке - paxctl и аналоги
> в помощь.
или я не понимаю что такое трамплины или вот им замена в x86
http://stfw.ru/page.php?id=9905
Команды передачи управления
JMP target Имеет пять форм, различающихся расстоянием назначения от текущего адреса, и способом задания целевого адреса. При работе в Windows используется в основном внутрисегментный переход (NEAR) в пределах 32-битного сегмента. Адрес перехода может задаваться непосредственно (в программе это метка) или косвенно, т.е. содержаться в ячейке памяти или регистре (JMP [EAX]).
тоесть можно осуществить переход по заданому в переменной (регистре) адресу, тоесть запись в сегмент кода не требуется !
| |
|
|
|
|
|
1.4, non anon (?), 21:41, 09/11/2010 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Вообще PaX печально знаменит тем, что падает по поводу и без.
Похоже, сотрудники Canonical решили защитить ядро по самой простой схеме: паникующее ядро нельзя взломать.
| |
|
2.20, paxuser (ok), 03:30, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
Унылый вброс. По делу: разработчики PaX и Grsecurity выпускают стабильные патчи на 2.6.32.х, а hardened-sources-2.6.32-rX в Hardened Gentoo проходят дополнительные этапы стабилизации (и могут использоваться в других дистрибутивах). Не скажу, что всё всегда гладко, но "падает по поводу и без" - явное преувеличение. Сам встречал панику только пару раз и только на этапе загрузки ядра. Если тестировать ядра перед запуском в продакшен, проблем практически нет.
| |
|
3.23, анон (?), 04:40, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
>По делу: разработчики PaX и Grsecurity выпускают стабильные патчи на 2.6.32.х, а hardened-sources-2.6.32-rX в Hardened Gentoo проходят дополнительные этапы стабилизации (и могут использоваться в других дистрибутивах).
То-то hardened-sources вечно замаскированы =)
| |
|
4.24, paxuser (ok), 05:06, 10/11/2010 [^] [^^] [^^^] [ответить]
| +1 +/– |
> То-то hardened-sources вечно замаскированы =)
В не-hardened профилях - конечно.
| |
|
|
2.40, Daemontux (ok), 16:45, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
> Вообще PaX печально знаменит тем, что падает по поводу и без.
> Похоже, сотрудники Canonical решили защитить ядро по самой простой схеме: паникующее ядро
> нельзя взломать.
pax то как раз не падает. Падают проги в которых активно используются "грязные хаки"
| |
|
1.10, Zenitur (?), 22:54, 09/11/2010 [ответить] [﹢﹢﹢] [ · · · ]
| –5 +/– |
сисадмин kernel.org и лидер Ubuntu Security Team? Ничего себе... Убунтоиды делают что-то полезное!
| |
|
2.18, Anixx (?), 03:28, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
I am a kernel.org admin, where I work on maintaining the mirror network for the Linux Kernel, as well as handling user accounts.
https://wiki.ubuntu.com/KeesCook
То есть, его задача - поддержка сервера kernel.org и управление учетными записями пользователей, а вы что подумали?
Еще он прославился переводом серверов Linux Foundation с Red Hat на Ubuntu.
| |
|
3.21, Viliar (ok), 03:36, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
Cуровый убунтоид, однако. Под шапкой таки спокойнее, чем без нее. Зима, вон, впереди :-)
| |
3.22, анон (?), 04:36, 10/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
>Еще он прославился переводом серверов Linux Foundation с Red Hat на Ubuntu.
kernel.org пока еще на федоре, так что всё хорошо.
А linux foundation нехай падает =)
| |
|
|
1.27, rm_ (ok), 07:40, 10/11/2010 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
А разве уже так не делается?
...
[ 0.675209] lo: Disabled Privacy Extensions
[ 0.675346] Mobile IPv6
[ 0.675349] NET: Registered protocol family 17
[ 0.675407] PM: Resume from disk failed.
[ 0.675418] registered taskstats version 1
[ 0.675598] rtc_cmos 00:03: setting system clock to 2010-11-10 04:33:07 UTC (
1289363587)
[ 0.675620] Initalizing network drop monitor service
[ 0.675656] Freeing unused kernel memory: 600k freed
>>> [ 0.675773] Write protecting the kernel read-only data: 6144k
[ 0.675897] Freeing unused kernel memory: 240k freed
[ 0.676015] Freeing unused kernel memory: 448k freed
[ 0.693243] udev[77]: starting version 163
[ 0.693392] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[ 0.742266] Floppy drive(s): fd0 is 1.44M
...
| |
|
2.30, Frank (ok), 08:33, 10/11/2010 [^] [^^] [^^^] [ответить]
| +2 +/– |
> А разве уже так не делается?
А читаем текст новостей по диагонали?
..._расширить_ области использования в ядре страниц памяти, переведенных в режим "только чтение"...
| |
|
1.28, i (??), 08:23, 10/11/2010 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
лучше бы перенесли не различные улучшения PaX и grsecurity, а все.
| |
1.42, Аноним (-), 20:51, 10/11/2010 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Я все-равно не понимаю, почему нельзя было изначально в ядре запретить писать в сегмент данных код и запускать код из сегмента данных. Такие ограничения поддерживал еще 80286!!
Трмаплины gcc для вложенных функций? Это единственная проблема?! Если да -- выжечь трамплины и приделать любой безопасный костыль.
Честно говоря не понимаю смысла NX-бита, если в 286 уже все было, только не на уровне страниц, а на уровне сегментов.
| |
|
2.50, Xaionaro (ok), 10:35, 13/11/2010 [^] [^^] [^^^] [ответить]
| +/– |
Припоминается одна ОС, у которой одной из основных задач при разработке ставилось организовать безопасную работу с ОЗУ. Всё разрабатывалась и разрабатывалась. А когда, наконец, было разработана, её потенциальный рынок давно завоевали другие ОС.
Я сейчас про "OS/2" :)
Однако вашу мысль я поддерживаю, за такое кол-во времени было бы весьма неплохо всё-таки успеть разобраться с подобными проблемами :)
| |
|
|