The OpenNET Project / Index page

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



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

Оглавление

В PHP 8 будет добавлен JIT-компилятор, opennews (??), 31-Мрт-19, (0) [смотреть все]

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


1. "В PHP 8 будет добавлен JIT-компилятор"  –5 +/
Сообщение от Аноним (1), 31-Мрт-19, 12:59 
Ой, все...
Ответить | Правка | Наверх | Cообщить модератору

111. "В PHP 8 добавят закладку!!!"  +/
Сообщение от anoimouse (?), 01-Апр-19, 09:05 
JIT использовать небезопасно! Использование jit запрещено главным правилом построения безопасной системы.

Призываю всех бойкотировать программы использующие jit.

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

122. "В PHP 8 добавят закладку!!!"  –2 +/
Сообщение от funny.falcon (?), 01-Апр-19, 14:31 
Т.е. предлагаешь выкинуть все андроид телефоны на помойку?
Хммм... а это мысль...
Не займёшь на iPhone до зарплаты?
Только Safari нужно будет отключить. Там ведь жабоскрипт с джитом.
Ответить | Правка | Наверх | Cообщить модератору

133. "В PHP 8 добавят закладку!!!"  –1 +/
Сообщение от freehckemail (ok), 02-Апр-19, 11:08 
> Призываю всех бойкотировать программы использующие jit.

Ну да, давай бойкотировать лиспы, яву...

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

138. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (138), 03-Апр-19, 16:01 
Лисп очень стар ижаба тоже. Функциональное программирование давние. Любимый питон тоже работает, только без функционального программирования.

Технология защиты памяти посегментно относительно нова, а реализация постраничной защиты памяти современными процессорами вообще новая и очень эффективная и экономичная технология безопасности.

Иначе как гарантировать неизменность исполняемого кода?

Исполняемому даем права X
Изменяемым данным W
Права WX - дыра позволяющая изменить исполняемый код. Нормальные процессоры такого не разрешают. Нормальные ядра ОС тоже.

Я не вижу другого пути гарантирования безопасности.

JIT - нарушает главное правило построения безопасной ОС.

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

139. "В PHP 8 добавят закладку!!!"  –1 +/
Сообщение от freehckemail (ok), 03-Апр-19, 16:26 
> Иначе как гарантировать неизменность исполняемого кода?

Зачем это делать? Ну допустим мы сделаем код неизменным. Что в итоге? Прощайте функции первого порядка, да? Вернём старую добрую эпоху Си и Асма?

> Я не вижу другого пути гарантирования безопасности.

Другие пути есть. Если Ваша программа создаёт функции на лету по заранее определённым шаблонам, если производится строгий контроль типов на этапе компиляции -- то grsec/pax Вам вряд ли потребуются. Короче, возьмите Ocaml/Haskell.

> JIT - нарушает главное правило построения безопасной ОС.

Ничего он не нарушает, расслабьтесь. Мандатный доступ имеет смысл только для низкоуровневых языков, типа Си.

Ну и очень рекомендую начинать учиться функциональному программированию.

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

140. "В PHP 8 добавят закладку!!!"  +1 +/
Сообщение от Аноним (140), 03-Апр-19, 16:41 
В даном вопросе я консерватор.

Исполняемая область памяти не должна изменятся, а изменяемая исполнятся.

Все что не удовлетворяет сему правилу с своей системы выкидывают!

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

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

141. "В PHP 8 добавят закладку!!!"  +1 +/
Сообщение от freehckemail (ok), 03-Апр-19, 22:04 
> переписываю с использованием структурного, модульного,
> объектного програмирования, без элементов функционального програмирования.

Опеннет, и ты мне говоришь, что это у меня случай клинический?! O_o

Ладно, поставим точку цитатой из одного рассказика с wasm-а, который я читал в начале нулевых:
"Да что это за программа такая, которая даже не может изменить свой собственный код?" =)

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

148. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (148), 07-Апр-19, 12:26 
Можешь писать как хочешь, констатируют лишь факт - выделения памяти в режиме WX небезопасно. Можно при этом нагородить кучу проверок, которые замедлят работу программы и всё равно не дадут гарантию безопасности.
Ответить | Правка | Наверх | Cообщить модератору

151. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (151), 07-Апр-19, 13:16 
Программа которая не изменяет исполняемую часть - удовлетворяет необходимому условию безопасности - неизменность исполняемого кода.
Ответить | Правка | К родителю #141 | Наверх | Cообщить модератору

143. "В PHP 8 добавят закладку!!!"  +1 +/
Сообщение от Аноним84701 (ok), 04-Апр-19, 12:58 

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

А почему переписывается, а не выкидывается, ведь код в интерпретаторе питона -- под RWX  (иначе тот же eval("foo") или манкипатчинг не будут работать). Непоследовательно как-то.
> без элементов функционального програмирования.

Вообще-то, функциональщина проще проверяется на корректность, особенно при поддержки автоматизмов.

> В даном вопросе я консерватор.

Не, это как-то по другому называется 🙄

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

149. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (148), 07-Апр-19, 12:32 
У меня питон с RX выделением памяти. Если программа требует выделение памяти в режиме rwx то она уничтожается. Свои мне проще переписать без lambad и они сразу начинают нормально работать.
Ответить | Правка | Наверх | Cообщить модератору

153. "В PHP 8 добавят закладку!!!"  +1 +/
Сообщение от Аноним84701 (ok), 07-Апр-19, 14:16 
> У меня питон с RX выделением памяти.

Только питонокоду, исполняемому интерпретатором СPython,  eXecute разрешения страницы до лампочки, потому что роль "CPU" в этом случае играет сам  интерпретатор.
А он прекрасно позволит добавить или изменить код с помощью eval, патчинга и еще 100500 способов:


>>> import new

# f(x) = x²
>>> def foo(x):

...     return x*x
...
>>> foo(4)

16
>>> foo(10)

100
# байткод функции
>>> foo.__code__.co_code

'|\x00\x00|\x00\x00\x18S'

# меняем опкод MUL на ADD

>>> co=foo.__code__
>>> foo.__code__ = new.code(co.co_argcount,

...                co.co_nlocals,
...                co.co_stacksize,
...                co.co_flags,
...                '|\x00\x00|\x00\x00\x17S',
...                co.co_consts,
...                co.co_names,
...                co.co_varnames,
...                co.co_filename,
...                co.co_name,
...                co.co_firstlineno,
...                co.co_lnotab)

>>> foo(4)

8
>>> foo(10)

20

# а можно было просто
>>> foo = lambda y: y+y

# любой вызов foo теперь будет выполнять совершенно другой код.
>>> foo(10)

20

Хуже того: любой ЯП, позволяющий переопределять методы/функции/процедуры во время выполнения или использовать структуры данных для реализации динамической замены (о как завернул!) методов (классический callback в си или хранилка указателя к обработчику в структуре данных -- это оно, ага) так или иначе, принципиально обходит W^X.

Но ходовые скриптовые ЯП делают это на "базовом" уровне, предоставляя атакующему не просто возможность заменить функцию-другую или поизвращаться с ROP в ASLR, а  весь мощьный, базовый набор "опкодов" интерпретатора, шикарнейшим образом вырубая рандомизацию адресного пространства, memory-guards и все "гарантии неизменности кода" (толку-то от того, что код интерпретатора не изменился, если он все равно выполнит любое нужное действие) …
Так что придется или сильно переписывать CPython или удалять, увы.
(Ba/Da/Z) sh однозначно только удалять, там слишком много завязанно на повсеместной интерпретации-выполнения ввода пользователя.


% echo "my $(time ls)"
ls -GF  0,00s user 0,00s system 68% cpu 0,006 total
my Makefile

> Свои мне проще переписать без lambad и они сразу начинают нормально работать.

Это может показаться удивительным и невероятным, но лямбды в  питоне в реализации не особо отличаются от "именных" фукции:


>>> import dis
>>> def foo(x): return x+x

...
>>> dis.dis(foo)

  3           0 LOAD_FAST                0 (x)
              3 LOAD_FAST                0 (x)
              6 BINARY_ADD          
              7 RETURN_VALUE      
  
>>> dis.dis(lambda x: x+x)

  3           0 LOAD_FAST                0 (x)
              3 LOAD_FAST                0 (x)
              6 BINARY_ADD          
              7 RETURN_VALUE        
>>> y=lambda x: x+x
>>> y.__code__.co_code

'|\x00\x00|\x00\x00\x17S'
>>> foo.__code__.co_code

'|\x00\x00|\x00\x00\x17S'
>>>


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

155. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (155), 07-Апр-19, 16:48 
Проверю на своём питоне, в моей ОС и на моём проце.

То что такое разрешается у вас на компе не значит что можно на моём.

Результат отпишу.

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

157. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 08-Апр-19, 11:59 
> Проверю на своём питоне, в моей ОС и на моём проце.
> То что такое разрешается у вас на компе не значит что можно на моём.

Хоть одну причину придумай, почему на твоём это не так. Русским же языком тебе объяснили, почему интерпретаторы и языки с VM в бэке придётся выкидывать по твоей логике.

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

159. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (159), 08-Апр-19, 16:46 
Да, у меня такая логика.

Заметте большую разницу с вашей логикой:

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

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

RWX - права просты и используются изначально. Можно придумать другую ОС с другими правилами гарантирующие необходимые условия безопасности. Но это должны быть математические алгоритмы дающие гарантии!

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

160. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 08-Апр-19, 18:33 
> Да, у меня такая логика.
> Заметте большую разницу с вашей логикой:
> Вы предлагает кучу сложных и затратных проверок, шаблонов и не даёте гарантий.
> Вы как майор, для которого безопасность это мозгоебство, причём чем жеще
> последнее тем они думает, что больше безопасность.

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

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

Всего-то пару прог переписать, ага. Перепиши для начала одну JVM.


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

163. "В PHP 8 добавят закладку!!!"  –1 +/
Сообщение от Аноним (163), 09-Апр-19, 15:38 
Обеспечение неизменности исполняемого кода - необходимое условие для безопасности.

Технология jit изменяет исполняемый код и по этому я её считаю небезопасной.

Не надо сотню интерпретаторов держать в системе.

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

164. "В PHP 8 добавят закладку!!!"  +1 +/
Сообщение от freehckemail (ok), 09-Апр-19, 15:56 
> Обеспечение неизменности исполняемого кода - необходимое условие для безопасности.

Опять?!

> Технология jit изменяет исполняемый код и по этому я её считаю небезопасной.
> Не надо сотню интерпретаторов держать в системе.

Мда. Чукча явно не читатель.

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

166. "В PHP 8 добавят закладку!!!"  –1 +/
Сообщение от Аноним (163), 09-Апр-19, 16:03 
Ты можешь отключить защиту памяти для любой программы:

paxctl-ng -m /path/to/program

А вся остальная система будет использовать защиту PAX.

То есть лисп и жабу без проблем запустить отключив для них защиту памяти.

Но это исключение создаст вектор атаки.

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

168. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 09-Апр-19, 16:45 
> Ты можешь отключить защиту памяти для любой программы:
> paxctl-ng -m /path/to/program
> А вся остальная система будет использовать защиту PAX.
> То есть лисп и жабу без проблем запустить отключив для них защиту памяти.

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

> Но это исключение создаст вектор атаки.

Бла-бла-бла. Я так тебе скажу: куда большие векторы атаки появляются из-за недостаточного срока тестирования дистрибутива, и никакие паксы тебя от этого не уберегут.

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

170. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (163), 09-Апр-19, 16:49 
Я не пользовался Астрой.

Пользуясь стабильной ветвью hardened gentoo более 15 лет. Проблем нет.

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

172. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 09-Апр-19, 16:52 
> Я не пользовался Астрой.
> Пользуясь стабильной ветвью hardened gentoo более 15 лет.

Это типа лучше-стабильней, думаешь?

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

174. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (163), 09-Апр-19, 17:02 
Ну для сравнения можешь глянуть DYSTRYK он на фтп Яндекса есть, правда староват, 2008 года. Это почти классический hardened gentoo
Ответить | Правка | К родителю #172 | Наверх | Cообщить модератору

178. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 09-Апр-19, 17:43 
> Ну для сравнения можешь глянуть DYSTRYK он на фтп Яндекса есть, правда
> староват, 2008 года. Это почти классический hardened gentoo

Увы, я недостаточно смышлённый, чтобы без ссылки что-либо найти в интернете. А ещё меня в Яндексе по айпи забанили.

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

180. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (180), 11-Апр-19, 15:52 
https://mirror.yandex.ru/mirrors/ftp.linux.kiev.ua/Linux/CD/.../

Он сильно от классического Линукса отличается. Кроме усиленной безопасности реализована прозрачная для программ технология чекпоинта, - если дернуть питание и включить то все программы продолжат работать. Реализована кластерна технология единого системного образа, - прозрачно для программы ей доступно общее количество ядер и оперативы в сети (это противоположно виртуализации). Технология толстых клиентов (противоположность тонким клиентам) грузится один комп (например с ливесд) остальные грузится с него (можно без дисковые станции).

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

158. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (159), 08-Апр-19, 16:25 
Проверил на:

ядре Линукс с:

Pageexec y
Emutramp n.  #для питона рекомендуют у, но это щель
Emusigrt n
Mprotect y

Cpu intel core c NX

То есть с памятью запрещено делать:
1. Изменять статус +x если изначально память была выделена как не исполняемая.
2. Менять режим с только для чтения ro на rw.
3. Изменить статус на исполняемый анонимной области памяти.
4. Изменить RELRO добавив возможность записи +w.

Проверить new.code на 2 питоне мне не удалось. Видать плохо старался, надо функции больше параметров...

Пробовал на 3 питоне:
import code
foo.__code__=code(...)
TypeError: module object is not callable

Мене вот эта фигня досаждает:

import numpy
........
File "/usr/lib/python/site-packages/numpy/core/_internal.py", line 14, in <module>
    import ctypes
File "/usr/lib/python/ctypes/__init__.py", line 5** in <module>
    _reset_cache()
File "/usr/lib/python/ctypes/__init__.py", line 27*, in _reset_cache
    CFUNCTYPE(c_init)(lambda: None)
MemoryError

В логах:
...kernel... denied RWX mmap of <annonymouse mapping> by /usr/bin/python3

То есть сработал пункт 3 запретов деествий с памятью.

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

161. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 08-Апр-19, 18:36 
>[оверквотинг удален]
> File "/usr/lib/python/site-packages/numpy/core/_internal.py", line 14, in <module>
>     import ctypes
> File "/usr/lib/python/ctypes/__init__.py", line 5** in <module>
>     _reset_cache()
> File "/usr/lib/python/ctypes/__init__.py", line 27*, in _reset_cache
>     CFUNCTYPE(c_init)(lambda: None)
> MemoryError
> В логах:
> ...kernel... denied RWX mmap of <annonymouse mapping> by /usr/bin/python3
> То есть сработал пункт 3 запретов деествий с памятью.

Ну вот ты и получил ответы: WX запретить-то можешь, вот только у тебя ничего большая часть программ после этого перестаёт работать. О чём, собственно, тебе весь тред и говорили.

Добро пожаловать.

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

165. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (163), 09-Апр-19, 15:57 
WX надо запретить тебе тоже использовать.

Там ошибка в 273 строке Lib/ctypes/__init__.py надо или выкинуть или if os.name in 'nt': сделать чтобы для нормальных ОС сейкод не выполнялся.

Это баг, заметь всего один, который надо отослать разрабам питона.

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

Попробуй использовать ОС с защитой памяти, больших трудностей не будет. Можно для лиспа с жабой защиты памяти отключить, а в место хрома использовать firefox.

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

167. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 09-Апр-19, 16:41 
> WX надо запретить тебе тоже использовать.

Спасибо, я предпочитаю мандатному доступу иные способы защиты.

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

173. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (163), 09-Апр-19, 16:57 
Мандатной это совсем другое. Там усилий на несколько порядков больше надо.

Защита памяти PAX самое простое из всего доступного арсенала. Там фактически ничего не надо настраивать.

Следующим по сложности идёт криптографическая верификация целостности всего загружаемого.

Самое сложное - написание правил мандатного контроля доступа. Надо очень много времени, столько денег мне никто ещё не предлагал.

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

177. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 09-Апр-19, 17:38 
> Защита памяти PAX самое простое из всего доступного арсенала.

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

> Там фактически ничего не надо настраивать.

Ты никогда не портировал хотя бы среднего размера продукты под это дело? Посмотрел бы я на то, как ты будешь рассказывать сказки про "ничего не надо настраивать" после того, как перечислишь последний бинарь в 50м пакете...

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

181. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (180), 11-Апр-19, 16:01 
Именно для этого я в эту влез!

Pax даёт гарантии неизменности исполняемых на проце областей оперативно. Это необходимо для безопасности.

Pax как лампочка, включил в ядре и всё.

Проблема в том что враги ненужный вообще JIT всюда суют. Вот он pax вредит.  Jit - зло!

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

182. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (180), 11-Апр-19, 16:13 
А инные способы защиты кроме мандатного и pax какие используете, если не секрет?

Есть ещё криптографическая верификация:
Секуребут или tboot -> grub check_signatures=enforce -> Linux IMA/EVM

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

Сканирование на вири трафика и флешек самособой обязательно.

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

186. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 12-Апр-19, 04:20 
> А инные способы защиты кроме мандатного и pax какие используете, если не секрет?

Да не, не секрет. firewalld, docker, + иногда ipsec

Для защиты от 99.999% угроз этого достаточно. Оставшийся 0.001% реализуется только при таком немыслимом стечении обстоятельств, что тратить силы на него нет нужды, особенно при грамотной организации своевременной доставки обновлений безопасности.

Ну это если для прода, и если не вдаваться в проблемы организации многопользовательского доступа, потому что если вдаваться -- то иди говорить о безопасности с Митником, он тебе всё по полочкам растолкает. =)

> Есть ещё криптографическая верификация:
> Секуребут или tboot -> grub check_signatures=enforce -> Linux IMA/EVM

Для десктопа/ноута можешь ограничиться LUKS-ом на блочное устройство + флешка с бут-разделом.

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

187. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (187), 13-Апр-19, 17:11 
Этот firewolld через dbus работает! А я dbus нафиг с системы выкидываю. Потдержываю руками скрипты с жесткой фильтрацией всего входящего и исходящего трафика на всех интерфейсах.

На щет докера и прочих контейнеров, тоже не верю. Потдерживаю свою систему создания изолированных окружений.  Старый добрый chroot + контроль привилегий линукс capabilities самым ядром с проекта grsecurity.

Vpn от настроения разные.

У меня, и у всех уже наверное /boot & / шифрования давно. MBR  не шифрованый и core.img от grub.

Загрузка с флешки мне не помогла. Есть буткиты в mbr, bios grub и руткиты в initrd. Ловил по меняющимся хешам.

Надо крыптоверификацию и вместо флешки использовать CDROM. На ROM диске не возможно изменить данные, а значит записать вирус.

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

189. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 13-Апр-19, 18:04 
> Этот firewolld через dbus работает! А я dbus нафиг с системы выкидываю.
> Потдержываю руками скрипты с жесткой фильтрацией всего входящего и исходящего трафика
> на всех интерфейсах.

Свои скрипты? Ну это безусловно можно, а чем iptables-persistent не подошёл?

> На щет докера и прочих контейнеров, тоже не верю. Потдерживаю свою систему
> создания изолированных окружений.  Старый добрый chroot + контроль привилегий линукс
> capabilities самым ядром с проекта grsecurity.

Я тоже не верю, но лишним не будет.

К тому же, с ним деплой облегчается в разы. А если надо оркестровку сервисов на нескольких машинах, то объединить его в k8s -- и всё вообще великолепно работает. Если инфра небольшая, то вместо k8s можно и вовсе руками водрузить docker+etcd+flannel/calico.

> Vpn от настроения разные.

Согласен, тут всё зависит от цели. Если пользователей пускать во внутреннюю сеть, то хватит и openvpn. Ежели же надо объединить пару сетей, если между ними трафика много или они удалены друг от друга, или нужно просто это прозрачно сделать -- ну тогда ipsec, может l2tp ещё.

> У меня, и у всех уже наверное /boot & / шифрования давно. MBR  не шифрованый и core.img от grub.
> Загрузка с флешки мне не помогла. Есть буткиты в mbr, bios grub и руткиты в initrd. Ловил по меняющимся хешам.

Это уже интереснее. Я бы послушал подробности.

Руткит в initrd -- ну это ты сам себе злобный буратино. Я с этой флешкой не расстаюсь никогда.

По поводу bios grub... Так это, разве компы с bios boot partition ещё существуют?

Про bootkit в mbr -- ну тут уже бабушка надвое сказала. Можно визуально сделать два слегка различных загрузчика на диске и флешке.

А вообще, проблемы-то на этом не заканчиваются. Если тебя захотят сломать, могут и хардварный килоггер в клаву запихнуть. Так что на самом деле защита тут не бывает 100%й, разве что ты никогда не расстаёшься со своим ноутбуком.

> Надо крыптоверификацию и вместо флешки использовать CDROM. На ROM диске не возможно
> изменить данные, а значит записать вирус.

Можно, но диск легче расфигачить, нежели флешку. Обидно будет, если ты в поездке споткнулся, и диск вдребезги. Другое дело, этот минус -- он же плюс. Если надо избавиться от диска -- взял да и кокнул. С флешкой так легко не получится.

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

191. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (191), 14-Апр-19, 10:16 
У меня скрипты iptables тянутся с 2000г., а ipfw с 2010г. Все вылизано руками. Cобираюсь переписать iptables на nftables.
Автогенераторы фаерволов не использовал. Писал свои правила на основе модуля recent и ipset для автоматической реакции сетевого экрана на атаки. Сами правила сетевого экрана изменятся не должны, иначе есть вероятность что вирь дыру для своих друзей откроет.

В РФ есть опасный баг в подготовке специалистов по ИТ безопасности - не различают софт разработанный для удобства администрирования и софт для обеспечения безопасности. Докер это первое нет в нём гарантий изоляции. У меня скрипт, грубо говоря 10 строк на баше, создаёт/обновляет контейнер. И ещё один который обновляет все контейнеры в системе ещё на 10 строк. Обновил систему, поменял настройки, дёрнул скрипт и всё контейнеры свежие. Хочешь  с консоли, по ssh или своей оркестровкой дергай. Hardeneed chroot даёт довольно сильные и очень дешовые гарантии изоляции.

Компы с биосом ещё есть. /boot & / шифрованы. Grub core.img с крыптографией для расшифровки /boot и публичным ключом для проверки цифровых подписей себя, kernel & initrd (где есть крыптография для расшифровки / и публичные ключи для IMA/EVM) устанавливается перед первым разделом за MBR, или если места там не хватает то в отдельный раздел BIOS grub. Атака на core.img даст возможность получить доступ  к шифрованому /boot и ключу проверки подписей всего что в /boot... и так далее по цепочке загрузки. Это можно сделать удаленно. Чем раньше буткиты получает доступ в процессе загрузки тем больше у него возможностей для своего скрытия.

Флешку можно изменить, аппаратный перекльчатель флешки в режим только чтения сегодня редкость. CD-ROM гарантия неизменности данных. Но и с этим проблемы, мне сменили прошивка CD/DVD привода! Теперь приводы оптических дисков во время работы отключают.

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

190. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним84701 (ok), 13-Апр-19, 19:50 
> Надо крыптоверификацию и вместо флешки использовать CDROM. На ROM диске не возможно  изменить данные, а значит записать вирус.

На самом деле никому оно толком не нужно:
Был такой проект еще (почти - лень смотреть точную дату) 10 лет назад, antibootkit назывался.
"По мотивам" нашумевшего тогда буткита Клейснера, который, типа "расшифровал трукрипту" (на самом деле в загрузчик TC встраивался кейлогер).
Простенький (т.е. вполне верифицируемый глазками) загрузчик где-то на тысячу строк fasm,
(плюс "ассистент" на Си, который вообще заменяется скриптиком c вызовом dd), без каких-либо зависимостей.

Умел считать sha1-хеши первых секторов дисков, сравнивать их с вшитыми в загрузчик[т.е. самого себя] (или просто показывать, чтобы можно было записать и потом "вшить" ассистентом в загрузчик-ISOшку, без пересборки), выдавать предупреждение в случае расхождения хешей или автоматически переключаться на дефолтный системный загрузчик в ином случае.

Там принципиально только 3 дыры:
Загрузчик должен быть на ROM (иначе, соотв. модифицируются проверочные хэши).
Хардварный кейлоггер/перепрошивка биос или фирмвари.
И  можно "фейкнуть" скрин загрузчика - т.е. буткит показывает точно такой же скрин.
Правда, просто показать мало - нужно еще модифицировать порядок загрузки (или как-то незаметно предотвратить загрузку с носителя), ну и можно выводить в скрине загрузчика какое нибудь дополнительное "кодовое" слово, прошиваемое вместе с хешем (слово, в отличие от хеша, нельзя будет посчитать из имеющейся информации).

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

192. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (192), 14-Апр-19, 12:50 
Думал в этом же направлении.

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

Сам grub довольно продвинутый он имеет: cmosdump, lspci, usb, sha*sum & if then else. Мне не хватает | чтобы в подписанном цифровой подписью grub.cfg верифицировать неизменность железа и cmos биоса. С dd можно было бы и MBR верифицировать.

Слышал есть загрузчики заточены на криптоверификацию железа, биоса, бута на диске?

Сам никогда не работал в отделе ИТ безопасности. И с годами замечаю что все больше времени трачу именно на безопасность. Постепенно превращаясь в того мозгоебщика, что пристает и кричит не использовать jit, docker, сетевые экраны что сами себя пишут и как им захочется во время работы модифицируют себя. Не в ту сторону этот мир свернул...

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

162. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним84701 (ok), 08-Апр-19, 20:18 
> То есть с памятью запрещено делать:
> 1. Изменять статус +x если изначально память была выделена как не исполняемая.
> 2. Менять режим с только для чтения ro на rw.
> 3. Изменить статус на исполняемый анонимной области памяти.
> 4. Изменить RELRO добавив возможность записи +w.

Интерпретатору  (тому который, внимание ирония: без JIT)  это до одного места (в ином случае, помимо кучи модулей и библиотек, тот же REPL питона или интерактивный шелл не будут работать, т.к. там основное действие - читать и исполнять ввод пользователя):


# part of a bigger script
# ...
# this is our simple log script, we log all logins. Nothing can go wrong, we have no RWX, no +x … trust me, I know what I'm doing!
echo "$(date): Bad guy tried to log in and steal your pr0n with invalid username: $USER, action: access denied" > important.log
# ...

и

% # simulate bad guy login
USER="$(rm -rf ~/*)"; echo "$(date): $USER tried to log in and watch pr0n, access denied > importantlog.log

код интерпретатора (*sh) остался неизменным. Правда пользователю от этого вряд ли сильно легче.


> Проверить new.code на 2 питоне мне не удалось. Видать плохо старался, надо функции больше параметров...

Наверное у Вас Особый Питон, не такой как у всех остальных, без возможности переопределения методов, eval, exec, import - *завидует* (угу, вот щаз прям побегу полноценный, красивый и гладкий PoC писать … сразу после глажки шнурков)

> Пробовал на 3 питоне:
> import code
> foo.__code__=code(...)
> TypeError: module object is not callable

Если вы считаете, что это не работает из-за режима W^X, то у меня для вас плохие новости: вызов модуля не работает вообще у всех (это такое ограничение ЯП).
В тройке это делается так:


>>> import os
>>> def foo(): print(1+1)

...
>>> foo.__code__ = compile("print(os.listdir('/'))",'<string>','single')
>>> foo()

[ 'usr', 'dev', 'mnt', 'tmp'


или с code

import code, os
def foo(): print(1+1)
foo()
2
x=code.compile_command("import os;print(os.listdir('/'))")
foo.__code__ = x
foo()
[ 'usr', 'dev', 'mnt'

> Мене вот эта фигня досаждает:
> import numpy
> ........
> File "/usr/lib/python/site-packages/numpy/core/_internal.py", line 14, in <module>
>  import ctypes
> То есть сработал пункт 3 запретов деествий с памятью.

Угу, срабатывание при попытке загрузки сишной либы питоном  через жо^W  "универсальным" для кучи ОС методом (интересующиеся могут глянуть в ctypes.__init__) все расставило на свои места.
Правда, можно просто записать любую либу и подгризить ее штатными методом (это не будет ANONYMOUS_MAP), но пссст, это тайное знание.

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


% cat load.py  &&  echo "print(1+2)">mylib.py && python3 load.py&
import time,imp,mylib
while True:
    try:
        imp.reload(mylib)
    except Exception as ex:
        print(ex)
    except:
        pass
    time.sleep(3)
3
3
3
% echo "import os;print(os.listdir())" > mylib.py
[ 'serv.py', 'clipnotify',

% echo "import runpy;print('0wn3d');runpy.run_module('http.server',run_name='__main__')" > mylib.py
0wn3d
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
127.0.0.1 - - [08/Apr/2019 18:59:04] "GET / HTTP/1.1" 200 -


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

169. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (163), 09-Апр-19, 16:45 
Там в Lib/ctypes/__init__.py агентура мелкомягких в 273 строке баг засунула ее выкинуть надо.

Обычный пользователь, на запись имеет доступ только в свой домашний каталог и свои временные файлы, а важные системные настройки не может даже читать. Хорошо, если в систему имеет доступ может свои файлы похерить. Стоит использовать разных пользователей для работы и посиделок на оперение... Или еще лучше разные девайсы. И не держать ненужные интерпретаторы.
Под рутом можно похерить много /home /var где смонтировано rw.

Давайте подведем итог.

Jit - зло для безопасности.

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

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

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

171. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 09-Апр-19, 16:49 
> Давайте подведем итог.

И заключается он, увы, в плохом понимании реальных проблем безопасности людьми, ратующими за pax.

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

175. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (163), 09-Апр-19, 17:10 
Есть много необходимых техник безопасности. Я здесь затрагивал только одну, pax. И говорил что он с jit совсемине не дружит. Если вы программы напишите с jit это исправить будет очень сложно!!!

Другие техники безопасности pax дополняют.

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

179. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 09-Апр-19, 17:49 
Ладно. Парень, я вот что думаю -- это очень показательный диалог. Будешь устраиваться на работу, обязательно покажи его интервьюеру! )))
Ответить | Правка | К родителю #175 | Наверх | Cообщить модератору

184. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (180), 11-Апр-19, 16:55 
Мне будет стыдно за твои ответы.

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

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

185. "В PHP 8 добавят закладку!!!"  +/
Сообщение от freehckemail (ok), 12-Апр-19, 04:06 
> Мне будет стыдно за твои ответы.

Ничего страшного. Я даю разрешение их показывать и высмеивать. Правда-правда, ссылайся на этот тред. Это будет верное решение, далеко пойдёшь, уверяю тебя! )

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

Ну тебе-то виднее, что я написал. Куда уж мне себя понять. Со стороны-то всё чётче и яснее. =)

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

188. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (187), 13-Апр-19, 17:24 
Ссучились сегодня крупные работодатели. Мелкие нужного мне заплатить не смогут.

Писать что-то вредное - религия не позволяет.

Те проекты что создал в следствие изменения законов РФ внедрять здесь рискованно. Надо много тратить времени на разбор постоянно меняющихся законов.

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

176. "В PHP 8 добавят закладку!!!"  +1 +/
Сообщение от Аноним84701 (ok), 09-Апр-19, 17:16 
> Если интерпретатор или любая прога изменяет исполняемую область памяти я не знаю
> как гарантировать неизменность исполняемой программы. Просто констатирует,что на проце
> выполняется не то что загрузили с диска. Это создаёт проблему  для безопасности.

Только вот ROP (которому все равно для запуска нужны, плюс-минус, те же условия, что и "классическому", адресонезависимому, инжектнутому  машкоду и который [уязвимость к ROP] вообще-то уже 10 лет назад собирались выпилить: https://www.csc2.ncsu.edu/faculty/xjiang4/pubs/EUROSYS10.pdf, но не судьба[1]) не требует изменять исполняемую область памяти, позволяя атакующему выполнять свой код в обход.
Поэтому гарантии неизменности кода могут быть только при полном отсутствии разешения на запись вообще, для всех страниц.


____________
[1]Видимо, потому что тогда придется заменять не только RET, но и все разновидности вида "POP REG, JMP REG == последовательности в 3 байта для x86", которых в достаточно большом бинарнике-библиотеке достаточно.

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

ЗЫ: На десктопе/ноуте все равно нужно будет внести самую главную дыру современности -- браузер, в исключения [из PaX].
И толку тогда, мудохаться с исключениями и подстройкой правил (а они могут быть  неочевидными, например работа граф. пайплайна для игрушек, эмуляторов и прочего - когда я последний раз тыкал это дело, тот же  konsole из КДЕ не запускался) …

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

183. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (180), 11-Апр-19, 16:47 
Интерпретаторы можно все рубануть спомощью chmod & chown. Завести двух юзеров, одного для работы другого для инета. Тому что для инета интерпретаторы не давать, kde5 без них работает. Это очень дёшево по сравнению с мандатным методом.

Вот от поднятия юзером своего сервера, бекдора, я в своей текущей конфигурации дешового метода защиты не нашел grkernsec_socket_server=y рубает клаву с мышкой, надо много пересобирать будет в десктопе.

Если бровзером не оспользуется qtwebengine то снимать защиту памяти не надо, такие бровзеры есть.

PAX_RAP=y даёт защиту от атак "использующих куски кода". К сему атака с повторным использованием кода на много порядков сложнее и дороже чем классическое переполнение буфера.

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

142. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним84701 (ok), 04-Апр-19, 12:49 
> JIT - нарушает главное правило построения безопасной ОС.

А пацаны в опенбсде и не знали, продавливая патч для корректного взаимодействия JIT с W^X в Firefox:
https://jandemooij.nl/blog/2015/12/29/wx-jit-code-enabled-in.../
> When we need to patch JIT-code for some reason, we use a RAII-class, AutoWritableJitCode, to make the page(s) we're
> interested in writable (RW), using VirtualProtect on Windows and mprotect on other platforms. The destructor then
> toggles this back from RW to RX when we're done with it.

.

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

150. "В PHP 8 добавят закладку!!!"  +1 +/
Сообщение от Аноним (148), 07-Апр-19, 12:54 
Надо смотреть патч.

У меня понятие корректности может не совпадали с вашим или их!

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

Классическим,эталонным примером можно рассмотреть clamav. Там это ветвление сделано правильно.

Я призываю выделять память для исполняемых программ - rx, для изменяемых данных rw. У меня, дистр основан на исходниках и всё оптимизируется под мой проц при компиляции, оптимизация во время исполнения программы мне не нужна. Меня наоборот больше интересует гарантия неизменности выполняемого кода как необходимое условие безопасности.

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

152. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним84701 (ok), 07-Апр-19, 13:46 
> Надо смотреть патч.
> У меня понятие корректности может не совпадали с вашим или их!
> Мое понятие корректного обрабатывания попытки выделения памяти в режиме rwx программой:  
> Программа должна разветвляется на две части после проверки возможности выделения памяти
> в режиме wx. Если ОС или процом выделение памяти в режиме
> wx запрещено - выполняется код использующий только выделение памяти в режиме
> rx, если такого запрета нет, то используется ветвь кода выделяющая память в режиме rwx.

Достаточно было просто пройти по ссылке или прочитать цитату -- память там _никогда_ не находится в режиме RWX. RW при генерации кода (или изменении) JIT-ом, переключаемое перед выполнением в RX.  

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

154. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (155), 07-Апр-19, 16:43 
Это плохо, должно быть ветвление на два кода, с jit, и без.
Ответить | Правка | Наверх | Cообщить модератору

156. "В PHP 8 добавят закладку!!!"  +/
Сообщение от Аноним (155), 07-Апр-19, 17:06 
Переключение памяти с одного режима в другой на нормальных системах запрещено. Программа просто убьётся ядром при попытке сделать такой грех.
Ответить | Правка | К родителю #152 | Наверх | Cообщить модератору

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

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




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

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