FlawOpen

flawopen.com/Incidents/angle-cross-platform-zero-day-december-2025

● Google / Apple · CVE-2025-14174 · December 2025 · CVSS 8.8 · Haute
Recherche · FlawOpen

CVE-2025-14174 : faille ANGLE dans Chrome et référence Apple

Google a confirmé l’exploitation d’ANGLE dans Chrome. Apple utilise ce CVE pour un autre problème d’initialisation mémoire de WebKit.

💡 Explication en Langage Simple (ELI5)

Une personne recopiant un formulaire dépasse la case prévue et écrit dans l’entrée suivante : c’est une image d’un accès hors limites. Un registre peut aussi réutiliser un numéro pour deux entrées différentes ; le même identifiant ne prouve pas que les défauts sont identiques.

Concepts Clés et Termes

ANGLE
Almost Native Graphics Layer Engine : la bibliothèque open source de Google qui traduit les appels OpenGL ES et WebGL vers des API natives comme Metal, Direct3D et Vulkan.
Backend Metal
Partie d’ANGLE destinée à l’API Metal. Google associe le problème à ANGLE dans Chrome sur Mac, sans nommer la fonction touchée ni le mécanisme du correctif.
Accès hors limites (CWE-787)
Accès hors limites (CWE-787) : opération accédant à la mémoire au-delà des limites prévues d’un tampon. CWE-787 classe plus précisément l’écriture hors limites ; Google n’a pas publié l’opération exacte ni la cause.
Arithmétique vérifiée
Des opérations entières qui signalent un dépassement au lieu de reboucler en silence, comme base::CheckedNumeric dans Chromium et ANGLE.
Zero-day
Zero-day : faille exploitée avant la disponibilité d’un correctif. Google a confirmé l’exploitation du problème ANGLE de Chrome. Apple a décrit séparément une exploitation ciblée de problèmes WebKit dans l’avis iOS 26.2.

Correspondances de référentiels

Chronologie de l'Incident

2025-12-10

Google publie Chrome 143.0.7499.110 pour macOS et indique qu'un exploit de la faille ANGLE circule (ticket Chromium 466192044).

2025-12-12

L’avis d’Apple associe CVE-2025-14174 à l’initialisation mémoire de WebKit et répertorie séparément CVE-2025-43529 pour une corruption mémoire WebKit. Apple relie ce dernier signalement à une possible exploitation ciblée ; cela ne prouve pas une cause commune avec ANGLE dans Chrome. CISA a ajouté CVE-2025-14174 à KEV.

Déroulement de l'Attaque Étape par Étape

Étape 1

Une page piégée atteint la couche graphique

La fiche CVE décrit une page HTML conçue pour déclencher le problème ANGLE dans Chrome sur Mac. Le vecteur CVSS exige une interaction utilisateur : la victime doit ouvrir du contenu web contrôlé par l’attaquant.

Étape 2

ANGLE traduit vers Metal

Google désigne ANGLE comme composant affecté de Chrome. L’avis public ne nomme pas la fonction responsable et ne dit pas que WebKit utilise le même code vulnérable.

Étape 3

De la mémoire hors d'un tampon est accédée

Google décrit un accès mémoire hors limites, sans préciser lecture ou écriture, tampon touché ni calcul en cause. Le code ci-dessous est générique, pas du code ANGLE ni une reconstitution de ce CVE.

Étape 4

Utilisée dans des attaques ciblées

Google confirme l’exploitation de CVE-2025-14174. Apple signale séparément une exploitation ciblée de problèmes WebKit et utilise aussi ce CVE pour une entrée WebKit sur l’initialisation mémoire. Les avis ne démontrent pas de chaîne commune entre Chrome et WebKit.

Code Source : Vulnérable vs Sécurisé

Google n’a publié ni la cause au niveau de la fonction ni les détails du correctif. Cet exemple générique en C++20 vérifie le décalage et compare par soustraction la longueur demandée à la capacité restante pour éviter un dépassement. Il ne reproduit ni le CVE ni le correctif réel d’ANGLE.

IMPLÉMENTATION VULNÉRABLE
// Exemple générique uniquement ; ce n’est ni le code source d’ANGLE ni l’implémentation de CVE-2025-14174.
bool copyRange(std::span<std::byte> destination,
               std::size_t offset,
               std::span<const std::byte> source)
{
    std::copy(source.begin(), source.end(), destination.begin() + offset);
    return true;
}
PATCH SÉCURISÉ ET ROBUSTE
// Exemple générique uniquement ; ce n’est ni le code source d’ANGLE ni le correctif de CVE-2025-14174.
bool copyRange(std::span<std::byte> destination,
               std::size_t offset,
               std::span<const std::byte> source)
{
    if (offset > destination.size() ||
        source.size() > destination.size() - offset) {
        return false;
    }

    std::copy(source.begin(), source.end(), destination.begin() + offset);
    return true;
}

Liste de Contrôle de Sécurité pour l'Ingénierie

Sources