2015-09-02 2 views
2

Сегодня я обновил свой phpMyAdmin 4.4.09 до 4.4.14 на моей версии Red Hat Enterprise Linux Server версии 6.7 (Santiago) с PHP версии 5.3.3 , Мой сервер базы данных - MariaDB 5.5.44. Я скопировал файл config.inc.php из предыдущей установки в недавно распакованную. При входе в систему я получаю эти предупреждающие сообщения:Предупреждение в ./libraries/phpseclib/Crypt/Base.php#967

Warning in ./libraries/phpseclib/Crypt/Base.php#967 
openssl_encrypt(): Using an empty Initialization Vector (iv) is potentially insecure and not recommended 

Backtrace 

./libraries/phpseclib/Crypt/Base.php#967: openssl_encrypt(
string ' g8��)@�� �8��', 
string 'aes-256-ecb', 
string '52627967f3d249d378f33d2b9b1681e7', 
boolean true, 
) 
./libraries/plugins/auth/AuthenticationCookie.class.php#810: phpseclib\Crypt\Base->decrypt(string 'w(� �9P���(��') 
./libraries/plugins/auth/AuthenticationCookie.class.php#458: AuthenticationCookie->cookieDecrypt(
string 'GncowgnLOVDc0h3HKLkC4g==', 
string '52627967f3d249d378f33d2b9b1681e7', 
) 
./libraries/common.inc.php#869: AuthenticationCookie->authCheck() 
./index.php#12: require_once(./libraries/common.inc.php 

-

Warning in ./libraries/phpseclib/Crypt/Base.php#967 
openssl_encrypt(): Using an empty Initialization Vector (iv) is potentially insecure and not recommended 

Backtrace 

./libraries/phpseclib/Crypt/Base.php#967: openssl_encrypt(
string '�만�"Na#���` �~', 
string 'aes-256-ecb', 
string '2}�)6�k4�yK�вQq1jՁ1��o<6H<�>���N��Lj9�i�$�B\'���c�;kc�C���\'�S�΁��� %yخ�3�s ��c?5�� ��{ϓ~�2��j,��Ϗr�BxF�]���\\�[��#���H�IR\\/cA:W�,E��6U -���Y�oz� ��@���;5F�8��9]�ݧ��2]�B����Dy��4Nv]5>���3��Su5}���4 ���<3�]}_՗���,� `hG', 
boolean true, 
) 
./libraries/plugins/auth/AuthenticationCookie.class.php#810: phpseclib\Crypt\Base->decrypt(string '�����2^q3���p�n') 
./libraries/plugins/auth/AuthenticationCookie.class.php#492: AuthenticationCookie->cookieDecrypt(
string 'n/u3nKcyXnEzof2TcBmqbg==', 
string '2}�)6�k4�yK�вQq1jՁ1��o<6H<�>���N��Lj9�i�$�B\'���c�;kc�C���\'�S�΁��� %yخ�3�s ��c?5�� ��{ϓ~�2��j,��Ϗr�BxF�]���\\�[��#���H�IR\\/cA:W�,E��6U -���Y�oz� ��@���;5F�8��9]�ݧ��2]�B����Dy��4Nv]5>���3��Su5}���4 ���<3�]}_՗���,� `hG', 
) 
./libraries/common.inc.php#869: AuthenticationCookie->authCheck() 
./index.php#12: require_once(./libraries/common.inc.php) 

-

Warning in ./libraries/Response.class.php#370 
json_encode(): Invalid UTF-8 sequence in argument 

Backtrace 

./libraries/Response.class.php#370: json_encode(array) 
./libraries/Response.class.php#388: PMA_Response->_ajaxResponse() 
PMA_Response::response() 

Можете ли вы мне помочь? Спасибо

+0

Этот патч был объединен в ветку QA_4_5, но, возможно, он также должен перейти в 4.4. Не могли бы вы попробовать? https://github.com/phpmyadmin/phpmyadmin/commit/c1495982ab4e0d4e705eb3f1a751ef5104862df7, но для вас это будет в строке 794. –

+0

Спасибо Marc за ваш ответ, я изменил файл, теперь третье предупреждение больше не отображается, а остальные два (Предупреждение в ./libraries/phpseclib/Crypt/Base.php#967) все еще присутствуют. – sysadmin

+0

Исправление для третьего предупреждения будет частью 4.4.15. Ищете решение о других предупреждениях. –

ответ

3

Это ошибка PHP 5.3.3.

Я был в состоянии воспроизвести проблему на PHP 5.3.3 это сделать:

openssl_encrypt(str_repeat('.', 16), 'aes-256-ecb', str_repeat('a', 32), true); 

Это дало мне «Warning: openssl_encrypt(): Using an empty Initialization Vector (iv) is potentially insecure and not recommended»

Забавно, что режим ЕЦБ не делает использование внутривенно Несмотря на это, я пытался добавить одну, таким образом:

openssl_encrypt(str_repeat('.', 16), 'aes-256-ecb', str_repeat('a', 32), true, str_repeat('.', 16)); 

Это дало мне "Warning: openssl_encrypt(): IV passed is 16 bytes long which is longer than the 0 expected by selected cipher, truncating".

Так что независимо от того, что вы делаете, возникает ошибка при использовании режима ECB в PHP 5.3.3. Я даже попытался установить этот последний параметр на '' и получил первую ошибку об использовании пустого IV.

Это не проблема в PHP 5.3.27.

Я не собираюсь перебирает каждую версию PHP 5.3 *, чтобы увидеть, когда это было зафиксировано, но ... я думаю, что это было зафиксировано в 5.3.7 с этой записью изменений:.

" openssl_encrypt()/openssl_decrypt() усеченные ключи шифров переменной длины до OpenSSL по умолчанию для алгоритма. (Скотт) «

Это говорит о ключах, а не о IV, но это, тем не менее, самая близкая запись, которую я могу найти в их журнал изменений для серии 5.3. *.

Моя рекомендация: найдите замену в phpseclib. Найдите все openssl_encrypt линий и замените их на @openssl_encrypt.

Действительно, вам нужно только сделать это для режима ECB, но инструкции, которые я вам дал, проще. Возможно также необходимо сделать то же самое для openssl_decrypt. Возможно, phpseclib тоже должен это делать, но я думаю, что idk ... оператор подавления ошибок, как правило, неодобрен, поскольку на самом деле это PHP 5.3.3.

+0

Спасибо, я не знал о @ -операторе на PHP, теперь я узнал об этом немного больше. – b1919676

2

Как уже упоминалось ранее: Это ошибка в PHP 5.3.3 (поставляется в RHEL 6).

Ошибка уже установлена ​​на восходящем направлении, однако исправление должно быть обращено к PHP 5.3.3 в RHEL 6. Отчет об ошибке был отправлен в https://bugzilla.redhat.com/show_bug.cgi?id=1260315, но для того, чтобы правильно определить приоритет, билет поддержки должен быть создан уязвимым клиентом Red Hat по адресу https://access.redhat.com, ссылаясь на отчет об ошибке Red Hat, упомянутый ранее, и заявив, что это исправление необходимо (и сколько систем затронуто).

+0

Спасибо всем за ответы, я использовал работу; Я установил Red Hat Software Collection, и я настроил php 5.5.21, после того как ошибки исчезли. – sysadmin

1

Для тех, кто подходит к этой странице в поисках решения ошибки и используют AES128 переключая его AES-256-ECB как в примере из Нойберт выше решается вопрос об ошибке для меня.