Go standard library os trên Windows có thể vượt root qua junction và tạo thư mục bên ngoài

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

Lỗ hổng CVE-2026-56857 là lỗ hổng Insecure Operation on Windows Junction / Mount Point ảnh hưởng tới os (phiên bản bị ảnh hưởng: < 1.26.9 và 1.27.0-0 – < 1.27.2) và internal/syscall/windows (phiên bản bị ảnh hưởng: < 1.26.9 và 1.27.0-0 – < 1.27.2). Lỗ hổng này được xếp hạng ở mức Nghiêm trọng, với điểm CVSS 9.8. 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

Trên Windows, khi đích của Root.Mkdir hoặc Root.MkdirAll là một junction trỏ đến một vị trí trống, thao tác có thể tạo một thư mục tại đích của junction ngay cả khi đích đó nằm bên ngoài root. Điều này chỉ áp dụng cho các thao tác trong đó thành phần cuối cùng của đường dẫn là một junction (path/to/junction, nhưng không phải path/junction/target).

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

  • Go standard library os: affected với phạm vi bắt đầu từ 0 và có cận trên là less than 1.26.9; ngoài ra affected từ 1.27.0-0 với cận trên là less than 1.27.2.
  • Go standard library internal/syscall/windows: affected với cùng các phạm vi, gồm 0 với cận trên less than 1.26.9, và 1.27.0-0 với cận trên less than 1.27.2.
  • Bản ghi chuẩn hóa đặt default_status là unaffected ngoài các phạm vi affected được liệt kê. Trạng thái của các nhánh hoặc dòng phát hành không được liệt kê không được suy diễn từ dữ liệu này.

Chi tiết kỹ thuật

Trong package os của Go standard library, cách xử lý trên Windows của Root.Mkdir và Root.MkdirAll có thể resolve thành phần cuối của đường dẫn nếu thành phần đó là một junction, thay vì giữ thao tác bên trong root. Khi junction trỏ đến một vị trí trống nằm ngoài root, API có thể tạo thư mục tại đích của junction. Lỗi thuộc nhóm CWE-1386, liên quan đến thao tác không an toàn trên Windows junction hoặc mount point. Báo cáo lỗ hổng của Go liệt kê package os và internal/syscall/windows; symbol mức thấp được nêu là internal/syscall/windows.Mkdirat, còn package os bao gồm các phương thức Root liên quan đến thao tác tệp. Đầu vào quan trọng là đường dẫn do ứng dụng truyền cho API, nhưng việc kẻ tấn công có kiểm soát được đường dẫn hay không phụ thuộc vào ứng dụng và không được xác định trong hồ sơ. Điều kiện được mô tả chỉ xảy ra khi junction là thành phần cuối cùng, chẳng hạn path/to/junction, không phải path/junction/target.

Khả năng khai thác

Hồ sơ chuẩn hóa mô tả đặc tính tấn công là có thể tiếp cận qua mạng, độ phức tạp thấp, không yêu cầu quyền và không cần tương tác của người dùng. Đây là đặc tính chấm điểm, không chứng minh rằng mọi triển khai đều có endpoint mạng dễ khai thác; ứng dụng vẫn phải chạy trên Windows và truyền đường dẫn chịu ảnh hưởng của kẻ tấn công vào Root.Mkdir hoặc Root.MkdirAll. Junction phải là thành phần cuối cùng của đường dẫn và phải trỏ đến một vị trí trống. Bản ghi được cung cấp không xác định public exploit hoặc trạng thái khai thác đã biết, còn các tài liệu Go đã kiểm tra chỉ mô tả lỗi và bản sửa, không cung cấp mã khai thác hay báo cáo lạm dụng cụ thể.

Tác động kỹ thuật

Kết quả kỹ thuật được xác nhận là thao tác có thể tạo thư mục ngoài root dự kiến, phá vỡ ranh giới filesystem mà ứng dụng có thể đang dựa vào. Nếu tiến trình có quyền trên đích của junction, điều này có thể cho phép thay đổi vị trí mà ứng dụng không chủ định quản lý. Tác động đến tính toàn vẹn hoặc tính sẵn sàng có thể xảy ra khi đích là vùng nhạy cảm; khả năng lộ dữ liệu cũng phụ thuộc vào các thao tác khác của ứng dụng và chưa được mô tả cụ thể. Không có đường dẫn nâng quyền, thực thi mã hoặc đánh cắp dữ liệu cụ thể nào được xác lập trong hồ sơ.

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

Ứng dụng dùng os.Root như một ranh giới filesystem có thể tạo thư mục ngoài workspace hoặc vùng lưu trữ dự kiến. Điều này có thể làm suy yếu sự cô lập giữa tenant, job build, cache hoặc vùng upload nếu các vùng này nhận đường dẫn chịu ảnh hưởng của đầu vào bên ngoài. Tùy quyền của tiến trình Windows, hậu quả có thể gồm đặt tệp trái phép, thay đổi cấu hình, can thiệp dữ liệu hoặc làm gián đoạn dịch vụ. Đây là các hậu quả có thể xảy ra theo điều kiện triển khai; hồ sơ không xác nhận một vụ xâm nhập, dữ liệu cụ thể bị lấy cắp hoặc mã tùy ý được thực thi.

Cách khắc phục

  1. Cập nhật nhánh Go 1.26 lên 1.26.9 và nhánh Go 1.27 lên 1.27.2, là các bản phát hành được nguồn Go xác định có bản sửa cho lỗi này.
  2. Build lại và triển khai lại các ứng dụng Windows bị ảnh hưởng bằng toolchain đã cập nhật, sau đó xác minh binary thực tế không còn được tạo từ phạm vi affected.
  3. Nếu chưa thể cập nhật, tạm thời ngăn đầu vào không tin cậy chọn một junction làm thành phần cuối của đường dẫn và không coi cơ chế root confinement hiện tại là đủ để bảo vệ khỏi trường hợp này. Đây là biện pháp phòng ngừa suy ra từ điều kiện lỗi, không phải workaround riêng được Go xác nhận.
  4. Với các nhánh phát hành không nằm trong phạm vi đã nêu, kiểm tra hướng dẫn CNA hoặc vendor tương ứng thay vì suy luận rằng bản sửa của một nhánh áp dụng cho mọi nhánh khác.

Cách phát hiện

  1. Kiểm kê các ứng dụng Windows được xây dựng bằng Go và xác định toolchain cùng phiên bản đang được dùng cho bản phát hành thực tế.
  2. Rà soát mã nguồn và dependency để tìm việc sử dụng os.Root, đặc biệt là Root.Mkdir, Root.MkdirAll và các thao tác Root liên quan đến đường dẫn do người dùng hoặc hệ thống bên ngoài cung cấp.
  3. Kiểm tra các thư mục có thể chứa junction, tập trung vào trường hợp junction nằm ở thành phần cuối của đường dẫn và trỏ đến vị trí trống bên ngoài root dự kiến.
  4. Sau khi cập nhật và build lại, chạy regression test của ứng dụng để xác nhận các API không còn resolve junction cuối đường dẫn ra ngoài root.
  5. Có thể theo dõi việc tạo thư mục ngoài phạm vi dự kiến như một biện pháp giám sát thận trọng, nhưng hồ sơ không nêu log event hoặc indicator cụ thể. Việc không thấy sự kiện trong log không chứng minh hệ thống an toàn.
Nguồn (20)
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.