Lỗ hổng trong uClibc và uClibc-ng cho phép giả mạo dữ liệu trong bộ đệm DNS

Trong thư viện C tiêu chuẩn uClibc và uClibc-ng, được sử dụng trong nhiều thiết bị nhúng và di động, một lỗ hổng đã được xác định (CVE chưa được gán) cho phép chèn dữ liệu giả vào bộ đệm DNS, có thể được sử dụng để thay thế địa chỉ IP của một miền tùy ý trong bộ đệm và chuyển hướng các yêu cầu đến miền trên máy chủ của kẻ tấn công.

Sự cố này ảnh hưởng đến nhiều phần mềm Linux khác nhau dành cho bộ định tuyến, điểm truy cập và thiết bị Internet of Things cũng như các bản phân phối Linux nhúng như OpenWRT và Embedded Gentoo. Cần lưu ý rằng lỗ hổng này xuất hiện trong các thiết bị của nhiều nhà sản xuất (ví dụ: uClibc được sử dụng trong phần mềm Linksys, Netgear và Axis), nhưng do lỗ hổng này vẫn chưa được sửa trong uClibc và uClibc-ng nên thông tin chi tiết về các thiết bị cụ thể và nhà sản xuất có sản phẩm có vấn đề có sẵn vẫn chưa được tiết lộ.

Lỗ hổng này xảy ra do việc sử dụng mã định danh giao dịch có thể dự đoán được trong mã gửi truy vấn DNS. Số nhận dạng của yêu cầu DNS được chọn bằng cách chỉ cần tăng bộ đếm mà không sử dụng ngẫu nhiên số cổng bổ sung, điều này có thể gây độc cho bộ đệm DNS thông qua việc gửi trước các gói UDP với các phản hồi giả (phản hồi sẽ được chấp nhận nếu nó đến trước đó). phản hồi từ máy chủ thực và bao gồm ID chính xác). Không giống như phương pháp Kaminsky được đề xuất năm 2008, số nhận dạng giao dịch thậm chí không cần phải đoán vì ban đầu nó có thể dự đoán được (giá trị ban đầu được đặt thành 1, giá trị này tăng lên theo mỗi yêu cầu, thay vì được chọn ngẫu nhiên).

Lỗ hổng trong uClibc và uClibc-ng cho phép giả mạo dữ liệu trong bộ đệm DNS

Để bảo vệ chống lại tác động mạnh mẽ của mã định danh, đặc tả khuyến nghị bổ sung bằng cách sử dụng phân phối ngẫu nhiên số lượng cổng mạng nguồn mà từ đó các yêu cầu DNS được gửi đi, điều này bù đắp cho kích thước không đủ lớn của mã định danh. Khi bạn bật tính năng ngẫu nhiên hóa cổng để tạo phản hồi giả định, ngoài việc chọn mã định danh 16 bit, bạn cũng phải chọn số cổng mạng. Trong uClibc và uClibc-ng, tính năng ngẫu nhiên như vậy không được bật rõ ràng (khi gọi liên kết, cổng UDP nguồn ngẫu nhiên không được chỉ định) và việc sử dụng nó phụ thuộc vào cài đặt hệ điều hành.

Khi tính năng ngẫu nhiên hóa số tiền bị vô hiệu hóa, việc xác định ID yêu cầu tăng dần sẽ được đánh dấu là một nhiệm vụ tầm thường. Nhưng ngay cả khi sử dụng ngẫu nhiên, kẻ tấn công chỉ cần đoán cổng mạng trong phạm vi 32768–60999, trong phạm vi này chúng có thể gửi đồng thời nhiều phản hồi giả đến các cổng mạng khác nhau.

Lỗ hổng trong uClibc và uClibc-ng cho phép giả mạo dữ liệu trong bộ đệm DNS

Sự cố đã được xác nhận trong tất cả các bản phát hành hiện tại của uClibc và uClibc-ng, bao gồm các phiên bản mới nhất của uClibc 0.9.33.2 và uClibc-ng 1.0.40. Vào tháng 2021 năm 2022, thông tin về lỗ hổng đã được gửi đến CERT/CC để phối hợp chuẩn bị sửa lỗi. Vào tháng 200 năm XNUMX, dữ liệu về vấn đề này đã được chia sẻ với hơn XNUMX nhà sản xuất hợp tác với CERT/CC. Vào tháng XNUMX, đã có nỗ lực liên hệ riêng với người duy trì dự án uClibc-ng, nhưng anh ta trả lời rằng anh ta không thể tự mình khắc phục lỗ hổng và đề nghị tiết lộ công khai thông tin về vấn đề, hy vọng nhận được sự giúp đỡ trong việc phát triển một bản sửa lỗi. khắc phục từ cộng đồng. Trong số các nhà sản xuất, NETGEAR đã công bố phát hành bản cập nhật giúp loại bỏ lỗ hổng này.

Nguồn: opennet.ru

Thêm một lời nhận xét