안녕하세요. 한국정보보호교육센터입니다.

Weekly 보안동향에서는 주간 보안 이슈와 함께 보안 키워드를 함께 소개하고 있습니다.

Apache Commons Text에서 원격 코드 실행 취약점이 발견되었습니다. 이 취약점은 CVE 식별자 CVE-2022-42889를 부여받았으며 ACT4Shell 또는 Text4Shell로 불립니다.

영향받는 버전은 Apache Commons Text 1.5 ~ 1.9 이며, 현재 최신 Apache Commons Text 버전 1.10.0에서는 취약점이 수정되었습니다. (참고: NVD)

공격자는 무엇을 할 수 있나요?

공격자는 문자열 대체 함수를 사용하여 DNS, URL, Script를 조회하는 Key에 접근할 수 있으며, 이를 악용하여 악성 페이로드를 피해자 서버로 보내어 원격 코드를 실행할 수 있습니다.

KeyLookup영향받는 버전설명
DNSdnsStringLookup()1.8 이상DNS 레코드 확인
URLurlStringLookup()1.6 이상URL에서 값 로드
ScriptscriptStringLookup()1.5 이상명령 실행

취약한 부분은 어디인가요?

Apache Common Text 라이브러리(org.apache.commons.text)StringSubstitutor 클래스에서 StringSubstitutor.createInterpolator() 메서드에 의해 생성된 객체 Interpolator를 사용하는 코드에서 취약점이 발견되었습니다.

그림. Using Interpolation

따라서 공격자는 다음과 같이 “${prefix:name}”문자열을 서버로 전달하여 악의적인 행위를 할 수 있습니다.

그림. Text4Shell 공격 흐름도 [출처: zscaler]

취약점은 어떻게 개선되었나요?

이 라이브러리를 사용하는 대부분의 사용자들은 StringSubstitutor 클래스를 사용하지 않거나 일반적으로 신뢰할 수 없는 값을 입력값으로 받지 않기 때문에 취약한 경우가 발견되기는 쉽지 않다고 합니다.

그러나 잠재적인 위협이 존재하고 또다른 위협이 발생될 수 있기 때문에 취약한 버전을 사용하는 사용자는 취약점이 패치된 버전인 1.10.0버전으로 업그레이드하는 것이 좋습니다.

Apache Commons Text 1.10.0 버전에서는 DEFAULT_STRING_LOOKUPS_PROPERTY 가 구성되어 있으며, 다음과 같이 영향을 받는 문자열 조회 키(dns, url, script)를 포함하지 않습니다.



KISEC과 함께 알아볼 보안 키워드

RCE

원격 코드 실행(RCE)은 공격자가 시스템 취약성을 사용하여 임의의 명령이나 코드를 원격에서 수행하는 작업을 뜻합니다.


관련 기사

The 'Text4Shell' vulnerability is not a sequel to Log4Shell

Apache Commons Text Remote Code Execution Vulnerability