<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>WebM on CyberVeille</title>
    <link>https://cyberveille.ch/tags/webm/</link>
    <description>Recent content in WebM on CyberVeille</description>
    <generator>Hugo -- 0.146.0</generator>
    <language>fr-fr</language>
    <copyright>Cyberveille CC BY-NC-SA 4.0</copyright>
    <lastBuildDate>Sun, 20 Sep 2026 00:00:00 +0200</lastBuildDate>
    <atom:link href="https://cyberveille.ch/tags/webm/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>PoC : deux vulnérabilités DoS dans Discord via parsing WebM/Vorbis et M4A (Chromium/FFmpeg)</title>
      <link>https://cyberveille.ch/posts/2026-09-20-poc-deux-vulnerabilites-dos-dans-discord-via-parsing-webm-vorbis-et-m4a-chromium-ffmpeg/</link>
      <pubDate>Sun, 20 Sep 2026 00:00:00 +0200</pubDate>
      <guid>https://cyberveille.ch/posts/2026-09-20-poc-deux-vulnerabilites-dos-dans-discord-via-parsing-webm-vorbis-et-m4a-chromium-ffmpeg/</guid>
      <description>&lt;h2 id=&#34;-contexte&#34;&gt;🔍 Contexte&lt;/h2&gt;
&lt;p&gt;Publié le 15/09/2026 sur GitHub (aftermathlabs/discord-crasher), ce dépôt présente &lt;code&gt;media-gen&lt;/code&gt;, un outil en ligne de commande Rust permettant de générer deux cas de test de vulnérabilités de parsing média affectant &lt;strong&gt;Discord Desktop 1.0.9257&lt;/strong&gt; (Electron 42.11.1 / Chromium 148.0.7778.280) et &lt;strong&gt;Chrome 153.0.8010.48&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;-cas-1--webmvorbis--crash-du-renderer-status_breakpoint&#34;&gt;🎯 Cas 1 : WebM/Vorbis — Crash du renderer (STATUS_BREAKPOINT)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mécanisme&lt;/strong&gt; : Un fichier WebM avec une piste &lt;code&gt;A_VORBIS&lt;/code&gt; est modifié pour exploiter un &lt;code&gt;DiscardPadding&lt;/code&gt; négatif Matroska converti en saut avant Vorbis. Un « bridge » est construit pour couvrir à la fois l&amp;rsquo;ancien chemin Vorbis à délai d&amp;rsquo;un buffer et le chemin actuel à rejet immédiat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact&lt;/strong&gt; : Le renderer se termine avec &lt;strong&gt;&lt;code&gt;0x80000003&lt;/code&gt; (STATUS_BREAKPOINT)&lt;/strong&gt; dans &lt;code&gt;AudioDiscardHelper::ProcessBuffers&lt;/code&gt; de Chromium, car l&amp;rsquo;invariant &lt;code&gt;discarded_frames &amp;lt;= decoder_delay&lt;/code&gt; (&lt;code&gt;129 &amp;lt;= 128&lt;/code&gt;) échoue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Déclencheur&lt;/strong&gt; : Lecture/décodage du fichier média (le simple chargement des métadonnées ne suffit pas).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SHA-256 du fichier généré&lt;/strong&gt; : &lt;code&gt;a0ab9e146c629f037b86612addc1ab6fff9200711d45aa5f5edbb9576cc206ac&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-cas-2--m4a--allocation-mémoire-excessive-66-go&#34;&gt;🎯 Cas 2 : M4A — Allocation mémoire excessive (~6,6 Go)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mécanisme&lt;/strong&gt; : Un fichier M4A est modifié pour déclarer un nombre de samples constant (&lt;code&gt;sample_count = 178,956,969&lt;/code&gt;) dans les tables &lt;code&gt;stsz&lt;/code&gt;, &lt;code&gt;stsc&lt;/code&gt; et &lt;code&gt;stts&lt;/code&gt;. Le démuxeur FFmpeg intégré à Discord traite ce compteur comme autoritaire et alloue ~36 octets par entrée (&lt;code&gt;AVIndexEntry&lt;/code&gt; + tables de timing).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact&lt;/strong&gt; : Le renderer Discord atteint un &lt;strong&gt;pic de mémoire privée de 6,614,761,472 octets&lt;/strong&gt; (~6,6 Go) lors du chargement des métadonnées. Classé &lt;strong&gt;CWE-400&lt;/strong&gt; (consommation de ressources non contrôlée).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Déclencheur&lt;/strong&gt; : Chargement des métadonnées après passage de &lt;code&gt;preload=&amp;quot;none&amp;quot;&lt;/code&gt; à &lt;code&gt;metadata&lt;/code&gt; sur l&amp;rsquo;élément audio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Valeur limite&lt;/strong&gt; : &lt;code&gt;178,956,970&lt;/code&gt; est rejetée par FFmpeg et ne déclenche pas l&amp;rsquo;allocation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-méthode-de-découverte--blare2&#34;&gt;🛠️ Méthode de découverte : BLARE2&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;outil &lt;strong&gt;blare2&lt;/strong&gt; (instrumentation binaire) a été utilisé pour :&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
