jQuery DOM 조작 메서드(html, append 등)를 통한 원격 크로스 사이트 스크립팅(XSS) 취약점 (CVE-2020-11023)
실무자 핵심 요약 (Executive Summary)
SECOPS ASSESSMENTjQuery 버전 1.0.3 이상 3.5.0 미만
신뢰할 수 없는 HTML 데이터를 .html(), .append() 등 jQuery DOM 조작 메서드에 전달할 경우, 사전 필터링(Sanitization)을 거쳤더라도 악성 스크립트가 실행되어 세션 탈취 및 페이지 변조가 발생할 수 있습니다
jQuery 버전을 최신 안정 버전(3.5.0 이상)으로 업그레이드하거나, 안전한 HTML 파싱 옵션을 적용하십시오
영향받는 제품 및 버전 범위
권장 패치 및 임시 완화(Workaround) 가이드
패치 및 우회 명령어1. 공식 보안 패치 및 버전 업그레이드 명령어
가장 확실한 해결책은 jQuery를 3.5.0 이상 버전으로 업그레이드하는 것입니다.
# npm을 사용하는 프로젝트의 경우
npm install jquery@3.5.0 --save
# yarn을 사용하는 프로젝트의 경우
yarn upgrade jquery@3.5.02. 패치 전 임시 완화(Workaround) 및 접근 제어 설정
즉각적인 라이브러리 업그레이드가 어려운 경우, jQuery의 HTML 파싱 방식을 변경하는 패치를 전역적으로 적용할 수 있습니다. jQuery 3.5.0 미만 버전에서 jQuery.htmlPrefilter 함수를 재정의하여 입력 값을 변형 없이 그대로 반환하도록 설정합니다.
// jQuery 로드 직후 실행되는 공통 스크립트에 아래 코드를 추가합니다.
if (typeof jQuery !== 'undefined' && jQuery.fn) {
jQuery.htmlPrefilter = function(html) {
return html;
};
}3. 침해 흔적(IoC) 및 로그·버전 점검 스크립트
프로젝트 내에 취약한 jQuery 버전이 포함되어 있는지 확인하기 위해 아래의 셸 스크립트를 활용하여 의존성을 점검할 수 있습니다.
# Node.js 프로젝트 내 취약한 jQuery 버전 검색
npm list jquery 2>/dev/null | grep -E 'jquery@[1-2]\.|jquery@3\.[0-4]\.'
# 소스 코드 내 CDN 링크 또는 로컬 파일 버전 확인
grep -rnI 'jquery' ./src/ | grep -E '1\.[0-9]+\.[0-9]+|2\.[0-9]+\.[0-9]+|3\.[0-4]\.[0-9]+'내 GitHub/GitLab 레포지토리에 이 취약한 패키지가 숨어 있는지 30초 만에 스캔하세요
간접 의존성(Transitive Dependency)에 포함된 취약점은 수동 확인이 불가능합니다. Git 연동 한 번으로 취약 버전 탐지부터 호환성을 유지하는 최소 버전 업그레이드 PR까지 자동 생성하세요.
취약점 발생 원리 및 공격 메커니즘
1. 취약점 개요 및 발생 원인 (Root Cause)
본 취약점은 jQuery의 내부 HTML 파싱 로직이 특정 HTML 태그를 처리하는 과정에서 발생합니다. jQuery는 .html(), .append() 등 DOM 조작 메서드를 실행할 때, 브라우저 간 호환성을 위해 입력된 HTML 문자열을 내부적으로 가공(정규식을 통한 태그 래핑 및 변환)합니다. 이 과정에서 신뢰할 수 없는 HTML 소스를 정화(Sanitize)한 후 전달하더라도, jQuery의 내부 파싱 규칙 오동작으로 인해 필터링을 우회하는 악성 요소가 생성되어 DOM에 삽입되는 취약점이 존재합니다.
2. 공격 메커니즘 및 익스플로잇 시나리오
공격자는 일반적인 XSS 필터링 솔루션(예: DOMPurify 등)이 정상적인 태그로 판단하여 허용한 특정 HTML 구조(예: <option> 태그 내부에 중첩된 스크립트 요소 등)를 전송합니다. jQuery의 구버전 파서가 이 요소를 처리할 때, 브라우저의 HTML 파싱 특성과 결합되면서 닫는 태그가 잘못 재구성되거나 숨겨진 스크립트가 활성화됩니다. 결과적으로 정화 단계를 통과한 안전한 코드가 jQuery 메서드를 거치면서 악성 스크립트로 변환되어 실행됩니다.
3. 비즈니스 및 인프라 파급 영향
본 취약점은 CISA KEV(Known Exploited Vulnerabilities) 목록에 등재될 만큼 실제 공격에 자주 악용되는 고위험 취약점입니다. 공격 성공 시 피해자의 브라우저 컨텍스트에서 임의의 자바스크립트가 실행되어 세션 쿠키 탈취, CSRF(크로스 사이트 요청 위조) 공격 수행, 피싱 페이지 삽입을 통한 사용자 자격증명 탈취 등 비즈니스 신뢰도에 치명적인 손상을 입힐 수 있습니다.
공식 보안 권고문 및 참조 링크
In jQuery versions greater than or equal to 1.0.3 and before 3.5.0, passing HTML containing <option> elements from untrusted sources - even after sanitizing it - to one of jQuery's DOM manipulation methods (i.e. .html(), .append(), and others) may execute untrusted code. This problem is patched in jQuery 3.5.0.
자주 묻는 실무 질문 (FAQ — CVE-2020-11023)
FAQQ1. CVE-2020-11023 취약점의 위험도와 실제 악용 가능성은 어느 정도입니까?
CVE-2020-11023의 기본 점수는 CVSS 6.1 (MEDIUM)이며, 향후 30일 내 실제 악용 확률을 나타내는 EPSS 점수는 84.9%입니다. 현재 미국 CISA KEV(실제 악용이 확인된 취약점 카탈로그)에 등재되어 있으므로 최우선 긴급 패치가 필요합니다.
Q2. CVE-2020-11023에 영향을 받는 벤더와 제품은 무엇입니까?
주요 영향 벤더는 jquery이며, 대상 컴포넌트는 jquery입니다. 상세 영향 범위: jQuery 1.0.3 이상 3.5.0 미만 버전 전체
Q3. 서버 재기동이나 정규 패치 전 즉시 적용할 수 있는 완화 조치(Workaround)는 무엇입니까?
[권장 조치] jQuery 버전을 최신 안정 버전(3.5.0 이상)으로 업그레이드하거나, 안전한 HTML 파싱 옵션을 적용하십시오 본문의 패치 및 우회 명령어 섹션과 자가 점검 체크리스트를 참고하여 외부 노출 포트를 차단하거나 WAF 탐지 규칙을 선적용하십시오.
CVE-2020-11023 사내 보안 패치 공지문 · CISO 경영진 보고서 초안 자동 생성
클릭 한 번으로 사내 이메일·노션·결재 문서에 바로 붙여넣을 수 있는 공식 보고서 양식을 생성합니다.
🔗 함께 점검해야 할 동일 벤더·스택 연관 취약점 (jquery)
동일 카테고리 전체 보기 →Perl WebDyne 프레임워크 교차 사이트 스크립팅(XSS) 취약점 (CVE-2026-78190) 분석 및 대응 가이드
[영향 대상] Perl WebDyne 모듈 버전 2.014 이상 3.022 미만을 사용하는 웹 애플리케이션
PostyBirb Plus 크로스 사이트 스크립팅(XSS) 취약점 (CVE-2026-120190) 보안 권고
[영향 대상] PostyBirb Plus 3.1.75 이하 버전
GitLab CE/EE 미인증 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-97229)
[영향 대상] GitLab CE/EE 19.2(19.2.8 미만), 19.3(19.3.5 미만), 19.4(19.4.2 미만) 버전
GitLab CE/EE 미인증 임의 파일 읽기 취약점 보안 권고 (CVE-2026-85706)
[영향 대상] GitLab CE/EE 18.7 버전부터 19.3.1 버전 사이의 특정 릴리즈 사용자
일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독
보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.