2012-03-25 3 views
4

Я работаю над изолированной программой PHP для веб-приложения Honeypot. Песочница PHP будет анализировать PHP-файл, который, возможно, был введен как часть атаки RFI. Он должен запускать файл в безопасной среде и возвращать результат, встраивая вывод PHP-скрипта. Мы надеемся обмануть атакующего, полагая, что это настоящий ответ и, таким образом, продолжить следующий шаг его атаки.Проблемы с безопасностью с помощью PHP Sandbox

Для создания песочницы мы использовали Advance PHP Debugger (ADP). Используя rename_function и override_function, уязвимые функции PHP были переписаны. Некоторые функции, такие как exec, disk_free_space были переписаны, чтобы отправлять фальшивые ответы. Все остальные функции просто ничего не возвращают. Here's - полный список функций, которые были рассмотрены.

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

  1. Этот список достаточно хорош? Означает ли это, что песочница достаточно безопасна, чтобы стать частью веб-приложения?

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

  3. В конце концов, это honeypot. Поэтому мы хотели бы, чтобы наш ответ был как можно ближе к реальному ответу. Таким образом, блокируя вызовы функций DNS, такие как dns_check_record и gethostbyname, мы ограничиваем объем выполнения сценария излишне. (Я не уверен, почему они присутствуют на первом месте)

    Короче говоря, я хотел бы знать, какие элементы я должен добавить/удалить из списка.

  4. Любые другие предложения/рекомендации относительно того, как это сделать, будут высоко оценены.

+0

Как вы можете знать вывод кода без его запуска? Я предполагаю, что вы могли бы сделать очень сложный анализ кода, чтобы собрать вывод окольным путем, но кроме этого? И я знаю, что это не очень полезно, но мое предложение состоит в том, что вы просто этого не делаете. Если что-то случайно скользит через ваш honeypot, тогда упс! Компромиссный сервер. И это не весело. – Corbin

+0

Я не уверен, зачем это нужно? Разве вы не можете просто предотвратить атаку RFI в первую очередь? Или это потенциально уже произошло, и вы пытаетесь проверить, что ни один из кода на вашем сервере (серверах) не был скомпрометирован? – rdlowrey

+2

Звучит как аккуратный, но очень рискованный проект.Я думаю, что единственным способом обеспечить идеальную песочницу в этом случае было бы наличие фактического медового горшка на другом сервере (возможно, чтобы разрешить быстрое перезагрузку), и чтобы фактический сервер передал полный скрипт php на второй сервер. Таким образом, если вы забудете что-то серьезное, это будет скомпрометировано. – MitMaro

ответ

2

Я думаю, что это очень трудно, если не невозможно, чтобы предусмотреть все возможные вреден вызовы функции для того, чтобы фальсифицировать их вывода (например, highlight_file или его псевдоним show_source не в списке). Кроме того, использование одного и того же сервера для реального приложения и honeypot вызывает другие проблемы: использует ли приложение расширения? если он делает еще много функций, нужно блокировать/подделывать. Что делать, если вы обновляете одно из этих расширений? вам придется перепроверить новые дыры в безопасности. Кроме того, что, если вредоносный файл загружается в honeypot, а затем доступен из основного приложения? убедитесь, что вы предпримете меры, чтобы этого не произошло, но если у вас есть ошибка в какой-то момент, вредоносный код уже будет на сервере ... не выглядит безопасным для меня.

Я думаю, было бы лучше настроить vm как MitMaro. В этом случае сама ВМ была бы такой же хорошей, как песочница, как вы можете получить, и без особых усилий вы можете позволить всем этим неприятным функциям php выполнять внутри VM без ущерба для безопасности основного приложения.

+0

+1 Спасибо за примеры функций, которые вы предложили. Кроме того, я поставил вопрос о [Servefault] (http://serverfault.com/questions/374663/need-a-vm-for-running-a-php-sandbox) с запросом виртуальной машины. Пожалуйста, ответьте там, если у вас есть предложения. – Phani

Смежные вопросы