Ginny Hà
VIP Members
-
04/06/2014
-
88
-
689 bài viết
Lỗ hổng trên thư viện netmask ảnh hưởng đến hàng nghìn ứng dụng
Một lỗ hổng nghiêm trọng vừa được phát hiện trên netmask, thư viện npm phổ biến đang được hàng trăm nghìn ứng dụng sử dụng để phân tích cú pháp địa chỉ IPv4 và khối CIDR hoặc so sánh chúng.
Thành phần này có hơn 3 triệu lượt tải xuống hàng tuần và tính đến hiện tại đã đạt tổng số hơn 238 triệu lượt tải. Ngoài ra, khoảng 278.000 kho lưu trữ GitHub cũng phụ thuộc vào netmask.
Lỗ hổng CVE-2021-28918, liên quan đến cách thức netmask xử lý địa chỉ IP có định dạng hỗn hợp, cụ thể là địa chỉ IPv4 thập phân chứa số 0 ở đầu.
Địa chỉ IP có thể được biểu diễn ở nhiều định dạng, bao gồm cả số thập lục phân và số nguyên, mặc dù hầu hết các địa chỉ IPv4 thường gặp đều được ở định dạng thập phân.
Ví dụ: địa chỉ IPv4 của BleepingComputer được biểu thị ở định dạng thập phân là 104.20.59.209, nhưng cũng có thể được biểu thị ở định dạng bát phân 0150.0024.0073.0321.
Giả sử bạn được cấp một địa chỉ IP ở định dạng thập phân, 127.0.0.1, được hiểu là địa chỉ loopback cục bộ hoặc localhost. Nếu bạn đặt tiền tố 0 cho nó, ứng dụng sẽ phân tích cú pháp 0127.0.0.1 thành 127.0.0.1 hay khác?
Trong các thử nghiệm của BleepingComputer, nhập 0127.0.0.1/ vào thanh địa chỉ của Chrome, trình duyệt sẽ coi đó là IP ở định dạng bát phân.
Khi nhấn enter hoặc quay lại, IP trên thực tế sẽ thay đổi thành dạng thập phân 87.0.0.1, đó là cách mà hầu hết các ứng dụng xử lý các địa chỉ IP dạng như vậy.
Lưu ý là, 127.0.0.1 không phải là một địa chỉ IP công cộng mà là địa chỉ loopback, tuy nhiên, sự thể hiện không rõ ràng khiến nó thành địa chỉ IP công cộng dẫn đến một máy chủ lưu trữ khác hoàn toàn.
Tuy nhiên, trong trường hợp của netmask, bất kỳ số 0 nào ở đầu sẽ bị loại bỏ.
Theo đặc điểm kỹ thuật ban đầu của IETF, các phần của địa chỉ IPv4 có thể được hiểu là bát phân nếu tiền tố là "0."
"Nhưng netmask bỏ qua điều này. Nó luôn coi các phần là số thập phân", các chuyên gia cho biết.
Lỗi này có vẻ không có gì to tát nhưng nếu kẻ tấn công có thể tác động đến đầu vào địa chỉ IP đang được ứng dụng phân tích cú pháp, thì lỗi này có thể làm phát sinh nhiều vấn đề khác, từ SSRF (giả mạo yêu cầu phía máy chủ) đến lỗ hổng RFI.
“Một ví dụ điển hình là một hệ thống hiển thị các webhook và xác thực URL người dùng thông qua kiểm tra netmask sẽ dễ bị tấn công SSRF”, các nhà nghiên cứu cho biết thêm.
Trong khi đó, lỗi này cũng có thể sử dụng để khai thác lỗ hổng RFI nếu hacker tạo ra một địa chỉ IP private đối với netmask, do cách netmask chuyển đổi tất cả các phần IPv4 (bát phân) sang định dạng thập phân.
Năm 2018, dự án phần mềm nổi tiếng curl cũng phát hiện lỗ hổng tương tự khi xử lý phân tích cú pháp địa chỉ IPv4 bát phân dưới dạng thập phân.
Các sản phẩm bảo mật và cơ sở hạ tầng mạng khác nhau, như tường lửa ứng dụng web dựa vào netmask để lọc ra các IP có trên danh sách chặn và danh sách cho phép. Điều này cũng có nghĩa những vấn đề như thế này, nếu không được kiểm soát, có thể dẫn đến những sai sót nghiêm trọng trong các biện pháp kiểm soát an ninh.
"Netmask có hàng triệu lượt tải xuống hàng tuần, khiến mức ảnh hưởng khá nặng nề. Đây là một lỗ hổng lớn của chuỗi cung ứng phần mềm".
Sau khi được thông báo về lỗ hổng, nhà phát triển của netmask đã đưa ra loạt bản vá [1, 2, 3] lên GitHub. Người dùng của thư viện npm netmask được khuyến khích nâng cấp lên phiên bản mới đã khắc phục lỗ hổng.
Thành phần này có hơn 3 triệu lượt tải xuống hàng tuần và tính đến hiện tại đã đạt tổng số hơn 238 triệu lượt tải. Ngoài ra, khoảng 278.000 kho lưu trữ GitHub cũng phụ thuộc vào netmask.
Lỗ hổng CVE-2021-28918, liên quan đến cách thức netmask xử lý địa chỉ IP có định dạng hỗn hợp, cụ thể là địa chỉ IPv4 thập phân chứa số 0 ở đầu.
Địa chỉ IP có thể được biểu diễn ở nhiều định dạng, bao gồm cả số thập lục phân và số nguyên, mặc dù hầu hết các địa chỉ IPv4 thường gặp đều được ở định dạng thập phân.
Ví dụ: địa chỉ IPv4 của BleepingComputer được biểu thị ở định dạng thập phân là 104.20.59.209, nhưng cũng có thể được biểu thị ở định dạng bát phân 0150.0024.0073.0321.
Giả sử bạn được cấp một địa chỉ IP ở định dạng thập phân, 127.0.0.1, được hiểu là địa chỉ loopback cục bộ hoặc localhost. Nếu bạn đặt tiền tố 0 cho nó, ứng dụng sẽ phân tích cú pháp 0127.0.0.1 thành 127.0.0.1 hay khác?
Trong các thử nghiệm của BleepingComputer, nhập 0127.0.0.1/ vào thanh địa chỉ của Chrome, trình duyệt sẽ coi đó là IP ở định dạng bát phân.
Khi nhấn enter hoặc quay lại, IP trên thực tế sẽ thay đổi thành dạng thập phân 87.0.0.1, đó là cách mà hầu hết các ứng dụng xử lý các địa chỉ IP dạng như vậy.
Lưu ý là, 127.0.0.1 không phải là một địa chỉ IP công cộng mà là địa chỉ loopback, tuy nhiên, sự thể hiện không rõ ràng khiến nó thành địa chỉ IP công cộng dẫn đến một máy chủ lưu trữ khác hoàn toàn.
Tuy nhiên, trong trường hợp của netmask, bất kỳ số 0 nào ở đầu sẽ bị loại bỏ.
Theo đặc điểm kỹ thuật ban đầu của IETF, các phần của địa chỉ IPv4 có thể được hiểu là bát phân nếu tiền tố là "0."
"Nhưng netmask bỏ qua điều này. Nó luôn coi các phần là số thập phân", các chuyên gia cho biết.
Lỗi này có vẻ không có gì to tát nhưng nếu kẻ tấn công có thể tác động đến đầu vào địa chỉ IP đang được ứng dụng phân tích cú pháp, thì lỗi này có thể làm phát sinh nhiều vấn đề khác, từ SSRF (giả mạo yêu cầu phía máy chủ) đến lỗ hổng RFI.
“Một ví dụ điển hình là một hệ thống hiển thị các webhook và xác thực URL người dùng thông qua kiểm tra netmask sẽ dễ bị tấn công SSRF”, các nhà nghiên cứu cho biết thêm.
Trong khi đó, lỗi này cũng có thể sử dụng để khai thác lỗ hổng RFI nếu hacker tạo ra một địa chỉ IP private đối với netmask, do cách netmask chuyển đổi tất cả các phần IPv4 (bát phân) sang định dạng thập phân.
Năm 2018, dự án phần mềm nổi tiếng curl cũng phát hiện lỗ hổng tương tự khi xử lý phân tích cú pháp địa chỉ IPv4 bát phân dưới dạng thập phân.
Các sản phẩm bảo mật và cơ sở hạ tầng mạng khác nhau, như tường lửa ứng dụng web dựa vào netmask để lọc ra các IP có trên danh sách chặn và danh sách cho phép. Điều này cũng có nghĩa những vấn đề như thế này, nếu không được kiểm soát, có thể dẫn đến những sai sót nghiêm trọng trong các biện pháp kiểm soát an ninh.
"Netmask có hàng triệu lượt tải xuống hàng tuần, khiến mức ảnh hưởng khá nặng nề. Đây là một lỗ hổng lớn của chuỗi cung ứng phần mềm".
Sau khi được thông báo về lỗ hổng, nhà phát triển của netmask đã đưa ra loạt bản vá [1, 2, 3] lên GitHub. Người dùng của thư viện npm netmask được khuyến khích nâng cấp lên phiên bản mới đã khắc phục lỗ hổng.
Nguồn: Bleeping Computer