
CVE-2023-44452, CVE-2023-51698: 인기 있는 Linux 배포판에 영향을 미친 CBT 파일 파싱 인자 주입 취약점
MATE, Cinnamon 및 일부 Xfce 데스크톱 환경을 사용하는 인기 Linux 운영 체제에 영향을 미치는 치명적인 원클릭 RCE/명령 주입 취약점입니다.
영향을 받는 운영 체제:
Linux Mint Kali Linux (보안 전문가, 연구자 사이에서 인기 있는 OS) Parrot OS (보안 전문가, 연구자 사이에서 인기 있는 OS) Ubuntu-Mate Xubuntu Fedora Cinnamon Fedora Mate Manjaro Mate Manjaro Cinnamon Ubuntu Kylin (중국 공식 Ubuntu) Kylin OS V10 (중국 정부 부문에서 사용된다고 알려진 OS)
그 외 MATE, Cinnamon 및 일부 Xfce 데스크톱 환경.
영향을 받는 소프트웨어 구성 요소: Atril 문서 뷰어(MATE 환경의 기본 문서 리더이자 인기 있는 문서 리더 중 하나)와 Xreader 문서 뷰어(Linux Mint의 기본 문서 리더)의 최신 버전을 포함한 모든 버전
취약점 요약:
이 취약점은 원격 공격자가 Linux Mint Xreader의 영향을 받는 설치 환경에서 임의 코드를 실행할 수 있게 합니다. 이 취약점을 악용하려면 사용자 상호 작용이 필요하며, 대상이 악성 페이지를 방문하거나 악성 파일을 열어야 합니다.
구체적인 결함은 CBT 파일 파싱 과정에 존재합니다. 이 문제는 시스템 호출을 실행하기 전에 사용자가 제공한 문자열에 대한 적절한 검증이 부족하여 발생합니다. 공격자는 이 취약점을 활용하여 현재 사용자의 권한으로 코드를 실행할 수 있습니다.
이 취약점은 Atril과 Xreader에서 코믹북 문서(.cbr, .cbz, .cbt, .cb7)를 처리하는 잘못된 코드 세그먼트로 인해 발생합니다. 코믹북 문서는 내부에 이미지를 포함하는 아카이브일 뿐입니다. 여기서의 취약점은 TAR 아카이브인 악의적으로 제작된 CBT 문서를 사용하여 악용할 수 있습니다.
근본 원인 - 두 문서 뷰어 모두의 취약한 코드 세그먼트 (comics-document.c):
static const ComicBookDecompressCommand command_usage_def[] = {
/* RARLABS unrar */
{"%s p -c- -ierr --", "%s vb -c- -- %s", NULL , FALSE, NO_OFFSET},
/* GNA! unrar */
{NULL , "%s t %s" , "%s -xf %s %s" , FALSE, NO_OFFSET},
/* unzip */
{"%s -p -C --" , "%s %s" , NULL , TRUE , OFFSET_ZIP},
/* 7zip */
{NULL , "%s l -- %s" , "%s x -y %s -o%s", FALSE, OFFSET_7Z},
/* tar */
{"%s -xOf" , "%s -tf %s" , NULL , FALSE, NO_OFFSET},
/* UNARCHIVER */
{"unar -o -" , "%s %s" , NULL , FALSE, NO_OFFSET}
};
위 코드를 살펴보면 압축 해제에 사용되는 셸 명령이 있음을 알 수 있습니다. /* tar */ 섹션을 보면 실제로 "tar -xOf -tf "라는 셸 명령을 호출합니다. 이는 CBT 문서 내부의 각 이미지를 보거나 로드하기 위한 것입니다. 이 동작은 tar 프로그램의 '--checkpoint-action' 옵션을 사용하여 CBT 문서 내부의 이미지 중 하나를 '--checkpoint-action=EXEC=bash -c "whoami>/tmp/who.txt";.jpg'와 같은 이름으로 지정함으로써 대상에서 임의 명령을 실행하도록 악용할 수 있습니다.
이 취약점은 이미 2017년에 Evince 문서 뷰어(GNOME의 기본 문서 리더)에서 발견되었습니다. Atril과 Xreader는 Evince의 포크이므로 이 취약점은 Atril과 Xreader 모두에 존재했습니다. Atril 팀은 당시 이름에 "--checkpoint-action="이 포함된 CBT 파일이 발견되면 Atril 프로세스를 종료하는 코드 조각을 추가하여 취약점을 수정했습니다. 다음은 해당 패치(comics-document.c) (983행)입니다:
extract_argv (EvDocument *document, gint page)
{
ComicsDocument *comics_document = COMICS_DOCUMENT (document);
char **argv;
char *command_line, *quoted_archive, *quoted_filename;
GError *err = NULL;
if (g_strrstr (comics_document->page_names->pdata[page], "--checkpoint-action="))
{
g_warning ("File unsupported\n");
gtk_main_quit ();
}
보시다시피 페이지/파일 이름에 "--checkpoint-action="이 표시되면 콘솔에 "File Unsupported" 메시지를 출력하고 종료합니다. 이는 빈 파일이나 매우 작은 이미지 파일에서만 작동하며, 더 많은 바이트를 가진 더 큰 파일을 제공하면 "gtk_main_quit ();" 함수가 실패하여 계속 실행되므로 주입된 임의 명령이 실행된다는 것을 확인했습니다.
MATE 데스크톱 환경, 많은 XFCE 및 경량 데스크톱 환경(Kali, Parrot, Xubuntu, Ubuntu Mate, Kylin, Fedora Mate, Manjaro Mate와 같은 OS 포함)에서는 링크/URL을 보내는 것만으로 이 취약점을 악용할 수 있습니다. 이러한 운영 체제/환경에는 Atril이 있고 Atril에는 atril-previewer라는 추가 구성 요소가 있어 문서를 열거나 클릭하지 않아도 익스플로잇이 트리거되기 때문입니다. 공격자는 대상 사용자가 웹페이지를 방문할 때 제작된 CBT 파일을 대상 시스템에 즉시 다운로드하는 웹페이지를 만들 수 있으며, 최신 Firefox 브라우저는 요즘 기본적으로 사용자 확인 없이 자동으로 다운로드하므로 사용자가 다운로드 디렉토리로 이동하면 페이로드가 실행되어 공격자에게 셸을 제공합니다.
Linux Mint(Cinnamon 데스크톱 환경)에서는 Linux Mint가 Xreader를 사용하고 Xreader에는 프리뷰어가 없으므로 대상 사용자가 페이로드를 트리거하려면 문서를 열어야 합니다.
이 제출물에는 완전히 작동하는 익스플로잇과 데모 비디오가 zip 아카이브(doctTar-inject_exploit.zip)에 포함되어 있습니다.
데모 비디오의 시나리오는 다음과 같습니다: 공격자 머신 - Kali Linux 피해자 머신 - Kali Linux 최신 버전 (2023.3) 피해자가 내 익스플로잇 스크립트로 생성된 악성 URL/링크를 방문함
익스플로잇 종속성: poppler-utils Linux 머신(Kali 권장)에서 익스플로잇 스크립트를 실행하기 전에 poppler-utils를 설치하십시오. 설치 방법: apt install poppler-utils.