오늘은 삼성 갤럭시 S24,삼성 갤럭시 S23(Galaxy S24/S23 Explain) 대상으로 하는 취약점 CVE-2024-49415 취약점에 대해 알아보겠습니다. 일단 갤럭시 S23, S24 시리즈뿐만 아니라 안드로이드 12, 안드로이드 13, 안드로이드 14 운영체제를 사용하고 Zero-Click RCE(제로클릭RCE)로 악용될 가능성이 있는 OOB Write 취약점이 발견되었고 해당 취약점 코드에 대한 공개가 되었으며 당연히 보안 업데이트도 같이 진행이 되었습니다.
취약점은 Monkey’s Audio(APE) 파일의 디코더인 libsaped.so의 saped_rec 함수에 존재하게 됩니다. Monkey의 오디오는 알고리즘 및 파일 형식 위한 무손실 오디오 데이터 압축입니다.
공개된 취약점 코드는 다음과 같습니다.
#include <stdio.h>
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "avformat.h"
#include "demux.h"
#include "internal.h"
#include "apetag.h"
/* The earliest and latest file formats supported by this library */
#define APE_MIN_VERSION 3800
#define APE_MAX_VERSION 3990
#define MAC_FORMAT_FLAG_8_BIT 1 // is 8-bit [OBSOLETE]
#define MAC_FORMAT_FLAG_CRC 2 // uses the new CRC32 error detection [OBSOLETE]
#define MAC_FORMAT_FLAG_HAS_PEAK_LEVEL 4 // uint32 nPeakLevel after the header [OBSOLETE]
#define MAC_FORMAT_FLAG_24_BIT 8 // is 24-bit [OBSOLETE]
#define MAC_FORMAT_FLAG_HAS_SEEK_ELEMENTS 16 // has the number of seek elements after the peak level
#define MAC_FORMAT_FLAG_CREATE_WAV_HEADER 32 // create the wave header on decompression (not stored)
#define APE_EXTRADATA_SIZE 6
typedef struct APEFrame {
int64_t pos;
int64_t size;
int nblocks;
int skip;
int64_t pts;
} APEFrame;
typedef struct APEContext {
/* Derived fields */
uint32_t junklength;
uint32_t firstframe;
uint32_t totalsamples;
int currentframe;
APEFrame *frames;
/* Info from Descriptor Block */
int16_t fileversion;
int16_t padding1;
uint32_t descriptorlength;
uint32_t headerlength;
uint32_t seektablelength;
uint32_t wavheaderlength;
uint32_t audiodatalength;
uint32_t audiodatalength_high;
uint32_t wavtaillength;
uint8_t md5[16];
/* Info from Header Block */
uint16_t compressiontype;
uint16_t formatflags;
uint32_t blocksperframe;
uint32_t finalframeblocks;
uint32_t totalframes;
uint16_t bps;
uint16_t channels;
uint32_t samplerate;
} APEContext;
분석
samsung.software.media.c2 서비스는 미디어 스트리밍을 위해 dmabuf를 0x120000 고정 크기로 할당하고 디코더는 APE 파일의 Header Block 중 blocksperframe 필드를 앞서 할당된 dmabuf로 복사를 하게 돼 있습니다.
LibsapedExtractor에서 추출한 최대 블록 스퍼 프레임 값도 0x120000으로 제한되지만 SAPED_REC는 쓸 수 있음
입력의 샘플 당 바이트가 24인 경우 최대 3 * BlocksperFrame 바이트 아웃
큰 블록 스퍼 프레임 크기가 큰 APE 파일 이이 버퍼를 실질적으로 오버플로 흐를 수 있음을 의미하게 됨
Samsung S24 APE 디코더 Out-of-Bounds Write 취약점 요약
취약한 모듈:libsaped.so(Monkey’s Audio APE 디코더)
취약한 함수:saped_rec
취약점 유형:Out-of-Bounds Write (Heap Buffer Overflow)
영향받는 버퍼:dmabuf,크기 0x120000 (1,228,800 바이트)
원인:
blocksperframe 값은 최대 0x120000으로 제한됨
하지만, bps (bits per sample) 값이 24일 경우 saped_rec 은 최대 3 * blocksperframe 바이트를 버퍼에 기록함.
결과적으로 최대 0x240000 바이트(2,457,600 바이트)를 기록하려 하면서 dmabuf를 2배 이상 초과하는 Out-of-Bounds Write 발생
공격 가능성
완전 원격(0-click) RCE 취약점
Google Messages 앱이 RCS (Rich Communication Services) 기능을 활성화한 상태에서
음성 메시지를 사용자가 열어보지 않아도 자동으로 디코딩하여 트랜스크립션 서비스가 실행됨
공격자가 조작된 APE 파일을 메시지로 보내면 사용자가 아무런 조작을 하지 않아도 디코더가 자동 실행되어 취약점이 트리거
가능한 공격 시나리오
원격 코드 실행 (RCE):조작된 APE 파일을 보내고 Out-of-Bounds Write를 통해 메모리 조작->임의 코드 실행
데이터 유출: Heap Overflow를 활용해 Google Messages 또는 미디어 서비스의 메모리를 스캔
디바이스 탈취:공격자가 커널 Exploit과 연계하여 전체 시스템 권한 탈취 가능
삼성 갤럭시 S24, 갤럭시 S23 시리즈 또는 삼성 갤럭시 스마트폰 사용자들은 긴급 보안 업데이트를 적용해야 하며 RCS를 비활성화
보안 업데이트 및 삼성 갤럭시 스토어에서 삼성 앱들을 업데이트 하거나 해당 지원이 끊긴 구형 삼성 갤럭시 시리즈 같은 경우
설정->오른쪽 상단 돋보기 클릭->채팅+ 관리 검색을 해서 해당 기능을 꺼버리면 됩니다. OK~부모님 스마트폰이 갤럭시 폰이다 그러면 해당 조처를 해주는 것도 좋은 방법일 것입니다.
'소프트웨어 팁 > 보안 및 분석' 카테고리의 다른 글
김수키(Kimsuky)로 추정이 되는 카카오 고객센터 피싱 메일(2024.12.16) (0) | 2025.01.31 |
---|---|
Kimsuky(김수키) 로 추측이 되는 부가가치세 확정신고 납부 통지서 피싱 메일 분석(2025.1.20) (0) | 2025.01.30 |
딥씨크(DeepSeek) 개인정보,기기,폰번호 등 수집 및 중국 서버 저장 (0) | 2025.01.29 |
의료기관을 노린 가짜 YouTube(유튜브) 로 리디렉션 피싱 메일-11.eml (0) | 2025.01.28 |
북한 해킹 단체 Konni APT(Advanced Persistant Threat) 만든 악성코드-오류발견 수정신고 제출 요청 안내(국세징수법 시행규칙).hwp.lnk(2025.1.7) (0) | 2025.01.24 |
트럼프 틱톡 미국 구매자를 찾는 기한을 틱톡금지법 90일간 유예 (0) | 2025.01.23 |
Kimsuky(김수키)에서 만든 공적조서(개인,양식)로 위장한 악성코드 (0) | 2025.01.21 |
윈도우 10 KB5049981,윈도우 11 KB5050009 & KB5050021 보안 업데이트 (0) | 2025.01.16 |