
28.06.2006, 08:21
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Уязвимость устранена!
Ввжно:Как неприятно это признавать, но я нашёл в своём коде, оди недочёт, который в случае известности зашифрованных даныых, мог привести к иньекции и выполнению произвольного кода, на стороне сервера. Иньекция могла произойти, при логическом наложении новой зашифрованной программы, на существующею, методом xor, и передача результата, в поле пароля. Но учитывая, главное требование, известность кода, счилаю уязвимость, незначительной.
Статью я исправил.
Способ устранения: ограничение длины пароля, половиной длины дашифрованных данных.
Старый фрагмент:
PHP код:
($pass)=$ENV{"HTTP_COOKIE"}=~/pass\=([^;]*)/i;if(length($pass)>0){
$data=MIME::Base64::decode($data);$dl=length($data);$pl=length($pass);my$xdta;
for$n(0..$dl-1){$xdta.=pack("C",(unpack("C",substr($data,$n,1))-unpack("C",substr($pass,$n%$pl,1)))%255)}
Новый фрагмент:
PHP код:
($pass)=$ENV{"HTTP_COOKIE"}=~/pass\=([^;]*)/i;$pl=length($pass);$data=MIME::Base64::decode($data);
$dl=length($data);if(($pl>0)&&($pl<$dl/2)){my$xdta;for$n(0..$dl-1){
$xdta.=pack("C",(unpack("C",substr($data,$n,1))-unpack("C",substr($pass,$n%$pl,1)))%255)}
P.S. Так что, можно сказать, сервиспак. 
P.P.S. Кстати, может где небудь, используется подобный скрипт.
|
|
|