CVE-2026-44827은 trust_remote_code 플래그가 꺼져 있더라도 Hugging Face Diffusers 모델을 로드할 때 공격자가 임의의 코드를 실행할 수 있게 합니다. 연구원들은 이 결함을 “FaceHugger”라고 명명했으며, 라이브러리의 2단계 모델 로딩 프로세스에서 발생하는 레이스 컨디션(race condition)이 원인임을 밝혀냈습니다. 허브에서 모델을 가져오는 모든 파이프라인이 영향을 받을 수 있습니다.

이 취약점이 중요한 이유

Diffusers는 텍스트-투-이미지(text-to-image) 및 기타 확산 모델(diffusion models)의 기반이 됩니다. 2026년 7월 기준으로 810만 건의 다운로드를 기록했을 만큼, 수많은 CI/CD 작업, 컨테이너 이미지 및 기업용 추론 서비스가 이 라이브러리에 의존하고 있습니다. 이 버그는 모델과 함께 제공되는 신뢰할 수 없는 Python 코드를 차단하기 위해 개발자가 활성화하는 주요 안전 장치(trust_remote_code)를 무력화합니다.

우회 방식

  • 2단계 로딩: Diffusers는 먼저 모델 설정을 가져온 다음, 두 번째 요청을 통해 모델 가중치와 관련 코드를 가져옵니다.
  • 레이스 컨디션: 첫 번째 요청을 검사하는 보안 체크가 두 번째 요청까지는 확장되지 않습니다.
  • 페이로드 삽입: 두 번째 요청을 제어하는 공격자가 악성 코드를 삽입하면 라이브러리가 이를 나중에 실행하게 되어, 신뢰 게이트를 완전히 우회하게 됩니다.

보안 검사가 초기 요청만 확인하기 때문에, trust_remote_code를 비활성화하더라도 보호받고 있다는 잘못된 안도감을 줄 수 있습니다.

개발자를 위한 즉각적인 조치 사항

  1. Diffusers 버전을 고정하십시오. requirements.txt나 락(lock) 파일에 버전을 명시하여 취약한 버전으로 의도치 않게 업그레이드되는 것을 방지해야 합니다.
  2. 운영 환경에서 실시간 모델 풀(on-the-fly model pulls)을 피하십시오. 모델을 신뢰할 수 있는 아티팩트 저장소(예: 내부 S3 버킷)에 다운로드한 후 그곳에서 로드하십시오.
  3. 사용 전 모델 저장소를 감사하십시오. 모델의 코드 파일이 예상되는 해시값과 일치하는지, 또는 검증된 출처에서 왔는지 확인하십시오.
  4. 네트워크 송신(egress) 제어를 강화하여, 허용하지 않는 한 빌드 에이전트와 추론 서버가 퍼블릭 Hugging Face 허브에 접속할 수 없도록 하십시오.
  5. 최소 권한을 가진 격리된 컨테이너 또는 샌드박스 내에서 모델 로딩을 실행하여, 예기치 않은 코드 실행의 영향을 제한하십시오.

요약:

FaceHugger 버그는 trust_remote_code를 끄는 것만으로는 충분하지 않다는 것을 보여줍니다. Diffusers를 업데이트하고 모델 수집(ingestion) 파이프라인을 강화하기 전까지는, 모든 원격 모델 풀이 악성 코드의 잠재적인 유입 경로가 될 수 있습니다.