Мәселе тікелей TLS спецификациясында бар және тек DH кілт алмасу протоколына негізделген шифрларды пайдаланатын қосылымдарға әсер етеді (Diffie-Hellman, TLS_DH_*"). ECDH шифрларымен мәселе туындамайды және олар қауіпсіз болып қалады. 1.2 нұсқасына дейінгі TLS протоколдары ғана осал; TLS 1.3 мәселеге әсер етпейді. Осалдық әртүрлі TLS қосылымдары арқылы DH құпия кілтін қайта пайдаланатын TLS іске асыруларында орын алады (бұл әрекет Alexa Top 4.4M серверлерінің шамамен 1%-ында орын алады).
OpenSSL 1.0.2e және одан бұрынғы шығарылымдарда SSL_OP_SINGLE_DH_USE опциясы анық орнатылмаса, DH негізгі кілті барлық сервер қосылымдарында қайта пайдаланылады. OpenSSL 1.0.2f нұсқасынан бастап DH бастапқы кілті статикалық DH шифрларын («DH-*», мысалы, «DH-RSA-AES256-SHA») пайдаланған кезде ғана қайта пайдаланылады. Осалдық OpenSSL 1.1.1 нұсқасында пайда болмайды, өйткені бұл бөлім DH бастапқы кілтін пайдаланбайды және статикалық DH шифрларын пайдаланбайды.
DH кілттерін алмасу әдісін пайдаланған кезде қосылымның екі жағы кездейсоқ жеке кілттерді (бұдан әрі «a» кілті және «b» кілті) жасайды, олардың негізінде ашық кілттер (ga mod p және gb mod p) есептеледі және жіберіледі. Әрбір тарап ашық кілттерді алғаннан кейін сеанс кілттерін жасау үшін пайдаланылатын жалпы бастапқы кілт (gab mod p) есептеледі. Raccoon шабуылы TLS спецификациялары 1.2 нұсқасына дейінгі бастапқы кілттің барлық жетекші нөлдік байттарын оған қатысты есептеулер алдында алып тастауды талап ететініне негізделген, бүйірлік арна талдауы арқылы бастапқы кілтті анықтауға мүмкіндік береді.
Соның ішінде қысқартылған бастапқы кілт әртүрлі деректерді өңдеу кезінде әртүрлі кідірістері бар хэш функцияларына негізделген сеанс кілтін генерациялау функциясына беріледі. Сервер орындайтын негізгі әрекеттердің уақытын дәл өлшеу шабуылдаушыға бастапқы кілттің нөлден басталатынын немесе басталмағанын анықтауға мүмкіндік беретін анықтамаларды (oracle) анықтауға мүмкіндік береді. Мысалы, шабуылдаушы клиент жіберген ашық кілтті (ga) ұстап алып, оны серверге қайта жіберіп, анықтай алады.
алынған бастапқы кілт нөлден басталады ма.
Кілттің бір байтын анықтау өздігінен ештеңе бермейді, бірақ қосылу келіссөздері кезінде клиент жіберген «ga» мәнін ұстап алу арқылы шабуылдаушы «ga» -мен байланысты басқа мәндер жинағын жасап, оларды жібере алады. серверді бөлек қосылым келіссөздерінде. «gri*ga» мәндерін жасау және жіберу арқылы шабуылдаушы сервер жауапындағы кідірістердің өзгерістерін талдау арқылы нөлден бастап бастапқы кілттерді алуға әкелетін мәндерді анықтай алады. Осындай мәндерді анықтай отырып, шабуылдаушы теңдеулер жинағын жасай алады
OpenSSL осалдықтары
Қосымша мәселелер бөлек белгіленеді (
Ақпарат көзі: opennet.ru