Я хочу создать безопасную среду ColdFusion, для которой я использую настройку нескольких песочниц. Следующие задачи легко достижимы с помощью дружественного интерфейса администратора:
- Ограничение CFtags как: cfexecute, cfregistry и cfhttp.
- Отключение доступа к внутренним компонентам Java ColdFusion.
- Доступ только к определенным диапазонам серверов и портов сторонними ресурсами.
И другие, используя конфигурацию веб-сервера соответственно.
Проблема:
Таким образом, я был удовлетворен настройкой только для того, чтобы встретить позже, что, независимо от ограничения, применяемого к тегу cfexecute
, можно использовать java.lang.Runtime
для простого выполнения системных файлов или скриптов;
String[] cmd = {"cmd.exe", 'net stop "ColdFusion 10 Application Server"'};
Process p = Runtime.getRuntime().exec(cmd);
или используя java.lang.ProcessBuilder
:
ProcessBuilder pb = new ProcessBuilder("cmd.exe", 'net stop "ColdFusion 10 Application Server"');
....
Process myProcess = pb.start();
Проблема в том, что я не могу найти решения, которые позволяют мне отключить эти два класса: java.lang.Runtime
и java.lang.ProcessBuilder
для createObject()
.
Примечание. Я попытался ограничить файлы в sanbox и os-разрешении, но, к сожалению, они, похоже, работают только с файлами ввода-вывода, и я не могу взаимодействовать с политиками безопасности системных библиотек, поскольку они могут использоваться внутри от ColdFusion.