{"id":1192,"date":"2026-02-19T12:35:52","date_gmt":"2026-02-19T12:35:52","guid":{"rendered":"https:\/\/netguide.io\/news\/?p=1192"},"modified":"2026-02-19T12:52:05","modified_gmt":"2026-02-19T12:52:05","slug":"fataler-tippfehler-wie-ein-einzelnes-zeichen-zur-rce-lucke-in-firefox-fuhrte","status":"publish","type":"post","link":"https:\/\/netguide.io\/news\/de\/2026\/02\/19\/fataler-tippfehler-wie-ein-einzelnes-zeichen-zur-rce-lucke-in-firefox-fuhrte\/","title":{"rendered":"Fataler Tippfehler: Wie ein einzelnes Zeichen zur RCE-L\u00fccke in Firefox f\u00fchrte"},"content":{"rendered":"\n<p><strong>Mountain View\/London &#8211; In der Welt der Softwareentwicklung kann ein einziges Zeichen den Unterschied zwischen Sicherheit und totaler Kompromittierung bedeuten. Der Sicherheitsforscher Erge dokumentierte nun, wie ein simpler Tippfehler in SpiderMonkey &#8211; der JavaScript-Engine von Firefox &#8211; eine kritische Schwachstelle (Remote Code Execution, RCE) verursachte. Die L\u00fccke erlaubte es Angreifern, Schadcode innerhalb des Renderer-Prozesses des Browsers auszuf\u00fchren.<\/strong><\/p>\n\n\n\n<p>Die Schwachstelle wurde im Rahmen einer Analyse des Quellcodes f\u00fcr eine kommende &#8220;Capture The Flag&#8221; (CTF)-Challenge im Februar 2026 entdeckt. Betroffen war die WebAssembly (Wasm)-Komponente von SpiderMonkey, genauer gesagt die Speicherverwaltung f\u00fcr Garbage-Collected (GC) Arrays.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Der &#8220;Guilty Commit&#8221;: Ein <code>&amp;<\/code> zu viel<\/h3>\n\n\n\n<p>Die Ursache der Sicherheitsl\u00fccke liegt in einem Refactoring-Prozess der Metadaten von Wasm-Arrays. In der betroffenen Datei <code>js\/src\/wasm\/WasmGcObject.cpp<\/code> passierte dem Entwickler ein klassischer logischer Fehler bei der Bit-Manipulation:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Der fehlerhafte Codeabschnitt:<\/strong><\/p>\n\n\n\n<p>C++<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Erwartet wurde eine Bitweise-ODER-Verkn\u00fcpfung (|), um ein Flag zu setzen.\noolHeaderOld-&gt;word = uintptr_t(oolHeaderNew) &amp; 1; \/\/ Der Fehler: '&amp;' statt '|'\n<\/code><\/pre>\n<\/blockquote>\n\n\n\n<p>Anstatt die Adresse des neuen Speicherbereichs mit dem gesetzten &#8220;Least Significant Bit&#8221; (LSB) zu speichern, um einen sogenannten &#8220;Forwarding Pointer&#8221; zu markieren, bewirkte das bitweise UND (<code>&amp;<\/code>), dass der Wert fast immer auf <strong>0<\/strong> gesetzt wurde. Da Pointer in modernen Systemen normalerweise an 8-Byte-Grenzen ausgerichtet sind, ist das letzte Bit einer Adresse immer Null &#8211; eine UND-Verkn\u00fcpfung mit 1 ergibt somit zwangsl\u00e4ufig das Ergebnis 0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Inline vs. Out-of-line: Das Missverst\u00e4ndnis im Speicher<\/h3>\n\n\n\n<p>Um die Schwere des Fehlers zu verstehen, muss man die Speicherstruktur von Wasm-Arrays in Firefox betrachten. SpiderMonkey nutzt zwei Strategien:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Inline (IL):<\/strong> Daten werden direkt hinter dem Objektkopf gespeichert (f\u00fcr kleine Arrays).<\/li>\n\n\n\n<li><strong>Out-of-line (OOL):<\/strong> Das Objekt zeigt auf einen separaten Speicherblock (f\u00fcr gro\u00dfe Arrays).<\/li>\n<\/ol>\n\n\n\n<p>Durch den Tippfehler hielt die Engine ein verschobenes, gro\u00dfes Array (OOL) f\u00e4lschlicherweise f\u00fcr ein Inline-Array, da die Markierung (das gesetzte Bit im Header) fehlte.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Von der Fehlermeldung zur Remote Code Execution<\/h3>\n\n\n\n<p>Der Forscher konnte demonstrieren, dass dieser Fehler zu einer sogenannten <strong>Use-After-Free (UAF)<\/strong>-Situation f\u00fchrt. Wenn der Garbage Collector (GC) den Speicher bereinigt, wird der alte Speicherbereich freigegeben, w\u00e4hrend der JIT-Compiler (Ion) aufgrund des falschen Headers weiterhin versucht, auf die alte, nun ung\u00fcltige Adresse zuzugreifen.<\/p>\n\n\n\n<p>Durch gezieltes &#8220;Heap Spraying&#8221; &#8211; das kontrollierte \u00dcberfluten des Arbeitsspeichers mit eigenen Daten &#8211; gelang es Erge, den freigegebenen Speicherplatz mit b\u00f6sartigen Werten zu f\u00fcllen. Dies erm\u00f6glichte:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ASLR-Bypass:<\/strong> Das Auslesen von Speicheradressen, um die Schutzmechanismen des Betriebssystems zu umgehen.<\/li>\n\n\n\n<li><strong>Arbitrary Write:<\/strong> Das Schreiben von Daten an beliebige Stellen im Speicher.<\/li>\n\n\n\n<li><strong>RCE:<\/strong> Das Kapern des Befehlszeigers (RIP), um schlie\u00dflich eine Shell (<code>\/bin\/sh<\/code>) zu starten.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Schnelle Reaktion von Mozilla<\/h3>\n\n\n\n<p>Gl\u00fccklicherweise wurde die Schwachstelle sehr fr\u00fch im Entwicklungszyklus entdeckt. Der Fehler wurde am 19. Januar 2026 eingef\u00fchrt und erreichte lediglich die <strong>Firefox 149 Nightly<\/strong>-Version.<\/p>\n\n\n\n<p><strong>Die Timeline der Offenlegung:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>19. Januar 2026:<\/strong> Einf\u00fchrung des Fehlers durch einen Commit.<\/li>\n\n\n\n<li><strong>03. Februar 2026:<\/strong> Zeitgleiche Meldung durch Erge und einen weiteren anonymen Forscher.<\/li>\n\n\n\n<li><strong>09. Februar 2026:<\/strong> Offizieller Fix durch Mozilla.<\/li>\n\n\n\n<li><strong>11. Februar 2026:<\/strong> Auszahlung der Bug-Bounty, die zwischen den beiden Reportern aufgeteilt wurde.<\/li>\n<\/ul>\n\n\n\n<p>Dank der schnellen Reaktion des Firefox-Security-Teams gelangte der Fehler nie in eine stabile Release-Version, sodass normale Endnutzer zu keinem Zeitpunkt gef\u00e4hrdet waren. Der Fall unterstreicht jedoch einmal mehr, wie fragil moderne Hochleistungs-Software sein kann, wenn ein einzelner Tastendruck die gesamte Sicherheitsarchitektur aushebelt.<\/p>\n\n\n\n<p>Quelle: <a href=\"https:\/\/kqx.io\/post\/firefox0day\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/kqx.io\/post\/firefox0day\/<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mountain View\/London &#8211; In der Welt der Softwareentwicklung kann ein einziges Zeichen den Unterschied zwischen Sicherheit und totaler Kompromittierung bedeuten. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1198,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[109,411,58],"tags":[125,413,419,60,415,417],"class_list":["post-1192","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cybersecurity","category-firefox","category-mozilla","tag-cybersecurity","tag-firefox","tag-itsicherheit","tag-mozilla","tag-rce","tag-sicherheit"],"_links":{"self":[{"href":"https:\/\/netguide.io\/news\/wp-json\/wp\/v2\/posts\/1192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/netguide.io\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/netguide.io\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/netguide.io\/news\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/netguide.io\/news\/wp-json\/wp\/v2\/comments?post=1192"}],"version-history":[{"count":3,"href":"https:\/\/netguide.io\/news\/wp-json\/wp\/v2\/posts\/1192\/revisions"}],"predecessor-version":[{"id":1199,"href":"https:\/\/netguide.io\/news\/wp-json\/wp\/v2\/posts\/1192\/revisions\/1199"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/netguide.io\/news\/wp-json\/wp\/v2\/media\/1198"}],"wp:attachment":[{"href":"https:\/\/netguide.io\/news\/wp-json\/wp\/v2\/media?parent=1192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/netguide.io\/news\/wp-json\/wp\/v2\/categories?post=1192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/netguide.io\/news\/wp-json\/wp\/v2\/tags?post=1192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}