Underflow bộ đệm trên heap và hỏng bộ nhớ trong vixie cron dùng bởi OpenBSD

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

cron/entry.c trong vixie cron trước 9cc8ab1, được sử dụng trong OpenBSD 7.4 và 7.5, cho phép xảy ra underflow bộ đệm trên heap và hỏng bộ nhớ. LƯU Ý: vấn đề này được đưa vào trong một đợt refactoring vào tháng 5 năm 2023.

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

  • vixie cron: các phiên bản trước 9cc8ab1 được xác định là affected. Commit 9cc8ab1 là điểm sửa lỗi upstream; bằng chứng không ánh xạ commit này tới một số phiên bản phát hành cụ thể.
  • OpenBSD 7.4: được xác định là affected.
  • OpenBSD 7.5: được xác định là affected.
  • Advisory giới hạn điều kiện heap underflow được mô tả cho build 64-bit và cho biết build 32-bit không gặp cùng đường dẫn underflow. Trạng thái của các nhánh OpenBSD hoặc bản đóng gói vixie cron khác không được bằng chứng hiện có xác nhận.

Chi tiết kỹ thuật

Lỗi nằm trong cron/entry.c, tại logic xử lý range và step của crontab được đưa vào sau đợt refactoring tháng 5 năm 2023. Hàm set_range() dùng giá trị step do người dùng kiểm soát trong vòng lặp, sau đó truyền chỉ số vào bit_set(). Giá trị số rất lớn có thể được atoi() diễn giải thành số âm trên build 64-bit, khiến chỉ số đi lùi trước vùng bits trên heap và tạo ra ghi ngoài giới hạn, dẫn đến memory corruption. Advisory mô tả rằng điều kiện này tác động đến cả cron daemon và lệnh crontab; build 32-bit được nêu là không đi vào cùng đường dẫn underflow. Đánh giá trong record mô tả khả năng truy cập qua mạng, không yêu cầu đặc quyền hay tương tác người dùng, nhưng advisory không xác định giao thức hoặc đường dẫn dịch vụ mạng cụ thể. Vì vậy, đường vào từ xa thực tế và mức độ tin cậy của việc biến memory corruption thành thực thi mã vẫn cần được xác minh theo từng triển khai.

Khả năng khai thác

  • Advisory công khai mô tả một PoC kích hoạt lỗi và phân tích khả năng khai thác trên OpenBSD; record cũng đánh dấu đã có public exploit material.
  • Đánh giá được cung cấp cho record mô tả attack vector là network, attack complexity thấp, không yêu cầu authentication hoặc user interaction. Tuy nhiên, các ví dụ kỹ thuật tập trung vào việc xử lý dữ liệu của crontab và cron daemon, không nêu một network protocol cụ thể.
  • Advisory cho biết việc đạt được root là có thể, nhưng mô tả đường khai thác là potentially exploitable và phụ thuộc vào heap layout, ASLR cùng các điều kiện của tiến trình. Bằng chứng hiện có không xác nhận một exploit từ xa end-to-end đáng tin cậy hoặc việc khai thác trong thực tế.

Tác động kỹ thuật

Memory corruption xảy ra khi một step bất thường làm chỉ số của bit_set() đi ra trước vùng bit string được cấp phát trên heap. Hậu quả trực tiếp có thể là process crash hoặc ghi đè dữ liệu heap lân cận; advisory cũng mô tả khả năng tạo primitive ghi bộ nhớ. Trong điều kiện heap phù hợp, việc này có thể làm thay đổi cấu trúc dữ liệu mà cron dùng để chạy lệnh và có khả năng dẫn đến privilege escalation lên root. Tác động được giới hạn ở host và các tiến trình bị ảnh hưởng trong bằng chứng hiện có; không có căn cứ cho thấy lỗi tự nó gây lan sang host khác. Khả năng đạt được kết quả cuối cùng phụ thuộc vào kiến trúc, heap layout, ASLR và độ tin cậy của exploit.

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

  • cron có thể bị crash hoặc xử lý sai dữ liệu lịch chạy, làm gián đoạn các tác vụ định kỳ; advisory lưu ý rằng OpenBSD không tự khởi động lại daemon sau khi bị crash.
  • Nếu kiểm soát memory corruption thành công, kẻ tấn công có thể làm thay đổi trạng thái của tiến trình và có khả năng đạt root, từ đó ảnh hưởng đến scheduled jobs, cấu hình và dữ liệu cục bộ.
  • Lỗi ảnh hưởng đến cả đường xử lý của crontab và cron daemon, nên chỉ cập nhật một thành phần mà không kiểm tra thành phần còn lại có thể vẫn để lại rủi ro.
  • Bằng chứng không chứng minh rằng mọi lần kích hoạt đều dẫn đến leo thang đặc quyền; độ tin cậy phụ thuộc vào kiến trúc, heap layout và điều kiện của hệ thống.

Cách khắc phục

  1. Nâng cấp hoặc rebuild vixie cron từ mã nguồn đã chứa commit 9cc8ab1. Bản sửa này kiểm tra kết quả âm từ atoi() trong get_number() và xử lý step <= 1 hoặc step > stop trong set_range() trước khi thực hiện thao tác trên bit string.
  2. Đối với các hệ thống OpenBSD thuộc các nhánh bị ảnh hưởng, cài đặt bản cập nhật của OpenBSD có chứa bản sửa tương ứng hoặc rebuild thành phần cron từ mã nguồn đã sửa. Evidence hiện có không xác định số phiên bản OpenBSD cố định cụ thể, vì vậy không nên tự suy ra rằng mọi bản phát hành sau đó đều an toàn.
  3. Nếu chưa thể cập nhật, hạn chế quyền ghi hoặc đưa dữ liệu không tin cậy vào crontab và cron database, đồng thời đánh giá tạm thời việc giảm exposure của các đường xử lý liên quan. Đây chỉ là biện pháp giảm rủi ro, không thay thế bản sửa.
  4. Sau khi triển khai, xác minh bản binary hoặc source tree thực tế có các kiểm tra nêu trên và kiểm tra lại mọi package overlay, backport hoặc build nội bộ. Không có mitigation độc lập nào được authoritative source xác nhận là tương đương với bản sửa.

Cách phát hiện

  1. Kiểm kê các hệ thống OpenBSD và các bản build của vixie cron, xác định revision hoặc gói đã chứa commit sửa lỗi upstream.
  2. Xác định kiến trúc của binary cron và crontab; advisory giới hạn điều kiện underflow được mô tả cho build 64-bit.
  3. Kiểm tra mã nguồn hoặc binary tương ứng để xác nhận logic đọc số trong get_number() từ chối kết quả âm và set_range() xử lý an toàn các step nhỏ hơn một hoặc lớn hơn stop.
  4. Rà soát crontab và các nguồn dữ liệu lịch chạy để tìm range hoặc step bất thường, đặc biệt các giá trị cực lớn. Đây là heuristic phòng ngừa, không phải IOC đã được xác nhận.
  5. Kiểm tra telemetry hiện có về crash hoặc restart failure của cron và crontab, cùng các thay đổi bất thường đối với scheduled jobs. Không nên coi việc không thấy log là bằng chứng hệ thống an toàn.
Nguồn (13)
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