FCKeditor, CKeditor, SmartEditor2.0, GEditor, RainEditor, DaumEditor, TinyMCE Editor, EZEditor 등 8개 대상...최신 업데이트 버전 설치, 업데이트 중단 에디터는 제품별 파일 검사 방식 제안
[보안뉴스 김영명 기자] 웹 에디터(Web Editor)는 인터넷 홈페이지를 전문적인 컴퓨터 언어 프로그래밍의 공부 없이도 손쉽게 제작할 수 있도록 도와주는 홈페이지 전문 저작 도구를 말한다. 홈페이지를 제작하기 위해서는 인터넷 언어인 HTML을 기반으로 작성해야 하는데, 다양한 명령어를 통해 문자와 그림, 동영상 등을 통합해 간편하게 제공하는 웹 에디터의 활용도가 높아지고 있다.

[이미지=utoimage]
한국인터넷진흥원(KISA)은 중소기업 침해사고 피해지원 서비스 사업 수행 중 홈페이지에 기반한 악성코드 유포 및 개인정보 유출, 해킹 경우지 악용 등의 주요 원인이 웹 에디터 프로그램의 취약점으로 확인됨에 따라 이에 대처하기 위한 웹 에디터별 보안 가이드를 발표했다.
이번에 발표한 웹 에디터 목록은 △FCKeditor △CKeditor △SmartEditor2.0 △GEditor △RainEditor △DaumEditor △TinyMCE Editor △EZEditor 등 8개다.
△FCKeditor
먼저, FCKeditor는 CKSource가 자바스크립트 언어로 개발한 웹 에디터이며, FCKeditor에 대한 8개 취약점은 설계상의 결함이기 때문에 최신 버전으로 업데이트가 필요하다.

▲FCKeditor 취약점[이미지=KISA]
FCKeditor의 취약점은 파일 업로드 취약점, XSS 취약점, 파일 노출 및 실행 취약점 등 3개 취약점이 있다. 먼저 ‘파일 업로드 취약점’은 웹셸과 같은 실행파일을 업로드한 후 원격에서 실행시키는 취약점을 의미한다. 대부분 업로드되는 파일에 대한 확장자 검사 과정이 없거나, 우회하기 쉬운 경우 발생한다. 웹 서버별 실행 가능 확장자는 IIS(aps, aspx, cgi, cer), PHP(php, php3, cgi, cer), JAVA(jsp, cer) 등이며, FCKeditor 2.2 버전 이하가 영향을 받는다. 이를 위한 해결 방안은 최신 업데이트 적용, 샘플파일 제거 및 경로 변경, 화이트리스트 기반 확장자 검사, 디렉터리 실행권한 제거, 파일명 랜덤 함수 추가 등이 있다.
‘XSS 취약점’은 원격 공격자가 지정되지 않은 벡터를 통해 임의의 웹 스크립트 또는 html을 삽입해 사용자의 브라우저에 이를 실행시키는 취약점으로, 모든 버전에 영향을 받고 있다. 이를 위한 해결 방안은 입출력값 검증 및 무효화, 보안 라이브러리 사용 등이 있다.
‘파일 노출 및 실행 취약점’은 접근 권한이 없는 디렉토리와 파일의 내용이 노출되거나 외부의 악성 스크립트를 실행하는 취약점으로, FCKeditor 2.6.4 버전 이하에서 영향이 있다. 해결 방안은 사용자 입력값 검증, 파일 접근에 대한 하드코딩, 시스템 하드닝 등이 있다.
△CKeditor
CKeditor는 콘텐츠를 웹 페이지나 온라인 애플리케이션에 직접 작성할 수 있게 하는 위지위그 리치 텍스트 에디터로 CKSource가 개발했다. CKeditor의 취약점은 탭내빙(Tabnabbing) 취약점, XSS 취약점, 우회공격 취약점, 이미지 업로드 취약점 등 4개 취약점이 있다.

▲CKeditor 취약점[이미지=KISA]
탭내빙이란, html 문서 내에서 특정 링크를 클릭했을 때 새롭게 열린 탭에서 기존의 문서인 location을 피싱 사이트로 변경해 정보를 탈취하는 공격 기술이다. 탭내빙 공격은 메일 등 오픈 커뮤니티에서 사용할 수 있다. 탭내빙은 사용자가 페이지에서 아무런 행위를 하지 않아도 사용자의 눈을 피해 열린 탭 중 하나를 피싱 페이지로 로드한다. 이 취약점은 CKEditor 4.5.11 미만 버전에서 영향을 받으며, 대응방안은 html 문서 내 링크 안에 noopener, noreferrer 속성 추가를 권고하면 가능하다. 또한, XSS 취약점은 CKEditor 4 버전 4.16.1로 버전을 업그레이드하는 것이 권고된다.
CKeditor은 html 처리 핵심 모듈에서 우회공격 취약점이 발견됐으며, 4.18.0 이전 버전인 CKEditor 4의 모든 플러그인에 영향을 줄 수 있다. 이 취약성을 통해 콘텐츠 검사를 받지 않고 잘못된 형식의 html을 주입하고 자바스크립트 코드가 실행될 수 있다. 우회공격 취약점에 대한 대응방안은 현재까지 4.18.0 이상 버전으로의 패치 이외에 알려진 것은 없다.
이미지 업로드 취약점은 웹 사이트의 미흡한 설정을 이용해 서버에서 실행 가능한 스크립트 파일을 업로드하고, 직접 시스템 내부명령어 실행 또는 외부 연결로 제어하는 취약점이다. 이 취약점은 이미지 업로드 소스 코드가 미흡한 경우 버전에 관계없이 영향을 받는다. 이 취약점에 대한 대응방안은 CKEditor를 이용하는 웹 사이트마다 서로 다를 수가 있다.
△SmartEditor2.0
네이버 SmartEditor 2.0은 전문화된 글쓰기와 함께 포토 및 동영상 업로드 기능, 주제별 템플릿 및 포스트 레이아웃과 네이버만의 전문 DB 첨부 기능이 더해졌다. 네이버 SmartEditor 2.0의 취약점 유형은 XSS, file_uploader_html5.php의 null byte injection file_uploader.php의 리다이렉트, 사진첨부 샘플의 null byte injection, 파일 업로드 등이 있다. 해당 취약점은 파일 업로드 취약점, XSS 취약점 등이 있다.

▲네이버 SmartEDITOR 2.0 취약점[이미지=KISA]
‘파일 업로드 취약점’은 SmartEditor를 수정 없이 그대로 사용하는 경우 홈페이지 해킹에 의해 홈페이지 변조, DB 정보 유출이나 공격자가 웹셸을 업로드해 시스템에 침투할 수 있어 주의해야 한다. 해당 웹에디터는 SmartEditor2.0 Basic(2.3.3) 및 이전버전에서 영향을 받는다. 대응방안은 샘플파일 제거 및 경로 변경, 업로드 파일 검증 코드 추가 및 수정 등이 있다.
‘XSS 취약점’은 원격 공격자가 지정되지 않은 벡터로 임의의 웹 스크립트 또는 html을 삽입해 사용자 브라우저에서 실행시키는 취약점이다. 이 취약점은 모든 버전에서 영향을 받는다.
해당 취약점의 대응방안으로는 버전 2.8.2.3 이후부터 client-side xss filter라는 기능이 추가됐기 때문에 최신 업데이트를 하면 된다. 다만, 업데이트 적용 후 iframe, embed 등 일부 태그를 제거하고 있는데, 이를 원하지 않으면 소스 코드를 일부 수정하면 된다.
△GEditor
G-Editor는 웹에서 사용할 수 있는 위지윅 에디터 프로그램으로, php 기반 오픈소스 설치형 인터넷 게시판 프로그램이다. G-Editor의 알려진 주요 취약점은 파일 업로드 취약점이 있으며, 영향을 받는 버전은 G-Editor 1.0.0이다.

▲G-Editor 취약점[이미지=KISA]
G-Editor의 업로드 파일 검사는 파일 시그니처만을 근거로 진행해, 시그니처를 조작하면 업로드 검사를 우회할 수 있는 취약점이 있다. 파일 검사는 ‘G-Editor’ 디렉토리 내의 upload.php 내에서 처리되며 getlmageSize() 함수를 통해 추출한 content-trpe 값을 ‘image/pnp’, ‘image/jpeg’, ‘image/gif’와 비교하는 방식으로 검사를 진행한다.
G-Editor는 2007년 11월에 나온 최초 버전인 v1.0.0 이외의 후속 버전이 없어 총 1개 버전이 영향을 받는다. 해당 취약점의 대응방안은 기존 시그니처 기반의 파일 검사 외에 확장자 및 파일명 길이 검사, null-byte 문자열 검사 등 구문을 추가해 기존 검사 방식을 보충했다.
△RainEditor
RainEditor는 2004년 12월에 phpschool이라는 웹사이트에서 1.0 버전으로 공개됐으며, 2008년 3월에 버전 10.0으로 업데이트가 진행된 이후 아직 더 이상 새로운 업데이트는 없다.
RainEditor의 주요 취약점은 파일 업로드 취약점이 있으며, RainEditor 2.0 이하의 버전에 영향을 받게 된다. RainEditor의 업로드 파일 검사는 업로드된 파일의 사이즈만을 검사해 500Kbyte 이하의 파일이면 허용되는 것으로 확인된다. 웹셸은 일반적으로 파일 사이즈가 작기 때문에 공격자는 웹셸을 업로드할 때 제약이 없다.

▲RainEditor 취약점[이미지=KISA]
RainEditor 공격자는 악성 프로그램을 업로드할 때 파일 검사를 우회하기 위해 확장자 조작, 파일 시그니처 변조, Null-Byte 문자열 사용과 다중 확장자 사용 등의 기법을 사용한다. 따라서 이러한 우회 기법에 대응하기 위한 구문을 추가해 파일 검사 방식을 보충했다.
△DaumEditor
DaumEditor는 2007년 나왔으며 UCC 제작에 최적화된 위지윅 기반의 웹 편집기다. 이 에디터는 메일, 카페, 블로그 등의 기본 편집기로 사용되며 2016년 3월에 업데이트가 중단됐다.
DaumEditor의 주요 취약점으로는 파일 업로드 취약점이 있으며, 모든 버전에 영향을 주고 있다. 파일 업로드 취약점은 웹 에디터의 파일 첨부 기능을 이용해 웹셸과 같은 실행 파일을 업도르한 후 원격에서 실행시키는 취약점을 의미한다. DaumEditor는 기본적인 파일 업로드 기능이 없으며, 취약점은 사용자가 업로드 파일의 확장자 검사를 소홀히 할 때 발생한다.

▲DaumEditor 취약점[이미지=KISA]
DaumEditor는 이미지 업로드 샘플 파일을 기본으로 제공하지 않기 때문에 이미지 업로드 취약점은 없다. 파일 업로드 취약점에 대한 대응방안은 첫 번째로 업로드되는 파일의 확장자를 검증해 악성파일의 서버에서 업로드 또는 실행을 차단할 수 있다. 두 번째는 업로드 파일명을 난수화한 후 서버에 저장하면 공격자가 업로드한 악성파일의 외부 호출을 막을 수 있다.
△TinyMCE Editor
TinyMCE Editor는 LGPL로 공개된 오픈소스 소프트웨어로 HTML textarea 필드나 기타 HTML 요소들을 에디터 인스턴스로 변환한다. TinyMCE는 리액트, Vue.js, AngularJS 등의 자바스크립트 라이브러리와 Joomla!, 워드프레스 등 콘텐츠 관리 시스템과의 연동을 돕는다.

▲TinyMCE Editor 취약점[이미지=KISA]
TinyMCE Editor의 알려진 주요 취약점은 파일 업로드 취약점이 있다. 이 취약점은 파일 첨부 기능을 이용해 웹셸과 같은 실행 파일을 업로드한 후 원격에서 실행시키는 취약점을 의미한다. 버전에 관계없이 이미지 업로드 소스코드가 미흡한 경우 취약점이 나타나며, 해당 웹에디터를 이용하는 웹사이트마다 취약점 대응방안도 다를 수 있다.
△EzEditor
EzEditor는 다양한 포맷과 PDF 문서의 열람, 편집, 보안 등 효율적인 업무 및 전자문서 활용이 가능한 솔루션이다. EzEditor는 2015년 12월 0.2.6 버전을 끝으로 업데이트가 중단됐다.

▲EzEditor 취약점[이미지=KISA]
EzEditor의 알려진 주요 취약점은 파일 업로드 취약점이 있으며, 0.1.1부터 0.2.5까지 모든 버전에 걸쳐 나타나고 있다. 공격자는 서버 전용 스크립트(PHP, JSP, .NET)를 이용해 웹셸을 제작하고 이를 게시판 첨부파일에 업로드할 수 있다.
EzEditor의 취약점에 대한 해결방안은 첨부된 파일의 확장자를 검증하는 코드를 추가해 공격자가 악성파일을 업도르하는 것을 사전에 확인하고 예방할 수 있다. 이에 대한 검증방식은 ‘BlackList 차단’ 방식보다는 ‘WhiteList 허용’ 방식이 더 효과적이다.
[김영명 기자(boan@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>