2019년 7월 26일, Nils Emmerich 보안 연구원에 의해 LibreOffice - Python Interpreter Code Execution 취약점이 발견되었다. (CVE-2019-9848)
LibreOffice에는 LibreLogo 라는 Turtle Vector Graphic 제작이 가능한 개발 환경을 제공하는 도구를 내장하고 있는데, 이는 내부적으로 Python 코드로 변환되고 실행되는 구조를 가지고 있다. 해당 취약점은 사용자가 작성한 LibreLogo 스크립트 코드가 내부적으로 Python 코드 변환되는 부분에서 문제점이 발생한다.
[그림 1] LibreOffice
리브레오피스(LibreOffice)는 다양한 플랫폼에서 사용할 수 있는 오피스 제품군으로 마이크로소프트 오피스를 비롯한 주요 오피스 제품군과 호환된다. 2010년 11월 설립된 다큐먼트 재단(The Document Foundation)에서 개발한 무료 오픈 소스 오피스 소프트웨어로 문서 작업, 스프레드 시트, 프레젠테이션 등 여러가지 사무 및 문서 작성에 필요한 기능들을 갖추고 있다. 리브레오피스는 LGPL v3로 배포되는 자유 소프트웨어이며 오픈오피스(OpenOffice)의 포크(fork)이다.
※ 취약점 분석
다음과 같이 Python 코드로 계산기를 실행하는 코드 하단 문구 "Run"에 하이퍼링크로 "LibreLogo:run" 코드가 동작하도록 설정을 하면 취약점에 의해 상단의 Python 코드가 실행된다. 이렇게 만들어진 문서파일은 사용자의 아무런 추가적인 행위없이 해당 문서를 실행하면 Python 코드가 바로 동작한다.
[그림 2] LibreOffice CVE-2019-9848 - 취약점 발생 부분
[그림 3] LibreOffice CVE-2019-9848 - PoC
※ Disclosure Timeline
취약점에 대한 정보 공개를 통해 현재 버전의 LibreOffice 에서 해당 취약점이 수정되었으며, 관련 정보는 CVE-2019-9848 으로 공개되었다. 이에대한 타임라인은 다음과 같다.
16.07.2019 – Public disclosure of vulnerability
01.07.2019 – Published fixed version 6.2.5
05.06.2019 – Vulnerability was assigned CVE-2019-9848.
04.06.2019 – Report of the vulnerability
※ 참고문헌
- https://www.libreoffice.org/about-us/security/advisories/cve-2019-9848
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9848
- https://www.suse.com/security/cve/CVE-2019-9848/
보안관제센터 MIR Team