El incidente se originó por un bug de coherencia de cache DMA en el driver qca-nss-dp de Qualcomm, utilizado en el Access Point (AP) TP-Link EAP770. Este bug permitía que líneas de cache sucias, remanentes de usos previos de buffers de paquetes, sobrescribieran partes de paquetes recién recibidos en memoria. La función SFE/PPE (Software/Hardware Fast Path Engine) del AP, responsable de la aceleración de tráfico y el recálculo de checksums, recalculaba el checksum TCP sobre los datos ya corruptos. Esto resultaba en segmentos TCP con checksums válidos pero payloads dañados, que eran aceptados por la pila TCP del cliente pero rechazados por capas superiores como TLS o SSH debido a fallos en la verificación de MAC.

Las salvaguardas fallaron en múltiples niveles. Primero, el hardware ARM64 de Qualcomm no garantiza la coherencia de cache DMA de la misma manera que x86, lo que expone este tipo de bugs si el software no realiza el mantenimiento de cache adecuado. Segundo, el driver de Qualcomm, al reciclar buffers de paquetes, omitía la invalidación completa de la cache bajo la suposición errónea de que el 'fast transmit path' ya había realizado una invalidación suficiente, lo cual no era cierto para todo el rango del buffer. Tercero, la falta de soporte y actualizaciones de firmware por parte de TP-Link para un producto 'End-of-Life' impidió una solución oficial, forzando al usuario a una escalada de privilegios para mitigar el problema.

La imposibilidad de deshabilitar la funcionalidad SFE/PPE sin acceso de root, combinada con la ausencia de un mecanismo de actualización de firmware para la versión específica del dispositivo, creó una situación donde la única vía para restaurar la integridad de los datos fue explotar una vulnerabilidad de kernel (CVE-2022-0185) para obtener privilegios y aplicar la configuración necesaria. Esto subraya una falla en la gestión del ciclo de vida del producto y la seguridad, donde un bug de bajo nivel en el hardware/firmware requiere una intervención de seguridad de alto nivel por parte del usuario final para ser resuelto.