Подтвердить что ты не робот

Является ли php 5.4 безопасным без Suhosin?

В настоящее время я работаю над созданием PHP CMF, который в конечном итоге будет коммерчески доступен, и я хочу использовать черты. Однако проблема заключается в том, что черты - это функция PHP 5.4 и, по-видимому, популярный патч безопасности Suhosin несовместим с PHP 5.4.

Итак, мой вопрос заключается в следующем: безопасно ли запускать веб-сайт PHP без исправления безопасности Suhosin? Если нет, то какие уязвимости я оставил бы себе и другим людям, использующим мой CMF, открытым?

Примечание. Меня не интересует общий хостинг. Он ожидал, что любой, кто использует мой CMF, получит административный контроль над своим веб-сервером.

4b9b3361

Ответ 1

Сухозин был исправлением PHP. Он не исправлял никаких явных уязвимостей безопасности - он просто затруднял использование некоторых уязвимостей в скриптах PHP.

Некоторые изменения, внесенные Сухозином, в конечном итоге перешли на PHP. Например, Suhosin различные уровни защиты от нулевых байтов в входах были излишними из-за PHP 5.3.4, которые делали null байты в именах файлов, всегда выставляли ошибку (вместо того, чтобы молча усекать имя файла в нулевом байте).

PHP 5.4 обычно считается достаточно безопасным без участия Сухозина. Если вы продолжаете работать, пока ваше приложение будет поддерживать его, вам будет лучше с более новой версией (5.4+) PHP, а не более старой версией с патчем Suhosin.

Ответ 2

Если вы не можете отключить eval() (конструкцию языка, а не функцию) или иметь черный список в eval, чтобы отключить большую часть инструментария хакеров в eval, тогда вы используете загрузку полосы пропускания, которая неотразима для хакеров ищет пропускную способность для запуска своих полезных нагрузок. То, что в черный список, в идеале, не всегда может быть выполнено, потому что сторонние разработчики модулей или даже ядра ядра зависят от некоторых из этих функций в контексте eval():

suhosin.executor.eval.blacklist=include,include_once,require,require_once,curl_init,fpassthru,file,base64_encode,base64_decode,mail,exec,system,proc_open,leak,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,create_function,passthru,p_open,proc_close,proc_get_status,proc_terminate, allow_url_fopen,allow_url_include,passthru,popen,stream_select

Если вы не можете фильтровать эти функции, тогда отсутствует основной компонент безопасности.

Вот несколько примеров средств удаленного администрирования (RATS), которые будут заражать ваш сайт через любой уязвимый сторонний модуль или учетную запись пользователя сайта.

RAT могут принимать различные формы, некоторые из них легко grep для:

<?php error_reporting(0); eval(gzuncompress(base64_decode('eF5Tcffxd3 ...

<?php preg_replace("/.*/e","\x65\x76\x61\x6C\x28\ ...

Некоторые из них более профессиональны и запутаны, и на самом деле не могут быть использованы, и их невозможно найти, если сухосин не попросит вас выполнить их:

<?php $_0f4f6b="\x70\x72\x65\x67\x5f\x72\x65\x70\x6c\x61\x63\x65";$_0f4f6b("\x7 ...

<?php require "./.cache/.%D59C%49AA%73A8%63A1%9159%0441"; ?>  

(обратите внимание, что в этом случае каталог CACHE не может находиться в исходном элементе управления, поэтому его нельзя отслеживать)

Ответ 3

IMHO, выражение выше от duskwuff, что все будет хорошо без Suhosin не является ни авторитетным, ни обязательно правильным (особенно учитывая количество критических отверстий, которые новые версии PHP видели с тех пор).

На мой взгляд, было бы лучше - от безопасности POV - если Сухосин был доступен для текущей версии PHP. Конечно, так как это не так, оставаться старыми (в конечном счете, не подкрепленными) версиями PHP тоже не является решением.

Как правило, PHP и особенно PHP-приложения известны тем, что имеют проблемы с безопасностью... так что вопрос меньше "являются новыми версиями PHP без Suhosin"...