Ngoại lệ không được xử lý trong TCP server của Google gRPC cho phép gây từ chối dịch vụ

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

Lỗ hổng CVE-2023-4785 là gì?

Lỗ hổng CVE-2023-4785 là lỗ hổng Uncaught Exception ảnh hưởng tới gRPC. Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 7.5. Các nguồn hiện có chưa ghi nhận lỗ hổng này bị khai thác.

Giới thiệu chung

Dữ liệu gốc

Việc thiếu xử lý lỗi trong TCP server của gRPC của Google từ phiên bản 1.23 trên các nền tảng tương thích với POSIX (ví dụ: Linux) cho phép kẻ tấn công gây ra tình trạng từ chối dịch vụ bằng cách khởi tạo một số lượng kết nối đáng kể với server. Lưu ý rằng gRPC C++, Python và Ruby bị ảnh hưởng, nhưng gRPC Java và Go KHÔNG bị ảnh hưởng.

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

  • Google gRPC trên nền tảng tương thích POSIX: các bản 1.53.0 đến 1.53.1 bị ảnh hưởng; bản sửa tương ứng là 1.53.2.
  • Google gRPC trên nền tảng tương thích POSIX: các bản 1.54.0 đến 1.54.2 bị ảnh hưởng; bản sửa tương ứng là 1.54.3.
  • Google gRPC trên nền tảng tương thích POSIX: các bản 1.55.0 đến 1.55.2 bị ảnh hưởng; bản sửa tương ứng là 1.55.3.
  • Google gRPC trên nền tảng tương thích POSIX: các bản 1.56.0 đến 1.56.1 bị ảnh hưởng; bản sửa tương ứng là 1.56.2.
  • GitHub Advisory Database ánh xạ các nhánh trên cho package RubyGems grpc. Với package Python grpcio, advisory này liệt kê các nhánh 1.53.x, 1.54.x và 1.55.x bị ảnh hưởng cùng các bản sửa tương ứng; không nên tự suy ra trạng thái của nhánh Python khác.
  • Dữ liệu CVE upstream được trả về trong quá trình nghiên cứu liệt kê các phiên bản trước 1.23 và phiên bản 1.57 là không bị ảnh hưởng. Trạng thái của các nhánh song song hoặc không được liệt kê vẫn chưa được xác lập bởi bằng chứng này.

Chi tiết kỹ thuật

Lỗi nằm trong phần TCP server của gRPC Core trên các nền tảng tương thích với POSIX, chẳng hạn Linux. Khi kẻ tấn công chủ động tạo một số lượng lớn kết nối, server có thể đi vào tình huống cạn kiệt file descriptor hoặc xử lý lỗi không đầy đủ, dẫn đến suy giảm hoặc mất khả năng phục vụ. Điểm yếu được phân loại là CWE-248, liên quan đến exception hoặc lỗi phát sinh nhưng không được xử lý đúng cách. Các thay đổi sửa lỗi của dự án tập trung vào việc cải thiện xử lý tình trạng cạn kiệt file descriptor trong server. Chi tiết chính xác về exception, ngưỡng kết nối và đường dẫn thực thi cụ thể không được xác lập trong bằng chứng hiện có.

Khả năng khai thác

Điểm tấn công có thể truy cập qua mạng đối với gRPC TCP server được công khai. Các thuộc tính tấn công trong bản ghi cho thấy không cần xác thực, không cần tương tác người dùng và điều kiện khai thác tương đối đơn giản. Kẻ tấn công cần tạo một số lượng đáng kể kết nối đến server; bản ghi không xác định ngưỡng chính xác. Bản ghi đánh dấu không có public exploit, nhưng không cung cấp kết luận đầy đủ về tình trạng khai thác thực tế hiện nay và không nêu tên chiến dịch, nạn nhân hoặc exploit cụ thể.

Tác động kỹ thuật

Kẻ tấn công từ xa có thể làm gián đoạn gRPC TCP server bằng cách tạo nhiều kết nối, có khả năng dẫn đến cạn kiệt tài nguyên hoặc từ chối phục vụ. Tác động được giới hạn ở thành phần hoặc dịch vụ bị ảnh hưởng trong bản ghi, không cho thấy thay đổi phạm vi quyền hạn. Bản ghi không xác lập khả năng thực thi mã, đọc dữ liệu, sửa dữ liệu hoặc leo thang đặc quyền. Về tổ chức, các dịch vụ API hoặc backend phụ thuộc vào server này có thể mất tính sẵn sàng, nhưng mức độ lan rộng phụ thuộc vào kiến trúc triển khai và khả năng cô lập lỗi.

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

Điểm yếu có thể làm giảm hoặc làm mất khả năng phục vụ của các dịch vụ gRPC TCP khi server phải xử lý một lượng lớn kết nối.

  • Các API, worker hoặc dịch vụ phụ thuộc vào gRPC có thể bị gián đoạn, tăng thời gian phản hồi hoặc cần khởi động lại.
  • Hậu quả chính là suy giảm tính sẵn sàng và khả năng đáp ứng của dịch vụ.
  • Bằng chứng hiện có không cho thấy việc đọc dữ liệu, sửa dữ liệu hoặc chiếm quyền truy cập là kết quả của lỗi này.
  • Mức độ ảnh hưởng thực tế phụ thuộc vào việc endpoint có được công khai, cơ chế giới hạn kết nối và khả năng phục hồi của hệ thống.

Cách khắc phục

  1. Nâng cấp từng nhánh bị ảnh hưởng lên bản sửa tương ứng: 1.53.2, 1.54.3, 1.55.3 hoặc 1.56.2. Không thay thế hướng dẫn theo nhánh bằng giả định rằng mọi bản phát hành về sau đều đã được xác minh.
  2. Với Python grpcio, sử dụng các bản sửa tương ứng 1.53.2, 1.54.3 hoặc 1.55.3 khi dependency nằm trong các nhánh được advisory liệt kê.
  3. Với RubyGems grpc, kiểm tra package thực tế và nâng cấp khỏi các phạm vi bị ảnh hưởng lên bản sửa tương ứng.
  4. Kiểm kê dependency transitive để phát hiện trường hợp ứng dụng không dùng gRPC trực tiếp nhưng vẫn đóng gói thư viện gRPC dễ bị ảnh hưởng.
  5. Nếu chưa thể nâng cấp, áp dụng biện pháp giảm thiểu được nhà cung cấp xác nhận. Bản ghi hiện có không cung cấp một workaround cụ thể đã được xác nhận; giới hạn kết nối hoặc giảm phơi bày mạng chỉ nên được xem là biện pháp phòng thủ tạm thời, không phải bản sửa.

Cách phát hiện

  1. Kiểm kê các dịch vụ sử dụng gRPC C++, Python hoặc Ruby, bao gồm cả dependency trực tiếp và transitive dependency.
  2. Kiểm tra phiên bản package hoặc thư viện đang được triển khai và đối chiếu với từng nhánh bị ảnh hưởng trong danh sách bên dưới.
  3. Xác định các gRPC TCP server chạy trên nền tảng tương thích POSIX và các listener có thể nhận kết nối từ mạng không tin cậy.
  4. Rà soát log, metric và cảnh báo vận hành để tìm các đợt tăng đột biến số kết nối, dấu hiệu cạn kiệt file descriptor, lỗi tài nguyên hoặc việc server phải khởi động lại. Đây là tín hiệu giám sát phòng ngừa, không phải IOC đã được xác nhận.
  5. Không coi việc không thấy các tín hiệu trên là bằng chứng hệ thống an toàn, vì lỗi có thể chưa bị kích hoạt hoặc telemetry có thể không ghi nhận đầy đủ.
Nguồn (22)
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.

Khám phá các giải pháp khác liên quan