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

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

ASL 파일 파싱 중 delimiter 처리 함수가 `-1`을 반환하고, 이 값이 검증 없이 `memcpy` 크기 계산에 사용되어 heap 영역으로 비정상 복사가 발생한 사례입니다.

alsongaslestsoftALSongCommon.dllheap-overflowmemcpywinaflkisa

개요

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

취약점은 ALSongCommon.dll 의 CASLFile::Read 함수 내부에서 발생한다. 파일을 "," 기준으로 분리하거나 특정 구간 길이를 계산하는 함수가 조건에 따라 -1 을 반환하는데, 이 반환값을 충분히 검증하지 않고 buffer allocation과 memcpy 크기 계산에 사용한다.

결과적으로 작은 heap buffer가 만들어진 뒤, memcpy 가 비정상적으로 큰 크기의 복사를 시도하면서 heap 영역을 넘어 접근한다.

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

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

제조사: 이스트소프트

소프트웨어: 알송

버전: v3.53

취약 파일: ALSongCommon.dll

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

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

영향: 서비스 거부

발생 환경

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 : sample.asl

취약점은 화이트햇 스쿨 2단계 팀 프로젝트 중, WinAFL 기반 퍼징을 약 24시간 수행하며 발견했다. 이후 생성된 크래시 샘플을 WinDbg와 디스어셈블리 기준으로 분석했다.

ASL 샘플 특징

첨부한 PoC는 크기가 155바이트인 작은 ASL 파일이다.

00000000: 3c 41 4c 53 4f 4e 47 5f 50 4c 3e 20 3c 56 45 52 00000010: 53 49 4f 4e 3d 31 2e 33 3e 0d 0a 3c 41 4c 53 4f 00000020: 4e 47 5f 49 4e 46 3e 31 30 35 ac 0d 0a 31 7c 30

문자열 기준으로는 다음과 같은 구조가 보인다.

<ALSONGPL> <VERSION=1.3> <ALSONGINF>105 10011C...

샘플 내부의 구분자와 길이 정보가 파서의 특정 분기를 타게 만들고, 그 과정에서 하위 함수가 -1 을 반환한다.

크래시

크래시 지점은 stack overflow 케이스와 마찬가지로 MSVCR90!memcpy+0x5a 내부다.