# Lỗ hổng nghiêm trọng trong AWS Amplify cho phép kẻ tấn công thực thi mã từ xa

## **Tổng quan**

Thời gian gần đây các chuyên gia an ninh mạng đã phát hiện ra một lỗ hổng bảo mật cực kỳ nghiêm trọng trong **AWS Amplify Studio -** một **nền tảng phát triển giao diện người dùng (UI) trực quan** do Amazon Web Services cung cấp, giúp các nhà phát triển và nhà thiết kế **tạo, quản lý và triển khai ứng dụng web/mobile nhanh chóng.** Lỗ hổng này được gán mã định danh **CVE-2025-4318**, với điểm CVSS 9,5/10, cho phép kẻ tấn công thực thi mã từ xa (RCE) trên máy của lập trình viên hoặc hệ thống tự động CI/CD.

## **Mô tả lỗ hổng**

Mã định danh: **CVE-2025-4318**

Mức độ: **Critical** (CVSS 4.0 = 9.5/10)

Ngày công bố: 5 tháng 5 2025

Mô tả: lỗ hổng **RCE (Remote Code Execution)** nghiêm trọng được phát hiện trong gói `@aws-amplify/codegen-ui` – thành phần của **AWS Amplify Studio**

Ảnh hưởng chính:

* **Thực thi mã từ xa (RCE)** với quyền của hệ thống build
    
* Có thể dẫn đến chiếm quyền kiểm soát CI/CD pipeline
    
* Tác động đến **toàn bộ chuỗi cung ứng phần mềm (supply chain)** nếu mã sinh ra được sử dụng rộng rãi
    

## **Tại sao lỗ hổng tồn tại?**

* Lỗ hổng này tồn tại do chính cơ chế thiết kế trong xử lý của AWS. Như chúng ta đã biết, thư viện `@aws-amplify/codegen-ui` cho phép người dùng tạo **UI components** bằng cách cung cấp cấu trúc JSON mô tả các thuộc tính (props) như `label`, `placeholder`, `value`, `onChange`…Để làm được đó, thư viện này cho phép người dùng sử dụng các biểu thức JavaScript dưới dạng string.
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749628235475/c2ef16de-739a-4543-82de-c01a24214f9e.png align="center")

* Điều này dẫn đến việc AWS Amplify **dùng** `eval()` hoặc `new Function()` để xử lý input động mà không lọc, dẫn đến nhiều tiềm ẩn rủi ro bị Attacker khai thác.
    
* Bên cạnh đó, việc thực thi lỗ hổng đến từ việc không có cơ chế kiểm soát giá trị hoặc nội dung nguy hiểm
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749629018197/9f755e92-719a-41b6-8e20-e439cdbd2605.png align="center")

* Điều này sẽ dấn đến kẻ tấn công có thể thực thi RCE nếu attacker ghi vào trường `value` chuỗi như:
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749629254635/a3fcd1cb-f92a-492e-ad59-a7c5ac1dd4b8.png align="center")

\=&gt; Thì nó sẽ được thực thi **ngay lập tức trong môi trường Node.js** của máy build hoặc server CI/CD.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749630733360/0139ba6a-5ec0-4547-86f3-9923bd868c62.png align="center")

## **Cách kẻ tấn công khai thác lỗ hổng**

* Ban đầu kẻ tấn công sẽ thực hiện tạo một script Bash trong thư viện `@aws-amplify/codegen-ui@2.20.2`
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749630157733/1b3e1b51-e911-4c90-ac43-4444aa11f8da.png align="center")

* Khi mà kẻ tấn công chạy script trên nó sẽ gây ra một số hậu quả:
    
    * Một file JSON chứa payload `require('child_process').execSync('touch /tmp/pwned')` sẽ được tạo.
        
    * Node.js sẽ thực thi payload thông qua `new Function(...)`, mô phỏng hành vi của Amplify codegen cũ.
        
    * Một file `/tmp/pwned` sẽ được tạo nếu khai thác thành công.
        
* Sau đó kẻ tấn công tiếp tục tạo một file có tên `run.js` nhằm thực hiện `eval()` payload từ JSON. và chạy HTTP server trên cổng 8080 để phục vụ các file nếu cần trình duyệt truy cập.
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749630545275/cc683166-2e97-4920-8762-9072125621fa.png align="center")

* `run.js` sẽ lấy chuỗi từ `placeholder.value` và thực thi bằng `eval()`.
    
* `http-server` dùng để phục vụ file qua HTTP, có thể dùng để:
    
    * Giả lập máy victim truy cập file từ attacker.
        
    * Demo trong môi trường sandbox.
        

* Cuối cùng sau khi đã chạy các file script và chèn mã JavaScript độc hại vào các tệp `JSON` định nghĩa giao diện, từ đó có thể:
    
    * Thực thi lệnh hệ thống.
        
    * Truy cập hoặc đánh cắp dữ liệu nhạy cảm.
        
    * Thay đổi file hoặc cài mã độc duy trì quyền truy cập trái phép.
        

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749631277248/34e7a254-4148-41e8-b728-4055be4b9b3e.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749631284174/0d0cfbe8-4544-4414-b308-8729f8197737.png align="center")

## **Tổng kết**

Lỗ hổng tồn tại trong thư viện `@aws-amplify/codegen-ui` phiên bản `2.20.2` và có thể ảnh hưởng đến **CI/CD pipelines**, **ứng dụng Amplify Studio**, hoặc **môi trường Node.js cục bộ** nếu thực hiện xử lý không an toàn với file JSON component do người dùng gửi.

Lỗ hổng này cũng là minh chứng cho thấy một chút bất cẩn trong xử lý dữ liệu người dùng có thể mở đường cho tấn công hệ thống toàn diện, đặc biệt trong thời đại low-code/no-code ngày càng phổ biến.

## **Khuyến nghị**

1. **Cập nhật phiên bản mới nhất** của `@aws-amplify/codegen-ui`:
    
    * npm install @aws-amplify/codegen-ui@latest
        
2. **Không tải hoặc sử dụng file JSON UI component không rõ nguồn gốc**.
    
3. **Tuyệt đối không dùng** `eval()`, `Function()`, hoặc `vm.runInNewContext()` để xử lý các giá trị từ JSON mà chưa xác thực.
    
4. **Kiểm tra thư mục** `/tmp` hoặc `~` thường xuyên nếu nghi ngờ hệ thống đã bị khai thác (`touch /tmp/pwned` là payload mẫu).
    
5. **Sử dụng máy ảo hoặc Docker** để thử nghiệm các công cụ liên quan đến mã code sinh động tự động (codegen) từ UI.
    

## **Tham khảo**

1. [CVE-2025-4318 (CVSS 9.5): AWS Amplify RCE Flaw Exposed with PoC – CI/CD Pipelines at Risk](https://securityonline.info/cve-2025-4318-cvss-9-5-aws-amplify-rce-flaw-exposed-with-poc-ci-cd-pipelines-at-risk/)
    
2. [CVE-2025-4318: RCE in AWS Amplify Studio via Unsafe Evaluation](https://blog.securelayer7.net/cve-2025-4318-aws-amplify-rce/?utm_source=chatgpt.com)
