Masalahnya wujud secara langsung dalam spesifikasi TLS dan hanya mempengaruhi sambungan menggunakan sifir berdasarkan protokol pertukaran kunci DH (Diffie-Hellman, TLS_DH_*"). Dengan sifir ECDH masalah tidak berlaku dan ia kekal selamat. Hanya protokol TLS sehingga versi 1.2 yang terdedah; TLS 1.3 tidak terjejas oleh masalah tersebut. Kerentanan berlaku dalam pelaksanaan TLS yang menggunakan semula kunci rahsia DH merentas sambungan TLS yang berbeza (tingkah laku ini berlaku pada kira-kira 4.4% pelayan 1M Teratas Alexa).
Dalam OpenSSL 1.0.2e dan keluaran terdahulu, kunci utama DH digunakan semula dalam semua sambungan pelayan melainkan pilihan SSL_OP_SINGLE_DH_USE ditetapkan secara eksplisit. Sejak OpenSSL 1.0.2f, kunci utama DH hanya digunakan semula apabila menggunakan sifir DH statik ("DH-*", cth. "DH-RSA-AES256-SHA"). Kerentanan tidak muncul dalam OpenSSL 1.1.1, kerana cawangan ini tidak menggunakan kunci utama DH dan tidak menggunakan sifir DH statik.
Apabila menggunakan kaedah pertukaran kunci DH, kedua-dua belah sambungan menjana kunci persendirian rawak (selepas ini kekunci "a" dan kekunci "b"), berdasarkan kekunci awam (ga mod p dan gb mod p) dikira dan dihantar. Selepas setiap pihak menerima kunci awam, kunci utama biasa (gab mod p) dikira, yang digunakan untuk menjana kunci sesi. Serangan Raccoon membolehkan anda menentukan kunci utama melalui analisis saluran sisi, berdasarkan fakta bahawa spesifikasi TLS sehingga versi 1.2 memerlukan semua bait nol utama kunci utama dibuang sebelum pengiraan yang melibatkannya.
Termasuk kunci utama yang dipotong dihantar ke fungsi penjanaan kunci sesi, yang berdasarkan fungsi cincang dengan kelewatan yang berbeza apabila memproses data yang berbeza. Mengukur masa operasi utama yang dilakukan oleh pelayan dengan tepat membolehkan penyerang menentukan petunjuk (oracle) yang memungkinkan untuk menilai sama ada kunci utama bermula dari awal atau tidak. Sebagai contoh, penyerang boleh memintas kunci awam (ga) yang dihantar oleh pelanggan, menghantar semula ke pelayan dan menentukan
sama ada kunci utama yang terhasil bermula dari sifar.
Dengan sendirinya, mentakrifkan satu bait kunci tidak memberikan apa-apa, tetapi dengan memintas nilai "ga" yang dihantar oleh pelanggan semasa rundingan sambungan, penyerang boleh menjana satu set nilai lain yang dikaitkan dengan "ga" dan menghantarnya ke pelayan dalam sesi rundingan sambungan berasingan. Dengan menjana dan menghantar nilai "gri*ga", penyerang boleh, melalui menganalisis perubahan kelewatan dalam respons pelayan, menentukan nilai yang membawa kepada penerimaan kunci utama bermula dari sifar. Setelah menentukan nilai sedemikian, penyerang boleh mencipta satu set persamaan untuk
Kerentanan OpenSSL
Masalah tambahan dinyatakan secara berasingan (
Sumber: opennet.ru