[하루한줄] CVE-2021-27219: GLib의 integer overflow 취약점
URL
GHSL-2021-045: Integer Overflow in GLib - CVE-2021-27219
Target
테스트된 버전
- Ubuntu 20.04 (x86_64) : 버전 2.64.6-1
- CentOS Stream (x86_64) : 버전 2.56.4-9
- archlinux (x86_64) : 2.66.4-2
Explain
64비트 플랫폼의 glib에서 암시적 형 변환으로 인한 integer overflow 취약점이 발견되어 세부 정보가 공개되었습니다.
취약점은 데이터로부터 GBytes 객체를 생성하는 g_bytes_new() 함수에 존재합니다.
GBytes * g_bytes_new (gconstpointer data, gsize size)
{
g_return_val_if_fail (data != NULL || size == 0, NULL);
//integer overflow
return g_bytes_new_take(g_memdup (data, size), size);
}
64bit 자료형인 gsize
형 size
를 g_memdup
함수의 두 번째 인자로 사용합니다.
//g_memdup 함수 원형
g_memdup(gconstpointer mem, guint byte_size);
그러나 g_memdup
은 해당 인자를 32bit 자료형 guint
으로 받아 암시적 형 변환이 이루어집니다. 이로 인해 훨씬 작은 데이터 버퍼를 포함하는 GBytes 객체를 반환하고 이는 memory corruption 취약점으로 이어질 수 있습니다.
해당 취약점의 패치 히스토리는 https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1926/commits 에서 확인 가능합니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.