On Jul 8, 2024, at 14:12, David CARLIER <devne...@gmail.com> wrote:
> Through this existing PR, I wanted to know how would appeal to you adding 
> some access restriction upon this existing call, using the open basedir 
> check. So if the sysadmin wants the php user having no business calling 
> `/bin` commands for examples would do that, bringing a bit more of the former 
> suhosin "spirit" here.

open_basedir is usually used in conjunction with the disable_functions 
directive to disable all functions which execute external commands, including 
pcntl_exec(). It's largely ineffective if the user can execute external 
commands, as those commands are not themselves restricted by open_basedir. (For 
instance, if PHP is allowed to execute /bin/cat, that can be used to read any 
file; if it can execute /bin/sh, that can execute any other command.) 
Additionally, if there *are* PHP installations which set open_basedir but do 
allow pcntl_exec(), this change would introduce a major incompatibility by 
disallowing all commands.

If your goal is to restrict what external commands can be executed by a PHP 
script, any solution would need to be applied to all functions which can 
execute shell commands - exec(), shell_exec(), system(), passthru(), 
proc_open(), shell_exec(), popen(), not just pcntl_exec(). Keep in mind that 
some of these functions take a string as input which is parsed by the shell; 
implementing path-based restrictions may be very difficult to do in a general 
fashion.

Reply via email to