Người dùng Linux, hãy cẩn thận!
Nếu gần đây bạn chưa cập nhật hệ điều hành Linux, đặc biệt là tiện ích soạn thảo văn bản dòng lệnh, hay thậm chí không thử truy cập vào nội dung của tệp thông qua Vim hoặc Neovim, hãy chú ý, hệ thống của bạn hoàn toàn có thể bị hack.
Nhà nghiên cứu bảo mật nổi tiếng Armin Razmjou gần đây đã phát hiện ra lỗ hổng nghiêm trọng liên quan đến thực thi lệnh hệ điều hành tùy ý (CVE-2019-12735) trong Vim và Neovim - 2 ứng dụng chỉnh sửa văn bản dòng lệnh phổ biến và mạnh mẽ nhất, thường được cài đặt sẵn trên hầu hết các hệ điều hành dựa trên Linux.
Trên các hệ thống Linux, trình soạn thảo Vim cho phép người dùng tạo, xem hoặc chỉnh sửa bất kỳ tập tin nào, bao gồm văn bản, tập lệnh lập trình và cả tài liệu.
Do Neovim chỉ là một phiên bản mở rộng của Vim (với trải nghiệm người dùng, plugin và GUI tốt hơn), đương nhiên lỗ hổng thực thi mã nghiêm trọng nêu trên cũng sẽ xuất hiện trong ứng dụng này.
Lỗ hổng thực thi mã trong Vim và Neovim
Chuyên gia bảo mật Armin Razmjou đã phát hiện ra một lỗ hổng trong cách thức trình soạn thảo Vim xử lý "modelines" - tính năng được bật theo mặc định để tự động tìm và áp dụng một tập hợp các tùy chọn tùy chỉnh được đề cập bởi người tạo tệp, gần với dòng bắt đầu và kết thúc trong tài liệu.
Mặc dù trình chỉnh sửa chỉ cho phép áp dụng một tập hợp con các tùy chọn trong mô hình (vì lý do bảo mật) và sử dụng sandbox protection nếu nó có chứa biểu thức không an toàn, thế nhưng Armin Razmjou tiết lộ rằng việc sử dụng lệnh ":source!" (với một sửa đổi [!]) có thể vượt qua được sandbox protection.
Do đó, người dùng chỉ cần mở một tệp được tạo thủ công đặc biệt bằng cách sử dụng Vim hoặc Neovim cũng đã có thể cho phép kẻ tấn công bí mật thực thi các lệnh trên hệ thống Linux của họ, cũng như kiểm soát hệ thống từ xa.
Hiện nhà nghiên cứu bảo mật này cũng đã phát hành công khai 2 Proof of Concept (PoC) về cách thức exploit lỗ hổng nêu trên. Một trong số đó thể hiện kịch bản tấn công ngoài đời thực khi kẻ tấn công từ xa có quyền truy cập vào reverse shell từ hệ thống của nạn nhân ngay khi anh ta mở tệp nó.
Các nhà phát triển chịu trách nhiệm bảo trì cho Vim (phiên bản vá 8.1.1365) và Neovim (phát hành trong v0.3.6) cũng đã tung ra bản cập nhật cho cả hai tiện ích này để giải quyết vấn đề. Đồng thời khuyến nghị người dùng nên cài đặt phiên bản mới càng sớm càng tốt.
Bên cạnh đó, nhà nghiên cứu Armin Razmjou cũng đã đưa ra một số khuyến nghị bổ sung cho người dùng như sau:
- Vô hiệu hóa tính năng modelines.
- vô hiệu hóa "modelineexpr" để không cho phép các biểu thức xuất hiện trong modelines.
- Chuyển sang sử dụng "securemodelines plugin" như một sự thay thế an toàn cho các mô hình Vim.