Accueil / Cybersécurité / Patch / Vulnérabilité zero-day impactant un outil VPN pour entreprise

Vulnérabilité zero-day impactant un outil VPN pour entreprise

Mandiant a publié aujourd’hui des détails approfondis sur une vulnérabilité zero-day critique, référencée CVE-2025-0282, récemment divulguée et corrigée par Ivanti. Cette faille affecte les appliances Ivanti Connect Secure VPN (ICS), largement utilisées pour assurer la connectivité sécurisée des entreprises.

Ivanti a détecté cette compromission grâce à son outil dédié, Integrity Checker Tool (ICT), ainsi qu’à des outils tiers de surveillance de sécurité. Selon l’analyse de Mandiant, cette vulnérabilité a été exploitée activement dans la nature dès décembre 2024, vraisemblablement par un acteur de l’espionnage lié à la Chine.

Une exploitation avancée et ciblée

Mandiant rapporte que la CVE-2025-0282 [alerte du CERT SSI France] a été utilisée par des cybercriminels. Bien qu’il ne soit pas encore possible de confirmer l’identité exacte des attaquants, les chercheurs pensent avec une confiance modérée qu’ils appartiennent au groupe connu de bad hacker sous le nom UNC5221, un acteur déjà associé à des campagnes d’espionnage numérique.

Le malware SPAWN, précédemment lié à UNC5337, a été observé dans cette nouvelle attaque. En complément, d’autres familles de malwares comme DRYHOOK et PHASEJAM ont été identifiées. Cependant, les chercheurs précisent qu’ils ne disposent pas encore de données suffisantes pour attribuer ces attaques à un ou plusieurs acteurs spécifiques.

Impacts de la vulnérabilité CVE-2025-0282

L’exploitation de cette faille permet aux attaquants de réaliser des actions critiques :

Exécution de code à distance
Les cybercriminels peuvent prendre le contrôle des systèmes affectés, compromettant ainsi l’intégrité des données et la sécurité des environnements réseau.

Déplacement latéral
Une fois la brèche initiale exploitée, les attaquants se déplacent latéralement dans les systèmes connectés pour élargir leur accès, créant des impacts potentiellement dévastateurs au-delà de l’appareil directement visé.

Installation de portes dérobées persistantes
Des backdoors sont implantées pour maintenir l’accès aux systèmes compromis. Certaines de ces portes peuvent persister même après des mises à jour, ce qui incite Ivanti à recommander une réinitialisation complète pour les clients concernés.

Tactiques avancées des attaquants
Mandiant a observé deux techniques sophistiquées utilisées par les attaquants exploitant la CVE-2025-0282 :

Déploiement de PHASEJAM

Après avoir exploité la faille, les cybercriminels déploient un malware personnalisé nommé PHASEJAM, conçu pour empêcher l’installation des mises à jour système, garantissant ainsi un accès prolongé au système compromis.

Fausse barre de progression de mise à jour
Pour éviter de susciter la méfiance des administrateurs, une fausse barre de progression de mise à jour est affichée, simulant le bon déroulement des mises à jour alors qu’en réalité, le processus est bloqué par l’attaquant.

Mesures de détection et prévention
Les versions récentes d’Ivanti Connect Secure intègrent un outil performant, l’Integrity Checker Tool (ICT), qui s’est avéré efficace pour identifier les compromissions liées à la CVE-2025-0282. Cet outil exécute régulièrement des diagnostics pour détecter des anomalies ou des comportements inhabituels.

Cependant, Mandiant a signalé des tentatives des attaquants pour manipuler le registre des fichiers vérifiés par l’ICT, y intégrant leurs propres fichiers malveillants pour contourner les mécanismes de détection.

Cette vulnérabilité zero-day met en lumière les défis constants auxquels les entreprises sont confrontées en matière de sécurité numérique. Ivanti et Mandiant recommandent aux utilisateurs de déployer les mises à jour correctives immédiatement, de surveiller leurs systèmes pour détecter des anomalies, et de réinitialiser si nécessaire.

Pour en savoir plus sur les risques et les opportunités liés à l’intelligence artificielle, abonnez-vous gratuitement à notre newsletter.

Étiquetté :

Nos partenaires




Actualités du mois

mars 2026
L M M J V S D
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Articles en UNE

Actus zataz



Réseaux sociaux


Liste des sujets


<!-- Cyber'Émission ZATAZ — badge volant (déplaçable) + réduire/fermer -->
<div class="zataz-yt-float" id="zatazYtFloat" role="region" aria-label="Cyber'Émission ZATAZ">
  <div class="zataz-yt-float__bar" id="zatazYtBar">
    <span class="zataz-yt-float__title">Cyber'Émission ZATAZ</span>

    <div class="zataz-yt-float__actions">
      <button type="button" class="zataz-yt-float__btn" id="zatazYtMin" aria-label="Réduire">—</button>
      <button type="button" class="zataz-yt-float__btn zataz-yt-float__btn--close" id="zatazYtClose" aria-label="Fermer">×</button>
    </div>
  </div>

  <a class="zataz-yt-badge" href="https://www.youtube.com/@ZATAZCOM" target="_blank" rel="noopener noreferrer"
     aria-label="Regarder Cyber'Émission ZATAZ sur YouTube (nouvel onglet)">
    <span class="zataz-yt-badge__thumb" aria-hidden="true">
      <span class="zataz-yt-badge__play" aria-hidden="true"></span>
    </span>
  </a>
</div>

<style>
  .zataz-yt-float{
    position:fixed;
    right:18px;
    bottom:18px;
    z-index:99999;
    width:320px;
    max-width:calc(100vw - 36px);
    border-radius:14px;
    overflow:hidden;
    background:linear-gradient(135deg,#111827,#0b1220 55%,#111827);
    border:1px solid rgba(255,255,255,.12);
    box-shadow:0 14px 40px rgba(0,0,0,.35);
    transform:translateZ(0);
    user-select:none;
    touch-action:none; /* drag mobile */
  }

  /* Barre de drag + boutons */
  .zataz-yt-float__bar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:10px 10px 10px 12px;
    font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
    color:#fff;
    background:rgba(0,0,0,.18);
    border-bottom:1px solid rgba(255,255,255,.10);
    cursor:grab;
  }
  .zataz-yt-float__bar:active{ cursor:grabbing; }
  .zataz-yt-float__title{
    font-weight:800;
    letter-spacing:.2px;
    font-size:15px;
    line-height:1;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .zataz-yt-float__actions{ display:flex; gap:8px; }
  .zataz-yt-float__btn{
    appearance:none;
    border:1px solid rgba(255,255,255,.18);
    background:rgba(0,0,0,.28);
    color:#fff;
    width:32px;
    height:28px;
    border-radius:10px;
    font-weight:900;
    line-height:1;
    cursor:pointer;
    display:grid;
    place-items:center;
  }
  .zataz-yt-float__btn:hover{ background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.28); }
  .zataz-yt-float__btn--close:hover{ background:rgba(239,68,68,.22); border-color:rgba(239,68,68,.45); }

  /* Contenu (votre vignette) */
  .zataz-yt-badge{
    display:block;
    text-decoration:none;
    color:#fff;
  }
  .zataz-yt-badge__thumb{
    display:block;
    height:180px;
    background:#0f172a url("https://i.ytimg.com/vi/HUo8dnD6Swk/hqdefault.jpg") center/cover no-repeat;
    position:relative;
  }
  .zataz-yt-badge__play{
    position:absolute;
    left:50%;
    top:50%;
    width:54px;
    height:54px;
    margin:-27px 0 0 -27px;
    border-radius:999px;
    background:rgba(0,0,0,.55);
    border:1px solid rgba(255,255,255,.25);
    box-shadow:0 10px 22px rgba(0,0,0,.35);
  }
  .zataz-yt-badge__play:before{
    content:"";
    position:absolute;
    left:22px;
    top:16px;
    width:0;height:0;
    border-top:11px solid transparent;
    border-bottom:11px solid transparent;
    border-left:16px solid #fff;
  }

  .zataz-yt-float:hover{
    box-shadow:0 18px 55px rgba(0,0,0,.45);
    border-color:rgba(255,255,255,.18);
  }
  .zataz-yt-badge:active{ transform:scale(.99); }

  /* Etat réduit */
  .zataz-yt-float.is-min .zataz-yt-badge{ display:none; }
  .zataz-yt-float.is-min{ width:260px; }

  /* Mobile : plus compact */
  @media (max-width:480px){
    .zataz-yt-float{ width:280px; right:12px; bottom:12px; }
    .zataz-yt-badge__thumb{ height:158px; }
    .zataz-yt-float.is-min{ width:220px; }
  }
</style>

<script>
(() => {
  const box = document.getElementById('zatazYtFloat');
  const bar = document.getElementById('zatazYtBar');
  const btnMin = document.getElementById('zatazYtMin');
  const btnClose = document.getElementById('zatazYtClose');

  if (!box || !bar || !btnMin || !btnClose) return;

  // Réduire / restaurer
  btnMin.addEventListener('click', (e) => {
    e.stopPropagation();
    box.classList.toggle('is-min');
    btnMin.textContent = box.classList.contains('is-min') ? '▢' : '—';
    btnMin.setAttribute('aria-label', box.classList.contains('is-min') ? 'Restaurer' : 'Réduire');
  });

  // Fermer
  btnClose.addEventListener('click', (e) => {
    e.stopPropagation();
    box.remove();
  });

  // Drag (souris + tactile) via Pointer Events
  let dragging = false;
  let startX = 0, startY = 0;
  let startLeft = 0, startTop = 0;

  // Position initiale: on convertit right/bottom en left/top pour le drag
  const init = () => {
    const r = box.getBoundingClientRect();
    box.style.left = r.left + 'px';
    box.style.top  = r.top  + 'px';
    box.style.right = 'auto';
    box.style.bottom = 'auto';
  };
  init();

  const clamp = (v, min, max) => Math.min(Math.max(v, min), max);

  bar.addEventListener('pointerdown', (e) => {
    // pas de drag quand on clique sur les boutons
    if (e.target === btnMin || e.target === btnClose) return;

    dragging = true;
    bar.setPointerCapture(e.pointerId);

    const r = box.getBoundingClientRect();
    startX = e.clientX;
    startY = e.clientY;
    startLeft = r.left;
    startTop = r.top;

    e.preventDefault();
  });

  bar.addEventListener('pointermove', (e) => {
    if (!dragging) return;

    const dx = e.clientX - startX;
    const dy = e.clientY - startY;

    const r = box.getBoundingClientRect();
    const w = r.width;
    const h = r.height;

    const maxLeft = window.innerWidth - w - 8;
    const maxTop  = window.innerHeight - h - 8;

    box.style.left = clamp(startLeft + dx, 8, maxLeft) + 'px';
    box.style.top  = clamp(startTop + dy, 8, maxTop) + 'px';
  });

  const endDrag = () => { dragging = false; };
  bar.addEventListener('pointerup', endDrag);
  bar.addEventListener('pointercancel', endDrag);

  // Re-clamp au resize
  window.addEventListener('resize', () => {
    const r = box.getBoundingClientRect();
    const maxLeft = window.innerWidth - r.width - 8;
    const maxTop  = window.innerHeight - r.height - 8;
    box.style.left = clamp(r.left, 8, maxLeft) + 'px';
    box.style.top  = clamp(r.top, 8, maxTop) + 'px';
  });
})();
</script>