Lỗ hổng nghiêm trọng trong OpenSSL cho phép tin tặc giải mã HTTPS

OpenSSL Foundation vừa mới phát hành bản vá lỗi cho một lỗ hổng có mức độ nguy hiểm cao trong thư viện code mật mã cho phép tin tặc chiếm khóa giải mã kết nối HTTPS và các kết nối dùng Transport layer security (TLS).

OpenSSL là một thư viện mã nguồn mở được sử dụng rộng rãi trong các ứng dụng dành cho việc truyền tải dữ liệu bảo mật. Hầu hết các website đều sử dụng nó để kích hoạt Sockets Layer (SSL) hoặc mã hóa Transport Layer Security (TLS).

Tuy nhiên, sau lỗ hổng Heartbleed được phát hiện vào năm ngoái, OpenSSL đã được thêm nhiều nhà nghiên cứu bảo mật điều tra chuyên sâu hơn. Đội ngũ nhân viên OpenSSL đã vá hai lỗ hổng riêng biệt, có định danh lần lượt là CVE-2016-0701CVE-2015-3197.

Lỗ hổng CVE-2016-0701

Diffie-Hellman (DH) là phương thức cơ bản trong việc trao đổi các khóa mã hóa qua các kênh không tin cậy, cho phép các giáo thức như HTTPS, SSH, SMTPS, IPsec dùng 1 khóa bí mật để tạo một phiên kết nối riêng tư.

Tuy nhiên, các ứng dụng dựa thuật toán trao đổi khóa trên DH sinh ra các khóa tạm thời chỉ sử dụng các số nguyên tố an toàn, nhưng mặc định máy chủ lại sử dụng lại cùng các số nguyên tố này, gây ra lỗ hổng tấn cổng sử dụng lại khóa.

Tin tặc có thể khai thác lỗi hổng này bằng cách tạo nhiều phiên kết nối với máy chủ và tìm kiếm được khóa bí mật DH của máy chủ nếu máy chủ đó sử dụng lại khóa bí mật hoặc sử dụng một khóa Diffie-Hellman cố định.

Tuy nhiên, OpenSSL có tùy chọn SSL_OP_SINGLE_DH_USE để cấu hình sinh khóa Diffie-Hellman trong TLS. Nhưng mặc định tùy chọn này lại bị OFF, trong phiên bản mới của OpenSSL tùy chọn này mặc định sẽ được enable.
Lỗ hổng này chỉ ảnh hưởng tới OpenSSL v1.0.2.

Lỗ hổng CVE-2015-3197

Lỗ hổng này được xếp ở mức thấp "low severity", CVE-2015-3197 ảnh hưởng tới các phiên bản 1.0.2 và 1.0.1, lỗ hổng này cho phép tin tặc chuyển các kết nối SSLv3 sang dạng hóa yếu hơn là SSLv2, ngay cả khi kiểu mã hóa SSLv2 bị tắt trên máy chủ.

Lỗ hổng Logjam

Hai lỗ hổng kể trên trong giao thức TLS cho phép kẻ tấn công dạng man-in-the-middle có thể giảm độ dài của khóa trao đổi DH xuống còn 512-bit, để dễ dàng bẻ khóa.
Lỗ hổng này còn được gọi là Logjam (CVE-2015-4000). OpenSSL giảm thiểu nguy cơ tấn công cho TLS clients bằng cách từ chối các bắt tay với tham số DH ngắn hớn 768-bits trong phiên bản 1.0.2b và 1.0.1n.
Giới hạn này được tăng lên 1024 bit trong phiên bản mới nhất để đảm bảo an toàn tối đa cho tất cả các kết nối TLS.

Upgrade now!!!

Nếu máy chủ của bạn đang sử dụng OpenSSL phiên bản 1.0.2, vui lòng nâng cấp lên phiên bản 1.0.2f, đối với máy chủ đang dùng OpenSSL v1.0.1 nâng cấp lên v1.0.1r.

Chúng tôi khuyến cáo bạn nên áp dụng các bản vá càng sớm càng tốt. Các phiên bản OpenSSL 0.9.8 và 1.0.0 đã dừng hỗ trợ vào tháng 12. Phiên bản OpenSSL 1.0.1 sẽ dừng hỗ trợ vào cuối năm nay.

Đối với các máy chủ dùng Debian/Ubuntu, phiên bản OpenSSL trên kho phần mềm chưa có gói OpenSSL v1.0.1r. Để tiện hơn cho quá trình nâng cấp, VCCloud đã build sẵn gói cài. Đối với các máy chủ dòng Redhat/CentOS, bạn có thể upgrade từ mã nguồn, theo hướng dẫn dưới đây.

Các bước Upgrade OpenSSl cho Debian/Ubuntu:

Version trước khi upgrade:

openssl version  
OpenSSL 1.0.1f 6 Jan 2014  

Download file và cài đặt:

wget http://mirror.vccloud.vn/patch/openssl_1.0.1r-1_amd64.deb  
dpkg -i openssl_1.0.1r-1_amd64.deb  

Hoặc OpenSSL v1.0.2f: http://mirror.vccloud.vn/patch/openssl_1.0.2f-1_amd64.deb

Tạo lại symbol link

mkdir -p /usr/lib/ssl/  
ln -s /etc/ssl/{certs,private,openssl.cnf} /usr/lib/ssl/  

Kiểm tra version sau khi upgrade

openssl version  
OpenSSL 1.0.1r 28 Jan 2016  

Hướng dẫn upgrade OpenSSL từ source

Cài các gói cần thiết để build

apt-get install -y make gcc zlib1g-dev  

Tải source từ trang chủ và giải nén

cd ~; wget https://www.openssl.org/source/openssl-1.0.1r.tar.gz  
tar -xvzf openssl-1.0.1r.tar.gz  

Nếu dùng OpenSSL 1.0.2f: https://www.openssl.org/source/openssl-1.0.2f.tar.gz

Cấu hình và cài đặt

cd openssl-1.0.1r  
./config —prefix=/usr --openssldir=/etc/ssl --libdir=lib shared zlib-dynamic
make  
make test  
make install