Về việc gpt-5.6-sol suýt xóa sạch thư mục home của người dùng do xung đột biến $HOME trong PowerShell
(gist.github.com/xamong)Tôi muốn chia sẻ một sự cố an toàn nghiêm trọng (Safety Incident) mà tôi vừa gặp khi sử dụng mẫu flagship mới nhất gpt-5.6-sol trong Codex. Dù mô hình Sol đã thể hiện kết quả đáng kinh ngạc, gần như khó tin, trong các benchmark về workflow agent và thực thi công cụ, việc thiếu cách ly môi trường shell đơn giản đã suýt dẫn đến một thảm họa.
Diễn biến:
Agent đang cố thiết lập một thư mục baseline tạm thời cho tác vụ debug. Để làm việc này, agent đã tạo và chạy một khối script PowerShell khởi tạo một biến cục bộ tên là $home.
$home = Join-Path $env:TEMP 'temporary-build-folder'
if (Test-Path -LiteralPath $home) { Remove-Item -LiteralPath $home -Recurse -Force }
Nguyên nhân lỗi:
Trong PowerShell, $HOME là biến tự động tích hợp sẵn (built-in, automatic variable) trỏ trực tiếp đến thư mục profile của người dùng hiện tại (ví dụ: C:\Users<username>).
Vấn đề là PowerShell không phân biệt chữ hoa/chữ thường (case-insensitive). Vì vậy, biến $home viết thường mà agent khai báo động đã xung đột với phạm vi $HOME toàn cục. Khi script đi đến dòng Remove-Item, đường dẫn này cuối cùng được đánh giá không phải là thư mục tạm, mà là thư mục gốc người dùng thật của tôi.
Kết quả là gpt-5.6-sol đã thực thi lệnh sau:
Remove-Item -LiteralPath 'C:\Users<username>' -Recurse -Force
Mức độ thiệt hại:
May mắn là nhờ cơ chế khóa hệ thống (Lock) đối với các tệp đang hoạt động, trong lúc lệnh chạy, nó đã dừng lại với lỗi WriteError: Directory is not empty, giúp tránh được thảm họa đáng sợ là xóa toàn bộ. Tuy nhiên, agent lập tức phát hiện lỗi của mình, dừng tác vụ (abort), rồi tự tiến hành kiểm tra. Kết quả xác nhận rằng một số tệp cấu hình và dotfile (.ssh, .config, .npm) đã bị sửa đổi hoặc biến mất.
Hàm ý:
gpt-5.6-sol kiên trì và có năng lực đáng kinh ngạc khi thực hiện các tác vụ dài hơi (long-horizon tasks). Nhưng khi chúng ta cấp cho những mô hình suy luận nâng cao này quyền truy cập trực tiếp vào terminal của host, các cơ chế như không phân biệt hoa/thường và phạm vi biến trong những shell như PowerShell trở thành một nguồn rủi ro (risk vector) rất lớn.
Nếu bạn đang có kế hoạch xây dựng hoặc triển khai CLI agent bằng dòng sản phẩm GPT-5.6 mới, sandboxing nghiêm ngặt và container hóa vững chắc giờ đây không còn là lựa chọn, mà là yêu cầu tuyệt đối bắt buộc.
Có ai trong số các bạn từng gặp hành vi tương tự về variable-shadowing hoặc việc sử dụng công cụ mang tính phá hoại khi dùng Sol hay các mô hình gần đây khác không?
Đây là liên kết ảnh chụp màn hình tình huống lúc đó: https://gist.github.com/xamong/e98478b333bb9951b175284f744eb0ed
2 bình luận
May là codex không tự ý leo thang đặc quyền.
Phải tự biết mà làm chứ