Nghiêm trọng: Lỗ hổng React Native gây RCE nguy hiểm

Nghiêm trọng: Lỗ hổng React Native gây RCE nguy hiểm

Một lỗ hổng bảo mật nghiêm trọng đã được phát hiện trong một gói phát triển React Native phổ biến, có khả năng khiến hàng triệu nhà phát triển đối mặt với các cuộc tấn công từ xa. Việc hiểu rõ và khắc phục lỗ hổng React Native này là điều cấp thiết để đảm bảo an toàn cho các dự án.

Nội dung
CVE-2025-11953: Lỗ hổng Remote Code Execution Nghiêm Trọng trong React Native CLI

Chi tiết Kỹ thuật về Lỗ hổng
Cơ chế Khai thác và Ảnh hưởng Hệ thống
Phạm vi Ảnh hưởng và Kiểm tra Lỗ hổng React Native
Khuyến nghị và Cập nhật Bản vá Bảo mật

CVE-2025-11953: Lỗ hổng Remote Code Execution Nghiêm Trọng trong React Native CLI

Các nhà nghiên cứu bảo mật từ JFrog gần đây đã phát hiện CVE-2025-11953, một lỗ hổng thực thi mã từ xa (remote code execution) nghiêm trọng. Lỗ hổng này ảnh hưởng đến gói NPM @react-native-community/cli, gói này có khoảng hai triệu lượt tải xuống hàng tuần.

CVE-2025-11953 mang điểm CVSS tối đa là 9.8. Điều này cho thấy mức độ nghiêm trọng cao và khả năng khai thác dễ dàng bởi những kẻ tấn công không xác thực.

Lỗ hổng cho phép kẻ tấn công từ xa thực thi các lệnh hệ điều hành tùy ý trên máy chủ đang chạy máy chủ phát triển của React Native. Việc này không yêu cầu xác thực hay tương tác từ người dùng.

Đây là một mối đe dọa đáng kể đối với các nhà phát triển làm việc trên các ứng dụng di động React Native. Việc khai thác có thể dẫn đến việc kiểm soát hoàn toàn hệ thống.

Chi tiết Kỹ thuật về Lỗ hổng

Lỗ hổng React Native này tồn tại trong các phiên bản từ 4.8.0 đến 20.0.0-alpha.2 của gói @react-native-community/cli-server-api. Phiên bản 20.0.0 đã được vá lỗi.

Nguyên nhân của lỗ hổng bảo mật này xuất phát từ việc xử lý đầu vào người dùng không an toàn. Cụ thể là tại endpoint /open-url của máy chủ phát triển Metro.

Khi nhà phát triển chạy các lệnh thông thường như npm start hoặc npx react-native start để khởi động môi trường phát triển của họ, máy chủ sẽ xử lý các yêu cầu POST.

Các yêu cầu này chứa dữ liệu không được làm sạch. Dữ liệu này được truyền trực tiếp đến hàm open() nguy hiểm từ gói NPM open.

Hàm open() thực thi các lệnh cấp hệ thống mà không có sự xác thực phù hợp. Điều này tạo ra một con đường cho kẻ tấn công để tiêm các lệnh độc hại.

Cơ chế Khai thác và Ảnh hưởng Hệ thống

Trên các hệ thống Windows, các nhà nghiên cứu đã chứng minh khả năng thực thi lệnh tùy ý hoàn toàn. Kẻ tấn công có thể kiểm soát đầy đủ các tham số.

Lỗ hổng cho phép kẻ tấn công thực thi các lệnh shell bằng cách tạo các yêu cầu độc hại. Những yêu cầu này bỏ qua các nỗ lực làm sạch cơ bản.

Trong khi các hệ thống macOSLinux có đường dẫn khai thác hạn chế hơn một chút, do cơ chế thực thi mã khác nhau. Tuy nhiên, các nhà nghiên cứu tin rằng việc thực thi lệnh tùy ý vẫn có thể đạt được với nghiên cứu bổ sung trên các nền tảng này.

Ngoài ra, JFrog đã phát hiện một lỗ hổng thứ hai trong mã nguồn cốt lõi của React Native. Lỗ hổng này khiến máy chủ phát triển liên kết với tất cả các giao diện mạng thay vì chỉ localhost.

Điều này xảy ra bất chấp việc hiển thị thông báo cho biết hoạt động chỉ dành cho localhost. Cấu hình sai này biến một vấn đề bảo mật có thể chỉ giới hạn cục bộ thành một lỗ hổng nghiêm trọng có thể khai thác từ xa.

Các endpoint phát triển trở nên có thể truy cập được đối với kẻ tấn công qua mạng. Điều này làm trầm trọng thêm nguy cơ từ lỗ hổng React Native ban đầu.

Phạm vi Ảnh hưởng và Kiểm tra Lỗ hổng React Native

Các nhà phát triển đã khởi tạo dự án React Native bằng các phiên bản dễ bị tấn công của @react-native-community/cli và chạy máy chủ phát triển Metro thông qua các lệnh tiêu chuẩn đều có nguy cơ.

Tuy nhiên, các nhà phát triển sử dụng các framework như Expo, vốn sử dụng các máy chủ phát triển khác, thường không bị ảnh hưởng bởi cảnh báo CVE này.

Để kiểm tra xem dự án của bạn có chứa gói dễ bị tấn công hay không, hãy điều hướng đến thư mục dự án và chạy lệnh sau:

npm list @react-native-community/cli-server-api

Gói này cũng có thể được cài đặt toàn cục trên hệ thống của bạn. Bạn có thể kiểm tra bằng cách sử dụng lệnh:

npm list -g @react-native-community/cli-server-api

Khuyến nghị và Cập nhật Bản vá Bảo mật

Đội ngũ bảo mật của Meta đã phản ứng kịp thời với thông báo này bằng cách phát hành bản vá. Bản vá có sẵn trong phiên bản 20.0.0 của gói bị ảnh hưởng.

Các nhà phát triển nên ngay lập tức cập nhật bản vá@react-native-community/cli-server-api lên phiên bản 20.0.0 hoặc cao hơn trong tất cả các dự án React Native của họ.

Đối với các tình huống việc nâng cấp gặp khó khăn, nhà phát triển có thể giảm thiểu rủi ro. Biện pháp là ràng buộc rõ ràng máy chủ phát triển vào giao diện localhost.

Sử dụng cờ --host 127.0.0.1 khi khởi động máy chủ, ví dụ:

npx react-native start --host 127.0.0.1

Việc phát hiện ra lỗ hổng React Native này nhấn mạnh rằng các lỗi thực thi mã đơn giản vẫn tiếp tục xuất hiện trong phần mềm sản xuất. Đặc biệt là khi các hàm nguy hiểm nằm trong các phần phụ thuộc của bên thứ ba. Chi tiết nghiên cứu từ JFrog cung cấp thêm thông tin sâu rộng.

Lỗ hổng này là một lời nhắc nhở rằng các thực hành mã hóa an toàn và quét bảo mật tự động vẫn rất cần thiết. Những biện pháp này giúp ngăn chặn các lỗ hổng dễ khai thác trước khi chúng đến môi trường sản xuất. Bảo vệ thông tin và hệ thống là ưu tiên hàng đầu.