The OpenNET Project / Index page

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



"Уязвимости в подсистеме eBPF, позволяющие обойти защиту от атак класса Spectre"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Уязвимости в подсистеме eBPF, позволяющие обойти защиту от а..." +/
Сообщение от Ordu (ok), 24-Июн-21, 10:51 
> Как раз таки императивны - ты детально описываешь каждое действие над проходящим
> трафиком, и детально описываешь, каким именно.
> Из "декларативного типа" там разве что MASQUERADE, который сам догадывается, какой адрес
> подставить.

Не, там практически всё декларативно. В том, что ты пишешь при помощи iptables нет алгоритма разбора пакетов. Алгоритм выглядел бы в стиле "вынуть пакет из очереди, вот так вот поветвиться, сверившись с глобальным состоянием, и в конце каждой ветви что-то с пакетом сделать -- засунуть в другую очередь, скорее всего. И реализация такого алгоритма была бы императивной программой.

Тут всё не так просто, потому что в некотором смысле, все эти последовательные запуски iptables -- это шелл-скрипт, который императивен. Он выполняется шаг за шагом, выполнили один шаг, сохранили результат, выполнили следующий шаг. Если последовательность выполнения шагов надо нарушить, скажем, хочется условного выполнения или многократного выполнения, то начинаются ветвления, циклы, goto, или ещё что-то _явно_ описанное. Последовательность выполнения, control-flow прописаны в коде => это императивщина. Если нет, если "программа" больше похожа на описание данных, или если она скорее описывает то, что хочется получить в результате выполнения программы, а не то как получить эти результаты, то это декларативщина.

Но такой шеллскрипт не разбирает пакетов, он собирает цепочки фильтров. Чувствуешь разницу? Не шелл-скрипт работает файрволлом, а netfilter в ядре, шелл-скрипт лишь конфигурирует netfilter. А конфигурация, практически всегда -- это декларативный код. Я видел исключения, скажем в dosemu были конфиги, написанные на императивном языке программирования. Реально, с if'ами, ветвлениями, циклами и тп. Но это редкое исключение.

> Из "декларативного типа" там разве что MASQUERADE, который сам догадывается, какой адрес подставить.

Не, это тоже декларативщина. Это же не control-flow, это не описание того _как_ надо преобразовать пакет, какое глобальное состояние для этого надо хранить и как его использовать -- нет. Это заявление, которое на русский можно было бы перевести фразой "и чтобы NAT был". Это описание желаемого результата, а не рецепт достижения такого результата.

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

Оглавление
Уязвимости в подсистеме eBPF, позволяющие обойти защиту от атак класса Spectre, opennews, 22-Июн-21, 16:33  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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