
Angular Expressions는 Angular.JS 웹 프레임워크용 표현식을 독립형 모듈로 제공합니다. 버전 1.4.3 이전에는 공격자가 샌드박스를 탈출하는 악성 표현식을 작성하여 시스템에서 임의 코드를 실행할 수 있습니다. 더 복잡한(비공개) 페이로드를 사용하면 시스템에서 완전한 임의 코드 실행 권한을 얻을 수 있습니다. 이 문제는 Angular Expressions 버전 1.4.3에서 패치되었습니다. 두 가지 임시 해결 방법을 사용할 수 있습니다. __proto__에 대한 접근을 전역적으로 비활성화하거나 함수가 하나의 인수로만 사용되도록 할 수 있습니다.
취약점을 입증하기 위해 Angular Expressions의 취약한 버전을 사용하는 간단한 Node.js 애플리케이션을 만들었습니다. 이 애플리케이션은 사용자가 제공한 표현식을 평가하는 /parse 엔드포인트를 노출합니다.
저장소를 클론합니다:
git clone https://github.com/example/CVE-2024-54152-poc.git
cd CVE-2024-54152-poc
Docker 컨테이너를 빌드하고 실행합니다:
docker build -t vulnerable-app .
docker run -p 8080:8080 vulnerable-app
악성 페이로드를 전송합니다: 제공된 Go 또는 Python 스크립트를 사용하여 페이로드를 전송할 수 있습니다.
Go 사용:
go run poc.go
Python 사용:
python3 poc.py
서버는 페이로드를 실행하고 id 명령의 결과를 반환하여 임의 코드 실행을 입증해야 합니다.
이 취약점을 완화하려면 Angular Expressions를 버전 1.4.3 이상으로 업데이트하세요. 또는 __proto__에 대한 접근을 전역적으로 비활성화하거나 함수가 하나의 인수로만 사용되도록 할 수 있습니다.