Melakukan Tes Kerentanan SSLv2 Terhadap Serangan DROWN

Pada tanggal 1 Maret 2016 lalu beberapa media teknologi dan keamanan telah mengumumkan adanya celah keamanan pada SSLv2 terhadap sebuah serangan yang dikenal dengan DROWN (Decrypting RSA using Obsolete and Weakened eNcryption). Celah keamanan ini pertama kali dilaporkan oleh Nimrod Aviram dan Sebastian Schinzel dan kemudian RedHat mengumumkannya dengan kode CVE-2016-0800. Beberapa situs besar seperti Alibaba, Yahoo dan sebagainya termasuk dalam daftar situs top yang mempunyai celah keamanan ini (saat vulnerability issue baru rilis).

Serangan DROWN pada SSLv2 memungkinkan seseorang melakukan dekripsi terhadap RSA cipher text yang melewati jalur komunikasi antara server (yang masih menggunakan SSLv2) dengan client. Private key didapatkan dengan cara mengobservasi komunikasi antara client dan server, terutama response dari server yang mempunyai private key tersebut. Penjelasan teknis mendetail dapat ditemukan pada Paper yang diterbitkan oleh DROWN Researcher.

Untuk melakukan tes terhadap sebuah website apakah memiliki celah keamanan ini cukup dengan mengeceknya pada tautan ini. Atau dapat menggunakan skrip python yang dikembangkan oleh Hubert Kario dari RedHat. Untuk menggunakan skrip ini hanya membutuhkan pyton minimal versi 2.6.6 dan tentunya git untuk mengunduh / clone project nya.

git clone https://github.com/tomato42/tlsfuzzer
cd tlsfuzzer
git checkout ssl2

masih di dalam direktori tlsfuzzer :

git clone https://github.com/tomato42/tlslite-ng .tlslite-ng
ln -s .tlslite-ng/tlslite tlslite
cd .tlslite-ng
git checkout sslv2

Lalu kembali ke direktori tlsfuzzer

cd ..

Unduh skrip kripto ECDSA :

git clone https://github.com/warner/python-ecdsa .python-ecdsa
ln -s .python-ecdsa/ecdsa ecdsa

Lakukan pengecekan seperti ini :

PYTHONPATH=. python scripts/test-sslv2-force-export-cipher.py -h contohaja.com -p 443

Pada contoh kasus yang masih rentan terhadap DROWN attack maka akan muncul assertion error seperti ini :

Connect with TLSv1.0 EXP-RC4-MD5 ...
OK

Connect with SSLv2 EXP-RC4-MD5 ...
Error encountered while processing node <tlsfuzzer.expect.ExpectSSL2Alert object at 0x10d709810> (child: <tlsfuzzer.expect.ExpectClose object at 0x10d709890>) with last message being: <tlslite.messages.Message object at 0x10d709e10>
Error while processing
Traceback (most recent call last):
File "scripts/test-sslv2-force-export-cipher.py", line 109, in main
runner.run()
File "/Users/robertusm.suseno/Workspace/drown/tlsfuzzer/tlsfuzzer/runner.py", line 151, in run
RecordHeader2)))
AssertionError: Unexpected message from peer: Handshake(123)

Untuk menghindari kemungkinan serangan DROWN ini, cukup men-disable SSLv2 pada konfigurasi protokol apapun itu yang menggunakan jalur SSL / TLS. Misalnya pada Nginx, cukup memastikan SSLv2 tidak terdapat pada konfigurasi :

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

SSL versi 2 ini sudah lama deprecated, semenjak tahun 2011 dan sangat tidak disarankan untuk tetap dipergunakan.

Sumber :
1. DROWN Paper : https://drownattack.com/drown-attack-paper.pdf
2. RedHat Vulnerability Responses : https://access.redhat.com/security/vulnerabilities/drown
3. Vulnerability Note : https://www.kb.cert.org/vuls/id/583776
4. OpenSSL Mailing List : https://mta.openssl.org/pipermail/openssl-dev/2016-March/005602.html
5. Daftar Situs Top : https://drownattack.com/top-sites.html

Melakukan Tes Kerentanan SSLv2 Terhadap Serangan DROWN

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s