- Windows 이미지, 문서 대표 뷰어 종류 알아보기 (+ 예상되는 취약점)2024년 09월 04일 00시 04분 38초에 업로드 된 글입니다.작성자: 방세연
윈도우 가상머신에 다음과 같은 다양한 뷰어를 다운받아보았다.
모두 다 사용하지 않을 수도 있고, 버전을 다운하게될 수도 있지만 일단 도구를 받아 감을 잡을 수 있도록 했다.
나타날 수 있는 뷰어 취약점
Cisco가 2024년 2월 경 발표한 내용인데, pdf 뷰어로 가장 많이 사용되는 Adobe Acrobat Reader에서만 7개의 뷰어 취약점을 발견했다는 ... 내용이다.
이처럼 가장 많이 사용되는 pdf, 이미지 뷰어 조차 아직도 취약점에 노출되어있을 수 있다는 의혹이 생겼다.
대표적으로 일어날 수 있는 취약점 종류를 적어보도록 하겠다.
1. 버퍼 오버플로우 (Buffer Overflow)
관련 자료
https://www.fortiguard.com/encyclopedia/ips/28115
https://www.exploit-db.com/exploits/24463
https://www.cvedetails.com/cve/CVE-2008-5492/
https://www.syxsense.com/syxsense-securityarticles/graphics_software/syx-1001-12162.html
링크를 클릭해보면 보안이 철저하지 못한 뷰어에서 다양하게 Buffer Overflow 취약점이 나타나고 있으며, 심지어 Adobe Acrobat Reader조차 Buffer Overflow Vulnerability가 나타난 적이 있다. 즉, 가장 대표적으로 나타날 수 있는 취약점이다.
나타나는 버퍼 오버플로우 취약점 종류를 보면 Stack 기반, Heap 기반 두 가지로 나뉜다.
Heap Buffer Oveflow
heap 영역에서는 주로 포인터를 통해 동적 메모리 할당을 하고 이를 다시 돌려준다.
따라서 함수 포인터와 같은 부분을 조작해 취약점을 발생시킬 수 있다.
RET 변조가 불가능하고, 주로 함수 포인터와 같은 중요한 데이터 구조를 덮어씌어 오버플로우를 발생시킨다.
Stack Buffer Overflow
stack 영역에서는 지역 변수와 매개 변수가 위치하며 함수가 호출될 때 데이터가 스택에 쌓이고, 종료되면 데이터가 제거된다. stack이 버퍼를 초과 사용할 경우 (한계치를 넘을 경우) 복귀 주소를 조작하거나 의도하지 않은 코드가 실행될 수 있는 취약점이 생길 수 있다.
2. 포맷 스트링 취약점 (Format String Vulnerability)
https://github.com/advisories/GHSA-xg26-px52-wxv6
https://github.com/advisories/GHSA-7pf5-h579-9v94
https://github.com/MaherAzzouzi/CVE-2022-36163
https://github.com/atxsinn3r/atxsinn3r.github.io/blob/master/writeups/format_string_leak.md
프로그램에 입력된 문자 데이터를 명령어로 받아들일 때 나타나는 취약점이다.
만약 외부에서 입력된 서식 문자를 검증하지 않은 채로 포맷 스트링 그대로 사용할 경우, 공격자가 원하는 RET 위치로 이동하거나, 특정한 메모리 내용을 확인할 수 있게 되거나, 임의 코드가 실행될 수 있도록 한다.
( %d %f %c %s %x %n 등의 패턴을 사용 )
3. 문서형 악성코드 ( 악성 pdf, 이미지 파일 실행 )
malicious file execution
여기서 굉장히 많은 문서형 악성코드 사례를 확인할 수 있다.
https://attack.mitre.org/techniques/T1204/002/
특정한 파일 문서를 뷰어로 열면 악성 코드 실행으로 이어지게 유도하거나, 사용자 권한을 탈취한다.
공격자는 다양한 파일 형식을 사용할 수 있으며 파일 실행 유도를 위해 다양한 사회공학적 기법을 사용한다.
또한 문서나 이미지 내용에서 공격을 확인할 수 없도록 오브젝트 형태 등으로 위장하거나 숨겨 탐지 하기가 까다로울 수 있다.
4. 범위를 벗어난 읽기 취약점 (Out-of-bounds read vulnerability)
구글링을 해보니 현재까지도 상당히 발생되고 있는 취약점인 것 같아서 가져왔다.
특히 Cisco에서 발표한 자료를 보면 adobe reader에서 2024년에 발견된 취약점만 3~4건이 발견되었다.
어떤 뷰어 프로그램이 특정한 파일을 읽으려고 할 때, 메모리의 유효 범위를 초과해 읽으려고 하면 충돌이나 오류를 발생시킬 수 있다. 이와같은 문제가 일어나는 이유는 뷰어가 잘못된 인덱스 계산을 하거나, 잘못된 포인터 연산을 하는 등의 행동을 했을 때 발생한다. 스택/ 힙 오버플로우는 `범위를 벗어난 쓰기`이므로 out-of-bound read 취약점과는 다르다. 다만 이 취약점은 `범위를 벗어난 읽기`이므로, 메모리 내용이 변경되지는 않지만 시스템의 중요한 정보 (암호화 키, 메모리 주소, 추가 공격에 사용할 수 있는 정보 등..)를 얻을 수 있다는 위험이 있다.
5. 원격 코드 실행 (RCE 취약점)
악의적인 TTF fonts를 처리할 때 RCE 취약점이 발생하기도 했다. 생각보다 뷰어 프로그램이 취약점에 많이 노출되어 있나보다.
공격자로부터 전달된 조작된 위험 PDF나 이미지 파일을 열면, 공격자가 악성 코드를 원격으로 실행할 수 있게 하는 취약점이다. 공격자가 피해자의 시스템을 제어할 수 있게되거나, 중요 권한을 얻을 수 있다는 위험이 존재한다.
https://www.datanet.co.kr/news/articleView.html?idxno=170550
이 기사를 확인해보면 dompdf라는 PDF 변환기에서도 악성 font 데이터에 대한 RCE 내용이 나타난다. 글꼴 캐시 데이터에 .php 파일 확장자를 가진 악성 글꼴을 저장할 수 있도록 속여서 원격 코드를 실행할 수 있다는 내용이다.
6. 정수 오버플로우 취약점 (Integer Overflow)
산술 연산을 할 때 변수가 특정 범위를 초과하면 예상하지 못한 방식으로 뷰어가 돌아가는 경우에 나타나는 취약점이다.
예를들면 8비트 부호 없는 정수(unsigned)는 0부터 255까지의 값을 나타낸다.
그런데 만약 signed 값인데 최대값을 넘겨버리면 정수 오버플로우 취약점이 발생하게 되고, 변수는 최대값으로 다시 돌아가거나 음수가 되어버릴 것이다. 따라서 코드 흐름은 원하지 않는 방식으로 흘러갈 것이고, 공격자는 이 취약점을 이용해 코드의 실행을 조작할 우려가 생기는 것이다.
취약할 가능성이 높은 PDF, 이미지 뷰어 고려 사항
1. 복잡도가 높은 뷰어
복잡하고 코드가 길수록 버그나 취약점이 생길 수 있는 가능성이 높아진다.
특히 이미지 뷰어보다 PDF 뷰어가 훨씬 더 높은 복잡도를 가지고 있는 편이다. (왜냐하면 문서에는 이미지, 텍스트, 폰트, 그 밖의 다양한 서명들이 들어가기 때문에 이미지보다 훨씬 더 많은 고려를 해야할 것이다.)
2. 외부 플러그인이나 확장 기능, 라이브러리 사용
타사의 플러그인이나 확장 기능, 라이브러리를 통해 연동하는 뷰어는 외부 엔진을 사용한다. 이때 호환성 면이나 외부의 해당 자료가 취약할 경우 뷰어에도 해당 취약점에 대한 영향이 갈 수 있다. 특히 브라우저 기반 뷰어도 해당한다.
3. 패치가 더딘 뷰어
피드백을 즉시 반영하지 않거나 패치가 오랜 기간 이루어지지 않는 뷰어일 수록 취약점에 노출될 가능성이 높아진다.
상대적으로 패치 규모가 적은 소규모 기업 혹은 오픈 소스 기반의 프로그램은 버그에 대해 노출 위험이 증가할 것이다.
4. JavaScript를 지원하는 뷰어
특정 pdf 뷰어는 pdf 뷰어 안에 있는 자바스크립트 코드를 실행할 수 있다. 이 기능이 포함되어있는 뷰어 취약점이 자주 발생되는 편이다. Buffer Overflow, Format String Vulnerability, Heap Spraying, XSS, Drive-by Download와 같은 취약점이 주로 발생한다.
공격자들의 공격 원리는 pdf에 자바스크립트를 내장해 취약한 뷰어에서 악성 코드를 사용자가 실행하게 하는 것이다.
원래 자바스크립트는 양식이나 문서 형식을 입력하고 검증하거나, 데이터 전송, 동적 콘텐츠 입력 등의 요소를 포함할 수 있게 해준다. 그러나 만약 이를 악용하면 PDF 문서 전역 범위에 위치하는 자바스크립트가 문서가 열릴 때 자동으로 실행되는 점을 이용해서 공격자가 악성 스크립트를 이용해 공격을 할 수 있다.
예를들면 Slim Pdf 뷰어나 Sumatra PDF과 같은 뷰어는 가볍고 단순하기 때문에 취약점의 빈도가 낮을 것이다.
Windows 대표 뷰어 프로그램 알아보기
🌄대표 이미지 뷰어들 (image viewer)
Windows 기본 사진 앱 (Microsoft 사진)
가장 기본적인 Winodws의 이미지 뷰어. 다양한 이미지 포맷 파일을 지원한다.
기본적으로 로컬 파일에 저장된 이미지 파일을 열기때문에 유출 가능성이 적지만, 최근 Google Drive나 OneDrive와 같은 클라우드가 활성화되고 있으므로 SSL, TLS 등을 통해 암호를 강화하고 있다.
하지만 기본적인 기능만 제공하기 때문에 전문적인 사진 편집을 하기는 어렵다.
Microsoft Photos 관련 지난 취약점
CVE-2022-30168 : Remote code execution in Microsoft Photos App
CVE-2023-28291 : Raw Image Extension Remote Code Execution Vulnerability
IrfanView
Windows 운영 체제에서 동작하는 이미지 뷰어로, 가볍다는 (경량 뷰어) 장점을 가지고 있다.
플러그인을 통해 사용자에게 맞춤 형식으로 이미지 뷰어의 기능을 확장할 수 있다.
가볍다는 것이 가장 장점이며 많은 포맷 이미지 파일을 읽을 수 있다는 심플함이 강점인 것 같다.
Infran View 관련 CVE
CVE-2024-6812 : rfanView WSQ File Parsing Out-Of-Bounds Write Remote Code Execution Vulnerability
CVE-2023-24304 : Improper input validation in the PDF.dll plugin of IrfanView v4.60 allows attackers to execute arbitrary code via opening a crafted PDF file.
CVE-2021-46064 : IrfanView 4.59 is vulnerable to buffer overflow via the function at address 0x413c70 (in 32bit version of the binary)
https://www.cvedetails.com/vulnerability-list/vendor_id-317/Irfanview.html
가장 최근인 2024년도에 범위를 벗어난 읽기 취약점이 발생했다. 또한 버퍼 오버플로우 취약점도 발생된 적이 있다.
XnView
가볍다는 장점이 존재하지만 개인용, 교육용으로는 무료로 사용이 가능하고, 그 외의 사용시 부분 유료다.
필자는 무료 버전을 다운받았는데 일반 버전은 유니코드를 지원하지 않는다고 한다.
즉, 유니코드에 한자로 되어있거나 한다면 잘 읽지 못하는 경우가 있다.
하지만 깔끔한 디자인과 기능으로 많은 사람들이 사용하고 있는 것 같다.
이미지 로딩 속도가 매우 준수하며, adobe psd 파일이나 adobe ai 파일도 열 수 있다는 말을 들으니 나도 당장 사용해보고 싶어졌다.
XnView 관련 CVE
CVE-2021-28835 : Buffer Overflow vulnerability in XNView before 2.50, allows local attackers to execute arbitrary code via crafted GEM bitmap file.
CVE-2019-9967 : XnView Classic 2.48 on Windows allows remote attackers to cause a denial of service (application crash) or possibly have unspecified other impact via a crafted file, related to ntdll!RtlPrefixUnicodeString.
CVE-2023-52174 : XnView Classic before 2.51.3 on Windows has a Write Access Violation at xnview.exe+0x3125D6.
https://www.cvedetails.com/vulnerability-list/vendor_id-7902/Xnview.html
FastStone Image Viewer
개인은 물론 기업/상업적 사용도 무료로 가능하며 다양한 이미지 확장자 파일을 실행할 수 있다.
DSLR같은 카메라를 이용한 이미지 확장자 파일이나 Raw file (전문 이미지 파일) 또한 컨버팅이 가능하다.
파일에 있는 사진들을 한눈에 미리보기로 확인할 수 있으며 간단한 색감 보정이나 사이즈 조정과 같은 기능이 있다. 최근에는 자체 내장 플레이어로 동영상 재생도 가능하다. 역시나 마찬가지로 가볍다는 장점이 있다.
FastStone Image Viewer 관련 지난 취약점
CVE-2022-36947 : Unsafe Parsing of a PNG tRNS chunk through 7.5 results in a stack buffer overflow
CVE-2021-26237 : affected by a user mode write access violation at 0x00402d7d, triggered when a user opens or views a malformed CUR file that is mishandled by FSViewer.exe
CVE-2021-26236 : FastStone Image Viewer v.<= 7.5 Stack-based Buffer Overflow
주로 7.5 이하의 버전에서 다양한 취약점 문제가 발생하였다.
https://www.opencve.io/cve?vendor=faststone
Honey View
꿀뷰라고 칭하기도 하며, 반디소프트에서 나온 프로그램이다.
압축된 이미지 파일을 압축 해제 전에 미리 확인해보고 싶을 때 사용도가 높은 이미지 뷰어이다.
편집 기능보다는 이미지 뷰어의 역할에 집중하고 있다. 만화나 그림 작업하거나 보는 분들에게 많이 사용된다.
Honey View 관련 CVE
CVE-2023-4863 : WebP 포맷에서 보안 취약점 발생
https://en.bandisoft.com/honeyview/history/
📕대표 PDF 뷰어들 (PDF Viewer)
SumatraPDF
아무래도 Adobe PDF Reader 과 같은 무겁고 복잡한 프로그램일 수록 취약점이 나타날 수 있는 경우의 수가 더 많아질 수 있다고 들었다. 따라서 Sumatra Viewer은 굉장히 단순하고 가벼운 뷰어에 속한다.
효율적이 좋고 신속하며, 웹 뷰어보다 호환성이 좋다는 것이 이 뷰어의 장점이다.
Sumatra 관련 CVE
CVE-2023-33802 : A buffer overflow in SumatraPDF Reader v3.4.6 allows attackers to cause a Denial of Service (DoS) via a crafted text file.
CVE-2012-5340 : SumatraPDF 2.1.1/MuPDF 1.0 allows remote attackers to cause an Integer Overflow in the lex_number() function via a corrupt PDF file.
CVE-2013-2830 : Use-after-free vulnerability in SumatraPDF Reader 2.x before 2.2.1 allows remote attackers to execute arbitrary code via a crafted PDF file.
https://www.cvedetails.com/product/62114/Sumatrapdfreader-Sumatrapdf.html?vendor_id=21018
Adobe Acrobat
아마 안써본 사람이 유명할 정도로 대중적인 PDF 뷰어이다.
개인, 기업, 상업적 이용 등 그 쓰임에 따라 버전이 Standard, Pro, Acrobat Reader로 나뉘어져 있다. 일단 viewer에 더 집중하고있기 때문에 필자는 Acrobat Reader에 더 활동을 집중해보려고 한다.
보안을 위한 전자 서명을 통해 문서 위조나 변조를 방지하는 중요한 기능을 가지고 있다.
또한 다양한 PDF 관련 플러그인을 지원해 필요한 부분에 마크하거나 하이라이트하는 행동을 할 수 있다.
pdf를 병합하는 툴도 사용해본 적이 있고, 기능이 다양한 만큼 활용도가 매우 높다.
Adobe Acrobat Reader 관련 CVE
CVE-2024-30310 : Acrobat Reader versions 20.005.30574, 24.002.20736 and earlier are affected by an out-of-bounds write vulnerability that could result in arbitrary code execution in the context of the current user.
CVE-2024-20730 : Acrobat Reader versions 20.005.30539, 23.008.20470 and earlier are affected by an Integer Overflow or Wraparound vulnerability that could result in arbitrary code execution in the context of the current user.
CVE-2023-38243 : Adobe Acrobat Reader versions 23.003.20244 (and earlier) and 20.005.30467 (and earlier) are affected by a Use-After-Free vulnerability that could lead to disclosure of sensitive memory.
Use After Free (UAF) 취약점 : Heap은 동적 할당의 구간인데, 동적 할당을 이용해 Heap를 사용하고 Free를 통해 재사용할 경우 해당 취약점이 나타난다. 포인터를 적절하게 초기화하지 않아 Heap 영역을 잘못 다루게 된다면 해당 나타나는 문제이다.
https://www.cvedetails.com/vulnerability-list/vendor_id-53/product_id-497/Adobe-Acrobat-Reader.html
PDF-XChange Editor
굉장히 다양한 기능이 있는 뷰어로서, 초보자부터 전문가까지 넓은 범위의 스펙트럼으로 사용이 가능하다.
뷰어 이미지를 확인해보면 문서 페이지 교체, 삭제, 수정 등의 여러가지 기능들이 포함되어있는 것을 확인할 수 있다.
pdf 문서를 다양한 확장자 파일로 변경할 수 있으며, 주석과 머리글/바닥글 추가 등의 기능이 존재한다.
250개 이상의 기능이 존재한다고 하니 이 글에서 모두 담기는 어려울 정도일 것 같다.
편집에 많이 특화된 뷰어라는 생각이 들었다.
PDF-XChange Editor 관련 CVE
CVE-2024-27327 : PDF-XChange Editor PDF File Parsing Out-Of-Bounds Write Remote Code Execution Vulnerability.
CVE-2024-27323 : PDF-XChange Editor Updater Improper Certificate Validation Remote Code Execution Vulnerability.
CVE-2023-42111 : PDF-XChange Editor JPG File Parsing Out-Of-Bounds Read Remote Code Execution Vulnerability.
알PDF
국산 PDF 뷰어이다. 일단 주요 기능으로는 PDF의 다양한 포맷 변경, 자유로운 편집, 다양한 마크를 통한 문서 검토, 그리고 권한 암호이다. 보안학도임에 권한 암호라는 명칭이 궁금했는데, 문서에 암호를 걸어 다양하게 편집이 어느정도까지 가능하게 할지 수준 정도를 직접 결정할 수가 있다. 이런 기능이 있다는게 조금 신기했다.
보안 관련 기업에서 나온 PDF 뷰어라 보안 성능이 좋을 것으로 예상된다.
Slim PDF Reader
편집보다는 보기 기능을 제공하는 것에 집중한 뷰어이다. Slim 이라는 이름에 걸맞게 뷰어의 시스템 파일 자체도 매우 작은 용량에 불과하고, 매우 신속한 구동 속도를 자랑한다. 정말 부담 없이 설치할 수 있는 뷰어다.
Slim PDF Reader 관련 CVE
CVE-2011-4220 : Slim PDF Reader version 1.0 suffers from a denial of service vulnerability.
이 외의 CVE는 특별이 없어보인다. 단순한 구성의 프로그램일수록 취약점이 나타나는 빈도가 적었다.
Foxit PDF Reader
Windows 뿐만 아니라 iOS, Android, 리눅스 등의 다양한 OS 환경에서 프로그램을 지원한다.
PDF 파일에 댓글을 달거나, 주석을 통해 협업을 하기에 적합해 IT나 다른 기업에서 사랑받고 있다.
그 외에도 AI Assistant, 서명, 호환성 기능 면에서도 우수하니 굉장히 현대적인 PDF 뷰어인 것 같다.
이번 글을 통해 뷰어를 많이 알고 간다..
Foxit Reader 관련 CVE
이 표를 통해 PDF Viewer에서 Overflow, Memory Corruption, sql injection, xss, File inclusion ... 등의 취약점이 나타나고, 그 빈도가 주로 Overflow나 Memory Corruption 취약점에 해당한다는 사실을 알 수 있겠다.
CVE-2018-14295 : allows remote attackers to execute arbitrary code on vulnerable installations of Foxit PhantomPDF Phantom PDF 9.1.5096
CVE-2018-3924 : An exploitable use-after-free vulnerability exists in the JavaScript engine of Foxit Software's Foxit PDF Reader version 9.1.5096.
확인해보니 Foxit Reader에서는 임의의 코드가 실행될 수 있는 취약점이 상당히 다수 발생하였다.
https://www.cvedetails.com/product/16993/Foxitsoftware-Foxit-Reader.html?vendor_id=7654
Google Chrome (웹 pdf 뷰어)
웹 브라우저로 지원하는 pdf 뷰어의 일종이다. Google Chrome 말고도 다양한 브라우저가 pdf 뷰어를 지원한다.
웹에서 다운받은 PDF 파일을 즉시 빠르게 확인하고 싶을 때 가장 많이 사용하는 뷰어이며, 편집과 같은 기능은 기본적으로 제공하고있지 않지만 인쇄기능을 사용하거나 공유기능을 사용할 때 매우 유용하다. 아마 당신또한 평소에도 정말 흔하게 사용하고 있을 것이다.
정말 신기한게 이런 웹 브라우저에서도 취약점은 자주 나타났다. 웹 브라우저도 PDF 뷰어의 취약점을 피해갈 수 없다는 뜻이다.
Google Chrome PDF Reader 관련 CVE
CVE-2023-2931 : Affected by this issue is an unknown code block of the component PDF. The manipulation with an unknown input leads to a use after free vulnerability.
CVE-2012-2862 : An unspecified use-after-free error exists in the PDF viewer
CVE-2012-2863 : An unspecified out-of-bounds write error exists in the PDF viewer.
CVE-2023-1530 : Use after free in PDF in Google Chrome prior to 111.0.5563.110 allowed a remote attacker to potentially exploit heap corruption via a crafted HTML page.
다음글이 없습니다.이전글이 없습니다.댓글