본문 바로가기

분류 전체보기

CVE-2018-16069 (Floating-point precision errors in Swiftshader blitting) Background Precision error 프로그래밍 언어에서 limited precision arithmetic operation을 수행할 때 precision error가 발생할 수 있습니다. 실존하는 수는 무한한데 컴퓨터는 제한된 공간에 2진수 형식으로 수를 저장하기 때문에, 실제 프로그래머가 의도한 값과 컴퓨터에 저장되는 값이 달라지는 현상입니다. 대표적인 precision error에는 integer overflow가 있습니다. 4바이트 크기의 int형 변수는 2 ** 32가지의 정수만 표현할 수 있는데, 표현 가능한 범위를 넘어가게 되면 overflow가 발생하여 실제 의도한 값과 다른 값이 저장됩니다. 이 글의 버그는 floating-point arithmetic operation에서의..
SEGV analysis found in glog Introduction Google의 오픈소스 라이브러리인 glog를 대상으로 Fuzzing을 수행하던 중 demangling process 과정에서 SEGV(segmentation fault) 관련 crash를 발견하였습니다. 해당 crash는 숫자가 포함되어 있는 mangling된 함수 이름을 demangling하는 과정이 주요 원인이였으며, 잘못된 주소 참조 이후 비교문을 수행하는 과정까지 이어집니다. 최종 분석 결과 crash가 발견되는 지점 이후 오류핸들러가 존재하였기 때문에 보안 취약점으로 이어질 수는 없었습니다. Name Mangling / Deangling 네임 맹글링에 대한 개념을 말씀드리기에 앞서 c++ 언어에는 함수 오버로딩(funcation overloading) 라는 개념이 존재합..