|
|
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
Наша фирма разрабатывает серьезный софт на CL, Scheme и некоторых других языках. Но в последнее время в нашей продукции часто стали находить эксплоиты (что-бы не пугать наших клиентов - подробнее не скажу). Нам для LISP-подобных языков необходима DEP (Data Execution Prevention). Есть ли подобные наработки в этой области? Пока ничего побобного для языков этого семейства мы не находили и очень расстроены сложившимися обстоятельствами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 01:40 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
DEP базируется на адресуемой памяти. Вряд-ли можно "перенести" концепцию DEP для LISP технологий буквально. Может вы-бы без раскрытия имён и коммерческих тайн показали-бы хотя-бы 1 эксплоит (или его применение) и сообщество-бы посоветовало что-нибудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 09:18 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
maytonDEP базируется на адресуемой памяти. Вряд-ли можно "перенести" концепцию DEP Вполне возможно. Есть системный вызов mprotect , он может явно пометить всякие страницы памяти - как только для чтения или чтения-записи, но не для выполнения. Другое дело - как оно там в этом вашем смешном лиспе с управлением памятью устроено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 10:38 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
Hikky, Для allegro есть патч что бы запускаться при включенном DEP. Хотя меня берут сомнения в практичности для языка напрмую с памятью не работающего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 10:48 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
Hikky, А что сказал поставщик вашего Лиспа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 10:49 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
Проблема в том, что LISP позволяет выполнять данные (даже введенные пользователем), как программу. Видимо в этом и суть проблемы топикстартера. Даже пользователь может ввести список, который будет содержать ключевое слово defun и поэтому представлять собой функцию и затем выполнить её. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 14:26 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
По сути речь идёт о том чтобы исполнять функцию eval не в обычном а особом контексте безопасности где некоторые операции функции (!) будут игнорироваться или вызывать ошибку рантайма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 14:31 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
_Guest_____Проблема в том, что LISP позволяет выполнять данные (даже введенные пользователем), как программу. Видимо в этом и суть проблемы топикстартера. Даже пользователь может ввести список, который будет содержать ключевое слово defun и поэтому представлять собой функцию и затем выполнить её.Может быть. Скажем, у мулиспов был бесплатный рантайм для раздачи покупателям в коробках с софтом. Он как раз и отличался от платного полного рантайма отсутствием defun и defmacro. Это как дополнительный намёк к тому факту, что мулиспы рекламировались для робототехники и прочих АСУ/БИУС, а разработчики сидели в Гонолулу, поближе к базе штатовского флота. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 14:37 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
mayton, Ну пр общем для лисп-образных языков посимвольном вызове функций. Такая песочница вещь досточно банальная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 14:45 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
maytonПо сути речь идёт о том чтобы исполнять функцию eval не в обычном а особом контексте безопасности где некоторые операции функции (!) будут игнорироваться или вызывать ошибку рантайма. Простите, а зачем вообще выполнять eval (ну или compile) в рантайме на основе пользовательского ввода? Если нужна поддержка пользовательских скриптов, то проще написать достаточный и безопасный DSL (с синтаксисом на S-выражениях). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 14:55 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
antares0mayton, Ну пр общем для лисп-образных языков посимвольном вызове функций. Такая песочница вещь досточно банальная. Ты не мне а автору поясни чтоб он понял что делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 14:56 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
antares0mayton, Ну при общем для лисп-образных языков посимвольном вызове функций такая песочница вещь достаточно банальна. В Racket (ТС упоминал "Scheme и некоторые другие языки"), кстати, в комплекте есть такие штуки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 14:57 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
> DEP базируется на адресуемой памяти. Вряд-ли можно "перенести" концепцию DEP > для LISP технологий буквально. Может вы-бы без раскрытия имён и коммерческих Ну лисп-машина -то на С написана, и лисп сам в той же памяти работает. Адресуемой. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 14:57 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
На самом деле давайте вспомним что такое вообще политики безопасности. Какие там есть сущности. Там ЕМНИП есть пользователи, объекты и разрешения. От них нужно плясать а не от DEP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 15:04 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
> Проблема в том, что LISP позволяет выполнять данные (даже введенные > пользователем), как программу. Видимо в этом и суть проблемы топикстартера. Проблема в том, что LISP никто не знает, но все о нём пытаются рассуждать. Во-первых, лиспов много и разных. И прежде чем что-то говорить, надо решить, что за лисп используется. Видимо -- CL. В CL "данные в виде программы" -- это макросы, они работают на этапе компиляции программы, на этапе выполнения программы они будут работать только если автор очень сильно это захочет сделать. Даже > пользователь может ввести список, который будет содержать ключевое слово defun и > поэтому представлять собой функцию и затем выполнить её. Ага, для этого надо этот список ещё выполнить с помощью чего-то типа EVAL. Это и в нормальных=то условиях не часто делается в программах, а уж если задасться такой целью не допускать этого ... В большинстве комон лиспов (коммерческих особенно) можно секционно включать/ выбрасывать компоненты лисп-машины при сборке исполняемого образа программы. EVAL обычно все выбрасывают. А так -- я думаю, что проблемы все лежат в плоскости компонент ПО, исползуемой лисп-машиной, типа стека TCP, файлов, памяти и пр., они стандартные, с-шные, и никаких особеннойтей, привносимых тем, что это программа на лиспе, там нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 15:05 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
> По сути речь идёт о том чтобы исполнять функцию eval не в обычном > а особом контексте безопасности где некоторые операции функции (!) Да не нужна в 80 процентах случаев eval вообще. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 15:06 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
> Простите, а зачем вообще выполнять eval (ну или compile) в рантайме на основе > пользовательского ввода? Во-во. Зриш в корень, молодец. Это всё равно, что выставить на WEB-сайте интерфейс для выполнения любого запроса к твоей БД. Если нужна поддержка пользовательских скриптов, то > проще написать достаточный и безопасный DSL (с синтаксисом на S-выражениях). или готовый использовать... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 15:07 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
MasterZivЕсли нужна поддержка пользовательских скриптов, то > проще написать достаточный и безопасный DSL (с синтаксисом на S-выражениях). или готовый использовать... Не согласен что "проще" написать DSL. Это всё-таки шаг куда-то в сторону. И этот DSL также надо будет тестировать на те-же уязвимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 15:16 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
Ввод такой: #.(progn (format t "Oh, exploitable!~%") '(+ 2 2)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 16:23 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
_Guest_____, Дальше-то что? Сказали же MasterZivЭто всё равно, что выставить на WEB-сайте интерфейс для выполнения любого запроса к твоей БД. Ну ты понял намек, да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 16:58 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
На код с того поста посмотри. (setf b (read)) (princ b) Нет никакого eval, а дырка есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 17:51 |
|
||
|
LISP, уязвимости
|
|||
|---|---|---|---|
|
#18+
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 Не должно быть ошибки выполнения. Должно нормально обработаться, а не упасть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 17:55 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37933667&tid=1342153]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
158ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 442ms |

| 0 / 0 |
