심층 분석: MOVEit 제로데이 취약점 자세히 알아보기

게시일: 2023년 9월 30일
by Laura Verheyde
사례 연구

심층 분석: MOVEit 제로데이 취약점 자세히 알아보기

게시일: 2023년 9월 30일
by Laura Verheyde
리소스 보기
리소스 보기

소프트웨어 공급망 사이버 공격이 점점 더 일반화되면서 미국 정부 차원의 법 개정이 잇따르고 있으며, 기업들은 광범위한 위험 프로필을 완화하고 소프트웨어 품질을 빠르게 개선하기 위해 분주히 움직이고 있습니다. 올해에만 파일 공유 서비스와 관련된 제로데이 취약점이 세 건이나 발견되었으며, 그 중 가장 규모가 크고 파괴력이 큰 것은 MOVEit 대량 익스플로잇입니다.

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

이 광범위한 침해의 촉매제는 SQL 인젝션 취약점 클러스터였으며, 결국 MITRE로부터 10점 만점에 9.8점의 심각도 점수를 받았습니다. SQL 인젝션은 90년대 후반부터 보안 전문가들의 골칫거리였으며, 상당히 간단한 수정 방법임에도 불구하고 최신 소프트웨어에 계속 침투하여 위협 행위자에게 민감한 데이터에 대한 레드카펫을 제공하고 있습니다. 

MOVEit 시나리오는 많은 개발자와 앱보안 전문가가 이전에 경험했던 것과는 조금 다르며, 여기에서 실시간 시뮬레이션을 통해 SQLi 공격 기술을 테스트해 볼 수 있습니다:

>>>MOVEit 미션 플레이하기

취약점: SQL 인젝션

프로그레스 소프트웨어의 MOVEit 파일 전송 애플리케이션을 익스플로잇하는 데 정확히 어떻게 SQL 인젝션이 사용되었나요?

CL0P 랜섬웨어 그룹은 SQL 인젝션 취약점 CVE-2023-34362를 악용하여 MOVEit의 데이터베이스에 제한 없이 무단으로 액세스할 수 있었습니다. 이를 통해 시스템 설정 검색, SQL 데이터베이스 열거, MOVEit 전송 시스템에서 파일 검색, 전체 관리 권한이 있는 새 계정 생성 등 여러 가지 고위험하고 중요한 프로세스를 실행할 수 있는 웹 셸인 LEMURLOOT를 설치할 수 있었습니다.

이 공격 벡터는 잘못된 코딩 패턴의 지속적인 사용으로 인한 비교적 단순한 오류의 결과일 수 있지만, 기업 차원에서 지속적인 문제를 야기할 수 있는 잠재력은 엄청납니다. 

MOVEit 익스플로잇과 비교하여 악성 SQL을 삽입하고 실행하는 방법을 시뮬레이션하는 이 SQLi 설명서를 살펴봅시다:
↪CF_200D↩

이 쿼리 문자열 및 변수:
↪CF_200D↩

문자열 이메일주소 ="contact@scw.com";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";


을 입력하면 다음과 같은 쿼리가 표시됩니다:
↪CF_200D↩

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'";
↪f_200D↩

... 그리고 악의적으로 조작된 입력:
↪CF_200D↩

문자열 emailAddress = "contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";


↪CF_200D↩가 됩니다.

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--'";
↪f_200D↩

비행 중에는 어떻게 보이나요?

문자열 연결로 인해 입력이 SQL 구문으로 해석되고 있습니다. 먼저 작은따옴표가 추가되어 SELECT 문이 유효한 SQL 구문인지 확인합니다. 다음으로 세미콜론이 추가되어 첫 번째 문을 종료합니다. 

이 작업이 완료되면 유효한 DELETE 문이 추가되고 그 뒤에 하이픈 두 개를 추가하여 후행 문자(작은따옴표)를 주석 처리합니다. 예를 들어 악성 SQL이 사용자의 역할이나 비밀번호를 업데이트하는 경우 UPDATE 문을 쉽게 추가할 수 있습니다.

이 플레이 가능한 미션에서 직접 체험해 보세요:
↪CF_200D↩

>>> 플레이 더 무브잇 미션
↪CF_200D↩

비교적 간단하지만 SQLi는 여전히 강력한 공격 벡터이며 너무 흔한 공격 벡터입니다. MOVEit의 경우, 이 익스플로잇을 통해 백도어를 설치하여 피해를 입혔으며, 비슷한 심각도의 추가 공격이 이어졌습니다.

SQL 인젝션 위험을 어떻게 완화할 수 있을까요?

비즈니스 운영의 일부로 무브잇을 사용하는 모든 기업은 프로그레스 소프트웨어에서 권장하는 해결 방법을 반드시 따라야 합니다. 여기에는 긴급 수준의 우선 순위로 보안 패치를 적용하는 것이 포함되지만 이에 국한되지는 않습니다.

SQL 인젝션에 대한 전반적인 내용은 종합 가이드를 참조하세요.

안전한 코드를 작성하고 위험을 완화하는 방법에 대해 자세히 알아보고 싶으신가요?

더 많은 무료 코딩 가이드라인에 관심이 있으시다면 보안 코딩 모범 사례를 파악하는 데 도움이 되는 Secure Code Coach를 확인해 보세요.

리소스 보기
리소스 보기

저자

로라 베르헤이드

Laura Verheyde는 Secure Code Warrior 의 소프트웨어 개발자로서 취약점을 연구하고 Missions 및 코딩 연구소의 콘텐츠를 제작하는 데 주력하고 있습니다.

더 알고 싶으신가요?

블로그에서 최신 보안 코딩 인사이트에 대해 자세히 알아보세요.

Atlassian의 광범위한 리소스 라이브러리는 안전한 코딩 숙련도를 확보하기 위한 인적 접근 방식을 강화하는 것을 목표로 합니다.

블로그 보기
더 알고 싶으신가요?

개발자 중심 보안에 대한 최신 연구 보기

광범위한 리소스 라이브러리에는 개발자 중심의 보안 코딩을 시작하는 데 도움이 되는 백서부터 웨비나까지 유용한 리소스가 가득합니다. 지금 살펴보세요.

리소스 허브

심층 분석: MOVEit 제로데이 취약점 자세히 알아보기

게시일: 2024년 1월 22일
로라 베르헤이데

소프트웨어 공급망 사이버 공격이 점점 더 일반화되면서 미국 정부 차원의 법 개정이 잇따르고 있으며, 기업들은 광범위한 위험 프로필을 완화하고 소프트웨어 품질을 빠르게 개선하기 위해 분주히 움직이고 있습니다. 올해에만 파일 공유 서비스와 관련된 제로데이 취약점이 세 건이나 발견되었으며, 그 중 가장 규모가 크고 파괴력이 큰 것은 MOVEit 대량 익스플로잇입니다.

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

이 광범위한 침해의 촉매제는 SQL 인젝션 취약점 클러스터였으며, 결국 MITRE로부터 10점 만점에 9.8점의 심각도 점수를 받았습니다. SQL 인젝션은 90년대 후반부터 보안 전문가들의 골칫거리였으며, 상당히 간단한 수정 방법임에도 불구하고 최신 소프트웨어에 계속 침투하여 위협 행위자에게 민감한 데이터에 대한 레드카펫을 제공하고 있습니다. 

MOVEit 시나리오는 많은 개발자와 앱보안 전문가가 이전에 경험했던 것과는 조금 다르며, 여기에서 실시간 시뮬레이션을 통해 SQLi 공격 기술을 테스트해 볼 수 있습니다:

>>>MOVEit 미션 플레이하기

취약점: SQL 인젝션

프로그레스 소프트웨어의 MOVEit 파일 전송 애플리케이션을 익스플로잇하는 데 정확히 어떻게 SQL 인젝션이 사용되었나요?

CL0P 랜섬웨어 그룹은 SQL 인젝션 취약점 CVE-2023-34362를 악용하여 MOVEit의 데이터베이스에 제한 없이 무단으로 액세스할 수 있었습니다. 이를 통해 시스템 설정 검색, SQL 데이터베이스 열거, MOVEit 전송 시스템에서 파일 검색, 전체 관리 권한이 있는 새 계정 생성 등 여러 가지 고위험하고 중요한 프로세스를 실행할 수 있는 웹 셸인 LEMURLOOT를 설치할 수 있었습니다.

이 공격 벡터는 잘못된 코딩 패턴의 지속적인 사용으로 인한 비교적 단순한 오류의 결과일 수 있지만, 기업 차원에서 지속적인 문제를 야기할 수 있는 잠재력은 엄청납니다. 

MOVEit 익스플로잇과 비교하여 악성 SQL을 삽입하고 실행하는 방법을 시뮬레이션하는 이 SQLi 설명서를 살펴봅시다:
↪CF_200D↩

이 쿼리 문자열 및 변수:
↪CF_200D↩

문자열 이메일주소 ="contact@scw.com";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";


을 입력하면 다음과 같은 쿼리가 표시됩니다:
↪CF_200D↩

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'";
↪f_200D↩

... 그리고 악의적으로 조작된 입력:
↪CF_200D↩

문자열 emailAddress = "contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";


↪CF_200D↩가 됩니다.

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--'";
↪f_200D↩

비행 중에는 어떻게 보이나요?

문자열 연결로 인해 입력이 SQL 구문으로 해석되고 있습니다. 먼저 작은따옴표가 추가되어 SELECT 문이 유효한 SQL 구문인지 확인합니다. 다음으로 세미콜론이 추가되어 첫 번째 문을 종료합니다. 

이 작업이 완료되면 유효한 DELETE 문이 추가되고 그 뒤에 하이픈 두 개를 추가하여 후행 문자(작은따옴표)를 주석 처리합니다. 예를 들어 악성 SQL이 사용자의 역할이나 비밀번호를 업데이트하는 경우 UPDATE 문을 쉽게 추가할 수 있습니다.

이 플레이 가능한 미션에서 직접 체험해 보세요:
↪CF_200D↩

>>> 플레이 더 무브잇 미션
↪CF_200D↩

비교적 간단하지만 SQLi는 여전히 강력한 공격 벡터이며 너무 흔한 공격 벡터입니다. MOVEit의 경우, 이 익스플로잇을 통해 백도어를 설치하여 피해를 입혔으며, 비슷한 심각도의 추가 공격이 이어졌습니다.

SQL 인젝션 위험을 어떻게 완화할 수 있을까요?

비즈니스 운영의 일부로 무브잇을 사용하는 모든 기업은 프로그레스 소프트웨어에서 권장하는 해결 방법을 반드시 따라야 합니다. 여기에는 긴급 수준의 우선 순위로 보안 패치를 적용하는 것이 포함되지만 이에 국한되지는 않습니다.

SQL 인젝션에 대한 전반적인 내용은 종합 가이드를 참조하세요.

안전한 코드를 작성하고 위험을 완화하는 방법에 대해 자세히 알아보고 싶으신가요?

더 많은 무료 코딩 가이드라인에 관심이 있으시다면 보안 코딩 모범 사례를 파악하는 데 도움이 되는 Secure Code Coach를 확인해 보세요.

우리는 당신에게 우리의 제품 및 / 또는 관련 보안 코딩 주제에 대한 정보를 보낼 수있는 귀하의 허가를 바랍니다. 우리는 항상 최대한의주의를 기울여 귀하의 개인 정보를 취급 할 것이며 마케팅 목적으로 다른 회사에 판매하지 않을 것입니다.

양식을 제출하려면 '분석' 쿠키를 활성화하세요. 완료되면 언제든지 다시 비활성화할 수 있습니다.