{"id":16464,"date":"2026-04-27T08:50:10","date_gmt":"2026-04-27T08:50:10","guid":{"rendered":"https:\/\/byte-bucket.com\/2026\/04\/27\/kritische-sicherheitsluecke-in-rubys-erb-template-engine-remote-code-ausfuehrung-moeglich\/"},"modified":"2026-04-27T08:50:10","modified_gmt":"2026-04-27T08:50:10","slug":"kritische-sicherheitsluecke-in-rubys-erb-template-engine-remote-code-ausfuehrung-moeglich","status":"publish","type":"post","link":"https:\/\/byte-bucket.com\/?p=16464","title":{"rendered":"Kritische Sicherheitsl\u00fccke in Rubys ERB-Template-Engine: Remote-Code-Ausf\u00fchrung m\u00f6glich."},"content":{"rendered":"<p>In der Ruby-Welt sorgt eine k\u00fcrzlich entdeckte Sicherheitsl\u00fccke in der Template-Engine ERB f\u00fcr Aufsehen. Das Herzst\u00fcck dieser Engine, die oft in Rails-Anwendungen zum Einsatz kommt, bietet einen Schutzmechanismus gegen unsichere Deserialisierung. Dieser wurde jedoch durch die L\u00fccke ausgehebelt, was zu einer potenziell schweren Gefahr f\u00fchrt: Angreifer k\u00f6nnten aus der Ferne eigenen Code auf den Servern ausf\u00fchren. Die Schwachstelle, die im April 2026 entdeckt wurde, wurde parallel dazu vom Ruby-Team mit einer L\u00f6sung geschlossen. <\/p>\n<p>Das Kernproblem ist die M\u00f6glichkeit, einen eigentlich sicheren Mechanismus in ERB zu manipulieren. Angreifer nutzen daf\u00fcr eine sogenannte Gadget-Chain, ein raffiniertes Konstrukt aus Codebl\u00f6cken, um letztendlich zu einer Remote-Code-Ausf\u00fchrung zu gelangen. Die Entdeckung stammt von TristanInSec, der zudem eine detaillierte technische Beschreibung samt einem funktionierenden Demonstrationscode \u00f6ffentlich zug\u00e4nglich machte. Dieser zeigt eindrucksvoll, wie wenige Zeilen Ruby-Code gen\u00fcgen, um den Angriff zu vollziehen. Betroffen sind alle Versionen des ERB-Gems bis einschlie\u00dflich 6.0.3 \u2013 ein Szenario, das praktisch jede aktuelle Rails-Installation erfasst. <\/p>\n<p>Eine konkrete Gefahr besteht jedoch nur, wenn zwei Bedingungen erf\u00fcllt sind: Zum einen muss die Anwendung Marshal.load mit Daten aufrufen, die von au\u00dfen beeinflusst werden k\u00f6nnen. Zum anderen ben\u00f6tigt sie zus\u00e4tzlich ActiveSupport, was im Standardfall bei Rails ohnehin der Fall ist. Typische Einsatzstellen f\u00fcr Marshal.load sind beispielsweise der Standard-Serializer von Rails.cache, Importfunktionen f\u00fcr Marshal-Dumps oder Session-Cookies \u00e4lterer Rails-Versionen. Komponenten wie Sidekiq oder Resque sind hingegen nicht gef\u00e4hrdet, da sie auf JSON setzen. <\/p>\n<p>Reales Risiko entsteht jedoch erst, wenn Angreifer Zugriff auf diese Datenstr\u00f6me erlangen, etwa \u00fcber unzureichend gesch\u00fctzte Schnittstellen, offen zug\u00e4ngliche Caches oder kompromittierte Schl\u00fcssel. Erfolgt die Ausnutzung, er\u00f6ffnet sich dem Angreifer ein weites Spektrum an M\u00f6glichkeiten: vom Auslesen sensibler Informationen \u00fcber das Einschleusen persistenter Hintert\u00fcren bis hin zur vollst\u00e4ndigen Kontrolle der Anwendung und weiteren Angriffen im Netzwerk. <\/p>\n<p>Die Entdeckung dieser L\u00fccke unterstreicht erneut die Wichtigkeit von Sicherheits\u00fcberpr\u00fcfungen und kontinuierlichen Updates in der Softwareentwicklung, besonders in dynamischen Umgebungen wie der Ruby-Community.<\/p>\n<p>Schlagw\u00f6rter: ERB + Szenario + Marshal.load<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der Ruby-Welt sorgt eine k\u00fcrzlich entdeckte Sicherheitsl\u00fccke in der Template-Engine ERB f\u00fcr Aufsehen. Das Herzst\u00fcck dieser Engine, die oft in Rails-Anwendungen zum Einsatz kommt, bietet einen Schutzmechanismus gegen unsichere Deserialisierung. Dieser wurde jedoch durch die L\u00fccke ausgehebelt, was zu einer potenziell schweren Gefahr f\u00fchrt: Angreifer k\u00f6nnten aus der Ferne&#46;&#46;&#46;<\/p>\n","protected":false},"author":4,"featured_media":16463,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-16464","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/posts\/16464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16464"}],"version-history":[{"count":0,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/posts\/16464\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/media\/16463"}],"wp:attachment":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}