LINUX.ORG.RU

Безопасно выполнить скрипт


0

1

Доброго времени суток!

Хочу спросить совета. Есть приложение (C++), которое получает из БД скрипт и должно его выполнить (например запустить какой-либо внешний обработчик). Выполняться может как некоторый скрипт, переданный непосредственно в команде, так и стороннее приложение. Естественно, есть опасения, что в этом скрипте могут оказаться «нехорошие» команды.

Какие разумные механизмы безопасности можно применить в этом случае? Из вариантов я вижу следующие - 1. запуск жестко заданного списка программ (минус - будет работать только для сторонних приложений, но не для скриптов. Если разрешить запуск bash, то получится решето) 2. настройка AppArmor или SELinux (минус - имею только общее представление о них) 3. запуск этих скриптов из собственных «песочниц» или chroot-ов

Спасибо!

4. Выполнять скрипт в «безопасном» embedded интерпретаторе

Например, про embedded JavaScript что-нибудь слышал? Его как раз для этого придумали, очень давно.

Led ★★★☆☆ ()
Ответ на: комментарий от Led

+1, и сделать анально огороженое API для внешних систем

vertexua ★★★★☆ ()
Ответ на: комментарий от Led

Не слышал, посмотрю. Возможно ли в таких интерпритаторах читать/писать COM-порт или сеть?

Вопрос в том, что скорость критична. Кроме скриптов должна быть возможность выполнить внешнее приложение, и оно возможно без исходника (например утилита к устройству)

Внешнее приложение может работать с устройством одному ему ведомым способом, например через обмен по сети или COM-порту. Поэтому как анально огородить API не представляю

kirichenkoga ()

kirichenkoga> которое получает из БД скрипт и должно его выполнить

контролируй то что кладется в БД и исполняй себе спокойно

sdio ★★★★★ ()

>2. настройка AppArmor или SELinux (минус - имею только общее представление о них)
Рекомендую tomoyo. При холостом запуске с логированием смотришь, что делает «хороший» скрипт. Потом тупо делаешь политику из лога и «плохой» скрипт будет ограничен теми же файлами/программами, что и «хороший».

x3al ★★★★★ ()

Вот дядька (очень кратко) объясняет, как у него работает онлайн-интерпретатор. http://codepad.org/about

То есть третий вариант.

Hoodoo ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.