
CVE-2022-42889 Text4Shell에 대한 설정 및 익스플로잇 재현
전체 익스플로잇 설정 및 재현 보고서를 찾으려면 CVE-2022-42889-Project Vulnerability Exploitation Report 파일을 참조하십시오. 익스플로잇을 빌드하고 실행하는 데 사용된 VM은 이 리포지토리에 포함되어 있지 않습니다.
CVE-2022-42889 Text4Shell에 대한 설정 및 익스플로잇 재현.
CVE-2022-42889는 'Text4Shell'로도 알려진, Apache Commons Text 라이브러리의 심각한 취약점입니다. 이 라이브러리는 Java 애플리케이션에서 텍스트 처리 및 표준 JDK(Java Development Kit)의 텍스트 처리 기능에 추가 기능을 제공하기 위해 자주 사용됩니다. 2018년부터의 Apache Commons Text 라이브러리 버전 1.5부터 1.9까지 영향을 받는 것으로 보고되었습니다. 이 취약점은 StringSubstitutor 클래스 내의 안전하지 않은 입력 처리로 인해 발생하며, 공격자가 라이브러리의 문자열 보간(string interpolation) 기능을 악용할 수 있게 합니다. 악의적으로 조작된 입력을 처리할 때 원격 코드 실행(RCE)이 발생할 수 있어, 이 라이브러리에 의존하는 애플리케이션에 심각한 위험을 초래합니다. 이에 따라 CVE-2022-42889는 심각한 취약점으로 간주되어 CVSS 3.x 기본 점수 9.8을 받았으며, 영향을 받는 시스템에 완전한 시스템 손상을 포함한 심각한 영향을 미칠 수 있습니다.
이 취약점은 Java 기반 애플리케이션에서 악용될 가능성 때문에 악명 높은 Log4Shell(CVE-2021-44228) 및 Spring4Shell(CVE-2022-22965) 취약점과 비교되었습니다. Log4Shell과 Spring4Shell은 가장 기본적인 사용 사례에서도 취약했지만, Apache Commons Text 라이브러리의 모든 사용자가 영향을 받는 것은 아닙니다. 라이브러리가 특정 방식으로 사용되어야 공격 표면이 노출되고 취약점이 악용 가능해지기 때문입니다.
익스플로잇 데모는 cyberhack255의 GitHub 개념 증명을 활용하며, 이는 익스플로잇 실행에 필요한 모든 스크립트와 도구를 제공합니다. 아래는 익스플로잇이 진행되는 방식에 대한 간략한 설명입니다.
text4shell-poc.jar)로 패키징된 Java 애플리케이션을 실행하기 위해 Docker 컨테이너를 설정하는 Dockerfile을 사용합니다. Alpine Linux 기반의 공식 OpenJDK 8 런타임 이미지를 사용하여 최소한의 경량 환경을 제공합니다. 이 파일은 데모 중에 bash 스크립팅을 가능하게 하기 위해 bash를 설치합니다. 익스플로잇 실행 중 컨테이너에 외부에서 접근할 수 있도록 포트 8080이 노출됩니다.
이 PoC는 Apache Commons Text 라이브러리의 문자열 치환 메커니즘을 악용하는 악성 페이로드를 제작하는 데 중점을 둡니다. 페이로드는 StringSubstitutor.createInterpolator() 메서드를 호출하여 룩업 키 스크립트를 대상으로 합니다. 이 데모에서는 페이로드가 Docker 내부에 원격으로 새 파일을 생성합니다.