Lỗi callback của BerriAI/litellm cho phép thực thi mã từ xa

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-2024-6825 là gì?

Lỗ hổng CVE-2024-6825 là lỗ hổng Improper Control of Generation of Code ảnh hưởng tới berriai/litellm (phiên bản bị ảnh hưởng: < v1.65.4.dev6). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 8.8. Lỗ hổng này đã có mã hoặc bằng chứng khai thác công khai, nhưng điều đó chưa xác nhận việc khai thác trong thực tế.

Giới thiệu chung

Dữ liệu gốc

BerriAI/litellm phiên bản 1.40.12 chứa một lỗ hổng cho phép thực thi mã từ xa. Vấn đề nằm trong việc xử lý cấu hình 'post_call_rules', nơi có thể thêm một hàm callback. Giá trị được cung cấp được tách tại dấu '.' cuối cùng, phần cuối được xem là tên hàm và phần còn lại được nối thêm phần mở rộng '.py' rồi import. Điều này cho phép kẻ tấn công đặt một system method, chẳng hạn như "os.system", làm callback, từ đó cho phép thực thi các lệnh tùy ý khi một phản hồi chat được xử lý.

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

Theo dữ liệu affected của CNA được cung cấp, berriai/litellm bị ảnh hưởng ở các phiên bản nhỏ hơn v1.65.4.dev6; bản mô tả cũng xác định cụ thể phiên bản 1.40.12.

Một mục GitHub Advisory riêng liệt kê phạm vi >= 1.40.3.dev2, <= 1.40.12 và không nêu patched version. Hai nguồn này không hoàn toàn thống nhất: ranh giới CNA rộng hơn, còn mục advisory chỉ xác nhận một nhánh hẹp hơn. Do đó, trạng thái của các nhánh không nằm trong một tuyên bố phạm vi rõ ràng vẫn chưa được xác định và không nên được coi là an toàn chỉ dựa trên việc phiên bản lớn hơn 1.40.12.

Chi tiết kỹ thuật

BerriAI/litellm xử lý giá trị callback trong cấu hình post_call_rules bằng cách tách chuỗi tại dấu . cuối cùng. Phần cuối được dùng làm tên hàm, còn phần đứng trước được nối thêm phần mở rộng .py rồi import để tạo callback. Khi kẻ tấn công kiểm soát hoặc có thể thay đổi giá trị này, họ có thể chỉ định một system method như os.system, khiến lệnh tùy ý được thực thi khi LiteLLM xử lý phản hồi chat.

Lỗi thuộc nhóm CWE-94, vì dữ liệu chịu ảnh hưởng từ bên ngoài được dùng để xác định mã hoặc module sẽ được nạp. Commit sửa lỗi được tham chiếu bổ sung kiểm tra trước khi nạp module callback và từ chối các module nguy hiểm, nhưng bằng chứng hiện có không xác định rõ bản phát hành nào đã chứa thay đổi đó.

Điều kiện tiếp cận mạng, cơ chế hoặc API cụ thể cho phép thay đổi post_call_rules chưa được xác định trong dữ liệu cung cấp. Vì vậy, phạm vi phơi nhiễm thực tế phụ thuộc vào cách triển khai LiteLLM, quyền cấu hình và việc luồng callback này có được bật hay không.

Khả năng khai thác

Lỗ hổng có thể bị khai thác qua mạng, với độ phức tạp thấp, cần một mức đặc quyền nhất định và không cần người dùng tương tác. Điều kiện quan trọng là kẻ tấn công phải có khả năng thiết lập hoặc tác động đến giá trị callback trong post_call_rules; đường dẫn hoặc endpoint cụ thể chưa được xác nhận.

Hồ sơ cung cấp cho biết đã có public exploit hoặc proof of concept. Tuy nhiên, bằng chứng hiện có không xác lập việc lỗ hổng đã bị khai thác trong thực tế, cũng không nêu tên chiến dịch, nạn nhân hoặc hoạt động lạm dụng cụ thể.

Tác động kỹ thuật

Kết quả kỹ thuật của lỗi là thực thi lệnh tùy ý trong ngữ cảnh bảo mật của tiến trình LiteLLM. Các thuộc tính tấn công được cung cấp cho thấy việc khai thác có thể thực hiện qua mạng, cần một mức đặc quyền thấp, không cần tương tác người dùng và không làm thay đổi phạm vi bảo mật của thành phần bị ảnh hưởng.

Do đó, tác động trực tiếp phụ thuộc vào quyền của tài khoản chạy LiteLLM, các file và secret mà tài khoản đó có thể đọc, cùng khả năng kết nối đến các hệ thống khác. Một triển khai có quyền hệ điều hành rộng hoặc thiếu cô lập có thể chịu hậu quả lớn hơn một deployment bị giới hạn chặt chẽ. Bản ghi không cung cấp bằng chứng cho thấy một vụ xâm nhập, đánh cắp dữ liệu hoặc gián đoạn dịch vụ cụ thể đã xảy ra.

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

Thực thi lệnh tùy ý có thể làm ảnh hưởng đến tính bảo mật, toàn vẹn và khả dụng của máy chủ hoặc container chạy LiteLLM, tùy theo quyền của tiến trình.

  • Dữ liệu mà tiến trình LiteLLM được phép đọc có thể bị truy cập hoặc sửa đổi.
  • Các secret, token hoặc thông tin kết nối mà dịch vụ có quyền sử dụng có thể bị đe dọa nếu lệnh được thực thi trong cùng ngữ cảnh.
  • Kẻ tấn công có thể làm gián đoạn dịch vụ, thay đổi hành vi gateway hoặc sử dụng tài nguyên máy chủ cho mục đích khác.
  • Mức độ ảnh hưởng thực tế phụ thuộc vào quyền hệ điều hành, network access, cơ chế cô lập và khả năng chỉnh sửa post_call_rules trong từng triển khai; bản ghi không xác nhận một vụ rò rỉ hoặc gián đoạn cụ thể.

Cách khắc phục

  1. Ưu tiên loại bỏ các bản cài đặt nằm trong phạm vi CNA, đặc biệt là 1.40.12. Dữ liệu CNA dùng điều kiện lessThan: v1.65.4.dev6, nhưng điều kiện này không tự chứng minh rằng mọi nhánh phát hành sau đó hoặc nhánh song song đều an toàn.
  2. Đối chiếu với commit sửa lỗi được tham chiếu. Thay đổi này bổ sung kiểm tra trước khi nạp module callback và chặn các module nguy hiểm, nhưng bằng chứng hiện có không ánh xạ commit đó tới một bản phát hành ổn định cụ thể.
  3. Vì hồ sơ đồng thời cho biết có patch nhưng không cung cấp một fixed release đã được xác nhận cho mọi nhánh, không nên khẳng định một phiên bản mở đầu duy nhất là an toàn. Cần xác nhận với nguồn phát hành của BerriAI hoặc CNA trước khi chuẩn hóa quy tắc nâng cấp.
  4. Trong thời gian chờ xác nhận, tắt callback post_call_rules nếu không cần thiết hoặc giới hạn nghiêm ngặt tài khoản và dịch vụ được phép tạo, sửa hoặc triển khai cấu hình này. Không cho phép dữ liệu không đáng tin cậy quyết định module hoặc hàm callback.
  5. Nếu phát hiện dấu hiệu khai thác, cô lập tiến trình hoặc workload bị ảnh hưởng, bảo toàn log và điều tra các secret mà tiến trình có thể truy cập. Việc xoay vòng secret chỉ nên thực hiện sau khi đánh giá phạm vi phơi nhiễm thực tế.

Cách phát hiện

  1. Kiểm kê các môi trường cài đặt gói Python litellm, đối chiếu phiên bản thực tế với các ranh giới bị ảnh hưởng trong phần affected summary. Kiểm tra cả dependency trực tiếp và dependency kéo theo.
  2. Rà soát cấu hình hiệu lực của post_call_rules, các file cấu hình và nguồn dữ liệu có thể ghi hoặc thay đổi callback. Tìm các giá trị có dạng module và tên hàm, đặc biệt các giá trị tương tự os.system.
  3. Kiểm tra quyền và nhật ký của tài khoản hoặc dịch vụ có thể thay đổi cấu hình LiteLLM, sau đó đối chiếu với thời điểm xử lý các phản hồi chat bất thường.
  4. Như một biện pháp giám sát phòng ngừa, xem xét các tiến trình con, thay đổi file hoặc kết nối mạng bất thường phát sinh từ tiến trình LiteLLM sau khi xử lý phản hồi chat. Đây là dấu hiệu cần điều tra, không phải IOC được xác nhận cho lỗ hổng này.
  5. Việc không tìm thấy giá trị đáng ngờ hoặc không có sự kiện trong nhật ký không chứng minh rằng hệ thống an toàn; cần kết hợp kiểm tra phiên bản, cấu hình và quyền truy cập.
Nguồn (24)
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.