В OpenSSL обнаружена ещё одна критическая уязвимость. Она касается всех версий OpenSSL на всех платформах, хотя самый очевидный вектор атаки подходит для 64-битных систем. Уязвимость связана с многочисленными ошибками целочисленных преобразований в коде функции asn1_d2i_read_bio(), что может вызвать повреждение памяти при обработке закодированных данных ASN.1. Злоумышленник может использовать эту информацию, чтобы осуществить атаку на системы, которые берут к обработке данные из непроверенных источников, такие как сертификаты X.509 и публичные ключи RSA. Хотя на данный момент готовых эксплойтов ещё не обнаружено, но их написание не представляется чем-то особо сложным. В данном примере показано, какая структура данных в формате DER приведёт к переполнению буфера. Code: $ dumpasn1 testcase.crt 0 NDEF: [PRIVATE 3] { 2 2147483648: [1] ... } 224 if (want > (len-off)) (gdb) list 219 } 220 else 221 { 222 /* suck in c.slen bytes of data */ 223 want=(int)c.slen; 224 if (want > (len-off)) 225 { 226 want-=(len-off); 227 if (!BUF_MEM_grow_clean(b,len+want)) 228 { (gdb) p c.slen $18 = 2147483648 (gdb) p want $19 = -2147483648 Организация OpenSSL оперативно выпустила пропатченные версии библиотеки OpenSSL 1.0.1a, 1.0.0i и 0.9.8v. Дата: 20.04.2012 http://www.xakep.ru/post/58592/