Linux có thể bị hack chỉ vì mở một tệp trong Vim hoặc Neovim

lo-hong-linux-vim

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 (command-line), thì bạn tuyệt đối không nên xem bất cứ nội dung tệp nào trên Vim hoặc Neovim.

Người dùng Linux, hãy cẩn thận!

Nhà nghiên cứu bảo mật Armin Razmjou gần đây đã phát hiện ra một lỗ hổng mức độ nghiêm trọng cao thực thi lệnh OS tùy ý (CVE-2019-12735) trong Vim và Neovim – hai ứng dụng chỉnh sửa văn bản dòng lệnh phổ biến và mạnh mẽ nhất hiện nay được cài đặt sẵn trên hầu hết các hệ điều hành dựa trên nền tảng 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 nào, bao gồm cả văn bản, tập lệnh lập trình và tài liệu.

Bởi lẽ Neovim vốn 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 nên lỗ hổng thực thi mã cũng vẫn tồn tại trong trình soạn thảo này.  

Lỗ hổng thực thi mã trong Vim và Neovim

Razmjou đã phát hiện ra lỗ hổng trong cách trình soạn thảo Vim xử lý “modelines” – một 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 tùy chọn được đề cập bởi người khởi tạo file gần dòng mở đầu và dòng cuối cùng trong tài liệu.

lo-hong-linux-vim

Mặc dù trình chỉnh sửa chỉ cho phép một tập hợp con các tùy chọn trong modelines (vì lý do bảo mật) và sử dụng sandbox bảo vệ nếu nó chứa biểu thức không an toàn, Razmjou tiết lộ rằng sử dụng lệnh “: source!” (với một sửa đổi bang [!]) có thể bỏ qua sandbox.

Do đó, chỉ cần mở một tệp (có vẻ như vô hại) được tạo bằng cách sử dụng Vim hoặc Neovim 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 người dùng và kiểm soát nó từ xa.

Nhà nghiên cứu cũng đã công khai hai khai thác PoC về lỗ hổng này. Một trong số đó thể hiện kịch bản tấn công ngoài đời thực nơi kẻ tấn công từ xa có quyền truy cập vào reverse shell (vỏ đảo ngược) từ hệ thống của nạn nhân ngay khi người đó mở tệp tin.

Các nhà bảo trì của Vim (bản vá 8.1.1365) và Neovim (phát hành trong v0.3.6) đã phát hành bản cập nhật cho cả hai tiện ích để giải quyết vấn đề kể trên, bởi vậy người dùng cần nhanh chóng cài đặt và cập nhật các phiên bản càng sớm càng tốt.

Bên cạnh đó, nhà nghiên cứu cũng đã khuyến nghị người dùng:

  • vô hiệu hóa tính năng modelines,
  • vô hiệu hóa “modelineexpr” để ngưng tính năng cho phép các biểu thức trong modelines,
  • sử dụng “securemodelines plugin”- một sự thay thế an toàn cho các modelines của Vim.

THN