Lỗi link-following cho phép đọc và ghi tệp host tùy ý trong Canonical LXD

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

Lỗ hổng CVE-2026-63293 là lỗ hổng Improper Link Resolution Before File Access ('Link Following') ảnh hưởng tới LXD (phiên bản bị ảnh hưởng: 4.0.0 – < 4.0.12, 5.0.0 – < 5.0.8 và các phiên bản bị ảnh hưởng khác). Lỗ hổng này được xếp hạng ở mức Nghiêm trọng, với điểm CVSS 9.9. 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

Một lỗ hổng cho phép lần theo liên kết trong LXD cho phép kẻ tấn công thực hiện các thao tác đọc và ghi tệp tùy ý trên hệ thống máy chủ. Khi nhập hoặc giải nén một image archive, LXD không kiểm tra liệu tệp metadata.yaml có phải là một symbolic link hay không. Kẻ tấn công có thể khai thác lỗ hổng này bằng cách cung cấp một image archive được tạo специально với tệp metadata.yaml là symlink trỏ đến các đường dẫn tệp đích trên hệ thống máy chủ.

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

Canonical LXD trên Linux được đánh dấu mặc định là không bị ảnh hưởng ngoài các nhánh sau:

  • 4.0.0 đến trước 4.0.12.
  • 5.0.0 đến trước 5.0.8.
  • 5.21.0 đến trước 5.21.6.
  • 6.0 đến trước 6.10.

Advisory của Canonical xác định các bản đã được vá tương ứng là 4.0.12, 5.0.8, 5.21.6 và 6.10. Trạng thái của các bản downstream có backport, các gói được đổi tên hoặc các nhánh song song không được thể hiện riêng trong bằng chứng hiện có và cần được xác minh theo nhà phân phối.

Chi tiết kỹ thuật

LXD sử dụng tar với các tùy chọn --restrict --force-local khi giải nén image archive. Cờ --restrict ngăn việc lần theo symlink ra ngoài thư mục giải nén, nhưng vẫn cho phép tạo các mục symlink, vì vậy metadata.yaml ở cấp cao nhất có thể vẫn là symlink sau khi giải nén. Trong cmd/incusd/instance_metadata.go, LXD tạo đường dẫn bằng filepath.Join(inst.Path(), "metadata.yaml"), sau đó đọc bằng os.Open và ghi bằng os.WriteFile mà không có bước kiểm tra Lstat hoặc cơ chế giới hạn bằng os.OpenRoot. Body của yêu cầu PUT do kẻ tấn công kiểm soát có thể được ghi nguyên dạng vào đích của symlink với quyền root. Đây là lỗi CWE-59, Improper Link Resolution Before File Access, còn gọi là link following. Khai thác cần tài khoản đã xác thực có quyền sử dụng các thao tác image và metadata liên quan trên daemon có thể truy cập qua mạng, nhưng không cần tương tác của người dùng cuối. Bằng chứng hiện có chưa xác định chính sách phân quyền cụ thể trong mọi kiểu triển khai hoặc tình trạng backport của các gói downstream.

Khả năng khai thác

Lỗi có thể bị tiếp cận qua API daemon từ xa và yêu cầu một tài khoản đã xác thực với quyền hạn giới hạn, phù hợp với mô tả network reachability và low privileges trong bản ghi. Kẻ tấn công cần đưa vào image archive được tạo khusus và thực hiện các thao tác liên quan đến instance metadata; quyền chính xác cần được đối chiếu với cấu hình và chính sách phân quyền của từng hệ thống. Advisory của Canonical có công bố proof of concept, vì vậy chi tiết khai thác công khai đã tồn tại. Bản ghi không xác nhận rằng lỗ hổng đang bị khai thác trong thực tế hoặc đã được sử dụng trong một chiến dịch cụ thể. Advisory cũng nêu rằng khai thác không cần privileged container, workload đang chạy hoặc kernel exploit, và đây không phải là container escape.

Tác động kỹ thuật

Lỗi cho phép daemon đọc dữ liệu từ đích của symlink và ghi dữ liệu do người dùng kiểm soát vào tệp host với quyền root. Hậu quả kỹ thuật có thể gồm lộ dữ liệu ngoài phạm vi của instance, thay đổi tệp cấu hình, tạo tệp root-owned và làm hỏng tệp khiến dịch vụ host ngừng hoạt động. Vì thao tác được thực hiện qua daemon API, tác động có thể vượt khỏi ranh giới bảo vệ dự kiến của LXD và ảnh hưởng đến toàn bộ host. Advisory cho biết đây không phải container escape và không cần kernel exploit, nhưng người khai thác vẫn cần tài khoản đã xác thực với quyền phù hợp. Bằng chứng hiện có không xác định rằng mọi triển khai đều cho phép cùng một tập đường dẫn hoặc cùng một mức truy cập.

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

Lỗ hổng có thể làm mất tính bí mật vì daemon đọc được tệp trên host ngoài phạm vi dữ liệu mà người dùng đó dự kiến được truy cập, bao gồm các tệp cấu hình hoặc dữ liệu xác thực phù hợp với nội dung đích. Lỗ hổng cũng có thể làm mất tính toàn vẹn vì tệp host có thể bị tạo hoặc ghi đè với quyền root, từ đó có thể dẫn đến thay đổi cấu hình hoặc duy trì truy cập trái phép. Với các tệp không phù hợp định dạng YAML, việc tạo hoặc làm hỏng tệp vẫn có thể gây gián đoạn dịch vụ hoặc từ chối dịch vụ. Tác động vượt ra ngoài dữ liệu của instance và ảnh hưởng trực tiếp đến host, nhưng điều kiện khai thác vẫn bao gồm yêu cầu có tài khoản đã xác thực và quyền thực hiện các thao tác liên quan.

Cách khắc phục

  1. Nâng cấp từng hệ thống lên bản đã được Canonical xác định là đã vá cho đúng nhánh đang sử dụng: 4.0.12 cho nhánh 4.0.x, 5.0.8 cho nhánh 5.0.x, 5.21.6 cho nhánh 5.21.x, hoặc 6.10 cho nhánh 6.x.
  2. Không dùng 5.12.6 làm bản sửa cho nhánh 5.21.x. Giá trị này xuất hiện trong phần solution của bản ghi cung cấp, nhưng mâu thuẫn với phạm vi bị ảnh hưởng 5.21.0 đến trước 5.21.6 và với advisory của Canonical, trong đó nêu 5.21.6.
  3. Xác minh phiên bản binary hoặc package thực tế sau khi nâng cấp, đặc biệt khi LXD được phân phối qua hệ điều hành có thể backport bản sửa mà không thay đổi toàn bộ số phiên bản upstream. Nếu nhà phân phối dùng bản vá riêng, đối chiếu với advisory của nhà phân phối trước khi đánh dấu hệ thống đã an toàn.
  4. Bằng chứng được tư vấn không mô tả một workaround tạm thời do nhà cung cấp xác nhận. Trong thời gian chưa nâng cấp, có thể hạn chế image import và quyền gọi instance metadata cho các tài khoản thật sự cần thiết như một biện pháp giảm phơi nhiễm, nhưng đây chỉ là biện pháp phòng ngừa và không thay thế bản vá.
  5. Sau khi nâng cấp, rà soát các image đã nhập từ nguồn không tin cậy và các thay đổi đối với tệp host xảy ra sau các thao tác image hoặc metadata để đánh giá khả năng đã bị khai thác trước đó.

Cách phát hiện

  1. Kiểm kê phiên bản LXD thực tế trên từng máy chủ và đối chiếu với các nhánh bị ảnh hưởng trong affected_summary, bao gồm cả phiên bản do distro đóng gói hoặc backport.
  2. Xác định các tài khoản đã xác thực có thể import hoặc unpack image và gọi các thao tác instance metadata; xem xét cả quyền ở cấp project nếu triển khai có mô hình này.
  3. Kiểm tra image archive trước khi nhập để xác định metadata.yaml có phải là symlink hay không. Không nên coi việc archive được lấy từ nguồn đáng tin cậy là bằng chứng an toàn nếu chưa kiểm tra nội dung.
  4. Nếu có audit log, rà soát các lần import image và các yêu cầu GET /1.0/instances/{name}/metadata hoặc PUT /1.0/instances/{name}/metadata, đặc biệt khi chúng liên quan đến tài khoản hoặc image không quen thuộc. Đây là biện pháp giám sát phòng ngừa, không phải IOC đã được Canonical xác nhận.
  5. Kiểm tra các thay đổi bất thường đối với tệp trên host, đặc biệt là tệp được tạo hoặc ghi bởi daemon với quyền root sau các thao tác import image hoặc metadata. Không thấy log hay thay đổi đáng ngờ không chứng minh hệ thống an toàn.
Nguồn (10)
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á CyStack VulnScan