Heartbleed for Dummies

Pojok Programmer Heartbleed OpenSSL for Dummies  infographics

Security | Beberapa hari terakhir banyak dunia IT diramaikan oleh bug Heartbleed. Bagi yang kurang memahami security, atau bagia yang belum bersentuhan dengan dunia security mungkin agak bingung, sebenarnya ada problem apa dengan bug ini.  Saya bukan ahli dalam hal security atau keamanan jaringan, tapi mudah-mudahan penjelasan dalam artikel ini cukup mudah dimengerti untuk memahami bagaimana cara kerja bug heartbleed.

Bug heartbleed bersarang di dalam implementasi OpenSSL untuk TLS heartbeat. Secara umum, tujuan dari heartbeat ini adalah untuk memverifikasi bahwa koneksi ke sebuah server masih terhubung atau tidak dengan cara mengirimkan sebuah pesan dan mengharapkan respon respon yang sama. Ketika sebuah paket TLS heartbeat dikirim , di dalam paket tersebut berisikan beberapa potongan penting dari informasi dan sebarang data, atau payload. Server yang menerima paket payload ini harus mengirimkan ulang isinya untuk memverifikasi sambungan masih hidup atau tidak. Di dalam paket TLS heartbeat itu juga tersimpan informasi panjang payload, kita sebut saja sebagai len_payload. Dan ukuran maksimum payload adalah sebesar 1 byte atau 2^16 = 64kB data.

Yang dilakukan oleh OpenSSL saat menerima paket payload heartbeat adalah, 

  • Mengalokasikan variable respon, dengan menggunakan len_payload sebagai ukuran payload balasan
  • memcpy() len_payload byte dari payload ke dalam respon.
  • Kirim respon heartbeat (dengan semua len_payload bytes) kembali ke pengirim asli.

Problem muncul karena OpenSSL tidak pernah repot-repot untuk memeriksa apakah len_payload yang benar-benar sesuai dengan panjang payload yang diterima. Jadi, orang attacker bisa mengirim permintaan heartbeat yang menunjukkan panjang payload (len_payload) hingga 2^16 (65536) , namun payload sebenarnya jauh lebih pendek. Sehingga yang terjadi adalah bahwa memcpy menyalin data di memory ke luar batas payload ke dalam variable respon, memberikan hingga 64k isi memori OpenSSL ke attacker. Koq bisa tidak terjadi segmentation fault? hal tersebut terjadi karena OpenSSL memiliki implementasi custom tersendiri sehingga tidak menimbulkan segmentation fault di level OS.

Lalu, apa keuntungannya? 

Apa yang ada di memori 64k ekstra ini? Itu tergantung.... Anda bisa mendapatkan apa pun yang berguna pada satu paket heartbeat palsu. Dan tidak ada yang bisa menghentikan Anda dari mengirim paket heartbeat palsu seperti itu sebanyak yang kita inginkan. Banyak yang telah menunjukkan bahwa mereka bisa mendapatkan informasi yang tidak terenkripsi berupa username, password, private security keys, dan hal-hal lain yang dibutuhkan untuk kepentingan keamanan di dunia maya.

Happy Understanding! :D

Terjemahan bebas dari Pertanyaan di Quora.

Heartbleed Infographics

Pojok Programmer Heartbleed OpenSSL for Dummies  infographics

Sumber gambar: http://www.bankinfosecurity.com/heartbleed....

How Heartbleed Works

Pojok Programmer Heartbleed OpenSSL for Dummies  infographics How Heartbleed Works

Sumber gambar: http://xkcd.com/1354/