Heartbleed – Lỗ hổng nguy hiểm trong thư viện OpenSSL

Update on 10h, 10/04/2014: Cảm ơn Duong Kai, Luc Trong góp ý về phần cập nhật bản vá.

Về cơ bản thì lỗ hổng này là gì ?

Một lỗ hổng nguy hiểm của OpenSSL mới được công bố cho phép hacker có thể từ xa đọc được bộ nhớ trên máy chủ có cài đặt OpenSSL phiên bản 1.0.1 đến 1.0.1f.

Chúng ta tạm hiểu, OpenSSL là 1 thư viện mã hóa, được sử dụng để… mã hóa (tất nhiên :D) dữ liệu trao đổi giữa máy chủ và client. Vậy những máy chủ nào sử dụng OpenSSL ? Câu trả lời là rất rất nhiều. Kể sơ qua có thể thấy là các máy chủ web chạy apache hoặc ngix, các máy chủ email, VPN, Instant Message…

Khai thác lỗ hổng, hacker có thể lấy được private key của server, sử dụng để mã hóa các dữ liệu trao đổi giữa server và client. Từ đó hacker có thể đọc được toàn bộ thông tin được trao đổi giữa client và server như chưa hề được mã hóa :D. Dễ hiểu hơn là hacker có thể đọc được username/password, nội dung email, chat vv

Như vậy, đích nhắm của hacker sẽ là các site có thanh toán trực tuyến như: ngân hàng điện tử, chứng khoán điện tử, cổng thanh toán điện tử, các trang về thương mại điện tử. Ngoài ra, các mail server và một số dịch vụ khác có sử dụng OpenSSL để mã hóa cũng sẽ là mục tiêu tấn công.

Tại sao lại gọi lỗ hổng là “Trái tim rỉ máu” (HeartBleed)

Vì lỗ hổng nằm trong việc xử lý TLS Heartbeat extension (RFC6520) của OpenSSL. Nguyên lý hoạt động của RFC này là để client/server kiểm tra xem bạn của mình có còn sống hay không (kiểm tra nhịp tim – Heartbeat). Do lỗi ở tính năng kiểm tra heartbeat, nên người ta văn vẻ gọi lỗ hổng là Heartbleed.

Cụ thể: Client sẽ gửi 1 message heartbeat đến server với 1 kích thước nào đó  (ví dụ 1KB ) thì server sẽ phản hồi chính message đó lại cho client. Tạm hiểu là nếu tôi ném cho ông 1 quả táo để xem ông có còn sống hay không, ông sẽ ném lại tôi đúng quả táo đó để báo là ông còn sống.

Nhưng lợi dụng việc xử lý không tốt trong OpenSSL, hacker sẽ gửi 1 message có kích thước thật là 1KB, nhưng lại lừa rằng nó có kích thước 64KB. Do không kiểm tra cẩn thận, nên server sẽ trả lời bằng 1 gói tin có kích thước là 64KB (bao gồm 1KB là message thật và 63 KB trong bộ nhớ của server). Với lỗ hổng này, hacker sẽ tự nhiên nhận được 63KB dữ liệu trên RAM của server để tiếp tục khai thác.

1Bộ nhớ trên một máy chủ bị rò rỉ

Những máy chủ nào có nguy cơ bị lỗ hổng ?

Phiên bản tồn tại lỗ hổng là OpenSSL 1.0.1 đến 1.0.1f. Các phiên bản trước đó và sau đó không bị.

Một số hệ điều hành có cài đặt sẵn OpenSSL sau đây có thể bị:

Debian Wheezy (stable), OpenSSL 1.0.1e-2+deb7u4

Ubuntu 12.04.4 LTS, OpenSSL 1.0.1-4ubuntu5.11

CentOS 6.5, OpenSSL 1.0.1e-15

Fedora 18, OpenSSL 1.0.1e-4

OpenBSD 5.3 (OpenSSL 1.0.1c 10 May 2012) and 5.4 (OpenSSL 1.0.1c 10 May 2012)

FreeBSD 10.0 – OpenSSL 1.0.1e 11 Feb 2013

NetBSD 5.0.2 (OpenSSL 1.0.1e)

OpenSUSE 12.2 (OpenSSL 1.0.1c)

Cập nhật bản vá cho lỗ hổng như thế nào ?

Đầu tiên, cần kiểm tra phiên bản hiện tại trên máy là bao nhiêu bằng câu lệnh:

openssl version – a

Nếu kết quả ví dụ là

OpenSSL 1.0.1e 11 Feb 2013 (phiên bản 1.0.1e có lỗi)

Thì xin chúc mừng, bạn cần phải cập nhật ngay lập tức.

Sau đó tùy vào OS của bạn, sẽ cập nhật với câu lệnh tương ứng

Ví dụ trên CentOS là yum update openssl

Ví dụ trên Ubuntu là apt-get upgrade openssl

References

http://cvedetails.com/cve/2014-0160

http://heartbleed.com

https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/scanner/ssl/openssl_heartbleed.rb

http://www.ehackingnews.com/2014/04/heartbleed-openssl-vulnerability.html

https://gist.github.com/sh1n0b1/10100394

http://www.howtoforge.com/find_out_if_server_is_affected_from_openssl_heartbleed_vulnerability_cve-2014-0160_and_how_to_fix

Leave a Reply

Your email address will not be published. Required fields are marked *