WhiteHat News #ID:1368
WhiteHat Support
-
04/06/2014
-
0
-
110 bài viết
Thư viện PolarSSL dễ bị tấn công thực thi mã từ xa
Nguy cơ bị tấn công thực thi mã từ xa (Remote code execution - RCE) đang tồn tại trong nhiều phiên bản của thư viện SSL mã nguồn mở PolarSSL do một lỗ hổng có thể được kích hoạt trong quá trình xử lý chứng thư.
Khi xử lý chuỗi biến số ASN.1 (Abstract Syntax Notation One), con trỏ không được khởi chạy và nếu lỗi xảy ra, trong một số tình huống nhất định, con trỏ đó sẽ chuyển đến polarssl_free().
Theo công bố từ PolarSSL, kiểu tình huống này có thể xảy ra khi xử lý một chứng thư. Lỗi có thể xảy ra trên máy client khi nhận một chứng thư từ server hoặc trên server nếu các server này yêu cầu cung cấp một chứng thư client.
Lỗ hổng này được định danh CVE-2015-1182, do nội bộ những người duy trì PolarSSL phát hiện ra. Một hãng an ninh khác cũng đồng thời phát hiện lỗ hổng là Certified Secure.
"Khi chứng chỉ X.509 do người dùng kiểm soát được xử lý bởi thư viện PolarSSL, lỗ hổng cho phép thực hiện tấn công thực thi mã từ xa và từ chối dịch vụ. Kịch bản lỗ hổng phổ biến nhất là sử dụng thư viện PolarSSL để xác thực các chứng chỉ client", Certified Secure cho biết.
Những nguy cơ mà nạn nhân phải đối mặt nếu tin tặc khai thác lỗ hổng này thành công ít nhất cũng là tình trạng từ chối dịch vụ, còn nghiêm trọng nhất là thực thi mã tùy ý từ xa trên máy bị tấn công.
PolarSSL là thư viện cho phép nhà phát triển đưa các chức năng mã hóa và SSL/TLS vào sản phẩm của mình. Nó được sử dụng trong một loạt các dự án quan trọng, ví dụ như cURL, OpenVPN, PowerDNS, cùng một số thiết bị nhúng khác.
Để giảm thiểu thiệt hại từ lỗ hổng, các nhà phát triển đã đưa ra một số giải pháp. Đầu tiên là bổ sung bản vá vào codebase của sản phẩm có tích hợp PolarSSL. Thứ hai là chờ đợi một phiên bản PolarSSL mới hơn nếu người dùng cảm thấy không quá cần thiết.
Bắt đầu từ phiên bản 1.0 đến 1.3.9 và bản build 1.2.12, tất cả phiên bản của sản phẩm này đều bị ảnh hưởng bởi lỗ hổng nói trên.
Một bản vá không chính thức cho phiên bản 1.3.9 đã được Certified Secure hoàn thành và cung cấp cho cộng đồng.
Dưới đây là code bản vá do nhà phát triển cung cấp (được chèn vào asn1parse.c):
CODE
diff --git a/library/asn1parse.c b/library/asn1parse.c
index a3a2b56..e2117bf 100644
--- a/library/asn1parse.c
+++ b/library/asn1parse.c
@@ -278,6 +278,8 @@ int asn1_get_sequence_of( unsigned char **p,
if( cur->next == NULL )
return( POLARSSL_ERR_ASN1_MALLOC_FAILED );
+ memset( cur->next, 0, sizeof( asn1_sequence ) );
+
cur = cur->next;
}
}
Khi xử lý chuỗi biến số ASN.1 (Abstract Syntax Notation One), con trỏ không được khởi chạy và nếu lỗi xảy ra, trong một số tình huống nhất định, con trỏ đó sẽ chuyển đến polarssl_free().
Theo công bố từ PolarSSL, kiểu tình huống này có thể xảy ra khi xử lý một chứng thư. Lỗi có thể xảy ra trên máy client khi nhận một chứng thư từ server hoặc trên server nếu các server này yêu cầu cung cấp một chứng thư client.
Lỗ hổng này được định danh CVE-2015-1182, do nội bộ những người duy trì PolarSSL phát hiện ra. Một hãng an ninh khác cũng đồng thời phát hiện lỗ hổng là Certified Secure.
"Khi chứng chỉ X.509 do người dùng kiểm soát được xử lý bởi thư viện PolarSSL, lỗ hổng cho phép thực hiện tấn công thực thi mã từ xa và từ chối dịch vụ. Kịch bản lỗ hổng phổ biến nhất là sử dụng thư viện PolarSSL để xác thực các chứng chỉ client", Certified Secure cho biết.
Những nguy cơ mà nạn nhân phải đối mặt nếu tin tặc khai thác lỗ hổng này thành công ít nhất cũng là tình trạng từ chối dịch vụ, còn nghiêm trọng nhất là thực thi mã tùy ý từ xa trên máy bị tấn công.
PolarSSL là thư viện cho phép nhà phát triển đưa các chức năng mã hóa và SSL/TLS vào sản phẩm của mình. Nó được sử dụng trong một loạt các dự án quan trọng, ví dụ như cURL, OpenVPN, PowerDNS, cùng một số thiết bị nhúng khác.
Để giảm thiểu thiệt hại từ lỗ hổng, các nhà phát triển đã đưa ra một số giải pháp. Đầu tiên là bổ sung bản vá vào codebase của sản phẩm có tích hợp PolarSSL. Thứ hai là chờ đợi một phiên bản PolarSSL mới hơn nếu người dùng cảm thấy không quá cần thiết.
Bắt đầu từ phiên bản 1.0 đến 1.3.9 và bản build 1.2.12, tất cả phiên bản của sản phẩm này đều bị ảnh hưởng bởi lỗ hổng nói trên.
Một bản vá không chính thức cho phiên bản 1.3.9 đã được Certified Secure hoàn thành và cung cấp cho cộng đồng.
Dưới đây là code bản vá do nhà phát triển cung cấp (được chèn vào asn1parse.c):
CODE
diff --git a/library/asn1parse.c b/library/asn1parse.c
index a3a2b56..e2117bf 100644
--- a/library/asn1parse.c
+++ b/library/asn1parse.c
@@ -278,6 +278,8 @@ int asn1_get_sequence_of( unsigned char **p,
if( cur->next == NULL )
return( POLARSSL_ERR_ASN1_MALLOC_FAILED );
+ memset( cur->next, 0, sizeof( asn1_sequence ) );
+
cur = cur->next;
}
}
Nguồn: Softpedia