{"id":38650,"date":"2026-07-20T12:54:19","date_gmt":"2026-07-20T10:54:19","guid":{"rendered":"https:\/\/enginsight.com\/?p=38650"},"modified":"2026-07-20T12:54:20","modified_gmt":"2026-07-20T10:54:20","slug":"cve-2026-42533-nginx-heap-overflow","status":"publish","type":"post","link":"https:\/\/enginsight.com\/de\/blog\/cve-2026-42533-nginx-heap-overflow\/","title":{"rendered":"CVE-2026-42533 &#8211; NGINX Heap Overflow"},"content":{"rendered":"<div class=\"ngs-tldr\">\n  <style>\n    @import url('https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;600;700&display=swap');\n\n    .ngs-tldr {\n      --ngs-navy: #0E1A2B;\n      --ngs-navy-soft: #16263d;\n      --ngs-pink: #E91E8C;\n      --ngs-cyan: #2AFAFE;\n      --ngs-yellow: #FFBB00;\n      --ngs-text: #E7EDF5;\n\n      font-family: 'Poppins', 'Segoe UI', Arial, sans-serif;\n      background: var(--ngs-navy);\n      color: var(--ngs-text);\n      border-radius: 14px;\n      overflow: hidden;\n      max-width: 720px;\n      margin: 1.75em auto;\n      box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);\n      box-sizing: border-box;\n    }\n    .ngs-tldr * { box-sizing: border-box; }\n\n    .ngs-tldr__bar {\n      height: 5px;\n      background: linear-gradient(90deg, var(--ngs-cyan) 0%, var(--ngs-pink) 100%);\n    }\n\n    .ngs-tldr__body {\n      padding: 26px 30px 30px;\n    }\n\n    .ngs-tldr__label {\n      display: inline-block;\n      font-size: 0.72rem;\n      font-weight: 700;\n      letter-spacing: 0.14em;\n      text-transform: uppercase;\n      color: var(--ngs-navy);\n      background: var(--ngs-cyan);\n      padding: 5px 12px;\n      border-radius: 6px;\n      margin-bottom: 16px;\n    }\n\n    .ngs-tldr__text {\n      font-size: 1.05rem;\n      font-weight: 400;\n      line-height: 1.65;\n      margin: 0;\n      color: var(--ngs-text);\n    }\n\n    .ngs-tldr__text strong {\n      color: var(--ngs-yellow);\n      font-weight: 600;\n    }\n\n    @media (max-width: 520px) {\n      .ngs-tldr__body { padding: 22px 20px 24px; }\n      .ngs-tldr__text { font-size: 1rem; }\n    }\n  <\/style>\n\n  <div class=\"ngs-tldr__bar\"><\/div>\n  <div class=\"ngs-tldr__body\">\n    <span class=\"ngs-tldr__label\">TL;DR<\/span>\n    <p class=\"ngs-tldr__text\">\n      Die Schwachstelle CVE-2026-42533 entsteht durch eine inkonsistente Verarbeitung von\n      Regex-Captures in der zweistufigen Script Engine von NGINX. Dadurch kann ein\n      <strong>Heap Buffer Overflow<\/strong> ausgel&#xF6;st werden, der einen\n      <strong>Denial of Service<\/strong> oder unter bestimmten Voraussetzungen sogar\n      die <strong>Ausf&#xFC;hrung von beliebigem Code<\/strong> erm&#xF6;glicht.\n    <\/p>\n  <\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">F5 hat am 15. Juli 2026 in NGINX 1.30.4 (Stable), 1.31.3 (Mainline) sowie in NGINX Plus R37 P3 (Version 37.0.3.1) eine kritische Sicherheitsl&#xFC;cke (CVE-2026-42533) geschlossen. Diese erm&#xF6;glicht es einem nicht authentifizierten Angreifer, mithilfe speziell pr&#xE4;parierter HTTP-Anfragen einen Heap-Buffer-Overflow im Worker-Prozess auszul&#xF6;sen. Die Schwachstelle entsteht durch eine inkonsistente Verarbeitung von Regex-Captures in der zweistufigen Script Engine von NGINX, wodurch unter bestimmten Voraussetzungen sogar die Ausf&#xFC;hrung von beliebigem Code m&#xF6;glich sein kann. <strong>Da die Schwachstelle aus der Ferne ohne Authentifizierung ausnutzbar ist und die Gefahr eines Denial-of-Service sowie potenziell einer Remote-Code-Ausf&#xFC;hrung besteht, sollten alle betroffenen NGINX-Installationen schnellstm&#xF6;glich auf eine gepatchte Version aktualisiert werden.<\/strong><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Wie funktioniert die L&#xFC;cke?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">NGINX baut Strings aus Konfigurationsausdr&#xFC;cken, beispielsweise f&#xFC;r Logging, Header oder Rewrites, in zwei Durchl&#xE4;ufen auf. Im ersten Durchlauf wird der Ausdruck ausgewertet, um die ben&#xF6;tigte Gr&#xF6;&#xDF;e des Ergebnisses zu bestimmen. Anschlie&#xDF;end reserviert NGINX einen Heap-Puffer mit exakt dieser Gr&#xF6;&#xDF;e. Im zweiten Durchlauf wird derselbe Ausdruck erneut ausgewertet, um die eigentlichen Daten in den reservierten Puffer zu schreiben. Dieses Verfahren funktioniert nur dann korrekt, wenn beide Auswertungen auf identischen Daten basieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Schwachstelle tritt nur unter einer spezifischen Konfiguration auf. Voraussetzung hierf&#xFC;r ist die Verwendung einer <code>map<\/code>-Direktive mit regul&#xE4;ren Ausdr&#xFC;cken. Zudem muss ein String-Ausdruck zun&#xE4;chst auf eine nummerierte Capture-Variable (<code>$1<\/code>, <code>$2<\/code> usw.) aus einem zuvor ausgef&#xFC;hrten regul&#xE4;ren Ausdruck zugreifen und erst anschlie&#xDF;end die von der <code>map<\/code> erzeugte Variable referenzieren. Nach Angaben von F5 kann derselbe Fehler unter bestimmten Bedingungen auch durch die Verwendung einer nicht cachebaren Variablen in einem String-Ausdruck ausgel&#xF6;st werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Ursache liegt darin, dass NGINX die Ergebnisse von Regex-Captures nicht f&#xFC;r jeden Ausdruck separat speichert, sondern einen gemeinsamen Speicherbereich wiederverwendet. W&#xE4;hrend des ersten Durchlaufs wird beispielsweise <code>$1<\/code> aus einem urspr&#xFC;nglichen regul&#xE4;ren Ausdruck, etwa einem <code>location<\/code>-Match, gelesen und zur Berechnung der erforderlichen Puffergr&#xF6;&#xDF;e verwendet. Bevor der zweite Durchlauf beginnt, wertet NGINX jedoch den regul&#xE4;ren Ausdruck der <code>map<\/code>-Direktive aus. Dabei werden die zuvor gespeicherten Capture-Werte im gemeinsamen Speicher &#xFC;berschrieben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im anschlie&#xDF;enden Schreibdurchlauf greift NGINX erneut auf <code>$1<\/code> zu, erh&#xE4;lt jedoch nicht mehr den urspr&#xFC;nglichen Capture-Wert, sondern den durch die <code>map<\/code>-Auswertung &#xFC;berschriebenen Inhalt. Ist dieser neue Capture-Wert l&#xE4;nger als der urspr&#xFC;nglich ber&#xFC;cksichtigte, schreibt NGINX mehr Daten in den Puffer, als dieser aufnehmen kann. Dadurch entsteht ein Heap-Buffer-Overflow. Sowohl die L&#xE4;nge als auch der Inhalt der &#xFC;ber den Puffer hinaus geschriebenen Daten k&#xF6;nnen durch eine pr&#xE4;parierte HTTP-Anfrage beeinflusst werden. Die Schwachstelle l&#xE4;sst sich daher ohne Authentifizierung aus der Ferne ausl&#xF6;sen, sofern die betroffene Konfiguration vorliegt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Auswirkungen reichen mindestens bis zu einem Denial-of-Service. Der Heap-Buffer-Overflow f&#xFC;hrt zum Absturz beziehungsweise Neustart des betroffenen NGINX-Worker-Prozesses. Dar&#xFC;ber hinaus h&#xE4;lt F5 eine Remote-Code-Ausf&#xFC;hrung f&#xFC;r m&#xF6;glich, wenn Address Space Layout Randomization (ASLR) deaktiviert ist oder anderweitig umgangen werden kann. Ein an der Offenlegung beteiligter Sicherheitsforscher argumentiert dar&#xFC;ber hinaus, dass sich derselbe Fehler auch in umgekehrter Richtung ausnutzen lasse. Ist die &#xFC;berschriebene Capture kleiner als der urspr&#xFC;ngliche Wert, k&#xF6;nne uninitialisierter Heap-Speicher ausgelesen werden. Die dabei gewonnenen Adressinformationen k&#xF6;nnten eine Umgehung von ASLR erm&#xF6;glichen und damit die Voraussetzungen f&#xFC;r eine Remote-Code-Ausf&#xFC;hrung schaffen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Quellen<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/thehackernews.com\/2026\/07\/critical-nginx-vulnerability-can-crash.html\" target=\"_blank\" rel=\"noopener\">https:\/\/thehackernews.com\/2026\/07\/critical-nginx-vulnerability-can-crash.html<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/my.f5.com\/manage\/s\/article\/K000162097\" target=\"_blank\" rel=\"noopener\">https:\/\/my.f5.com\/manage\/s\/article\/K000162097<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/security-tracker.debian.org\/tracker\/CVE-2026-42533\" target=\"_blank\" rel=\"noopener\">https:\/\/security-tracker.debian.org\/tracker\/CVE-2026-42533<\/a><\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Erkennen und Handeln mit Enginsight<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Pr&#xFC;fen Sie im Update Manager, ob ein Update f&#xFC;r NGINX verf&#xFC;gbar ist. Dort wird Ihnen gleichzeitig die Anzahl der betroffenen Hosts angezeigt. Anschlie&#xDF;end k&#xF6;nnen Sie das Update entweder zentral f&#xFC;r alle betroffenen Systeme gleichzeitig ausrollen oder die Hosts bei Bedarf einzeln und manuell aktualisieren.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"856\" height=\"313\" src=\"https:\/\/enginsight.com\/wp-content\/uploads\/grafik-17.png\" alt=\"\" class=\"wp-image-38651\" srcset=\"https:\/\/enginsight.com\/wp-content\/uploads\/grafik-17.png 856w, https:\/\/enginsight.com\/wp-content\/uploads\/grafik-17-300x110.png 300w, https:\/\/enginsight.com\/wp-content\/uploads\/grafik-17-768x281.png 768w\" sizes=\"(max-width: 856px) 100vw, 856px\"\/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>TL;DR Die Schwachstelle CVE-2026-42533 entsteht durch eine inkonsistente Verarbeitung von Regex-Captures in der zweistufigen Script Engine von NGINX. Dadurch kann ein Heap Buffer Overflow ausgel&#xF6;st werden, der einen Denial of Service oder unter bestimmten Voraussetzungen sogar die Ausf&#xFC;hrung von beliebigem Code erm&#xF6;glicht. F5 hat am 15. Juli 2026 in NGINX 1.30.4 (Stable), 1.31.3 (Mainline) sowie [&#x2026;]<\/p>\n","protected":false},"author":36,"featured_media":38653,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","_eb_attr":"","footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[334],"tags":[119,120,299],"class_list":["post-38650","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-schwachstellen","tag-cve","tag-schwachstellen","tag-sicherheitsluecken"],"_links":{"self":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts\/38650","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/comments?post=38650"}],"version-history":[{"count":1,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts\/38650\/revisions"}],"predecessor-version":[{"id":38652,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts\/38650\/revisions\/38652"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/media\/38653"}],"wp:attachment":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/media?parent=38650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/categories?post=38650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/tags?post=38650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}