CVE-2026-44827 cho phép kẻ tấn công thực thi mã tùy ý khi một mô hình Hugging Face Diffusers được tải lên, ngay cả khi cờ trust_remote_code đã được tắt. Các nhà nghiên cứu đã đặt tên cho lỗ hổng này là “FaceHugger” và xác định nguyên nhân là do tình trạng tranh chấp (race condition) trong quy trình tải mô hình hai giai đoạn của thư viện này. Bất kỳ pipeline nào thực hiện việc kéo mô hình từ hub đều có thể bị ảnh hưởng.

Tại sao lỗ hổng này lại quan trọng

Diffusers cung cấp sức mạnh cho các mô hình text-to-image và các mô hình khuếch tán (diffusion models) khác. Vào tháng 7 năm 2026, nó đã ghi nhận 8,1 triệu lượt tải xuống, vì vậy vô số các công việc CI/CD, hình ảnh container và các dịch vụ suy luận (inference services) của doanh nghiệp đều phụ thuộc vào nó. Lỗi này vô hiệu hóa cơ chế an toàn chính (trust_remote_code) mà các nhà phát triển thường bật để chặn mã Python không đáng tin cậy đi kèm với một mô hình.

Cách thức vượt qua cơ chế bảo mật

  • Tải hai giai đoạn: Đầu tiên, Diffusers lấy cấu hình mô hình, sau đó một yêu cầu thứ hai sẽ kéo trọng số mô hình (model weights) và bất kỳ mã liên quan nào.
  • Tình trạng tranh chấp (Race condition): Việc kiểm tra bảo mật thực hiện trên yêu cầu đầu tiên không được áp dụng cho yêu cầu thứ hai.
  • Chèn payload: Một kẻ tấn công kiểm soát được yêu cầu thứ hai sẽ chèn mã độc mà thư viện sẽ thực thi sau đó, vượt qua hoàn toàn cổng kiểm soát tin cậy.

Vì việc kiểm tra chỉ xem xét yêu cầu ban đầu, nên việc tắt trust_remote_code chỉ mang lại cảm giác an toàn giả tạo.

Các bước xử lý ngay lập tức dành cho nhà phát triển

  1. Cố định phiên bản Diffusers trong requirements.txt hoặc tệp lock của bạn để ngăn chặn việc vô tình nâng cấp lên phiên bản có lỗ hổng.
  2. Tránh việc kéo mô hình trực tiếp (on-the-fly) trong môi trường production. Hãy tải mô hình về một kho lưu trữ artifact đáng tin cậy (ví dụ: một S3 bucket nội bộ) và tải chúng từ đó.
  3. Kiểm tra các kho lưu trữ mô hình trước khi sử dụng. Xác minh rằng các tệp mã của mô hình khớp với các mã hash dự kiến hoặc đến từ một nguồn đã được kiểm duyệt.
  4. Áp dụng các kiểm soát luồng dữ liệu ra (network egress controls) để các build agent và máy chủ suy luận không thể truy cập vào Hugging Face hub công khai trừ khi bạn cho phép.
  5. Chạy việc tải mô hình bên trong các container hoặc sandbox cô lập với đặc quyền tối thiểu, nhằm hạn chế tác động của việc thực thi mã lạ.

Bài học rút ra:

Lỗi FaceHugger cho thấy việc tắt trust_remote_code là chưa đủ. Cho đến khi bạn cập nhật Diffusers và thắt chặt quy trình nạp mô hình (model ingestion pipeline) của mình, mọi hoạt động kéo mô hình từ xa đều vẫn là một điểm xâm nhập tiềm ẩn cho mã độc.