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

Lưu Tuấn AnhLưu Tuấn Anh
4 min read

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.

  • Đ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

  • Đ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ư:

\=> 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.

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

  • 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.

  • 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.

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

  2. CVE-2025-4318: RCE in AWS Amplify Studio via Unsafe Evaluation

0
Subscribe to my newsletter

Read articles from Lưu Tuấn Anh directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Lưu Tuấn Anh
Lưu Tuấn Anh