Lỗi ghi đè bộ nhớ 1 byte trong resolver của nginx Web Server và NGINX Plus

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Giới thiệu chung

Dữ liệu gốc

Một vấn đề bảo mật trong bộ phân giải của nginx đã được xác định, có thể cho phép kẻ tấn công có khả năng giả mạo các gói UDP từ máy chủ DNS thực hiện ghi đè bộ nhớ 1 byte, dẫn đến tiến trình worker bị crash hoặc có thể gây ra tác động khác.

Sản phẩm và phạm vi ảnh hưởng

  • nginx Web Server: các phiên bản từ 0.6.18 đến 1.20.0 được đánh dấu bị ảnh hưởng. Advisory của nginx nêu bản sửa cho các nhánh này là 1.20.1 và 1.21.0. Trạng thái của các nhánh về sau hoặc nhánh song song không được xác lập ngoài các bản phát hành được nêu.
  • NGINX Plus: các bản R13 đến R23 trước R23 P1 và bản R24 trước R24 P1 được đánh dấu bị ảnh hưởng trong bản ghi chuẩn hóa. Trạng thái của các nhánh NGINX Plus khác chưa được xác lập bởi bằng chứng hiện có.
  • Các sản phẩm downstream có nhúng nginx có thể có phạm vi ảnh hưởng và bản sửa riêng theo từng nhà cung cấp. Không nên suy ra ranh giới phiên bản upstream trực tiếp cho mọi sản phẩm đóng gói nginx.

Chi tiết kỹ thuật

nginx xử lý phản hồi DNS trong đường dẫn resolver khi cấu hình có chỉ thị resolver. Một phản hồi DNS được tạo đặc biệt có thể kích hoạt việc ghi đè 1 byte trong bộ nhớ trong quá trình xử lý phản hồi từ máy chủ DNS. Kẻ tấn công phải có khả năng giả mạo các gói UDP xuất phát từ máy chủ DNS được cấu hình, vì vậy cuộc tấn công có thể thực hiện qua mạng nhưng phụ thuộc vào khả năng giả mạo gói tin này. Việc ghi đè có thể làm tiến trình worker bị crash; advisory của nginx cũng cảnh báo về khả năng thực thi mã tùy ý. Bản ghi phân loại điểm yếu là CWE-193, nhưng bằng chứng được xem xét không nêu trường dữ liệu bị ghi đè, vị trí mã chính xác hoặc một chuỗi khai thác đáng tin cậy.

Khả năng khai thác

Cuộc tấn công được thực hiện qua mạng, không yêu cầu xác thực và không yêu cầu tương tác của người dùng theo các thuộc tính đã cung cấp. Độ phức tạp cao vì kẻ tấn công phải giả mạo được các gói UDP từ máy chủ DNS. Điều kiện tiếp xúc chỉ tồn tại khi cấu hình sử dụng chỉ thị resolver. Advisory của nginx không cung cấp chuỗi khai thác có thể sử dụng trực tiếp. Bằng chứng hiện có không xác lập việc khai thác đang diễn ra, việc lạm dụng đã được quan sát hoặc một public exploit đã được xác thực; một tham chiếu bên thứ ba trong bản ghi không được xem là bằng chứng xác nhận vì nội dung không thể kiểm tra.

Tác động kỹ thuật

Tác động kỹ thuật được xác nhận là ghi đè 1 byte trong bộ nhớ của nginx resolver, có thể làm worker process crash và gây suy giảm tính sẵn sàng của dịch vụ. Advisory của nginx nêu khả năng thực thi mã tùy ý, vì vậy trong kịch bản khai thác thành công tác động có thể bao gồm ảnh hưởng đến tính bí mật và tính toàn vẹn, không chỉ gián đoạn dịch vụ. Cuộc tấn công không yêu cầu xác thực hoặc tương tác người dùng nhưng cần khả năng giả mạo gói UDP từ DNS server, đây là giới hạn quan trọng đối với khả năng khai thác. Bằng chứng hiện có không cho biết việc thực thi mã tùy ý đã xảy ra hoặc cung cấp một chuỗi khai thác đáng tin cậy.

Tác động đến tổ chức

Lỗi có thể làm worker process crash, gây gián đoạn xử lý request và yêu cầu khởi động lại hoặc chuyển tải dịch vụ tùy kiến trúc triển khai. Phạm vi cần ưu tiên là các hệ thống nginx có dùng resolver, đặc biệt nơi đường đi DNS cho phép nhận các gói UDP có thể bị giả mạo. Nếu khả năng thực thi mã tùy ý được hiện thực hóa, tác động có thể mở rộng từ gián đoạn dịch vụ sang ảnh hưởng tính bí mật và tính toàn vẹn. Tuy nhiên, bằng chứng được cung cấp không xác nhận một vụ xâm nhập, rò rỉ dữ liệu hoặc quyền kiểm soát hệ thống cụ thể.

Cách khắc phục

  1. Đối với nginx Web Server, cập nhật các bản triển khai từ 0.6.18 đến 1.20.0 lên bản sửa phù hợp với nhánh: 1.20.1 hoặc 1.21.0. Không tự động coi các nhánh chưa được nêu là đã được bao phủ.
  2. Đối với NGINX Plus, cập nhật các bản R23 bị ảnh hưởng lên R23 P1 và các bản R24 bị ảnh hưởng lên R24 P1. Với các nhánh Plus khác, cần xác minh ma trận sửa lỗi riêng của nhà cung cấp.
  3. Kiểm kê cấu hình có dùng resolver và ưu tiên vá các worker có khả năng nhận phản hồi DNS từ mạng không hoàn toàn tin cậy hoặc có nguy cơ bị giả mạo gói UDP.
  4. Bằng chứng được xem xét không xác lập một workaround hoàn chỉnh do nhà cung cấp công bố. Việc loại bỏ hoặc vô hiệu hóa resolver chỉ nên được xem là biện pháp giảm rủi ro tạm thời nếu phù hợp với chức năng của hệ thống, không thay thế cho việc cập nhật.

Cách phát hiện

  • Kiểm kê phiên bản nginx Web Server và bản phát hành NGINX Plus trên các máy chủ, image và appliance có nhúng nginx.
  • Kiểm tra cấu hình để xác định hệ thống nào sử dụng chỉ thị resolver; đây là điều kiện cấu hình được nginx nêu rõ.
  • Rà soát các sự kiện worker process crash, restart hoặc mất ổn định xảy ra trong lúc xử lý phản hồi DNS. Đây là dấu hiệu cần điều tra, không phải IOC đã được xác nhận.
  • Đánh giá đường đi mạng tới DNS server và khả năng một nguồn không tin cậy giả mạo gói UDP DNS trong từng môi trường.
  • Không có IOC cụ thể hoặc mẫu log xác nhận nào được cung cấp. Việc không thấy crash không chứng minh hệ thống an toàn.
Nguồn (33)
Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.