CVE-2026-29050 in melange
Tóm tắt
Bởi VulDB • 12/05/2026
melange cho phép người dùng xây dựng các gói apk bằng cách sử dụng các pipeline khai báo. Bắt đầu từ phiên bản 0.32.0 và trước phiên bản 0.43.4, một kẻ tấn công có thể ảnh hưởng đến tệp cấu hình melange — ví dụ thông qua CI dựa trên pull-request hoặc các kịch bản build-as-a-service — có thể đặt `pipeline[].uses` thành một giá trị chứa các chuỗi `../` hoặc một đường dẫn tuyệt đối. Hàm `(*Compiled).compilePipeline` trong `pkg/build/compile.go` đã chuyển trực tiếp giá trị `uses` vào `filepath.Join(pipelineDir, uses + ".yaml")` mà không xác thực giá trị này, do đó đường dẫn được giải quyết có thể thoát khỏi mỗi `--pipeline-dir` và đọc một tệp YAML có thể phân tích cú pháp tùy ý mà tiến trình melange có thể truy cập được. Vì tệp được tải sau đó được diễn giải như một pipeline melange và khối `runs:` của nó được thực thi thông qua `/bin/sh -c` trong sandbox xây dựng, điều này cũng cho phép các lệnh shell có nguồn gốc từ một tệp ngoài cây thư mục (out-of-tree) chạy trong quá trình xây dựng, vượt qua ranh giới kiểm duyệt thường bao gồm định nghĩa pipeline trong cây thư mục (in-tree). Vấn đề này đã được sửa trong melange v0.43.4 thông qua commit 5829ca4. Bản sửa lỗi từ chối các giá trị `uses` là đường dẫn tuyệt đối hoặc chứa `..`, và xác minh (thông qua `filepath.Rel` sau `filepath.Clean`) rằng đích đến đã giải quyết vẫn nằm trong thư mục pipeline. Như một giải pháp tạm thời, chỉ chạy `melange build` đối với các tệp cấu hình từ các nguồn đáng tin cậy. Trong các hệ thống CI xây dựng các cấu hình melange do người dùng cung cấp, hãy khóa các bản xây dựng sau khi kiểm tra thủ công các giá trị `pipeline[].uses` và từ chối bất kỳ giá trị nào chứa `..` hoặc bắt đầu bằng `/`.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.