The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD, opennews (??), 16-Фев-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


73. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  –2 +/
Сообщение от Аноним (68), 18-Фев-20, 09:50 
> ... OpenBSD только "W^X part one". ...

Спасибо за расширенный ответ.

Неизыблемое правило DAC - все исполняемое не должно изменятся, а изменяемое НИКОГДА не должно исполнятся.

Подсистема гарантирующая целостность ОС должна следить за неизменностью, как запускаемого кода с диска, так и исполняемого в оперативной памяти - незыблемое правило Integrity.

Стандарты, инструкции, которые противоречат этим правилам печатаете на мягкой бумаге и храните в туалете, может кому пригодятся.

JIT - в принципе не нужен. Вся оптимизация двоичного кода должна проводится в момент компиляции. Мне, пользователю Gentoo, использования JIT не даст глобалальный прирост производительности, а безопасность уменьшит точно. JIT - отрава безопасности UNIX, которую специально внедряют, и подгоняют под ее использование стандарты. Тео зря пошел на компромисс с пропогандистами JIT разрешив ранее выделенные, для изменения, страницы памяти переводить в режим исполнения. Пользователи JIT розменивают свою безопасность на мнимую производительность. Надо производительность - пересобери все с оптимизацией под свой процессор.

Безопасность ОС, особенно фундаментальная: DAC, MAC, Integrity, ... должна быть гарантирована! Гарантировать ее можно только на уровне аппаратном или ядра ОС. Если оставить дыры и переложить ответственность за безопасность на прикладной софт гарантии безопасности теряются. Дыры будут использованы вирями. А программисты прикладного софта не будут следить за безопасностью у них совсем другие интересы.

> W^X (write xor execute) is the name of an implementation specifically in OpenBSD. One might therefor think that OpenBSD would meet this SFR, however it does not, as I will demonstrate below.

https://blog.acumensecurity.net/2016/04/21/fpt_wx_ext-1-a-ru.../

Ответить | Правка | Наверх | Cообщить модератору

77. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +2 +/
Сообщение от анонн (ok), 18-Фев-20, 13:27 
> Подсистема гарантирующая целостность ОС должна следить за неизменностью, как запускаемого кода с диска, так и исполняемого в оперативной памяти - незыблемое правило Integrity.

...
>  Пользователи JIT розменивают свою безопасность на мнимую производительность. Надо производительность - пересобери все с оптимизацией под свой процессор.
> Безопасность ОС, особенно фундаментальная: DAC, MAC, Integrity, ... должна быть гарантирована! Гарантировать ее

...
> пошел на компромисс с пропогандистами JIT разрешив ранее выделенные, для изменения,

...
> Мне, пользователю Gentoo,

Это которая с питоном и шеллскриптами, умеющими в eval и чьи интерпретаторы плевать хотели на W^X, т.к. они сам себе "execution unit"?

А так дышал, так дышал :(

Ответить | Правка | Наверх | Cообщить модератору

84. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (83), 19-Фев-20, 17:24 
> Это которая с питоном и шеллскриптами, умеющими в eval и чьи интерпретаторы плевать хотели на W^X, т.к. они сам себе "execution unit"?

Интерпретаторы, с питоном включительно, можно обрезать простым DAC. Обычному пользователю и большинству сервисов они не нужны.

groupadd shells
usermod -a -G shells portage
usermod -a -G shells ...
chown root:shells /usr/bin/python* /bin/bash ...
chmod o-rwx /usr/bin/python* /bin/bash ...

У сегодняшнего Gentoo есть недостатки, но решаемы.

Ответить | Правка | Наверх | Cообщить модератору

93. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +1 +/
Сообщение от Аноним (-), 20-Фев-20, 22:54 
> Интерпретаторы, с питоном включительно, можно обрезать простым DAC.

Угу, обрежь "пакетный менеджер" простым DAC. И чего он сможет потом? А ежели этот кус крапа заведует софтом в системе - то наверное и поиметь сможет, все что захочет, если захочет, не? На уровне базового анализа взаимодействий компонентов сугубо.

> groupadd shells
> usermod -a -G shells portage
> usermod -a -G shells ...
> chown root:shells /usr/bin/python* /bin/bash ...
> chmod o-rwx /usr/bin/python* /bin/bash ...

Прикольные тантры, а смысл? Можно подумать, это блекхэтам как-то помешает.

> У сегодняшнего Gentoo есть недостатки, но решаемы.

...особенно ежели заменой дистра на менее хаотичный.

Ответить | Правка | Наверх | Cообщить модератору

98. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (101), 22-Фев-20, 09:07 
> > Интерпретаторы, с питоном включительно, можно обрезать простым DAC.
> Угу, обрежь "пакетный менеджер" простым DAC. И чего он сможет потом? А ежели этот кус крапа заведует софтом в системе - то наверное и поиметь сможет, все что захочет, если захочет, не? На уровне базового анализа взаимодействий компонентов сугубо.

Именно так и надо делать! Пакетным менеджером должен рулить отдельный пользователь (запуск под root, установка под root, а вот загрузки и сборка в изолированном окружении под непривелег рованым пользователем), и только ему в случае Gentoo нужны права к инструментам разработчика. DAC именно для этого и нужен.

> > groupadd shells
> > usermod -a -G shells portage
> > usermod -a -G shells ...
> > chown root:shells /usr/bin/python* /bin/bash ...
> > chmod o-rwx /usr/bin/python* /bin/bash ...
> Прикольные тантры, а смысл? Можно подумать, это блекхэтам как-то помешает.

Это не приколы, а разграничения доступа к интерпретаторам и средствам сборки на уровне DAC.

В обычном Линукс дистре DAC используют для ограничения запуска программы с /usr/games только пользователи группы games могут запускать программы с этого каталога.

Это азы уровня школы, исполнение которых значительно повысит безопасность системы.

> > У сегодняшнего Gentoo есть недостатки, но решаемы.
> ...особенно ежели заменой дистра на менее хаотичный.

Речь идет о интерпретатора и их eval. Для portage есть и бинарные пакетным менеджеры. Система инициализации openrc-run бинарный интерпретатор, а вот netifrc пока проблемное расширение с ворохом eval скриптов.

Ответить | Правка | Наверх | Cообщить модератору

127. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (-), 01-Мрт-20, 21:11 
> Именно так и надо делать! Пакетным менеджером должен рулить отдельный пользователь (запуск
> под root, установка под root, а вот загрузки и сборка в изолированном окружении под
> непривелег рованым пользователем), и только ему в случае Gentoo нужны права к
> инструментам разработчика. DAC именно для этого и нужен.

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

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

> Это не приколы, а разграничения доступа к интерпретаторам и средствам сборки на уровне DAC.

Системная камасутра на мое нескромное мнение.

> Это азы уровня школы, исполнение которых значительно повысит безопасность системы.

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

> Речь идет о интерпретатора и их eval.

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

> Для portage есть и бинарные пакетным менеджеры. Система инициализации openrc-run
> бинарный интерпретатор, а вот netifrc пока проблемное расширение с ворохом eval скриптов.

Ну это в духе гентушников. Потом оказывается что в всех этих гомнопалках dhcp сервак рута получает, etc. Мегаскриптеры они такие.

Ответить | Правка | Наверх | Cообщить модератору

103. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Michael Shigorinemail (ok), 22-Фев-20, 16:18 
> Интерпретаторы, с питоном включительно, можно обрезать простым DAC.
> Обычному пользователю и большинству сервисов они не нужны.

О, а попробуйте так сделать вот прям сейчас на localhost.
Разумеется, используемого пользователя вносить в shells незачем.

PS: о том, что надо будет бегать и следить за правами по мере обновления бинарников (а также о гонке в процессе при такой наивной реализации) -- помолчу, но вообще-то у нас подобная задача решена.

Ответить | Правка | К родителю #84 | Наверх | Cообщить модератору

115. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (114), 26-Фев-20, 16:48 
> О, а попробуйте так сделать вот прям сейчас на localhost. Разумеется, используемого пользователя вносить в shells незачем.

У меня именно так все и настроено. Пользователям права на их shell даю. На остальные нет.

Ответить | Правка | Наверх | Cообщить модератору

78. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +1 +/
Сообщение от Дон Ягон (ok), 18-Фев-20, 14:31 
>> ... OpenBSD только "W^X part one". ...
> Стандарты, инструкции, которые противоречат этим правилам печатаете на мягкой бумаге и храните в туалете, может кому пригодятся.

Это общеиспользуемые стандарты, других нет.

> JIT - в принципе не нужен. Вся оптимизация двоичного кода должна проводится в момент компиляции.

Реальность, увы, иная. JIT используется много где, и понятно зачем. К слову, не каждая реализация JIT должна требовать W|X (примеры были тут - https://www.opennet.ru/opennews/art.shtml?num=50763).

> JIT - отрава безопасности UNIX, которую специально внедряют, и подгоняют под ее использование стандарты.

Ахинея.

> Тео зря пошел на компромисс с пропогандистами JIT разрешив ранее выделенные, для изменения, страницы памяти переводить в режим исполнения. Пользователи JIT розменивают свою безопасность на мнимую производительность. Надо производительность - пересобери все с оптимизацией под свой процессор.

Тео, в итоге, выбрал верное решение. Хотя какое-то время в OpenBSD было только W^X part one и не было pledge - да. Но от этого решение PAX team правильным не стало. Наиболее вероятный результат включения по умолчанию W^X part two для всех принудительно - отключение оного кустарными способами или смена ОС на ту, где такого нет.
И это логично - программа сначала должна решать какую-то проблему, а потом уже быть безопасной. Программа, которая не решает никакой проблемы, но безопасна - бесполезна. Как и ОС, в которой ни ff ни chrome не запустить.

> Безопасность ОС, особенно фундаментальная: DAC, MAC, Integrity, ... должна быть гарантирована! Гарантировать ее можно только на уровне аппаратном или ядра ОС.

Ты, как разработчик или пользователь ПО можешь герентировать отсутствие W|X при помощи pledge. Убивать приложение при нарушении W^X будет именно ядро (хотя по дефолту оно кажется не убивает, а просто возвращает -1 malloc'ом).

> Если оставить дыры и переложить ответственность за безопасность на прикладной софт гарантии безопасности теряются.

Их (гарантий) нет и в PAX. Можно отключить защиту как глобально, так и per app.

> А программисты прикладного софта не будут следить за безопасностью у них совсем другие интересы.

Во-первых, при наличии удобного, ранее отсутствовавшего инструмента - почему нет?
Во-вторых, ты можешь попатчить нужное сам, как это пока опенбсдшники и делают для ff, например.
В третьих, если сами разработчики хорошо положат болт на безопасность своего ПО, никакое pledge или pax тебе не поможет.

Ответить | Правка | К родителю #73 | Наверх | Cообщить модератору

79. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 18-Фев-20, 14:50 
del
Ответить | Правка | Наверх | Cообщить модератору

85. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (83), 19-Фев-20, 17:54 
> Реальность, увы, иная. JIT используется много где, и понятно зачем.

Желаю все оптимизировать во время компиляции под свой проц, а во время исполнения иметь гарантию неизменности кода.

> К слову, не каждая реализация JIT должна требовать W|X

Исполнение ранее измеряемого кода - неприемлемо. Как и изменение прав x -> w -> x

> программа сначала должна решать какую-то проблему, а потом уже быть безопасной.

Вот это аргумент! Или прога проектируется удовлетворять элементарным требованиям безопасности, или она не будет безопасна никогда. И мне такая прога не нужна.

> Как и ОС, в которой ни ff ни chrome не запустить.

Это не безопасные бровзеры, хотя поняв что их люди выкинули из-за JIT все дружно добавили опции 'configure --no-jit'

> Ты, как разработчик или пользователь ПО можешь герентировать отсутствие W|X при помощи pledge. Убивать приложение при нарушении W^X будет именно ядро

Мое ядро все что только попросит память в режимеиwx прибивает сразу.

> Их (гарантий) нет и в PAX. Можно отключить защиту как глобально, так и per app.

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

По приложениям можно менять или заглавие ELF или xattr, но для этого надо root. А у меня / смонтирован ro и ядро недаст его перемонтировать rw, потому что мое ядро следит чтобы диски тоже в режиме rw,exec не монтировались. А кроме того есть IMA которая заблокирует изменения ELF и есть EVM которая заблокирует изменения IMA и xattr. У меня есть 100% гарантия.

> Во-первых, при наличии удобного, ранее отсутствовавшего инструмента - почему нет?

Во-вторых, ты можешь попатчить нужное сам, как это пока опенбсдшники и делают для ff, например.

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

> В третьих, если сами разработчики хорошо положат болт на безопасность своего ПО, никакое pledge или pax тебе не поможет.

Ложим болт на их поделки. KDE со своими скриптами с JIT, ... во многих ынтерпрайз дистрах дефолтный DE?

Ответить | Правка | К родителю #78 | Наверх | Cообщить модератору

87. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 20-Фев-20, 07:48 
>> Реальность, увы, иная. JIT используется много где, и понятно зачем.
> Желаю все оптимизировать во время компиляции под свой проц, а во время исполнения иметь гарантию неизменности кода.

Это желания и только. Реальность есть реальность. Некоторые подвижки есть, но и только.

>> К слову, не каждая реализация JIT должна требовать W|X
> Исполнение ранее измеряемого кода - неприемлемо. Как и изменение прав x -> w -> x

Где так написано? А то программисты не знают и по другому программы пишут. И, цука, иногда нужные. Да, сделано из г-на, но какую-то нужную проблему решает.

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

Как вы каменты то на опеннете оставляете, если у вас ff и chrome не работают, стесняюсь спросить?

>> Как и ОС, в которой ни ff ни chrome не запустить.
> Это не безопасные бровзеры, хотя поняв что их люди выкинули из-за JIT все дружно добавили опции 'configure --no-jit'

Окей, как вы каменты на опеннете  оставляли до того, как вышла версия хрома с nojit?

>> Ты, как разработчик или пользователь ПО можешь герентировать отсутствие W|X при помощи pledge. Убивать приложение при нарушении W^X будет именно ядро
> Мое ядро все что только попросит память в режимеиwx прибивает сразу.

Выглядит так, как будто бы ты этим гордишься, хотя на самом деле, не стоило бы. В общем-то, сломать переключалку в mprotect не очень большая наука, студенты должны справиться.
Понятно, что проще всего объявить неугодное бескомпромиссно непримелемым и чуть что раздавать kill -9. Это самое очевидное и топорное решение.
Но смысл оно имеет только при условии, что есть доступная альтернатива тому ПО, которое не запустится. А это не так -> для включения по-умолчанию в ОС общего назначения это неприемлемо.

>> Их (гарантий) нет и в PAX. Можно отключить защиту как глобально, так и per app.
> У тебя нет, а у меня есть, возможность глобально отключить PAX требует перезагрузки, но я эту опцию в настройках ядра не включил.

Бессмысленная софистика. Принципиальная возможность - есть. Это абсолютно всё, что нужно знать.
А что там кто-то для себя наколхозил - не интересно.

> По приложениям можно менять или заглавие ELF или xattr

Не все хотят при каждом обновлении прописывать все флаги ручками, обычно это автоматизируется. Есть даже костыледемон paxd для этих целей. Т.е. можно ещё поколдовать со скриптами автоматизации или конфигами paxd. А не в лоб.

> А у меня / смонтирован ro и ядро недаст его перемонтировать rw, потому что мое ядро следит чтобы диски тоже в режиме rw,exec не монтировались. А кроме того есть IMA которая заблокирует изменения ELF и есть EVM которая заблокирует изменения IMA и xattr. У меня есть 100% гарантия.

Плохо, что ты думаешь, что у тебя 100% гарантия. Может это и так (я не знаю), но недоверие - это хорошо.

>> Во-первых, при наличии удобного, ранее отсутствовавшего инструмента - почему нет?
> Во-вторых, ты можешь попатчить нужное сам, как это пока опенбсдшники и делают для ff, например.

Опенбсдшники не патчили ff на предмет неиспользования jit. Ну, я про такое не слышал. Pledge туда добавили, да, и unveil.

Ответить | Правка | Наверх | Cообщить модератору

99. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (101), 22-Фев-20, 10:45 
> > > Реальность, увы, иная. JIT используется много где, и понятно зачем.
> > Желаю все оптимизировать во время компиляции под свой проц, а во время исполнения иметь гарантию неизменности кода.
> Это желания и только. Реальность есть реальность

У меня source based дистрибутив вопрошающий мои желания в реальность!

> > > К слову, не каждая реализация JIT должна требовать W|X
> > Исполнение ранее измеряемого кода - неприемлемо. Как и изменение прав x -> w -> x
> Где так написано? А то программисты не знают и по другому программы пишут. И, цука, иногда нужные. Да, сделано из г-на, но какую-то нужную проблему решает.

И по этому их программы люди не используют. Передай этим "программистам", что если использую JIT, то код должен ветвится на две ветки: без JIT и с JIT. Выбор используемой ветки должен проводится на этапе выполнения configure: параметрами --with-jit или --disable-jit. Все нормальные программисты уже так сделали, даже в Google со своим хромом.

CONFIG_PAX_MPROTECT=y
Enabling this option will prevent programs from
- changing the executable status of memory pages that were not originally created as executable,
- making read-only executable pages writable again,
- creating executable pages from anonymous memory,
- making read-only-after-relocations (RELRO) data pages writable again.

https://en.m.wikibooks.org/wiki/Grsecurity/Appendix/Grsecuri...

https://en.m.wikibooks.org/wiki/Grsecurity/Appendix/Grsecuri...

https://grsecurity.net/PaX-presentation.pdf

https://grsecurity.net/PaX-presentation.ppt

http://mainisusuallyafunction.blogspot.com/2012/11/attacking...

https://github.com/01org/jit-spray-poc-for-ksp

http://www.matasano.com/research/Attacking_Clientside_JIT_Co...

> Окей, как вы каменты на опеннете  оставляли до того, как вышла версия хрома с nojit?

На целевой системе нет firefox и chrome. Кроме них есть куча бровзеров которые по умолчанию ответственно относятся к безопасности и приватности пользователей.

Firefox JIT нужен только для поддержки расширений. Можно расширения устанавливать пакетным менеджером в систему и отключить их поддержку firefox. Это правильный и безопасный путь. Почему его не используют разработчики дистрибутивов?

> > > Их (гарантий) нет и в PAX. Можно отключить защиту как глобально, так и per app.
> > У тебя нет, а у меня есть, возможность глобально отключить PAX требует перезагрузки, но я эту опцию в настройках ядра не включил.
> Бессмысленная софистика. Принципиальная возможность - есть. Это абсолютно всё, что нужно знать.
> А что там кто-то для себя наколхозил - не интересно.

В целевой системе, при правильной настройке (x86_64+NX процессору верим ;) ), PaX отключить принципиально, теоретически и практически невозможно:

PAX=y
PAX_SOFTMODE is not set
PAX_EI_PAX is not set
PAX_PT_PAX_FLAGS is not set
PAX_XATTR_PAX_FLAGS is not set
PAX_HAVE_ACL_FLAGS=y
PAX_NOEXEC=y
PAX_PAGEEXEC=y
PAX_SEGMEXEC is not set
PAX_EMUTRAMP is not set
PAX_EMUSIGRT is not set
PAX_MPROTECT=y
PAX_MPROTECT_COMPAT is not set
PAX_ELFRELOCS is not set
PAX_ETEXECRELOCS is not set
PAX_EMUPLT is not set
PAX_DLRESOLVE is not set
PAX_KERNEXEC=y

PAX_ASLR=y
PAX_RANDKSTACK=y
PAX_RANDUSTACK=y
PAX_RANDMMAP=y

PAX_MEMORY_SANITIZE=y
PAX_MEMORY_STACKLEAK=y
PAX_MEMORY_STRUCTLEAK=y
PAX_MEMORY_UDEREF is not set
PAX_REFCOUNT=y
PAX_CONSTIFY_PLUGIN=y
PAX_USERCOPY=y
PAX_SIZE_OVERFLOW=y
PAX_LATENT_ENTROPY=y
PAX_RAP=y

> > По приложениям можно менять или заглавие ELF или xattr
> Не все хотят при каждом обновлении прописывать все флаги ручками, обычно это автоматизируется. Есть даже костыледемон paxd для этих целей. Т.е. можно ещё поколдовать со скриптами автоматизации или конфигами paxd. А не в лоб.

В моем дистрибутиве пакетный менеджер умеет, для кривого софта, выставлять нужные PAX флаги!

Костыледемон paxd похерит Integrity. А при ro / и вовсе бесполезен.

Лучше просто не использовать софт с JIT вовсе.

> > А у меня / смонтирован ro и ядро недаст его перемонтировать rw, потому что мое ядро следит чтобы диски тоже в режиме rw,exec не монтировались. А кроме того есть IMA которая заблокирует изменения ELF и есть EVM которая заблокирует изменения IMA и xattr. У меня есть 100% гарантия.
> Плохо, что ты думаешь, что у тебя 100% гарантия. Может это и так (я не знаю), но недоверие - это хорошо.

Плохо ты думаешь, гарантия зависит от того кто гарантирует (настраивал). Данный алгоритм, при правильной настройке, даст 100℅ гарантию не низменности, по файловых, настроек PAX в целевой системе.

> Опенбсдшники не патчили ff на предмет неиспользования jit. Ну, я про такое не слышал. Pledge туда добавили, да, и unveil.

А надо было популярные расширения добавить в пакеты и отключить возможность загрузки расширений в ff! Тео, вместо этого, добавил ненужную дыру.

Ответить | Правка | Наверх | Cообщить модератору

105. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 23-Фев-20, 06:31 
> И по этому их программы люди не используют.

Нет, это не так. Было бы хорошо, если бы это было так, но это не так и игнорировать это нельзя.

> На целевой системе нет firefox и chrome. Кроме них есть куча бровзеров которые по умолчанию ответственно относятся к безопасности и приватности пользователей.

Ясно-понятно.

> Firefox JIT нужен только для поддержки расширений. Можно расширения устанавливать пакетным менеджером в систему и отключить их поддержку firefox. Это правильный и безопасный путь. Почему его не используют разработчики дистрибутивов?

Потому что никто не хочет лепить свои костыли вместо стандартных возможностей ff во имя не пойми чего?

> В моем дистрибутиве пакетный менеджер умеет, для кривого софта, выставлять нужные PAX флаги!

Круто! Я тоже могу наколхозить кучу всего интересного (или не очень) и забавного. Кому какое дело до этого? Это очевидно нишевое решение. И не буду даже спрашивать откуда вы берёте pax-патчи, с тех пор как их закрыли вместе с grsecurity/.

> Тео, вместо этого, добавил ненужную дыру.

Я попробую ещё, но, пожалуй, последний раз в этой теме.
Так вот.
Какая проблема решается W^X pt 2, он же  PAX MPROTECT?
Если даже у нас уже реализован и используется W^X pt 1, мы всё равно можем внедрить код, сделать ret2libc->ret2mprotect = сделать память исполянемой, выполнить код. Защита преодолена, W^X нарушен.
PAX MPROTECT прибивает процесс, который вызывает mprotect, добавляющий PROT_EXEC, таким образом, решающий проблему (и ломающий некоторые "честные" приложения).

В случае OpenBSD, реализован только W^X pt 1, prot_exec может быть только отозван через pledge, что требует модификации кода программы.
Помимо этого, в любом случае возникнут сложности на этапе ret2libc, так как используется ASLR и при каждой новой загрузке ОС используется заново слинкованная libc с расположенными в случайном порядке объектами. Т.е. произвести атаку, конечно, всё-таки возможно, но это едва ли получится с первой попытки, да и в целом, будет несколько затруднено.
OpenBSD хочет соблюдать стандарты, а не извращённо толковать иx (из "If an implementation cannot support the combination of access types specified by prot, the call to mprotect() shall fail." люди из pax делают вывод, что имеют право ломать mprotect, в дествительности написать имплементацию которая поддерживает кобминацию w и x вполне можно, так что...).
Поэтому аналог PAX MPROTECT не может быть включен по умолчанию. Однако, так как хоть какие-то меры противодествия имеются, а ROP в более широком смысле, нежели описанный выше пример, всё равно может позволить обойти W^X pt 2, принятые по-умолчанию меры считаются примемлемыми.
А при использовании pledge можно и поставить точку в вопросе с prot_exec, и подобная логика может быть добавлена в программы достаточно легко.

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

> PaX отключить принципиально, теоретически и практически невозможно

С трудом представляю, как ты пользуешься такой системой, а главное - зачем. См. выше, почему я считаю, что ты страдаешь за почти что иллюзию защиты.

Ответить | Правка | Наверх | Cообщить модератору

116. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (114), 26-Фев-20, 17:09 
> > Firefox JIT нужен только для поддержки расширений. Можно расширения устанавливать пакетным менеджером в систему и отключить их поддержку firefox. Это правильный и безопасный путь. Почему его не используют разработчики дистрибутивов?

Потому что никто не хочет лепить свои костыли вместо стандартных возможностей ff во имя не пойми чего?

> Если даже у нас уже реализован и используется W^X pt 1, мы всё равно можем внедрить код, сделать ret2libc->ret2mprotect = сделать память исполянемой, выполнить код. Защита преодолена, W^X нарушен.

PAX_ASLR=y
PAX_RANDKSTACK=y
PAX_RANDUSTACK=y
PAX_RANDMMAP=y
Замучаешся преодолевать, есть другие системы которые следят за брутефосом и принимают более радикальные проактивные меры.

>PAX MPROTECT прибивает процесс, который вызывает mprotect, добавляющий PROT_EXEC, таким образом, решающий проблему (и ломающий некоторые "честные" приложения).

В моем дистре очень легко можно сказать честным приложениям собирался без JIT и с оптимизацией под мой проц во время компиляции. Так что все программы будут работать с защитой PAX и без поломок.

> ROP в более широком смысле, нежели описанный выше пример, всё равно может позволить обойти W^X pt 2, принятые по-умолчанию меры считаются примемлемыми.

CONFIG_PAX_RAP=y
делает твой, очень дорогой ROP, практически невозможным.

> > PaX отключить принципиально, теоретически и практически невозможно
> С трудом представляю, как ты пользуешься такой системой, а главное - зачем

Это нормальная система, которая соответствует требованием DAC. Вот старый пример: https://mirror.yandex.ru/mirrors/ftp.linux.kiev.ua/Linux/CD/.../

Ответить | Правка | Наверх | Cообщить модератору

118. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 26-Фев-20, 23:29 
>> Если даже у нас уже реализован и используется W^X pt 1, мы всё равно можем внедрить код, сделать ret2libc->ret2mprotect = сделать память исполянемой, выполнить код. Защита преодолена, W^X нарушен.
> PAX_ASLR=y
> PAX_RANDKSTACK=y
> PAX_RANDUSTACK=y
> PAX_RANDMMAP=y
> Замучаешся преодолевать, есть другие системы которые следят за брутефосом и принимают более
> радикальные проактивные меры.

Пример, который я описывал был не про обход W^X pt 2 (pax mprotect), а про обход W^X pt 1. Разница в том, что чтобы обойти W^X pt 2 нужен прям честный ROP, который совсем сложен (но да, возможен), в случае с обходом W^X pt 1 достаточно "найти" mprotect и сделать заинъекченый код исполняемым.
Это значительно проще.
Не знаю, к чему это ты, возможно, ты просто продолбался с цитированием и из-за этого я тебя не так понял.

>> ROP в более широком смысле, нежели описанный выше пример, всё равно может позволить обойти W^X pt 2, принятые по-умолчанию меры считаются примемлемыми.
> CONFIG_PAX_RAP=y
> делает твой, очень дорогой ROP, практически невозможным.

Я знаю про PAX_RAP. Ничего не утверждал про его наличие/отсутствие. Утверждал про то, что меры против ROP в OpenBSD затрудняют и сценарий эксплуатации W^X pt 1, поэтому мириться с отсутствием принудительного pax mprotect по-умолчанию приемлемо.

Ответить | Правка | Наверх | Cообщить модератору

119. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (119), 27-Фев-20, 16:01 
> случае с обходом W^X pt 1 достаточно "найти" mprotect и сделать заинъекченый код исполняемым.

Рандомизацтя адресного пространства сильно затрудняет поиск нужного кода.

Ты не сможешь перевести заинекченыц код в режим исполнения, pax mprotect этого не даст.

> OpenBSD затрудняют и сценарий эксплуатации W^X pt 1, поэтому мириться с отсутствием принудительного pax mprotect по-умолчанию приемлемо.

Проблема с защитой памяти много кому на больные мозоли наступает:

У Linux мутная история:  https://www.opennet.ru/openforum/vsluhforumID3/119728.html#31

У опенка Тео перехотел сделать нормально:

https://www.opennet.ru/openforum/vsluhforumID3/119792.html#6

Использую PAX давно, у меня дистр основанный на исходниках, надо в одном месте указать что ты JIT не желаешь водить и потом соберутся без него. Тех страшных проблем ко орыми вы здесь пугаете продвигая дыру в безопасности не наблюдал. Защита памяти, гарантии неизменности исполняемого кода - безценны по сравнению с мнимой производительностью Jit.

Ответить | Правка | Наверх | Cообщить модератору

120. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 27-Фев-20, 16:11 
>> случае с обходом W^X pt 1 достаточно "найти" mprotect и сделать заинъекченый код исполняемым.
> Рандомизацтя адресного пространства сильно затрудняет поиск нужного кода.

Я про это, да.

> Ты не сможешь перевести заинекченыц код в режим исполнения, pax mprotect этого не даст.

Я не про это.

> Использую PAX давно, у меня дистр основанный на исходниках, надо в одном месте указать что ты JIT не желаешь водить и потом соберутся без него. Тех страшных проблем ко орыми вы здесь пугаете продвигая дыру в безопасности не наблюдал. Защита памяти, гарантии неизменности исполняемого кода - безценны по сравнению с мнимой производительностью Jit.

Божечки, да причём тут это?
Когда-то у меня был арч с grsec-ядром, и в те моменты, когда я не игрался с ним ради самообразования, у меня тоже всё работало, вероятно, где-то я что-то делал для этого - уже не помню.

Кому-то нужна производительность, кому-то - строгая безопасность, кому-то соответствие стандартам.
Речь не про принципиальную возможность заставить что-то работать, а про стандартную поставку и годность для ОС общего назначения.

> У опенка Тео перехотел сделать нормально

Ну а по мне - как раз в опёнке нормально.

Ответить | Правка | Наверх | Cообщить модератору

121. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (121), 28-Фев-20, 15:44 
Мое мнение, контроль за памятью должен быть только у ядра. Изменение исполняемых областей памяти - огромная дыра в безопасности. Тео проделал дырочку оставляя возможность приложениям с JIT изменять исполняемые области памяти. И это будет использовано вирусами.

Кому надо производительность тот компилит все под свой проц.

Советую всем отказатся от JIT, ядер ОС, "стандартов" и "инструкций" которые допускают изменение исполняемых областей памяти.

Ответить | Правка | Наверх | Cообщить модератору

122. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 28-Фев-20, 15:49 
> Мое мнение, контроль за памятью должен быть только у ядра.
> Советую всем отказатся от JIT, ядер ОС, "стандартов" и "инструкций" которые допускают изменение исполняемых областей памяти.

Ради бога. Почему я считаю, что такой максималистский подход малоприменим для всеобщего использования по факту - я написал.

Ответить | Правка | К родителю #121 | Наверх | Cообщить модератору

123. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (123), 29-Фев-20, 09:07 
Надеюсь, что всем уже стало понятно необходимость, ядром OS или аппаратно процессором, строго контролировать неизменность исполняемых областей памяти и областей данных помеченных только для чтения.

Контроль за памятью нельзя делегировать на уровень приложений. Любое такое делегирование это дыра которую будут использовать вирусы.

Были, есть и будут OS общего назначения и прикладные программы которые строго соблюдают правила контроля за оперативный памятью. Опенка с этого списка пока вычеркиваем.

Ответить | Правка | К родителю #122 | Наверх | Cообщить модератору

124. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 01-Мрт-20, 05:07 
> Контроль за памятью нельзя делегировать на уровень приложений. Любое такое делегирование это дыра которую будут использовать вирусы.

Я прочитал сейчас что-то, по меньшей мере, очень странное.
И в случае pledge, и в случае PaX за гарантии отвечает ядро.
В случае pledge, гарантии заказываются из кода программы, в случае PaX - черех paxctl/конфиг ядра.

> Были, есть и будут OS общего назначения и прикладные программы которые строго соблюдают правила контроля за оперативный памятью.

Только никакого успеха они не имеют (чего нельзя сказать про нишевые решения).

> Опенка с этого списка пока вычеркиваем.

...

====
Я, в принципе, отчасти понимаю твой максимализм - было бы хорошо, если бы все думали про безопасность и не писали код, который требует нарушения W^X. Но всё так, как есть. Нельзя сказать, что ситуация совсем не меняется, но даже там, где стало можно, например, выключать JIT, требующий нарушения W^X, это всё равно не используется как вариант по-умолчанию и закономерно обладает меньшей производительностью.

Ответить | Правка | К родителю #123 | Наверх | Cообщить модератору

126. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (126), 01-Мрт-20, 15:26 
> И в случае pledge, и в случае PaX за гарантии отвечает ядро.

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

> В случае pledge, гарантии заказываются из кода программы,

Это смешно. Гарантии неизменности исполняемого кода должно давать ядро или аппаратно проц.

> в случае PaX - через paxctl/конфиг ядра.

Ядро с PaX дает гарантии неизменности исполняемого кода и гарантии невозможности отключения такого поведения для всех программ.

В тоже время есть возможность выбора:

1. Дополнительно добавить в ядро возможность исключения для некоторых программ помеченных через заголовок ELF или расширенные атрибуты файловой системы xattr (PeMRs).
Pp - постраничная защита памяти.
Ee - эмуляция трамполлайнов. Очень маленькие участки памяти которые можно переводить в режим WX
Mm - защита памяти. В частности гарантия W^X. Выше упоминал все гарантии mprotect при использовании PaX ядра.
Rr - рандомизация адресного пространства.
Ss - посегментна защита памяти, если постраничная не поддерживается процессором (NX инструкция) или мы не доверяем защите памяти реализованной процессором.
По умолчанию ядро с PaX дает максимальную защиту.

2. Дополнительно добавить в ядро возможность загружатся в режиме когда PaX ядро не блокирует, а только ведет журнал событий нарушающих нормальное использование памяти. Grsecurity ядро блокирует изменение рабочего ядра через sysctl и следовательно дает гарантии невозможности включать/выключать PaX softmode в случае его поддержки ядром.

> > Были, есть и будут OS общего назначения и прикладные программы которые строго соблюдают правила контроля за оперативный памятью.
> Только никакого успеха они не имеют (чего нельзя сказать про нишевые решения).

Среди тех которые ты должен знать упомяну Apple как фирму чьи OS очень строго защищают память.

Также MS Windows имеет защиту оперативной памяти, но менее строгую по сравнению с Apple. MS видать как и Тео с OpenBSD попросили пойти на компромисс и просверлить дырочки, для "повышения производительности".

> Нельзя сказать, что ситуация совсем не меняется, но даже там, где стало можно, например, выключать JIT, требующий нарушения W^X, это всё равно не используется как вариант по-умолчанию

Самое главное, разработчики поняли, что код с JIT есть небезопасен, непортабелен и просто на некоторых аппаратных (powerpc,mips,..) и программных (Linux+PaX, Apple, ...) не работает. Для этих програмно-аппаратных архитектур есть возможность отключать код JIT еще на этапе конфигурации исходников перед сборкой и он используется по умолчанию всегда.

> и закономерно обладает меньшей производительностью.

Это очень спорный вопрос. Вас обманывают воруя безопасность и обещая мнимую производительность! Изменения режима исполняемого кода на изменяемый и потом обратно это очень ресурсоемко и врят ли окупится.

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

Ответить | Правка | К родителю #124 | Наверх | Cообщить модератору

129. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 02-Мрт-20, 00:44 
>> И в случае pledge, и в случае PaX за гарантии отвечает ядро.
> Нет, в OpenBSD ядро не дает никаких гарантий, оставляя возможность приложениям изменять исполняемый код. Это дыра которую будут использовать вири.
>> В случае pledge, гарантии заказываются из кода программы,
> Это смешно. Гарантии неизменности исполняемого кода должно давать ядро или аппаратно проц.

Прости, но ты пишешь ахинею. Pledge - это системный вызов, как следствие, вся работа по обеспечению гарантий производится в ядре. С каждым новоым вызовом pledge, выданных разрешений может быть _только_ меньше.
Ну да, может быть баг в реализации, ну так он и в PaX может быть.

>> > Были, есть и будут OS общего назначения и прикладные программы которые строго соблюдают правила контроля за оперативный памятью.
>> Только никакого успеха они не имеют (чего нельзя сказать про нишевые решения).
> Среди тех которые ты должен знать упомяну Apple как фирму чьи OS очень строго защищают память.

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

> Самое главное, разработчики поняли, что код с JIT есть небезопасен

Потенциально небезопасен. И многое зависит от реализации.

>> и закономерно обладает меньшей производительностью.
> Это очень спорный вопрос. Вас обманывают воруя безопасность и обещая мнимую производительность!
> Изменения режима исполняемого кода на изменяемый и потом обратно это очень ресурсоемко и врят ли окупится.

Меня никто не обманывает. Про "небезопасность" отсутствия PaX MPROTECT (W^X pt 2) я уже писал - повторяться избыточно.
По поводу ресурсоёмкости и т.п. - это зависит от реализации и требуемых возможностей. В целом, байткод надо транслировать в машинный код примерно 1 раз, далее можно просто выполнять скомпилированное. Ну да, иногда ради бОльшего "динамизма" такой подход может быть и неприемлем.
На производительность, даже не мнимую лично мне скорее пофигу, особенно, если речь о незаметных "на глаз" процентах, особенно если за счёт безопасности, дело не в этом. Дело в том, что всему миру абсолютно наплевать на мои личные хотелки, у разных людей и компаний разные задачи и разные требования. И, к несчастью, реальность такова, что иногда альтернативы решениям с jit нет, а производительности хочется. А писать за свои деньги свою "правильную" альтернативу не хочется. Или денег нет.

> Оптимизация программы в момент компиляции под целевой процессор дает максимум производительности и скорости исполнения. В добавок можно получить гарантию неизменности исполняемого кода- безопасность.

Вашими бы устами да мёд пить.

Ответить | Правка | К родителю #126 | Наверх | Cообщить модератору

131. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (131), 02-Мрт-20, 15:51 
> Pledge - это системный вызов, как следствие, вся работа по обеспечению гарантий производится в ядре.

Плохо то, что есть в ядре OpenBSD возможность дать программ право изменять исполняемый код. И в OpenBSD нет опции в конфиге ядра отключить такое поведение. Следовательно гарантий неизменности исполняемого кода в OpenBSD нет.

> Про "небезопасность" отсутствия PaX MPROTECT (W^X pt 2) я уже писал - повторяться избыточно.

Повторение - мать учения. Именно благодаря PaX MPROTECT получаем гарантию неизменности исполняемого кода:

Enabling this option will prevent programs from
- changing the executable status of memory pages that were
   not originally created as executable,
- making read-only executable pages writable again,
- creating executable pages from anonymous memory,
- making read-only-after-relocations (RELRO) data pages writable again.

https://en.m.wikibooks.org/wiki/Grsecurity/Appendix/Grsecuri...)

Ответить | Правка | К родителю #129 | Наверх | Cообщить модератору

132. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 02-Мрт-20, 16:10 
>> Pledge - это системный вызов, как следствие, вся работа по обеспечению гарантий производится в ядре.
> Плохо то, что есть в ядре OpenBSD возможность дать программ право изменять исполняемый код. И в OpenBSD нет опции в конфиге ядра отключить такое поведение. Следовательно гарантий неизменности исполняемого кода в OpenBSD нет.

Нет, это не плохо, это адекватно требованиям, выдвигаемым к ОС общего назначения.
Проблема, на наличии которой ты настаиваешь имеет место, но её важность преувеличена. Поэтому, OpenBSD не даёт общесистемных гарантий, но позволяет гарантировать отсутствие prot_exec для отдельно взятой программы. На уровне логики работы самой программы.

> Повторение - мать учения.

А мне уже слегка надоело повторять одно и то же разными словами.

Ответить | Правка | К родителю #131 | Наверх | Cообщить модератору

133. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (133), 03-Мрт-20, 15:55 
> Поэтому, OpenBSD не даёт общесистемных гарантий, но позволяет гарантировать отсутствие prot_exec для отдельно взятой программы. На уровне логики работы самой программы.

Нет сегодня возможности проверить логику работы всех программ. А безопасность иметь хочется. Единственный путь это гарантии неизменности исполняемого кода ядром OS или аппаратно процессором.

> А мне уже слегка надоело повторять одно и то же разными словами.

И мне.

Ответить | Правка | К родителю #132 | Наверх | Cообщить модератору

134. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 03-Мрт-20, 16:05 
>> А мне уже слегка надоело повторять одно и то же разными словами.
> И мне.

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

Ответить | Правка | К родителю #133 | Наверх | Cообщить модератору

136. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (135), 04-Мрт-20, 16:38 
> можно и заканчивать

Вы не сказали самый главный аргумент против использования W^X. А его надо понимать и помнить всем!

Ситуация когда безопасность имеет приоритет ниже чем сервис!!!

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

В этих случаях ядра жестко убивающие за нарушения выделения памяти использовать нельзя. Для этого используется режим "PaX softmode" когда все нарушения только журналируются, а процесс продолжает работать без любых ущемлений ядром. Реализация PaX в GNU/Linux очень правильная и предусматривает все режимы работы для OS общего назначения.

Ответить | Правка | К родителю #134 | Наверх | Cообщить модератору

137. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 04-Мрт-20, 16:41 
> Примеры: система жизнеобеспечения больного в больнице, авиодиспетчеры, управление опасным производством, ядерный реактор, ...

ИМХО, это всё совсем не про ОС общего назначения. И даже не только лишь по требованиям, связанным с безопасностью.

Ответить | Правка | К родителю #136 | Наверх | Cообщить модератору

138. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (135), 04-Мрт-20, 16:48 
> ИМХО, это всё совсем не про ОС общего назначения.

Про OS общего назначения это:

Реализация PaX в GNU/Linux очень правильная и предусматривает все режимы работы для OS общего назначения.


А это:

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

О том что не надо жесткий W^X пихать всюда без разбору. Есть места где безопасность совсем не главное и поддержка работающего сервиса имеет высший приоритет.

Ответить | Правка | К родителю #137 | Наверх | Cообщить модератору

139. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 04-Мрт-20, 17:20 
> Про OS общего назначения это:

Я понял :) На эту тему все мысли, которые у меня были я уже написал, больше не хочу повторять одно и то же.

> Есть места где безопасность совсем не главное и поддержка работающего сервиса имеет высший приоритет.

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

Как там на самом деле всё настроено и работает, повторюсь, не знаю, ввиду отсутствия практики.

Ответить | Правка | К родителю #138 | Наверх | Cообщить модератору

140. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (140), 04-Мрт-20, 17:41 
> Ничто не мешает (теоретически) сразу написать ПО с учётом модели памяти в PaX и смысл в этом есть.

Классика жанра:

В спец ПО для райнимации больного допустили ошибку переполнения буфера или даже ядро OS имеет ошибку переполнения буфера. Вирус использует эту уязвимость переполнения буфера и ядро с W^X убивает процесс поддержки жизнедеятельности человека. Человек погибает, а компьютер остается не зараженным.

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

Это надо обязательно понимать и помнить.

Ответить | Правка | К родителю #139 | Наверх | Cообщить модератору

141. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Дон Ягон (ok), 04-Мрт-20, 17:58 
>> Ничто не мешает (теоретически) сразу написать ПО с учётом модели памяти в PaX и смысл в этом есть.
> Классика жанра:
> В спец ПО для райнимации больного допустили ошибку переполнения буфера или даже ядро OS имеет ошибку переполнения буфера. Вирус использует эту уязвимость переполнения буфера и ядро с W^X убивает процесс поддержки жизнедеятельности человека. Человек погибает, а компьютер остается не зараженным.

Логика рассуждения мне понятна, спасибо. Мне не понятно, почему бы не резервировать эти процессы на изолированных контурах, например. Процесс может упасть из-за более тривиальной баги, не связанной с безопасностью - что тогда?
Или, например, можно не использовать динамических алокаций вообще, если условия задачи позволяют.
А PaX не обязательно убивает процесс, тот же PaX MPROTECT, про который тут шла речь, приводит к тому, что mprotect возвращает EPERM (с этим меня тут недалеко поправили) - это можно обрабатывать в коде программы.

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

В моём понимании, это не напрямую связанные вещи. Если конструкция в целом умеет переживать смерть отдельного процесса без остановки сервиса, то не вижу проблем даже и в прибивании за нарушение гарантий памяти. Если не умеет, то мы нарвёмся на проблемы и без проблем с безопасностью.

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

Ответить | Правка | К родителю #140 | Наверх | Cообщить модератору

144. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (144), 05-Мрт-20, 16:31 
> Мне не понятно, почему бы не резервировать эти процессы на изолированных контурах, например.

А кто даст гарантию что не упадет процесс отвечающий за переключения или вообще само ядро, для которого тоже W^X применяется?

Смотри на ситуацию вирусной атаки - все процессы в памяти имеют уязвимость переполнения буфера и при вирусной атаке ядпо с W^X их всех прибет.

W^X очень простая, дешовая и эффективная техника безопасности. Она идеальна для рабочей станции секретарши, смартфона, планшета, ноута итп.

В системах для которых кретически важна безперебойная работа используют другие, более дорогие, техники безопасности. А PAX включают только в режиме softmode для журналирования.

> Процесс может упасть из-за более тривиальной баги, не связанной с безопасностью - что тогда?

Тогда виноват не админ с PaX а программист...

> mprotect возвращает EPERM (с этим меня тут недалеко поправили) - это можно обрабатывать в коде программы.

Это делать можно, например clamav так и делал. Но это неправильно. Лучше програмистам давать возможность сборщикам пакетов выбор JIT ветки кода в момент конфигурации перед компиляцией.

> Если конструкция в целом умеет переживать смерть отдельного процесса без остановки сервиса, то не вижу проблем даже и в прибивании за нарушение гарантий памяти. Если не умеет, то мы нарвёмся на проблемы и без проблем с безопасностью.
> Требование-то, на самом деле, к непрерывности предоставления сервиса, а не к модели памяти. От этого, имхо, и нужно рассуждать.

Еще разок, если есть ошибка переполнения буфера то PaX с grsecurity может не только убивать один процесс. Может убить все процессы пользователя и запретить ему вход в систему. Может вообще само ядро убить! Мы не знаем какую область памяти перезапишим за пределами буфера.

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

Ответить | Правка | К родителю #141 | Наверх | Cообщить модератору

145. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +1 +/
Сообщение от Дон Ягон (ok), 05-Мрт-20, 17:06 
>> Мне не понятно, почему бы не резервировать эти процессы на изолированных контурах, например.
> А кто даст гарантию что не упадет процесс отвечающий за переключения или вообще само ядро, для которого тоже W^X применяется?

Всё зависит от того, как именно всё реализовано. Мы этих моментов не уточнили - я не понимаю, как тебе ответить: мы можем придумывать примеры и контрпримеры почти бесконечно.
Например, переключатель может быть вообще исполнен в железе.

> В системах для которых кретически важна безперебойная работа используют другие, более дорогие, техники безопасности. А PAX включают только в режиме softmode для журналирования.

Я не знаю, что именно там используется, но представить там PaX я вполне могу.

> Смотри на ситуацию вирусной атаки

Смотрю: пришёл хакир-вася, поломал мой мега-софт и выключил жизнеобеспечение пациента/систему АЗ АЭС. Потому что может. В логе осталась запись. Успех.
(за скобками оставляем вопрос о том, откуда на нашем мега-важном производстве взялся удалённый доступ к критичным сервисам из недоверенной сети)

>> Процесс может упасть из-за более тривиальной баги, не связанной с безопасностью - что тогда?
> Тогда виноват не админ с PaX а программист...

За падение даже куда менее критичных сервисов админ, работающий на вменяемую компанию, обычно получает конкретный втык. Смерть пациента или проблемы с АЭС - это, с ненулевой вероятностью, подсудное дело.
И перевод стрелок тут не прокатит. И тем более не понятно, почему в падении из-за бага (т.е. без внешнего злонамеренного воздействия) виноват программист, а в падении из-за уязвимости - администратор. Код в обоих случаях написан условным программистом. Система в обоих случаях обслуживается условным администратором.

> Еще разок, если есть ошибка переполнения буфера то PaX с grsecurity может не только убивать один процесс. Может убить все процессы пользователя и запретить ему вход в систему. Может вообще само ядро убить! Мы не знаем какую область памяти перезапишим за пределами буфера.

Што?

> Общее правило: проактивные системы защиты, которые убивают процессы, нельзя использовать в системах критических для жизни людей, экологии, производства ИТП...

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

Ответить | Правка | К родителю #144 | Наверх | Cообщить модератору

148. "Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"  +/
Сообщение от Аноним (148), 07-Мрт-20, 14:28 
> Всё зависит от того, как именно всё реализовано. Мы этих моментов не уточнили - я не понимаю, как тебе ответить: мы можем придумывать примеры и контрпримеры почти бесконечно.

Например, переключатель может быть вообще исполнен в железе.

> Я не знаю, что именно там используется, но представить там PaX я вполне могу.
> > Еще разок, если есть ошибка переполнения буфера то PaX с grsecurity может не только убивать один процесс. Может убить все процессы пользователя и запретить ему вход в систему. Может вообще само ядро убить! Мы не знаем какую область памяти перезапишим за пределами буфера.
> Што?

Есть общая теория проактивной защиты. Область применения: гарантии безопасности некретических для жизни человека, экологии, ... ИТ систем. Доступность сервисов в этой теории неважна, важны гарантии безопасности и недопущения вреда самой ИТ системе. Грубо говоря в этой теории выделяют 3 класса активной реакции системы на взлом:
1. Убить один процесс который нарушил определенные правила.
2. Убить все процессы некого пользователя и запретить создания новых процессов этому пользователю, который сильно нарушает правила.
3. Ядро OS убивает себя. В самой критической ситуации для предотвращения развития атаки ядро OS убивает само себя.

Пример реализации:
CONFIG_GRKERNSEC_BRUTE=y
CONFIG_GRKERNSEC_KERN_LOCKOUT=y
https://en.m.wikibooks.org/wiki/Grsecurity/Appendix/Grsecuri...
"If you say Y here, when a PaX alert is triggered due to suspicious
activity in the kernel (from KERNEXEC/UDEREF/USERCOPY)
or an OOPS occurs due to bad memory accesses, instead of just
terminating the offending process (and potentially allowing
a subsequent exploit from the same user), we will take one of two
actions:
If the user was root, we will panic the system
If the user was non-root, we will log the attempt, terminate
all processes owned by the user, then prevent them from creating
any new processes until the system is restarted
This deters repeated kernel exploitation/bruteforcing attempts
and is useful for later forensics."

Для админа это очень важно понимать!!!

Вот пример: по соседству https://www.opennet.ru/openforum/vsluhforumID3/119792.html#146
он думает что Linux capabilities и DAC это одно и тоже. На практике будет тоже что с умершим в больнице пациентом: в случае запрета доступа DAC прога получает просто Access denied от ядря и может его обработать, а в случае нарушения capabilities проактивное ядро OS этот процесс убет.

> > > Процесс может упасть из-за более тривиальной баги, не связанной с безопасностью - что тогда?
> > Тогда виноват не админ с PaX а программист...
> За падение даже куда менее критичных сервисов админ, работающий на вменяемую компанию, обычно получает конкретный втык.
> ... И перевод стрелок тут не прокатит.

За баг в программе отвечает програмист, тестер, а не админ. Админ может только поймать баг и написать по этому поводу рапорт. Да, резервирование, мониторинг и подем упавших сервисов, минимизация/исключение времени простоя - дело админа.

> не понятно, почему в падении из-за бага (т.е. без внешнего злонамеренного воздействия) виноват программист, а в падении из-за уязвимости - администратор.

Если падение из-за бага программы виновны однозначно только разработчики программы.

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

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

Ответить | Правка | К родителю #145 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру