Apache Airflow: scheduler thực thi mã tùy ý qua deserialization của awaiting_input

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-2026-67260 là gì?

Lỗ hổng CVE-2026-67260 là lỗ hổng Deserialization of Untrusted Data ảnh hưởng tới Apache Airflow (phiên bản bị ảnh hưởng: 3.3.0 – < 3.3.1). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 7.3. 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

Apache Airflow 3.3.0 đã chuyển các task có human-in-the-loop từ triggerer sang trạng thái task mới awaiting_input, được scheduler quét. Việc quét đó deserialize next_kwargs của task instance mà không có allow-list, vì vậy một Dag author, người kiểm soát giá trị đó thông qua task execution API, có thể gây ra việc import module tùy ý và khởi tạo object bên trong scheduler process, hoặc kết thúc scheduler job. Không cần cấu hình khác mặc định: việc quét chạy không điều kiện mỗi 15 giây, và thiết lập mặc định allowed_deserialization_classes không bao phủ đường xử lý này. Các phiên bản trước 3.3.0 không bị ảnh hưởng, vì các task có human-in-the-loop khi đó được defer sang triggerer. Đây là một đường xử lý khác với CVE-2026-58076, vốn bao phủ cùng kiểu deserialize exception-node không được bảo vệ nhưng được tiếp cận ở nơi khác, vì vậy các deployment đã áp dụng bản sửa đó cũng phải nâng cấp cho vấn đề này. Người dùng được khuyến nghị nâng cấp lên apache-airflow 3.3.1 hoặc mới hơn.

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

  • apache-airflow-core trong Apache Airflow: bị ảnh hưởng ở phiên bản 3.3.0 và các phiên bản nhỏ hơn 3.3.1 theo ranh giới semver được cung cấp.
  • Các phiên bản trước 3.3.0 được xác định là không bị ảnh hưởng bởi đường xử lý này vì human-in-the-loop task được defer sang triggerer.
  • Bản sửa được nguồn hiện tại chỉ rõ là 3.3.1. Tuy nhiên, một thông báo Apache follow-up cho biết remediation trong 3.3.1 vẫn deserialize payload trước khi kiểm tra kiểu dữ liệu trong một đường xử lý liên quan; vì vậy, 3.3.1 không nên được xem là đích nâng cấp cuối cùng cho các deployment cần loại bỏ toàn bộ rủi ro deserialization này. Thông báo follow-up chỉ định 3.4.0 hoặc mới hơn cho phần còn lại đó.
  • Trạng thái của các nhánh song song không được nêu rõ ngoài các ranh giới trên.

Chi tiết kỹ thuật

Apache Airflow 3.3.0 chuyển các human-in-the-loop task sang trạng thái awaiting_input, được scheduler quét để xử lý. Trong quá trình quét, scheduler deserialize next_kwargs của task instance mà không áp dụng allow-list; giá trị này do Dag author kiểm soát thông qua task execution API. Vì vậy, dữ liệu được kiểm soát có thể dẫn đến việc import module tùy ý và khởi tạo object trong scheduler process, hoặc làm scheduler job kết thúc. Đường xử lý này chạy không điều kiện theo chu kỳ 15 giây, và cấu hình mặc định allowed_deserialization_classes không bảo vệ nó. Đây là lỗi CWE-502: Deserialization of Untrusted Data, trong đó dữ liệu không tin cậy được xử lý trước khi có kiểm tra đủ chặt chẽ. Chi tiết cụ thể về module, class hoặc object chain được sử dụng trong một cuộc tấn công thực tế chưa được nguồn cung cấp xác định.

Khả năng khai thác

Đặc tính tấn công trong bản ghi mô tả khả năng tiếp cận qua mạng, độ phức tạp thấp, không yêu cầu xác thực và không yêu cầu user interaction. Điều kiện thực tế vẫn là tác nhân phải kiểm soát next_kwargs với tư cách Dag author thông qua task execution API. Bản ghi đánh dấu không có public exploit được xác định và phần enrichment được trả về ghi nhận exploitation là none tại thời điểm đánh giá của nguồn đó. Tuy nhiên, các trạng thái này không chứng minh rằng chưa từng có hoặc sẽ không có khai thác thực tế.

Tác động kỹ thuật

Nếu khai thác thành công, scheduler process có thể import module và khởi tạo object theo dữ liệu do Dag author kiểm soát. Kết quả có thể bao gồm thực thi hành vi trong quyền của scheduler process hoặc chấm dứt scheduler job, gây ảnh hưởng đến tính sẵn sàng của việc lập lịch. Mức độ ảnh hưởng đến tính bí mật và toàn vẹn phụ thuộc vào quyền của tài khoản chạy scheduler, các secret mà process có thể truy cập và khả năng kết nối tới hệ thống khác. Bản ghi không xác định một đường dẫn cụ thể để vượt quyền sang tài khoản khác, không chứng minh quyền truy cập dữ liệu cụ thể và không nêu một nạn nhân hoặc breach nào.

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

Lỗi có thể làm scheduler thực hiện hành vi do dữ liệu của Dag author quyết định trong phạm vi quyền của scheduler process. Việc scheduler job bị kết thúc có thể làm gián đoạn việc lập lịch và trì hoãn các workflow phụ thuộc vào scheduler. Nếu scheduler có quyền truy cập vào tài nguyên, secret hoặc hệ thống nội bộ, việc khởi tạo object tùy ý có thể tạo ra rủi ro đối với các tài nguyên đó, nhưng quyền truy cập cụ thể của từng deployment chưa được xác định. Chưa có bằng chứng trong bản ghi về một vụ rò rỉ dữ liệu, thay đổi dữ liệu hoặc breach cụ thể.

Cách khắc phục

  1. Nâng cấp Apache Airflow lên 3.4.0 hoặc mới hơn nếu mục tiêu là xử lý cả lỗi này và đường deserialization còn lại được Apache mô tả trong follow-up. Đây là đích vận hành ưu tiên dựa trên hướng dẫn follow-up mới hơn.
  2. Nếu deployment bắt buộc phải duy trì nhánh 3.3, nâng cấp ít nhất lên 3.3.1 để áp dụng bản sửa được chỉ định cho phạm vi của bản ghi này, sau đó đánh giá riêng hướng dẫn follow-up trước khi đóng xử lý.
  3. Không dựa vào cấu hình mặc định allowed_deserialization_classes như một biện pháp khắc phục cho đường xử lý này. Bằng chứng hiện có không cung cấp một configuration workaround đã được vendor xác nhận.
  4. Trong thời gian chờ nâng cấp, hạn chế quyền tạo hoặc sửa Dag và quyền gọi task execution API ở mức tối thiểu cần thiết. Đây chỉ là biện pháp giảm rủi ro, không thay thế cho việc nâng cấp.
  5. Sau khi nâng cấp, xác minh tất cả scheduler deployment, kiểm thử human-in-the-loop task và bảo đảm các deployment đã từng áp dụng bản sửa cho đường exception-node deserialization vẫn được nâng cấp cho đường xử lý này.

Cách phát hiện

  1. Kiểm kê các deployment đang chạy Apache Airflow và xác định những nơi cài apache-airflow-core phiên bản 3.3.0.
  2. Xác định các scheduler process xử lý human-in-the-loop task và trạng thái awaiting_input, đồng thời kiểm tra quyền tạo hoặc sửa Dag và quyền gọi task execution API.
  3. Rà soát scheduler log, service restart và tình trạng của các timeout sweep để tìm lỗi xử lý hoặc việc dừng bất thường khi task có next_kwargs được tiếp tục.
  4. Kiểm tra các task awaiting_input bị treo, bị fail hàng loạt hoặc không được resume sau một lần scheduler sweep; đây là dấu hiệu điều tra, không phải IOC được vendor xác nhận.
  5. Theo dõi các import module hoặc object construction bất thường trong scheduler process như một biện pháp phòng ngừa, nhưng không coi việc thiếu log này là bằng chứng hệ thống an toàn.
  6. Xác nhận phiên bản sau nâng cấp và kiểm thử một human-in-the-loop task trong môi trường kiểm soát. Bằng chứng được cung cấp không có danh sách IOC cụ thể.
Nguồn (18)
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.