The OpenNET Project / Index page

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



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

Оглавление

Microsoft открыл CHERIoT, аппаратное решение для повышения безопасности кода на языке Си, opennews (??), 01-Мрт-23, (0) [смотреть все]

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


227. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (224), 02-Мрт-23, 12:19 
NX, PAE - это из мира x86. Причём, PAE - это для 32-битных CPU с целью расширения адресного пространства, а не для защиты от выходов за границы.
Ответить | Правка | К родителю #134 | Наверх | Cообщить модератору

250. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (250), 02-Мрт-23, 18:22 
В OS: Linux, BSD* используют 3 варианта:

1. Инструкция NX в процессорных архитектурах: alpha, avr32,  i386, ia64, parisc, sparc, sparc64, x86_64 разрешает написать постраничную защиту памяти ядром OS без потери производительности. Это стандарт для процессорных архитектур и стандарт реализации защиты W^X для памяти выделяемой OS.

2. Есть реализация защиты пямяти W^X основана на свойствах некоторых процесорных архитектур посегментно выделять память. Эта еализация имеет ограничения в 1.5Гб ОЗУ для проги, а также слегка притормаживает.

3. Ваше дырявое С-ишное ведро Linux/BSD* будет работать без защиты памати и с возможностью перезаписи испоняемых областей при возможном переполнении буфера.

Основываясь на выше сказаном: проц без инструкции NX - г_о_в_н_о, а если проц даже посегментно не может работать с памятью то он - г_о_в_н_и_щ_е! И никакой Rust не спасет.

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

276. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  –1 +/
Сообщение от Аноним (265), 02-Мрт-23, 21:54 
Вам просто подчеркнутое слово нравится. Повод употребить его так себе...
Ответить | Правка | Наверх | Cообщить модератору

278. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (265), 02-Мрт-23, 22:10 
Из топика: "каждая операция чтения и записи в память авторизуется"

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

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

324. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (324), 07-Мрт-23, 13:25 
Запрет исполнения есть не только в сегментной, но и в постраничной.

Вот надо организовать W^X.
Выделили пару страниц памяти для изменения, пометили W. Необходимо сразу пометить их запретом исполнения. В правильных процах для этого есть NX. А в вашем RISC-V есть три варианта для метки памяти: чтение, изменение (а зачем? ЭТО ТРОЯН!), запись. Метки запрета исполнения для страниц памяти в RISC-V нет!

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

329. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (-), 07-Мрт-23, 22:34 
Ващет бывает и легитимный самомодифицируюшийся код. Скажем man "data 2 code transformation". Это довольно быстрый класс алгоритмов, когда под ситуацию на основе входных данных генерится наиболее оптимальный для вот именно этого входа код и дальше его выполнение ведет к наиболее быстрой генерации выходного результата из всех возможных.

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

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

330. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (330), 08-Мрт-23, 07:42 
> бывает и легитимный самомодифицируюшийся код

JIT зло. JIT несовместим с принципами безопасности.

Критерии корректности работы с памятью на компютерной архитектуре (проц + ядро OS): https://www.opennet.me/openforum/vsluhforumID3/129886.html#312 гарантировано запрещают JIT.

Программы должны предусматривать сборку без JIT кода. Например иметь опцию конфигурации:


./configure ... --without-jit ...

Иначе на безопасных архитектурах работать не будут.

> когда под ситуацию на основе входных данных генерится наиболее оптимальный для вот именно этого входа код

В самом алгоритме проводить аналих входных данных и на его основе далее выбирать найлучший алгоритм (if, case).

>А ну да, надо алгоритмистов нагреть.

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

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


equery h jit

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

> И никто такие процы чота не покупает, потому что на соседних, по тому же техпроцессу, бенчи втрое быстрей кажут.

Спорный вопрос JIT, в зависимости от алгоритма, может дать чуть прирост ~10%, а может и замедлить. Потестируй JIT алгоритмы в OpenBSD.

Процессоры для построения безопасных архитектур более привлекательны для покупателя.

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

340. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (-), 08-Мрт-23, 16:55 
> JIT зло. JIT несовместим с принципами безопасности.

Вон то не JIT. Просто класс алгоритмов такой. Скоростными дата компрессорами допустим используется.

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

Да пожалста, соберите себе браузер. А теперь зайдите им на гмыл, мылру, яндекс или что подобное. И как, удалось дождаться завершения счета этого "майнера" вообще?

> Иначе на безопасных архитектурах работать не будут.

В целом я как бы сторонник W^X но иногда это таки нагибает некоторые вещи и эффективные реализации. Это что, мне теперь даже qemu с TCG нельзя для кросс-эмуляции другого проца? Оно и с JIT то раз в цать медленнее чем хотелось бы. А без JIT или совсем не заработает или так работать будет что лучше б не работало вообще. Нафиг мне эмуляция ARMовской виртуалки в режиме пошаговой стратегии? Безопасность это хорошо, но если она ломает основную функциональность - окей, что-то идет не так и хвост виляет собакой.

> В самом алгоритме проводить аналих входных данных и на его основе далее
> выбирать найлучший алгоритм (if, case).

...потратив время еще и на это :). Ващет лучше в компилтайме в идеале так то. Но не всегда возможно.

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

Data2code transform - вообще не JIT. Это именно генерация кода по входным данным. И выполнение этого как самый быстрый способ получить результат в памяти, как результат работы вот этого кода. Такой вот оптимизационный трюк. А ну да, когда вон та гамеса не заработает вы и об этом узнаете. Зато безопасно.

> Спорный вопрос JIT, в зависимости от алгоритма, может дать чуть прирост ~10%,
> а может и замедлить. Потестируй JIT алгоритмы в OpenBSD.

Я в JS потестировал случайно. Не, там не 10% было. Скорее, 10 000% - дождаться загрузки современного почтаря без JIT малореально. А можете и в 0ad - там чуть не pathfinder на этом. И если его так заякорить, ну, будете воевать 5 юнитами вместо 200. Иначе реалтайм стратегия станет пошаговой.

> Процессоры для построения безопасных архитектур более привлекательны для покупателя.

Безопасность это хорошее дополнение, но только не ценой нагибания задач покупателя. А неработа даже вот веб почтаря или игрухи с интенсивным юзом JS в "медленной" логике - покупателя точно не обрадует. По примерно тем же причинам некоторые сильно замороченные вещи типа GRSec/PaX и проч в майнлайн портированы только частично.

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

342. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (342), 09-Мрт-23, 20:36 
> Вон то не JIT. Просто класс алгоритмов такой. Скоростными дата компрессорами допустим используется.

Критерии работы ПО с памятью определил: https://www.opennet.me/openforum/vsluhforumID3/129886.html#312 если прога им удовлетворяет то работать будет. Но JIT эти критерии исключают полностью.

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

Давно туда не ходил. Да и JS отключен для внешнего мира. Google Chromium имеет JS движок без JIT, специально разработали для архитектур с запретом JIT. Можно его пробывать. А вот Mozilla имеет JIT для JS и для поддержки плагинов, код без JIT предоставлять не хочет, ржавчиной занята.

> Data2code transform - вообще не JIT. Это именно генерация кода по входным данным. И выполнение этого как самый быстрый способ получить результат в памяти, как результат работы вот этого кода

Если удовлетворяет критериям корректности, упомянутым выше, то работать будет. Но здесь усматривается другое но, уже не связаное с процессором и работой OS с памятью. Дедушки заповедали нам, что запускать левые бинари система не должна (где-то в MULTIX еще) и сегодня используется кучу средств, начиная с DAC, которые запретят запустить бинарь собраный/скачаный пользователем. Система разрешает запуск только корректно установленного ПО. Но это уже другая история.

> Я в JS потестировал случайно. Не, там не 10% было. Скорее, 10 000% - дождаться загрузки современного почтаря без JIT малореально.

Когда-то была возможность работать без JS, были упрощенные варианты страниц почтовиков, поищи.
А так да, если поставили за цель собирать данные, майнить, шпионить и взламывать с помощью JS, то владелиц сайта может нагадить такой код с JS что и с JIT будет тормозить. Еще раз это делается умышленно чтобы вынудить пользователей использовать JS с JIT и владельци сайтов имели возможность запускать вирусный код на компьютерах клиентов.

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

Вот мы обошли круг и вернулись к первоначальному вопросу: инструкцию NX для реализации корректной работы с памятью без потери производительности в RISC-V сделают? Или при разработки процессора RISC-V корпорашки вкладывают деньги только в аппаратные трояны, чтобы иметь возможность изменять память и устанавливать буткиты с виртуализацией для запуска в них пользовательских OS.

Выше писал, что пользователя нагибает не технология безопасности, а жидо-масонские корпорашки:
1. Не включают инструкции NX для реализации корректной работы с памятью без потерь производительности. В место этого включают аппаратные трояны в процессоры. И это типа свободный процессор. Просто верх цэнизма.
2. Умышленно пишут JS код так, чтобы вынудить некоторых пользователей отключить корректно работающие с памятью алгоритмы для запуска кода с JIT.

> По примерно тем же причинам некоторые сильно замороченные вещи типа GRSec/PaX и проч в майнлайн портированы только частично.

Linix изначально старался корректно работать с памятью используя  NX инструкцию процессора i386 и других. А после переезда Тровальдса в САШ этот код с ядра был удален. Тогда пользователи с европы написали анонимно патчи PAX. И этот код Торальдсу в САШ не дадут включить в мейнлайн. Формальные отмазки:
1. PAX патчи анонимны, а от анонима мы ничего брать не будем.
2. Есть и другие реализации защиты памяти. Вот вы к общему знаменателю прийдите сделайте одну и ее включим.

То что с PAX/Grsecurity портировали в ядро линукс не всегда хорошо. Иногда получилось лучше, но в большинстве реализация в Linux есть хуже. Мейнтейнеры ядра в общем не поняли сути технологий защиты PAX/Grsecurity при их реализации в LInux.

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

348. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (-), 14-Мрт-23, 04:19 
> если прога им удовлетворяет то работать будет. Но JIT эти критерии
> исключают полностью.

JIT не будет работать с W^X. Почему-то. Data2code transform тоже не будет. Эту технику специфичные датакомпрессорщики любят. Включая всяких проприетариев с рекордными параметрами по соотношению плотности сжатия к скорости распаковки. Игроделы всякие и т.п.. А заодно и упаковщики исполняемых файлов. Или программы патчащие себя для скорости. Это правда больше линукскернел так развлекается, но с чего бы программам в памяти себя патчить нельзя - кто ж его знает. Некоторые и патчат.

> Давно туда не ходил. Да и JS отключен для внешнего мира.

Это так то хорошо и правильно. И почтарь так то лучше этого кошмара. Но вон то юзерье вас не поймет и если мы про популярность проца и технологий...

> Google Chromium имеет JS движок без JIT,

А вы им еще и пользоваться пробовали? Логин в те же почтари может пару минут занять, а с JIT почти мгновенно при прочих равных. Кто их знает что они там майнят. И это, у мозилы был движок без JIT, куда дели? Но работал он с еще более позорной скоростью и радости с него такого...

> с DAC, которые запретят запустить бинарь собраный/скачаный пользователем.

...
> Система разрешает запуск только корректно установленного ПО. Но это уже другая история.

Это все прекрасно - кроме того что с одной сторонй DAC достаточно хлипкий и уповать только на него да ну нафиг. Для себя я предпочел иной путь. Вот вы видите меня. Допустим, мы смогли прорубиться. И тут окажется что доступа в систему по сути и нет. Можете в Download браузера орудовать и читать с десяток либ. Браузеру больше и не требовалось. А если вдруг это удастся обойти - то тут окажется что есть еще вопрос: а чей это W^X? Ах, какой-то виртуалки? Ну, а она не так уж и важна в конечном итоге. Может она вообще временно существует и через день перестанет существовать. Так что масштаб урона весьма маргинальный. Ну, ок, хаксор может упереть у меня даунлоады. Но вообще-то это и без меня скачать можно. Нет, никаких ништяков тут вообще совсем нет, system management, "контроль инфраструктуры" и проч - случается в совсем иных местах. Боее того - эта "инфраструктура" из виртуалок и мелких железок достаточно недружественна к левым типам. Так что они врядли много куда попадут, зато триггернут логи.

С другой стороны типовая программа уже содержит более чем достаточно либ и интерфейсов к системе для того чтобы в случае если ее удалось обмануть пожалеть об этом. Вон мозилла как-то лоханулась и позволила внешнему JS встраиваться в контекст браузера. А это доступ во все куда у браузера доступ есть. И даже если там W^X в вашем понимании и нет, это не мешает разбойному коду сканера дисков снять список дир, отстроить список интересных артефактов и утащить их всем скопом. Включая ключи ssh, логин-пароли популярных штук и какой там еще "cool stuff".

Видимо на концептуальном уровне я не доверяю идее Супер Нерушимых систем, предпочитая иметь эффективные запасные планы на случай если "супер нерушимое" окажется не совсем таковым. Как мозильский браузер с его вгрузкой JS в контекст морды браузера и далее шараханием по системе, при этом не так уж важно есть там JIT или нет, важно что JS влез в привилегированый контекст интерфейса браузера и может все то что сам браузер. На более низком уровне всякие ROP и прочие фокусы с неявным контролем дают много опций как сделать что-то вредное легитимному хозяину системы даже без совсем уж записи и выполнения кода. Это один из поводов для запрета явно ненужных сисколов и их параметров. Я стопроцентно уверен что браузеру не надо доступ к ssh, допустим, и у него нет никаких легитимных поводов трогать бинарник ssh вообще, или тем паче ключи пользователя (да, JS-сканер их пер первым делом). У меня это даже при срабатывании упрет только дырку от бублика, тут ничего кроме даунлоадов браузера нет а это все можно в интернете скачать было :)

> Когда-то была возможность работать без JS, ... поищи.

Я так то вообще программами почтарей предпочитаю. Но тем юзерам привычно воооон то.

> делается умышленно чтобы вынудить пользователей использовать JS с JIT и владельци
> сайтов имели возможность запускать вирусный код на компьютерах клиентов.

И на этот случай у меня есть довольно пустая и не информативная виртуалка. Даже если ее разнесут вдрызг я не так уж и расстроюсь, у меня снапшоты и темплейты есть. Хотя я дважды подумаю стоит ли подставлять даже ее.

> Вот мы обошли круг и вернулись к первоначальному вопросу: инструкцию NX для
> реализации корректной работы с памятью без потери производительности в RISC-V сделают?

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

А конкретно x86-32 был куском дурных проблем. В том числе - потому что в нем нет нормальных режимов относительной адресации. Этот хлам не умеет относительно PC адресоваться! Это значит что программу нельзя просто загрузить в адреса отличные от ее дефолтных. Ее сперва надо жестко пропатчить в куче мест - использовав жуткий костыль известный как relocations. Это by design клещится с идеей полного W^X, это либо патчится, либо не может работать в желаемых адресах. И вот там x86-32 нагородили дурных костылей. Остальные архитектуры просто не имеют этой проблемы, там обычно вокруг PC адресовать можно и то жоское костылестроение не актуально на самом базовом уровне.

> Или при разработки процессора RISC-V корпорашки вкладывают деньги только в аппаратные
> трояны, чтобы иметь возможность изменять память и устанавливать буткиты с виртуализацией
> для запуска в них пользовательских OS.

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

> 1. Не включают инструкции NX для реализации корректной работы с памятью без
> потерь производительности.

Я вообще не понимаю почему вам мало атрибутов памяти MMU, при обеспечении что их только система крутить может. И это вполне быстро.

> В место этого включают аппаратные трояны в процессоры.

Если что-то этим словом называть, #1 будет ME, #2 - PSP. И это в вон тех x86 так то. SMM mode с нельключаемым хэндлером в проприетарном мусоре блобваре тоже не далеко ушел, система даже вырубить это не может - у оси эффективного контроля над железом вообще НЕТ. Она в гостях.

> И это типа свободный процессор. Просто верх цэнизма.

На мой вкус там все в пределах разумного. И если отбросить перфекционизм, это сильный шаг вперед vs вон те. А знаете, если я из HDL для FPGA собрал core, я могу быть уверен что там нету ME. А для самой FPGA и ее бэкдоров вон то слишком сложно для осознания как ни крути и оно не сможет целенаправленно с эффективно этим воспользоваться даже если и было. А с x86 - опции какие вообще? А, лизать ботинки 2 корпам? Ну, офигеть, круто.

> 2. Умышленно пишут JS код так, чтобы вынудить некоторых пользователей отключить корректно
> работающие с памятью алгоритмы для запуска кода с JIT.

Ну как бы вот именно ЗАСТАВИТЬ меня юзать какой-то сайт - это надо минимум надзирателя с автоматом для эффективного энфорса. А для редких единичных случаев у меня есть чудные виртуалки.

> Linix изначально старался корректно работать с памятью используя  NX инструкцию процессора
> i386 и других.

У конкретно i386 большая часть их проблем лезла с того что x86 не умел в относительную адресацию и пришлось делать жуткие костыли. И RELRO на память - из той же области вроде. На нормальной архитектуре в лучшем случае релоки вообще не требуются. И так то если мы про нормальные архитектуры и системы, это одна из вещей к которым стоит стремиться.

> мейнлайн. Формальные отмазки:
> 1. PAX патчи анонимны, а от анонима мы ничего брать не будем.

И тем не менее, половину патчей от оных и GRSec в современные ядра НеАнонимы вполне себе портанули. Ту их часть которая не ломает по жесткому продакшны народу. У тех господ есть и весьма радикальные фичи, много чего в реальном мире ломающие или создающие иные технические проблемы.

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

Линукс портабельная система. Вот лично меня линукс интересует на ARM (-el,-hf,aarch64), MIPS, RISCV, x86-64. Итого 6 (суб)архитектур. С своими идеями как там и что. И я предпочту чтобы секурно было более-менее везде, ага.

> ядра в общем не поняли сути технологий защиты PAX/Grsecurity при их
> реализации в LInux.

Те патчи которые я видел - выглядели вполне разумно. А часть вон тех патчей со всей их сутью может либо основательно якорить систему либо ломать существующий софт. И это как бы проблема.

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

350. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (350), 03-Апр-23, 20:09 
На все отвечать не буду, но прочёл всё.

> JIT не будет работать с W^X. Почему-то. Data2code transform тоже не будет.

W^X это фундаментальный и принципиальный момент для безопасности архитектуры.
"Все что исполняется никогда не должно изменятся, а что изменяется никогда не должно исполнятся" - это правило основа всей ИТ безопасности.

>> Google Chromium имеет JS движок без JIT,
> А вы им еще и пользоваться пробовали?

На многих архитектурах с W^X люди пользуются.

>> с DAC, которые запретят запустить бинарь собраный/скачаный пользователем.
>> Система разрешает запуск только корректно установленного ПО. Но это уже другая история.
> Это все прекрасно - кроме того что с одной сторонй DAC достаточно хлипкий и уповать только на него да ну нафиг.

Второй фундаментальный принцип ИТ безопасности утверждает, что сначала необходимо настроить DAC. Правельно настроеный DAC даёт вполне безопасную систему.

И только после настройки DAC стоит заморачиватся c MAC и прочим.

Сами технологии виртуализации не разрабатывались как технологии безопасности. Но совмещение PAX+Grsecurity+виртуализация даёт неплохой результат. Особенно интересны новые OS для безопасной виртуализации на SPARK: https://muen.sk/

> На более низком уровне всякие ROP

У меня ROP закрыт: https://en.m.wikibooks.org/wiki/Grsecurity/Appendix/Grsecuri...

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

это какие?

>[оверквотинг удален]
> концептуальном уровне отличие в том что система может им рулить, а
> юзер напрямую нет. И если его можно на страничном уровне как
> W^X запрограмить - не вижу реальных проблем. В конечном итоге система
> (кернел) свое в такой системе у юзера отспорить чисто технчески может.
> А захочет ли и почему так - это уже административный вопрос
> а не технический. Сама железка может обеспечить эффективный и быстрый энфорс
> W^X на уровне тех же прав памяти.
> ...
> Я вообще не понимаю почему вам мало атрибутов памяти MMU, при обеспечении
> что их только система крутить может. И это вполне быстро.

Хочу увидить реализацию защиты памяти и сравнить её размер и скорость работы с реализацией и работой NX+PAX.

Вот например для ARM с защитой памяти есть большие проблемы и костыли с анклавами, а реальной безопасности нет.

> А конкретно x86-32 был куском дурных проблем.
> ...
> Скорее, половина вон того было актуально для кривого 32-бит уродца с полутора
> регистрами без нормальной относительной реализации - и специфична для именно его
> чудесатых проблем, когда программы вообще не релокатабельны без жутких костылищ.

i686 и сегодняшние x86_64 с софтом собраным c -fPIE -fPIC нормально работают с ASLR и описанных тобою проблем нет: https://www.opennet.me/openforum/vsluhforumID3/129886.html#309
Но, если кто гвоздями в асемблере намертво прибил адреса памяти (для некоторых оптимизаций mmx, sse, ...) то да надо пересобрать прогу и писать позиционно независимый код. Есть вся документация
  equery h pic
выдало 1 архиватор и 5 прог связаных с видео. Пришлось их собрать без аппаратного ускорения mmx, sse* на x86_64 чтобы получить позиционно независимый бинарь для запуска в  ASLR ядре.

А "Full RELRO" у меня везде без проблем. Это о либах, опции к ld: asneeded, now, relro.

> И тем не менее, половину патчей от оных и GRSec в современные
> ядра НеАнонимы вполне себе портанули. Ту их часть которая не ломает
> по жесткому продакшны народу. У тех господ есть и весьма радикальные
> фичи, много чего в реальном мире ломающие или создающие иные технические
> проблемы.

Читать доки надо перед тем как включать, или пользоватся стандартными профилями: https://en.m.wikibooks.org/wiki/Grsecurity/Appendix/Grsecuri...

> Линукс портабельная система. Вот лично меня линукс интересует на ARM (-el,-hf,aarch64),
> MIPS, RISCV, x86-64. Итого 6 (суб)архитектур. С своими идеями как там
> и что. И я предпочту чтобы секурно было более-менее везде, ага.

Для ARM защиты памяти нет, там костыли, не знаем как писать защиту памяти.

MIPS не имеет NX, но как PPC* имеет другое и мне не известно смог ли кто написать для него W^X ядро ОS.

x86-64 есть инструкции NX и есть эталонные реализации OS с защитой памяти: Linux+PAX, NetBSD.

RISC-V под вопросом вообще сама возможность написания OS с защитой памяти.

Тестируй: https://www.opennet.me/openforum/vsluhforumID3/129886.html#309

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

351. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (351), 04-Апр-23, 18:34 
> Линукс портабельная система. Вот лично меня линукс интересует на ARM (-el,-hf,aarch64), MIPS, RISCV, x86-64. Итого 6 (суб)архитектур. С своими идеями как там и что. И я предпочту чтобы секурно было более-менее везде, ага.

Классический алгоритм постраничной защиты памяти с использованием инструкции NX и без потери производительности работает на архитектурах: alpha, avr32,  i386, ia64, parisc, sparc, sparc64, x86_64.

На ppc, ppc64 там чуть по другому зделано, другая архитектура и постранична защита памяти будет чуть-чуть тормозить.

MIPS реализацию постраничной защиты памяти давно начинали писать за результат не знаю, но потери производительности чуть будут.

ARM слыхал материли, он о энергопотреблении, а не о безопасности. Проц разрабатывался не для работы с тяжолыми правельными ядрами. Разрабы ядер задавали вопросы ARM "а как вы понимаете безопасность". Потом вышел hardfp и от ARM отстали. ARM для экономии энергии и денег, а не для безопасности.

RISC-V - https://www.opennet.me/openforum/vsluhforumID3/129886.html#323 Лично хочу чтобы добавили инструкцию NX! Тогда все классические защищённые ядра должны легко заработать.

Еще раз критерии корректной работы ядра OS с памятью: https://www.opennet.me/openforum/vsluhforumID3/129886.html#312
     1. запрет изменения на исполняемую области памяти которая исполняемой не создавалась (W^X),
     2. запрет изменения на запись памяти которая выделена как исполняемая (W^X),
     3. запрет создания исполняемой памяти из анонимной памяти (W^X),
     4. запрет изменения на запись памяти выделеной только для чтения (RELRO).
Архитектура процессора должена быть такая, чтобы код ядра OS был прост и производительность не сильно падала.

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

353. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (353), 11-Май-23, 15:27 
Инструкция  PAE в процах Intel позволяет делать ASLR без потерь производительности.
Ответить | Правка | Наверх | Cообщить модератору

301. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +1 +/
Сообщение от Аноним (302), 03-Мрт-23, 14:50 
А какие работоспособные ядра есть недыряво-сишные? Redox, мягко говоря, неработоспособно.
Ответить | Правка | К родителю #250 | Наверх | Cообщить модератору

309. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +1 +/
Сообщение от Аноним (309), 04-Мрт-23, 11:10 
Очередная тестовая сборка Hardened Gentoo GNU/Linux
-systemd -elogind -dbus -polkitd -jit -...

MAC отключен, работает только DAC:


# paxtest kiddie
PaXtest - Copyright(c) 2003-2016 by Peter Busser <peter@adamantix.org> and Brad Spengler <spender@grsecurity.net>
Released under the GNU Public Licence version 2 or later

Writing output to /home/user/paxtest.log
It may take a while for the tests to complete
Test results:
/usr/bin/paxtest: line 69: /usr/lib64/paxtest/x86_64-pc-linux-gnu-gcc: No such file or directory

Executable anonymous mapping             : Killed
Executable bss                           : Killed
Executable data                          : Killed
Executable heap                          : Killed
Executable stack                         : Killed
Executable shared library bss            : Killed
Executable shared library data           : Killed
Executable anonymous mapping (mprotect)  : Killed
Executable bss (mprotect)                : Killed
Executable data (mprotect)               : Killed
Executable heap (mprotect)               : Killed
Executable stack (mprotect)              : Killed
Executable shared library bss (mprotect) : Killed
Executable shared library data (mprotect): Killed
Writable text segments                   : Killed
Anonymous mapping randomization test     : 28 quality bits (guessed)
Heap randomization test (ET_EXEC)        : 35 quality bits (guessed)
Heap randomization test (PIE)            : 35 quality bits (guessed)
Main executable randomization (ET_EXEC)  : 27 quality bits (guessed)
Main executable randomization (PIE)      : 27 quality bits (guessed)
Shared library randomization test        : 28 quality bits (guessed)
VDSO randomization test                  : 28 quality bits (guessed)
Stack randomization test (SEGMEXEC)      : 35 quality bits (guessed)
Stack randomization test (PAGEEXEC)      : 35 quality bits (guessed)
Arg/env randomization test (SEGMEXEC)    : 39 quality bits (guessed)
Arg/env randomization test (PAGEEXEC)    : 39 quality bits (guessed)
Offset to library randomisation (ET_EXEC): 27 quality bits (guessed)
Offset to library randomisation (ET_DYN) : 27 quality bits (guessed)
Randomization under memory exhaustion @~0: 28 bits (guessed)
Randomization under memory exhaustion @0 : 28 bits (guessed)
Return to function (strcpy)              : paxtest: return address contains a NULL byte.
Return to function (memcpy)              : Vulnerable                                                                        
Return to function (strcpy, PIE)         : paxtest: return address contains a NULL byte.                                      
Return to function (memcpy, PIE)         : Vulnerable


Тест показывает правильность работы процессора и ядра OS.
Return to function (memcpy)              : Vulnerable                                                                        
Return to function (memcpy, PIE)         : Vulnerable
Потому, что тот тест собирается без SPP. А вот на архитектурах MIPS, PPC даный тест должен пройти и без SPP, у них это делается аппаратно.

# hardening-check /bin/ls
/bin/ls:
Position Independent Executable: yes
Stack protected: yes
Fortify Source functions: yes
Read-only relocations: yes
Immediate binding: yes

# checksec -f /bin/ls
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      FORTIFY Fortified Fortifiable  FILE
Full RELRO      Canary found      NX enabled    PIE enabled     No RPATH   No RUNPATH   Yes     5               17      /bin/ls

# checksec -pl 1
* System-wide ASLRPaX ASLR enabled

* Does the CPU support NX: Yes

* Process information:

         COMMAND    PID RELRO           STACK CANARY            SECCOMP          NX/PaX        PIE                     Fortify Source
            init      1 Full RELRO      Canary found            No Seccomp       PaX enabled   PIE enabled             Yes


    RELRO               STACK CANARY   NX/PaX        PIE            RPath       RunPath   Fortify Fortified   Fortifiable

* Loaded libraries (file information, # of mapped files: 4):

  /lib64/ld-2.26.so:
    Full RELRO      No canary found   NX enabled    DSO             No RPATH   No RUNPATH   No  0               0

  /lib64/libc-2.26.so:
    Full RELRO      Canary found      NX enabled    DSO             No RPATH   No RUNPATH   Yes 79              170

  /lib64/libpthread-2.26.so:
    Full RELRO      Canary found      NX enabled    DSO             No RPATH   No RUNPATH   Yes 0               27

  /sbin/init:
    Full RELRO      Canary found      NX enabled    PIE enabled     No RPATH   No RUNPATH   Yes 7               13


Даные тесты показывают правильность сборки и линковки ПО.
-D_FORTIFY_SOURCE=3 даст еще больше "Fortified", так что Rust не нужен.

# mount |grep -v -E '(noexec|ro)'

Тест на монтирование дисков. Ничего не должен выводить.

# sed -i 's/Virus//' /var/log/syslog.log
sed: cannot rename /var/log/sedKktIU4: Operation not permitted

Тест защиты логов от чистки. Файл лога остался неизменным.

# cp --preserve=all /bin/ls /tmp

# /bin/ls
работает
# /tmp/ls
-bash: /tmp/ls: Permission denied

# /lib/ld-linux-x86-64.so.2 /bin/ls
работает
# /lib/ld-linux-x86-64.so.2 /tmp/ls
/tmp/ls: error while loading shared libraries: /tmp/ls: failed to map segment from shared object


Запрет на исполнение любых левых бинарей.

$ ls /proc/1/
ls: cannot access '/proc/1/': No such file or directory

Пользователь должен видеть только свои процессы.

По моему мнению эта система соотведствует уровню "C2".
Обратите внимание на 3 вещи:
1. Запуск только установленных бинарей. Невозможность запуска левых бинарей.
2. DAC распространяется и на оперативную память. Корректность работы процессора и ядра OS с памятью - W^X.
3. Невозможность правки логов.

Больше тестов делают системы для аудита типа lynis https://cisofy.com/lynis/

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

311. "Fix"  +/
Сообщение от Аноним (311), 04-Мрт-23, 11:44 
Fix:
Потому, что тот тест собирается без SSP. А вот на архитектурах MIPS, PPC даный тест должен пройти и без SSP, у них это делается аппаратно.
Ответить | Правка | Наверх | Cообщить модератору

313. "Fix 2"  +/
Сообщение от Аноним (313), 04-Мрт-23, 12:56 
Права на процесы наверно лучше проверять так:

# ls -dl /proc/1
dr-x------ 8 root root 0 Mar  4 14:14 /proc/1

$ ls -dl /proc/1
ls: cannot access '/proc/1': No such file or directory

$ ls -l /proc |grep "$USER $USER"
dr-x------  8 user user     0 Mar  4 14:14 393098
dr-x------  8 user user     0 Mar  4 14:14 393211
dr-x------  8 user user     0 Mar  4 14:14 393224
dr-x------  8 user user     0 Mar  4 14:14 393229
dr-x------  8 user user     0 Mar  4 14:14 393250
dr-x------  8 user user     0 Mar  4 14:14 393259
dr-x------  8 user user     0 Mar  4 14:14 409653
dr-x------  8 user user     0 Mar  4 14:14 706112
dr-x------  8 user user     0 Mar  4 16:18 969673
dr-x------  8 user user     0 Mar  4 16:19 969677
dr-x------  8 user user     0 Mar  4 16:20 970599


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

310. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (310), 04-Мрт-23, 11:39 
> А какие работоспособные ядра есть недыряво-сишные?

Там не в одном ядре дело. Корректность работы достигается за счет связки 5-ти важных для затыкания C-ишных дыр компонентов:

  Процесор с NX + Ядро OS + Компилятор gcc + Линковщик binutils + Системна библиотека glibc.

По этому надо тестировать дистры Linux/BSD* и выбирать правильно собраные.

Мое мнение ядра:
Linux+PAX, NetBSD - вполне корректные и работоспособные.
FreeBSD, OpenBSD - некорректные.
DragonflyBSD - имеет потенциал корректности, но надо смотреть.

Запускай
paxtest blackhat
настраивай пересобирай опять запускай
paxtest blackhat
патчи настраивай пересобирай
paxtest blackhat
...

Важный момент: JIT код в корректных ядрах никогда работать не будет. Система должна гарантировать невозможность запуска левых бинарей и измененных бинарей.

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

320. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (117), 06-Мрт-23, 11:03 
> Мое мнение ядра:
> Linux+PAX, NetBSD - вполне корректные и работоспособные.
> FreeBSD, OpenBSD - некорректные.

FreeBSD+Hardened патчи
https://hardenedbsd.org/content/easy-feature-comparison
https://hardenedbsd.org/content/projects
> HardenedBSD's implementation of ASLR is the strongest implemented in any of the BSDs.

...
> NOEXEC prevents the creation of memory allocations that have both the writable and execute permissions set. If an allocation is created as writable, it can never be marked as executable. If is created as executable, it can never be marked as writable.

...
> Integriforce allows a system administrator to ensure file integrity through hash enforcement--similar in concept to NetBSD's Veriexec. Integriorce can be set in whitelisting mode, turning Integriforce into a verified application whitelisting tool.

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

322. "Microsoft открыл CHERIoT, аппаратное решение для повышения б..."  +/
Сообщение от Аноним (323), 06-Мрт-23, 15:02 
Критерии корректности работы с памятью написал: https://www.opennet.me/openforum/vsluhforumID3/129886.html#312

Linux+PAX, NetBSD - этим критериям отвечают.

FreeBSD, OpenBSD - этим критериям не отвечают. Тео повелся на JIT. Если архитектура (процессор с ядром OS) допускают использование JIT кода, то она небезопасна.

DragonFlyBSD, HardenedBSD -- надо смотреть, дай вывод paxtest с этих BSD-ей.

Выше привел пример базового аудита корректности OS. Сделай и выложи результаты аудита корректности работы с *BSD.

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

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

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




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

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