Suhosin и отключить Eval
Я установил Suhosin на свой выделенный сервер CentOS. У меня есть около 80 учетных записей, большинство из которых работают на сайтах Joomla или Wordpress. Некоторые из них устарели и сидят, когда дело доходит до взлома и внедрения eval-кода.
Я хотел бы включить функцию отключения eval от Suhosin, но без нарушения функциональности сайтов, которые используют eval законным способом. Я просмотрел документацию и из того, что я понял, лучшим сценарием было добавить это в php.ini:
suhosin.executor.disable_eval = On
suhosin.executor.eval.whitelist =
suhosin.executor.eval.blacklist = include, include_once, require, require_once, curl_init, fpassthru, file, base64_encode, base64_decode, mail, exec, system, proc_open, leak, syslog, pfsockopen, shell_exec, ini_restore, symlink, stream_socket_server, proc_nice, popen, proc_get_status, dl, pcntl_exec, pcntl_fork, pcntl_signal, pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled, pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig, socket_accept, socket_bind, socket_connect, socket_create, socket_create_listen, socket_create_pair, link, register_shutdown_function, register_tick_function
Из того, что я понял, читая документацию, все, что было в черном списке, было бы удалено и зарегистрировано, поскольку белый список пуст. Но это был не тот случай. Кажется, что ВСЕ было сброшено и зарегистрировано.
Поскольку создание белого списка практически невозможно, я хотел бы спросить, связано ли это с моим неправильным пониманием конфигурации или что-то не работает, как предполагалось.
Спасибо заранее за любую помощь.
2 ответа
Задавать
suhosin.executor.disable_eval
в Off
, Если установлено On
как в вашем примере, eval()
будет полностью отключен (и это то, что вы видите в журналах).
Кстати, я не думаю, что есть законный способ использования eval()
в приложениях PHP. Приложения, которые действительно используют это, следует избегать. Я бы выключил его полностью, если что-то не сломалось, а затем исследовал бы это.
Настройка suhosin.executor.disable_eval=On
отключит eval()
полностью. Например eval('anything();')
будет заблокирован
настройка suhosin.executor.eval.blacklist
заблокирует только указанные функции. Например
suhosin.executor.eval.blacklist = base64_decode
предотвратит выполнение eval base64_decode
, Eval('base64_decode("...");');
Примечание. В некоторых распространенных атаках по внедрению кода PHP используется конструкция eval(base64_decode(...))
для запутывания. В этом случае, base64_decode()
выполняется сначала PHP, затем возвращаемое значение оценивается eval()
, имеющий base64_decode
перечислены в suhosin.executor.eval.blacklist
не предотвратит такого рода атаки. Отключение записи и выполнения suhosin.executor.include.allow_writable_files=Off
может быть жизнеспособной альтернативой для некоторых автоматических атак здесь.