xmin. guest@xmin ~ $
~/ $
ALSong ASL 파일 파싱 Stack Overflow 취약점 분석
[취약점 제보] 2026년 6월 14일

ALSong ASL 파일 파싱 Stack Overflow 취약점 분석

ALSong이 ASL 음악 파일을 파싱할 때 `atoi("-1")` 결과를 검증하지 않고 `memcpy` 크기로 사용해 stack 영역으로 비정상적인 대량 복사가 발생한 사례입니다.

alsongaslestsoftALSongCommon.dllstack-overflowmemcpyfuzzingkisa

개요

ALSong v3.53에서 .asl 음악 파일을 파싱하는 과정 중 stack overflow로 이어질 수 있는 입력값 검증 누락 취약점을 확인했다.

취약점은 ALSongCommon.dll 의 CASLFile::Read 함수 내부에서 발생한다. 특정 필드를 문자열로 읽은 뒤 atoi 로 정수 변환하고, 이 값을 별도 검증 없이 memcpy 의 세 번째 인자인 복사 크기로 전달하는 흐름이다.

문제는 입력 문자열이 "-1" 일 때 더 명확하게 드러난다. atoi("-1") 은 -1 을 반환하지만, memcpy 의 size 인자는 sizet 라서 음수 값이 매우 큰 unsigned 값으로 해석된다. 결과적으로 stack 인접 영역에 대해 비정상적으로 큰 복사가 시도된다.

KISA 취약점 제보 포털에는 다음 기록으로 제보했다.

KISA 제보 링크: https://knvd.krcert.or.kr/report/records/detail?id=68859e857614ed0001f00ead

제조사: 이스트소프트

소프트웨어: 알송

버전: v3.53

취약 파일: ALSongCommon.dll

취약 함수: ALSongCommon!CASLFile::Read+0x471

공격 유형: 버퍼 오버플로우

영향: 코드 실행 가능성

발생 환경

Software : ALSong v3.53 Module : ALSongCommon.dll OS : Windows 11 Home 24H2 OS Build : 26100.4652 Architecture : 64-bit OS, x64-based processor Experience : Windows Feature Experience Pack 1000.26100.128.0 PoC : id00034300EXCEPTIONACCESSVIOLATION.asl

취약점은 한국정보기술연구원 화이트햇 스쿨 2단계 팀 프로젝트 중, “퍼징을 활용한 소프트웨어 취약점 분석”을 진행하다 발견했다. 대상 프로그램에 대해 퍼징을 수행했고, 생성된 크래시 파일을 WinDbg와 디스어셈블리 기준으로 분석했다.

ASL 샘플 특징

첨부한 PoC는 ASL 플레이리스트 계열 파일이며, 초반부에 ALSONGPL 문자열과 함께 조작된 필드가 포함된다.

00000000: 3c 41 4c 53 4f 4e 47 5f 50 4c 3e da 5b 49 4f 20 00000010: 3d 31 2e 49 00 cf 3e 69 00 31 00 5c 00 4f 00 6e ... 000000c0: da 0d 2d 31 7c 30 7c 30 7c 51 77 31 30 84 46 7c

샘플 내부에서는 -100... 형태의 필드가 확인된다. 이 -1 문자열이 파싱 중 정수 변환을 거쳐 복사 크기 계산에 영향을 준다.

크래시

크래시 지점은 MSVCR90!memcpy+0x5a 내부의 rep movs 명령이다.

eax=0dcff78d ebx=00000000 ecx=3ffffd40 edx=00000003 esi=0dd0028a edi=... eip=6822ae7a esp=0dcff4c4 ebp=0dcff4cc

MSVCR90!memcpy+0x5a: 6822ae7a f3a5 rep movs dword ptr es:[edi], dword ptr [esi]