[하루한줄] CVE-2021-21784: Accusoft ImageGear의 OOB write를 통한 임의 코드 실행 취약점
URL
Accusoft ImageGear JPG format SOF marker processing out-of-bounds write vulnerability
Target
- Accusoft ImageGear ≤ 19.8
Explain
Accusoft의 ImageGear 라이브러리에서 JPG 포맷의 파일을 처리할 때 발생하는 OOB write 취약점을 통한 임의 코드 실행 취약점의 세부 정보가 공개되었습니다. ImageGear는 이미지 변환, 생성, 편집, 주석 등을 제공하는 이미지 툴킷이며 DICOM, PDF, Microsoft Office 등 100개 이상의 형식을 지원합니다.
취약점은 JPG파일 로드 과정의 handle_color_channel_with_high_precision
함수에서 발생합니다.
void handle_color_channel_with_high_precision(undefined4 param_1,int width,short *param_3,
short *param_,short *param_5,short *raster_buffer,int param_7,int param_8)
{
[...]
if (0 < width) {
raster_buffer = raster_buffer + 2;
do {
...
if (short_3 < 0){
short_3 = 0;
}
else {
if (0xfff < short_3)
short_3 = 0xfff;
}
raster_buffer[-2] = (short)short_3;
if (short_2 < 0){
short_2 = 0;
}
else {
if (0xfff < short_2)
short_2 = 0xfff;
}
raster_buffer[-1] = (short)short_2;
if (short_1 < 0){
short_1 = 0;
}
else {
if (0xfff < short_1)
short_1 = 0xfff;
}
*raster_buffer = (short)short_1;
...
raster_buffer = raster_buffer + 3;
width = width + -1;
} while (width != 0);
}
return;
}
취약점이 발생하는 함수는 width
의 크기만큼 반복문을 돌며 raster_buffer
에 복사합니다. width
는 JPG 파일의 헤더 요소인 SOF(Start Of Frame, JPG 파일의 크기 및 샘플링 정보) 마커에서 가져오는데, raster_buffer
와 width
의 크기 검사를 하지 않습니다. 따라서 해커가 SOF 마커를 조작해 raster_buffer
의 크기가 SOF 마커에서 파싱 한 width
에 3을 곱한 값보다 작으면 buffer overflow로 인해 범위를 벗어난 쓰기가 가능하며 원격 코드 실행으로 이어질 수 있습니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.