Lỗ hổng Electron: Vượt kiểm tra toàn vẹn mã nghiêm trọng

Lỗ hổng Electron: Vượt kiểm tra toàn vẹn mã nghiêm trọng

Một lỗ hổng bảo mật mới đã được phát hiện, cho phép kẻ tấn công chèn mã độc vào các ứng dụng máy tính để bàn phổ biến như Signal, 1Password, Slack và Google Chrome. Khai thác này thành công nhờ việc vượt qua các cơ chế kiểm tra toàn vẹn mã tích hợp sẵn.

Lỗ hổng này, được theo dõi là CVE-2025-55305, ảnh hưởng đến hầu hết các ứng dụng được xây dựng trên nhân Chromium khi chúng sử dụng Electron. Electron là một framework phổ biến để tạo phần mềm desktop đa nền tảng bằng công nghệ web.

Phân Tích Lỗ Hổng Electron CVE-2025-55305

Nghiên cứu của chuyên gia bảo mật Shadow tại Trail of Bits đã đi sâu vào cách thức hoạt động của các cơ chế kiểm soát toàn vẹn trong Electron. Electron cung cấp các “fuses” (cơ chế bảo vệ) để xác minh rằng các tệp JavaScript của ứng dụng khớp chính xác với những gì nhà phát triển đã đóng gói.

Hai cơ chế fuse chính, EnableEmbeddedAsarIntegrityValidationOnlyLoadAppFromAsar, được thiết kế để đảm bảo không có mã nào có thể được thêm hoặc thay đổi mà không bị phát hiện. Mục đích là để bảo vệ tính toàn vẹn của ứng dụng.

Tuy nhiên, các cơ chế bảo vệ này không bao gồm các V8 heap snapshot. Đây là một tính năng hiệu suất được kế thừa từ Chromium, cho phép tải trạng thái JavaScript đã biên dịch trước vào bộ nhớ, tương tự như việc rã đông một món ăn đã được chuẩn bị sẵn.

Kẻ tấn công có thể thay đổi các snapshot này để chèn mã không được ký. Đáng chú ý, các kiểm tra toàn vẹn mã của Electron lại bỏ qua phần này, tạo ra một điểm mù bảo mật nghiêm trọng.

Cơ Chế Khai Thác và Ảnh Hưởng

Bằng cách nhắm mục tiêu vào các heap snapshot, kẻ tấn công có quyền ghi vào thư mục cài đặt ứng dụng có thể tạo cửa hậu (backdoor) cho bất kỳ ứng dụng dựa trên Electron nào. Các thư mục này thường nằm ở các vị trí mà người dùng có quyền ghi, ví dụ như %AppData%\Local trên Windows hoặc /Applications trên macOS.

Khi ứng dụng khởi động, snapshot đã sửa đổi sẽ chạy trước bất kỳ quá trình kiểm tra toàn vẹn mã nào. Điều này cho phép kẻ tấn công ghi đè các hàm JavaScript cốt lõi của ứng dụng.

Shadow đã chứng minh điều này bằng cách thay thế hàm Array.isArray bằng một gadget có khả năng thực thi mã tùy ý. Trong một thử nghiệm, việc thay đổi hàm này đã khiến Slack gặp sự cố, chứng minh rằng mã không được ký trong snapshot đã chạy mặc dù các cơ chế bảo vệ toàn vẹn của Electron vẫn hoạt động.

Sau đó, Shadow đã xây dựng các bằng chứng khái niệm (proof-of-concept) cho Slack, 1Password và Signal. Đối với Slack, payload đã tải một keylogger vào các cửa sổ chat. Đối với Signal và 1Password, cuộc tấn công có thể đánh cắp tin nhắn hoặc dữ liệu từ kho lưu trữ mật khẩu.

Nhóm nghiên cứu đã báo cáo một cách có trách nhiệm về lỗ hổng Electron này cho các nhà bảo trì của Electron, những người đã nhanh chóng phát hành bản vá. 1Password đã khắc phục sự cố trong phiên bản 8.11.8-40. Signal và Slack cũng đã phát hành các bản cập nhật tương ứng.

Jacob DePriest, CISO tại 1Password, cho biết: “Chúng tôi đã được thông báo về lỗ hổng Electron CVE-2025-55305 thông qua quy trình tiết lộ có trách nhiệm của Trail of Bits và 1Password đã vá lỗ hổng này trong phiên bản v8.11.8-40. Bảo vệ dữ liệu của khách hàng luôn là ưu tiên cao nhất của chúng tôi.”

Để tìm hiểu thêm về phân tích kỹ thuật của lỗ hổng Electron này, bạn có thể tham khảo bài viết gốc từ Trail of Bits: Subverting Code Integrity Checks to Locally Backdoor Signal, 1Password, Slack, and More.

Rủi Ro Mở Rộng và Biện Pháp Khắc Phục

Lỗ hổng này làm nổi bật một rủi ro rộng lớn hơn đối với tất cả các phần mềm dựa trên Chromium. Nhà nghiên cứu Emilio Lopez đã mở rộng kỹ thuật này để tạo cửa hậu cho Chrome và các trình duyệt liên quan được cài đặt trong các thư mục mà người dùng có quyền ghi.

Do mô hình mối đe dọa của Chrome loại trừ các cuộc tấn công cục bộ, những cửa hậu này có thể không bị phát hiện. Chúng vẫn vượt qua được các kiểm tra toàn vẹn mã và ký mã thông thường, tạo ra một nguy cơ tiềm ẩn.

Để bảo vệ chống lại các cuộc tấn công này, các nhà phát triển ứng dụng Electron và Chromium cần kích hoạt các kiểm tra toàn vẹn mã đầy đủ trên các heap snapshot. Một biện pháp khác là di chuyển các tệp snapshot đến các vị trí chỉ đọc để ngăn chặn việc sửa đổi trái phép.

Người dùng được khuyến nghị cập nhật Signal, 1Password, Slack và các ứng dụng Electron khác lên các phiên bản mới nhất ngay lập tức. Việc áp dụng các bản vá bảo mật này là rất quan trọng để đảm bảo an toàn cho dữ liệu và hệ thống.

Tính toàn vẹn mã bảo mật phải bao gồm mọi thành phần của ứng dụng, kể cả các cơ chế hiệu suất ẩn. Điều này nhằm ngăn chặn kẻ tấn công biến các ứng dụng đáng tin cậy thành công cụ duy trì truy cập một cách lén lút thông qua việc khai thác lỗ hổng Electron và tương tự.