“Mã nguồn không tin cậy luôn tìm cách khai thác kẽ hở giao tiếp giữa các thành phần của hệ điều hành. Rào cản tốt nhất là từ chối cung cấp môi trường biên dịch lệnh động.”— Secure Systems Design Group
Mô hình đe dọa (Threat Model)
Các tệp cài đặt Windows (`.exe` hoặc `.msi`) tải xuống từ Internet được WinNest coi là "mã nguồn không tin cậy". Mặc dù Wine cung cấp môi trường ảo hóa API Windows để chạy ứng dụng trực tiếp, các tiến trình Windows này về bản chất vẫn chạy dưới quyền của người dùng Linux hiện hành và có quyền đọc/ghi các thư mục hệ thống nếu không được cấu hình chặn.
Mục tiêu bảo mật của WinNest là ngăn chặn tối đa việc các ứng dụng Windows hoặc các tham số độc hại can thiệp trái phép, phá hoại hệ thống Linux máy chủ.
Nguyên lý Safe Spawning
Lỗ hổng bảo mật phổ biến nhất khi viết công cụ dòng lệnh gọi chương trình bên ngoài là sử dụng cơ chế thực thi chuỗi lệnh shell thô (ví dụ: `child_process.exec("wine " + installerPath)`). Nếu `installerPath` chứa các ký tự đặc biệt như dấu chấm phẩy `;`, dấu và `&`, hoặc khoảng trắng kết hợp lệnh hệ thống, kẻ tấn công có thể chèn các mã độc hại để thực thi trực tiếp trên terminal Linux.
WinNest loại trừ hoàn toàn rủi ro này bằng cách thực thi chính sách **Safe Spawning**:
// ❌ KHÔNG AN TOÀN: Dễ bị Shell Injection
exec(`wine ${installerPath} /S`);
// AN TOÀN: WinNest sử dụng mảng đối số tách biệt
const proc = spawn("wine", [installerPath, "/S"], {
shell: false, // Vô hiệu hóa trình biên dịch lệnh của Shell Linux
cwd: appDir
});
Bằng cách đặt thuộc tính shell: false và truyền tham số dạng một mảng các chuỗi ký tự tách biệt, hệ điều hành Linux sẽ chuyển các tham số này trực tiếp vào mảng đối số tiến trình (`argv`) mà không thông qua bất kỳ trình biên dịch Shell nào (như bash hay sh). Điều này giúp triệt tiêu hoàn toàn khả năng chèn lệnh độc hại.
Giới hạn phân vùng (Sandbox Limits)
Để cô lập hành vi đọc ghi của phần mềm Windows ảo, WinNest thực hiện các giới hạn sau trên cấu hình Wine Prefix:
- Registry Isolation: Mỗi ứng dụng có hệ thống Registry ảo riêng biệt. Việc đăng ký phần mềm độc hại vào registry của app này không ảnh hưởng đến app khác.
- Drive Mapping Control: Vô hiệu hóa hoặc hạn chế việc tự động ánh xạ (auto-mapping) các ổ đĩa Linux của máy chủ (như `/` hoặc thư mục Home) vào Wine prefix dưới dạng các ổ đĩa ảo `D:`, `E:` ngoại trừ trường hợp người dùng cho phép cụ thể.
- DLL Override Mitigation: Chặn các thư viện DLL hệ thống Windows bị can thiệp chéo bằng cách ưu tiên tải các thư viện nguyên bản (builtin) của Wine thay vì các DLL giả mạo do phần mềm Windows mang lại.