Chi tiết về lỗ hổng nghiêm trọng trong Exim được tiết lộ

được phát hành phát hành khắc phục Exim 4.92.2 với việc loại bỏ quan trọng lỗ hổng (CVE-2019-15846), trong cấu hình mặc định có thể dẫn đến việc kẻ tấn công có quyền root thực thi mã từ xa. Sự cố chỉ xuất hiện khi hỗ trợ TLS được bật và bị khai thác bằng cách chuyển chứng chỉ ứng dụng khách được thiết kế đặc biệt hoặc giá trị được sửa đổi cho SNI. Tính dễ bị tổn thương xác định của Qualys.

vấn đề hiện nay trong trình xử lý để thoát các ký tự đặc biệt trong chuỗi (string_interpret_escape() từ string.c) và nguyên nhân là do ký tự '\' ở cuối chuỗi được diễn giải trước ký tự null ('\0') và thoát khỏi nó. Khi thoát, chuỗi '\' và mã cuối dòng null sau đây được coi là một ký tự đơn và con trỏ được chuyển sang dữ liệu bên ngoài dòng, được coi là phần tiếp theo của dòng.

Mã gọi string_interpret_escape() phân bổ bộ đệm cho cống dựa trên kích thước thực tế và con trỏ hiển thị sẽ kết thúc ở một khu vực bên ngoài giới hạn của bộ đệm. Theo đó, khi cố gắng xử lý một chuỗi đầu vào, sẽ xảy ra tình huống khi đọc dữ liệu từ một khu vực nằm ngoài giới hạn của bộ đệm được phân bổ và việc cố gắng ghi một chuỗi không thoát có thể dẫn đến việc ghi vượt quá giới hạn của bộ đệm.

Trong cấu hình mặc định, lỗ hổng có thể bị khai thác bằng cách gửi dữ liệu được thiết kế đặc biệt tới SNI khi thiết lập kết nối an toàn tới máy chủ. Vấn đề cũng có thể bị khai thác bằng cách sửa đổi các giá trị ngang hàng trong cấu hình được định cấu hình để xác thực chứng chỉ ứng dụng khách hoặc khi nhập chứng chỉ. Có thể tấn công thông qua SNI và pedn từ khi phát hành Exim 4.80, trong đó hàm string_unprinting() được sử dụng để hủy in nội dung pedn và SNI.

Một nguyên mẫu khai thác đã được chuẩn bị cho cuộc tấn công thông qua SNI, chạy trên kiến ​​trúc i386 và amd64 trên hệ thống Linux với Glibc. Việc khai thác sử dụng lớp phủ dữ liệu trên vùng heap, dẫn đến ghi đè lên bộ nhớ nơi lưu trữ tên tệp nhật ký. Tên tệp được thay thế bằng "/../../../../../../../etc/passwd". Tiếp theo, biến có địa chỉ của người gửi sẽ được ghi đè, biến này lần đầu tiên được lưu vào nhật ký, cho phép bạn thêm người dùng mới vào hệ thống.

Cập nhật gói với các bản sửa lỗi lỗ hổng được phát hành bởi các nhà phân phối Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. Vấn đề về RHEL và CentOS không nhạy cảm, vì Exim không được đưa vào kho gói thông thường của họ (trong ẤM ÁP обновление đã hình thành, nhưng bây giờ không được đặt đến một kho lưu trữ công cộng). Trong mã Exim, sự cố đã được khắc phục bằng một lớp lót , điều này vô hiệu hóa hiệu ứng thoát của dấu gạch chéo ngược nếu nó ở cuối dòng.

Để khắc phục lỗ hổng này, bạn có thể tắt hỗ trợ TLS hoặc thêm
Phần ACL “acl_smtp_mail”:

điều kiện từ chối = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
điều kiện từ chối = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Nguồn: opennet.ru

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