Lỗ hổng Parallels Desktop cho phép chiếm quyền Root trên Mac, nhưng máy Mac Intel chưa thể cài bản vá

Một lỗ hổng nghiêm trọng trong Parallels Desktop cho Mac vừa được JFrog tiết lộ, cho phép tài khoản người dùng thông thường chiếm quyền root trên hệ thống. Đáng chú ý, bản vá hiện chỉ có trên Parallels Desktop 27 dành cho chip Apple Silicon, khiến người dùng máy Mac chạy chip Intel vẫn phải đối mặt với rủi ro bảo mật này.
Lỗ hổng ParaShells trên Parallels Desktop

Parallels Desktop cho Mac vừa được phát hiện có một lỗ hổng cho phép tài khoản người dùng cục bộ thông thường thực thi mã với quyền root - mức quyền cao nhất trên macOS, theo thông tin từ công ty bảo mật JFrog trong tuần này.

Cuộc tấn công yêu cầu mã độc phải đang chạy sẵn trên máy dưới danh nghĩa người dùng thông thường, vì vậy nó không thể thực hiện từ xa qua mạng. JFrog cho biết bản vá đã được cập nhật trong Parallels Desktop 27, tuy nhiên đây là phiên bản mà các dòng máy Mac chạy chip Intel không thể cài đặt.

Yuval Moravchick, người đứng đầu nhóm nghiên cứu lỗ hổng của JFrog, đã công bố phát hiện này vào thứ Ba và đặt tên cho nó là ParaShells. Lỗ hổng được theo dõi dưới mã hiệu CVE-2026-90894 (mã định danh do JFrog tự cấp) và được chấm điểm 7.8/10 về mức độ nghiêm trọng.

Parallels Desktop cho phép chạy Windows và Linux bên trong các máy ảo trên Mac. Phần mềm này cài đặt một dịch vụ chạy ngầm tên là prl_disp_service dưới quyền root, vì nhiệm vụ của nó bao gồm thiết lập mạng máy chủ và giải nén các gói máy ảo.

Lỗ hổng này nằm ở phía máy Mac của sản phẩm, do đó đối tượng gặp rủi ro chính là bản thân máy Mac chứ không phải các máy ảo đang chạy trên đó.

Trên thiết bị mà JFrog thử nghiệm, socket mà dịch vụ này lắng nghe có quyền ghi cho mọi đối tượng (world-writable), nghĩa là bất kỳ chương trình nào trên máy Mac cũng có thể kết nối với nó. Lệnh gọi đăng nhập tiếp theo, PrlSrv_LoginLocal, chỉ kiểm tra thông tin định danh mà kernel báo cáo cho tiến trình đang kết nối. Nó không yêu cầu chữ ký mã (code signature) của Parallels và hoạt động ngay cả với tài khoản không có quyền quản trị.

Để cài đặt một thiết bị máy ảo (appliance), dịch vụ sẽ xây dựng lệnh giải nén dưới dạng một dòng văn bản: tar -xf "%1" -C "%2". Sau đó, nó chia văn bản đó thành các đối số riêng biệt bằng cách sử dụng QProcess::splitCommand của Qt.

Người thực hiện lệnh gọi có thể kiểm soát một phần văn bản này vì họ được chọn thư mục lưu trữ máy ảo mới. Một dấu ngoặc kép bên trong tên thư mục có thể đóng chuỗi sớm, khiến bất kỳ nội dung nào kẻ tấn công chèn vào sau đó trở thành các tùy chọn bổ sung cho lệnh tar thay vì là một phần của đường dẫn.

Tùy chọn mà JFrog đã sử dụng là --use-compress-program, tùy chọn này yêu cầu lệnh tar của macOS chuyển kho lưu trữ cho một chương trình khác xử lý trước. Vì tar đang chạy với quyền root, chương trình đó cũng sẽ chạy với quyền root. Kịch bản thử nghiệm của JFrog đã ghi đè một quy tắc sudo không cần mật khẩu và mở một shell với quyền root.

Giao diện Parallels Desktop

JFrog đã chứng minh lỗ hổng này trên Parallels Desktop 26.4.0 (build 57513) trên máy Mac sử dụng chip Apple Silicon. Họ cho biết một bản cài đặt thông thường đã cung cấp đủ mọi thứ cần thiết cho cuộc tấn công: sản phẩm đã được cài đặt, dịch vụ đang chạy với socket hiện diện và một tài khoản cục bộ đặc quyền thấp. Không nhất thiết phải có máy ảo nào đang chạy.

"Chúng tôi không thực hiện kiểm tra hồi quy trên mọi bản build cũ cho bài viết này. Hãy coi bất kỳ bản cài đặt Desktop nào vẫn còn để lộ mẫu trích xuất InstallAppliance và socket điều phối có quyền ghi world-writable tương tự là nằm trong phạm vi rủi ro."

JFrog cũng lưu ý rằng phiên bản trên App Store có thể khởi động các dịch vụ theo cách khác, nhưng rủi ro tiềm ẩn vẫn là cùng một loại vấn đề. Hiện chưa có báo cáo về các cuộc tấn công thực tế sử dụng lỗ hổng này và Parallels cũng chưa công bố thông tin chính thức nào.

Theo JFrog, lý do một lỗ hổng cục bộ lại quan trọng là vì mã chạy dưới quyền người dùng thông thường rất phổ biến trên các máy này. Một công thức Homebrew độc hại, một tập lệnh cài đặt npm bị đầu độc hoặc một công việc xây dựng (build job) bị xâm nhập đều có thể tận dụng lỗ hổng này, cũng như một tài khoản yếu trên máy Mac dùng chung trong phòng thí nghiệm hoặc đào tạo.

Bản vá và các phiên bản được cập nhật

JFrog cho biết thay đổi khắc phục lỗ hổng nằm trong Parallels Desktop 27. Khuyến cáo của họ liệt kê tất cả các phiên bản dưới 27.0.0 đều bị ảnh hưởng, phiên bản 27.0.0 là phiên bản đã sửa lỗi và hồ sơ CVE cũng xác nhận 27.0.0 không bị ảnh hưởng.

Tuy nhiên, các mốc thời gian có sự không đồng nhất. Lịch trình công bố của JFrog ghi ngày 1 tháng 9 năm 2026 là ngày bản vá được phát hành trong bản 27.0.0, nhưng ghi chú phát hành của Parallels lại ghi bản 27.0.0 vào ngày 25 tháng 8 năm 2026 và bản 27.0.1 vào ngày 1 tháng 9 năm 2026.

Việc cài đặt bản phát hành mới nhất trên dòng này sẽ đảm bảo an toàn, vì bản 27.0.1 (build 58670) được xuất xưởng sau cả hai ngày nêu trên. Parallels vẫn chưa đưa ra tuyên bố chính thức về CVE-2026-90894, vì vậy không có hồ sơ nhà cung cấp nào chỉ rõ bản build nào tích hợp thay đổi này.

Những thiết bị không thể cài đặt bản vá

Parallels Desktop 27 yêu cầu máy Mac phải sử dụng chip Apple Silicon. Yêu cầu hệ thống chỉ liệt kê bộ vi xử lý Apple Silicon và hệ điều hành macOS Sonoma 14.7 trở lên. Trên các bản phát hành macOS cũ hơn, bao gồm cả Ventura 13, trình cài đặt sẽ thiết lập một phiên bản cũ hơn của sản phẩm.

Parallels đã loại bỏ hỗ trợ máy Mac Intel trong phiên bản 27 và cho biết thay đổi này tuân theo kế hoạch của Apple. macOS 26 Tahoe là phiên bản macOS cuối cùng được xây dựng cho máy Mac Intel và macOS 27 chỉ dành cho Apple Silicon, vì vậy một sản phẩm được xây dựng cho macOS 27 không thể cài đặt trên phần cứng Intel.

Người dùng Intel được khuyên nên ở lại với Parallels Desktop 26. Tuy nhiên, dòng sản phẩm này hiện chưa có bản vá theo JFrog. JFrog cho biết các máy chủ ở lại dòng 26.x, bao gồm cả bản 26.4.2, không có thay đổi khắc phục lỗ hổng giải nén nêu trên.

Dòng sản phẩm Bản build mới nhất Đã có bản vá Có thể cài đặt trên
Parallels Desktop 27 27.0.1 (58670), 1/9/2026 Có (theo JFrog) Mac chip Apple Silicon chạy macOS Sonoma 14.7+
Parallels Desktop 26 26.4.2 (57518), 8/9/2026 Không (theo JFrog) Cả máy Mac Intel và Apple Silicon

Cách kiểm tra và các biện pháp cần thực hiện

Có hai lệnh chỉ đọc để kiểm tra xem máy Mac có gặp nguy hiểm hay không. Lệnh đầu tiên báo cáo phiên bản đã cài đặt; lệnh thứ hai báo cáo xem socket dịch vụ có mở cho mọi tiến trình cục bộ hay không:

  • defaults read "/Applications/Parallels Desktop.app/Contents/Info" CFBundleShortVersionString
  • ls -l /var/run/prl_disp_service.socket

JFrog cho biết nếu socket hiển thị quyền srwxrwxrwx trên một bản build gần với 26.4.0, nó nên được coi là có nguy cơ cho đến khi bản build đã vá lỗi được xác nhận. Lưu ý rằng các lệnh này chỉ cho thấy khả năng bị ảnh hưởng chứ không cho thấy liệu có ai đã khai thác lỗ hổng hay chưa.

Lời khuyên của JFrog là hạn chế những người có thể đăng nhập cục bộ, vì bất kỳ tài khoản nào trên bản cài đặt dễ bị tổn thương đều có thể tiếp cận dịch vụ. Họ cũng gợi ý các quản trị viên nên liệt kê tất cả các máy Mac trong tổ chức có cài đặt Parallels Desktop.

JFrog cũng lưu ý thêm rằng nếu kẻ tấn công đã chiếm được quyền root, chúng có thể duy trì sự hiện diện thông qua launchd, điều mà việc cập nhật sản phẩm sẽ không thể xóa bỏ hoàn toàn.