Phát hiện lỗ hổng ảnh hưởng đến thư viện "net" của Golang và Rust

DDos

VIP Members
22/10/2013
524
2.191 bài viết
Phát hiện lỗ hổng ảnh hưởng đến thư viện "net" của Golang và Rust
Thư viện "net" thường được sử dụng trong ngôn ngữ lập trình Go và Rust bị ảnh hưởng bởi lỗ hổng xác định địa chỉ IP ở dạng hỗn hợp.

Lỗi liên quan đến cách thư viện net xử lý địa chỉ IP dưới dạng số thập phân, ngay cả khi chúng được cung cấp ở định dạng hỗn hợp (bát phân-thập phân).

Do đó, các ứng dụng sử dụng thư viện này có thể bị tấn công bởi các lỗ hổng yêu cầu giả mạo từ phía máy (SSRF) và Remote File Inclusion (RFI).

DDoS-Map-Internet.jpg

Tại hội nghị bảo mật DefCon, các nhà nghiên cứu bảo mật Cheng Xu, Victor Viale, Sick Codes, Nick Sahler, Kelly Kaoudis, opennota và John Jackson đã tiết lộ một lỗ hổng trong mô-đun net của ngôn ngữ Go và Rust.

Với mã định danh CVE-2021-29922 (đối với Rust) và CVE-2021-29923 (đối với Golang), lỗ hổng liên quan đến cách thư viện net xử lý địa chỉ IP có định dạng hỗn hợp hoặc cụ thể hơn là khi một địa chỉ IPv4 ở dạng thập phân chứa số 0 ở vị trí đầu tiên.

Một đị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 thấy đều được biểu diễn ở dạng thập phân.

Nếu bạn thêm số 0 vào địa chỉ IP 127.0.0.1, thì các ứng dụng sẽ phân tích địa chỉ này là 0127.0.0.1 hay 127.0.0.1?

Khi nhập 0127.0.0.1/ vào thanh địa chỉ của Chrome thì trình duyệt coi đó là IP ở định dạng bát phân. Khi nhấn nút enter hoặc quay lại, địa chỉ IP này sẽ được chuyển đổi thành dạng tương đương của nó theo dạng thập phân, tức là 87.0.0.1, đó là cách hầu hết các ứng dụng phải xử lý các địa chỉ IP bất thường.

ip-address-leading-zero.jpg

Theo một bản nháp của tổ chức IETF, các thành phần của một địa chỉ IPv4 có thể được biên dịch thành dạng bát phân nếu có số 0 ở vị trí đầu tiên trong địa chỉ IP. Do đó, sẽ có sự khác biệt khi phân tích một địa chỉ IPv4 ở dạng hỗn hợp giữa các ứng dụng. Ví dụ, mô đun net trong Go và Rust, coi tất cả phần bát phân của một địa chỉ IPv4 là số thập phân. Điều dẫn đến những sai lệch nhất định khi sử dụng thư viện net trong việc biểu diễn các địa chỉ IPv4 ở dạng bát phân.

poc-rust-net.jpg

Kẻ tấn công có thể sử dụng lỗi này để kích hoạt lỗ hổng lỗ hổng yêu cầu giả mạo từ phía máy (SSRF) và Remote File Inclusion (RFI).

Hiện tại, các nhà phát triển mô đun net của Golang và Rust đã nhanh chóng phát hành các bản vá lỗi.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
cve-2021-29922 cve-2021-29923 golang rust
Bên trên