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 может быть жизнеспособной альтернативой для некоторых автоматических атак здесь.

Другие вопросы по тегам