powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / LISP, уязвимости
25 сообщений из 34, страница 1 из 2
LISP, уязвимости
    #37932742
Hikky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наша фирма разрабатывает серьезный софт на CL, Scheme и некоторых других языках. Но в последнее время в нашей продукции часто стали находить эксплоиты (что-бы не пугать наших клиентов - подробнее не скажу). Нам для LISP-подобных языков необходима DEP (Data Execution Prevention). Есть ли подобные наработки в этой области? Пока ничего побобного для языков этого семейства мы не находили и очень расстроены сложившимися обстоятельствами.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37932876
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DEP базируется на адресуемой памяти. Вряд-ли можно "перенести" концепцию DEP
для LISP технологий буквально. Может вы-бы без раскрытия имён и коммерческих
тайн показали-бы хотя-бы 1 эксплоит (или его применение) и сообщество-бы посоветовало
что-нибудь.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933050
maytonDEP базируется на адресуемой памяти. Вряд-ли можно "перенести" концепцию DEP
Вполне возможно. Есть системный вызов mprotect , он может явно пометить всякие страницы памяти - как только для чтения или чтения-записи, но не для выполнения.

Другое дело - как оно там в этом вашем смешном лиспе с управлением памятью устроено.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933070
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hikky,
Для allegro есть патч что бы запускаться при включенном DEP.

Хотя меня берут сомнения в практичности для языка напрмую с памятью не работающего.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933072
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hikky,

А что сказал поставщик вашего Лиспа?
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933215
Фотография kosh the best
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
трололо
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933580
_Guest_____
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема в том, что LISP позволяет выполнять данные (даже введенные пользователем), как программу. Видимо в этом и суть проблемы топикстартера. Даже пользователь может ввести список, который будет содержать ключевое слово defun и поэтому представлять собой функцию и затем выполнить её.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933590
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сути речь идёт о том чтобы исполнять функцию eval не в обычном
а особом контексте безопасности где некоторые операции функции (!)
будут игнорироваться или вызывать ошибку рантайма.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933604
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Guest_____Проблема в том, что LISP позволяет выполнять данные (даже введенные пользователем), как программу. Видимо в этом и суть проблемы топикстартера. Даже пользователь может ввести список, который будет содержать ключевое слово defun и поэтому представлять собой функцию и затем выполнить её.Может быть. Скажем, у мулиспов был бесплатный рантайм для раздачи покупателям в коробках с софтом. Он как раз и отличался от платного полного рантайма отсутствием defun и defmacro.

Это как дополнительный намёк к тому факту, что мулиспы рекламировались для робототехники и прочих АСУ/БИУС, а разработчики сидели в Гонолулу, поближе к базе штатовского флота.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933618
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ну пр общем для лисп-образных языков посимвольном вызове функций. Такая песочница вещь досточно банальная.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933639
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПо сути речь идёт о том чтобы исполнять функцию eval не в обычном
а особом контексте безопасности где некоторые операции функции (!)
будут игнорироваться или вызывать ошибку рантайма.

Простите, а зачем вообще выполнять eval (ну или compile) в рантайме на основе пользовательского ввода? Если нужна поддержка пользовательских скриптов, то проще написать достаточный и безопасный DSL (с синтаксисом на S-выражениях).
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933642
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antares0mayton,
Ну пр общем для лисп-образных языков посимвольном вызове функций. Такая песочница вещь досточно банальная.
Ты не мне а автору поясни чтоб он понял что делать.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933644
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antares0mayton,
Ну при общем для лисп-образных языков посимвольном вызове функций такая песочница вещь достаточно банальна.

В Racket (ТС упоминал "Scheme и некоторые другие языки"), кстати, в комплекте есть такие штуки.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933645
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> DEP базируется на адресуемой памяти. Вряд-ли можно "перенести" концепцию DEP
> для LISP технологий буквально. Может вы-бы без раскрытия имён и коммерческих

Ну лисп-машина -то на С написана, и лисп сам в той же памяти работает.
Адресуемой.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933662
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле давайте вспомним что такое вообще политики безопасности. Какие там есть
сущности. Там ЕМНИП есть пользователи, объекты и разрешения. От них нужно плясать
а не от DEP.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933667
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Проблема в том, что LISP позволяет выполнять данные (даже введенные
> пользователем), как программу. Видимо в этом и суть проблемы топикстартера.

Проблема в том, что LISP никто не знает, но все о нём пытаются рассуждать.
Во-первых, лиспов много и разных. И прежде чем что-то говорить, надо решить,
что за лисп используется. Видимо -- CL.
В CL "данные в виде программы" -- это макросы, они работают на этапе компиляции
программы, на этапе выполнения программы они будут работать только если автор
очень сильно это захочет сделать.

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

Ага, для этого надо этот список ещё выполнить с помощью чего-то типа EVAL.
Это и в нормальных=то условиях не часто делается в программах, а уж если
задасться такой целью не допускать этого ...

В большинстве комон лиспов (коммерческих особенно) можно секционно включать/
выбрасывать компоненты лисп-машины при сборке исполняемого образа программы.
EVAL обычно все выбрасывают.

А так -- я думаю, что проблемы все лежат в плоскости компонент ПО, исползуемой
лисп-машиной, типа стека TCP, файлов, памяти и пр., они стандартные,
с-шные, и никаких особеннойтей, привносимых тем, что это программа на лиспе,
там нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933669
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> По сути речь идёт о том чтобы исполнять функцию eval не в обычном
> а особом контексте безопасности где некоторые операции функции (!)

Да не нужна в 80 процентах случаев eval вообще.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933673
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Простите, а зачем вообще выполнять eval (ну или compile) в рантайме на основе
> пользовательского ввода?

Во-во. Зриш в корень, молодец. Это всё равно, что выставить на WEB-сайте
интерфейс для выполнения любого запроса к твоей БД.

Если нужна поддержка пользовательских скриптов, то
> проще написать достаточный и безопасный DSL (с синтаксисом на S-выражениях).

или готовый использовать...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933691
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЕсли нужна поддержка пользовательских скриптов, то
> проще написать достаточный и безопасный DSL (с синтаксисом на S-выражениях).

или готовый использовать...

Не согласен что "проще" написать DSL. Это всё-таки шаг куда-то в сторону. И этот DSL
также надо будет тестировать на те-же уязвимости.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933884
_Guest_____
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://ideone.com/9GMbL
(setf b (read))
(princ b)
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37933910
_Guest_____
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ввод такой:
#.(progn (format t "Oh, exploitable!~%") '(+ 2 2))
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37934026
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Guest_____,

Дальше-то что? Сказали же

MasterZivЭто всё равно, что выставить на WEB-сайте
интерфейс для выполнения любого запроса к твоей БД.


Ну ты понял намек, да?
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37934160
_Guest_____
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На код с того поста посмотри.
(setf b (read))
(princ b)
Нет никакого eval, а дырка есть.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37934170
_Guest_____
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
k0rvin(defparameter *my-readtable* (copy-readtable))

(let ((*readtable* *my-readtable*))
(set-dispatch-macro-character #\# #\. nil))

(defun safe-read ()
(let ((*readtable* *my-readtable*))
(read)))

(setf b (safe-read))
(princ b))

# 1: скрыть clone input 55 minutes 44 seconds ago
результат: ошибка выполнения время: 0.03s память: 10792 kB сигнал: -1

ввод:
#.(progn (format t "Oh, exploitable!~%") '(+ 2 2))
вывод: нет
stderr:
*** - SET-DISPATCH-MACRO-CHARACTER: undefined function NIL
Не должно быть ошибки выполнения. Должно нормально обработаться, а не упасть.
...
Рейтинг: 0 / 0
LISP, уязвимости
    #37934203
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Guest_____На код с того поста посмотри.
(setf b (read))
(princ b)
Нет никакого eval, а дырка есть.

Т.е. намек ты не понял? И что делает #. не знаешь?
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / LISP, уязвимости
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]