<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Fix Required on Schallberts Blog</title><link>https://blog.schallbert.de/tags/fix-required/</link><description>Recent content in Fix Required on Schallberts Blog</description><generator>Hugo</generator><language>de</language><lastBuildDate>Wed, 21 Oct 2026</lastBuildDate><atom:link href="https://blog.schallbert.de/tags/fix-required/index.xml" rel="self" type="application/rss+xml"/><item><title>PHP2shell: Kritische Sicherheitslücken</title><link>https://blog.schallbert.de/php2shell-critical-vulnerability-rce/</link><pubDate>Wed, 21 Oct 2026</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/php2shell-critical-vulnerability-rce/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-10-21-php2shell-logo-cover.avif"&#10; class="post-cover"&#10; alt="Image: The logo for php2shell. It is blue, block-like pixel text on black background."&#10; title="PHP2shell: Kritische Sicherheitslücken" /&gt;&#10;&lt;h2 id="schritt-1-erkennen-wir-haben-ein-problem"&gt;Schritt 1 Erkennen: Wir haben ein Problem.&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;TLDR&lt;/strong&gt;: PHP hat ganz aktuell &lt;a href="https://www.php.net/archive/2026.php#2026-10-20-1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;zwei kritische Schwachstellen&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, die Remote Code Execution ermöglichen. Ihre IDs: &lt;a href="https://cert.europa.eu/publications/security-advisories/2026-018/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;CVE-2026-109618 und CVE-2026-109619&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. Da ihre Ursachen nicht im Frontend sondern in der Engine stecken, hilft nur ein Update auf &lt;a href="https://watchtowr.com/intelligence/php-cve-2026-109618-faq/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;PHP 8.5.12, 8.4.27, 8.3.36, oder 8.2.35&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-10-21-phps-php2shell-notice.avif" alt="Image: Screenshot of the PHP News Archive webpage on 21-Oct-2026 about a critical vulnerability allowing Remote Code Execution if exploited even before any application code runs."&gt;&lt;/figure&gt;&#10;&lt;p&gt;&amp;ldquo;&lt;a href="https://www.php.net/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;PHP&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; nutze ich nicht auf &lt;a href="https://blog.schallbert.de/projects/migrating-jekyll-to-hugo/"&gt;meiner Website&lt;/a&gt;&amp;rdquo;, denke ich, als ich heute Vormittag die folgende Nachricht erhalte:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&amp;ldquo;Hi, kurzer Hinweis: Gegebenenfalls [&amp;hellip;] alles was php nutzt, erstmal abklemmen, [&amp;hellip;] Patch kommt später heute.&amp;rdquo;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Oder bin ich doch betroffen&amp;hellip;? Immerhin nutze ich eine managed Nextcloud-Instanz, und &lt;a href="https://docs.nextcloud.com/server/stable/developer_manual/getting_started/glossary.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Nextcloud ist doch u.A. in &lt;em&gt;PHP&lt;/em&gt; geschrieben&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&amp;hellip;? Während ich diese Zeilen schreibe, &lt;a href="https://github.com/nextcloud/all-in-one/releases/tag/v14.4.1" target="_blank" rel="noopener noreferrer" class="external-link"&gt;wird ein Fix für Nextcloud verfügbar&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. Alles muss also sehr schnell gehen. Heute werden unter Garantie viele Überstunden gemacht.&lt;/p&gt;&#10;&lt;h3 id="status-21102026-1030-mesz"&gt;Status 21.10.2026, 10:30 MESZ&lt;/h3&gt;&#10;&lt;p&gt;Spulen wir zehn Stunden zurück. Es gibt noch keinen Fix. Die Information über die CVEs wurde geleakt und ist jetzt selbst bereits ein paar Stunden alt. Laut &lt;a href="https://en.wikipedia.org/wiki/PHP2Shell" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Wikipedia nutzen &lt;code&gt;69%&lt;/code&gt; aller Websites PHP&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. Das Ausnutzen einer so hochkritischen Lücke (&lt;a href="https://blog.schallbert.de/gitea-critical-vulnerability-active-exploitation-rce/#cvss-scoring"&gt;Score&lt;/a&gt; &lt;code&gt;9.2&lt;/code&gt;) bei einer derart weitverbreiteten Technologie hat erwartbar massive Auswirkungen. Entsprechend nervös ist &amp;ldquo;das Internet&amp;rdquo;.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&amp;ldquo;[&amp;hellip;] organisations should consider isolating internet-facing applications from public networks until a fix is applied and verified. &lt;a href="https://cert.europa.eu/publications/security-advisories/2026-018/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;CERT-EU&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, pulled 21.10.2026, 10:40&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Interessant, die Empfehlung ist also ernsthaft &amp;ldquo;erstmal vom Netz nehmen&amp;rdquo;.&lt;/p&gt;&#10;&lt;h2 id="schritt-2-sofortmaßnahmen-nextcloud-vom-netz-trennen"&gt;Schritt 2 Sofortmaßnahmen: Nextcloud vom Netz trennen&lt;/h2&gt;&#10;&lt;p&gt;Um einem möglichen Angriff zuvor zu kommen versuche ich folglich, meine Instanz vom Netz zu nehmen. Dafür logge ich mich bei meinem Hoster ein, wechsle auf das Tab &amp;ldquo;Einstellungen&amp;rdquo;, und klicke auf den Reiter &lt;code&gt;ownCloud Console&lt;/code&gt;. Dies ist Nextclouds command-line interface.&lt;/p&gt;&#10;&lt;p&gt;Dort muss ich feststellen, dass kein Befehl zum Abschalten oder de-publishing zur Verfügung steht. Also wähle ich den Nächstbesten:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;occ maintenance:mode --on&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ich versetze meine Instanz also &lt;a href="https://docs.nextcloud.com/server/stable/admin_manual/maintenance/backup.html#maintenance-mode" target="_blank" rel="noopener noreferrer" class="external-link"&gt;in den Wartungsmodus&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. Dies verhindert neue Logins und friert die Datenbank ein. Anschließend lese ich mich ein wenig in die CVEs ein um herauszufinden, ob mein Schritt genügt.&lt;/p&gt;&#10;&lt;p&gt;Tut er wohl nicht.&lt;/p&gt;&#10;&lt;p&gt;In verschiedenen Foren und auf &lt;a href="https://thehackernews.com/2026/10/php2shell-two-unpatched-critical-php.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;HackerNews&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; erfahre ich, dass eine nicht authentisierte Anfrage bereits den Angriff auslösen kann, bevor überhaupt PHP-Code auf der Serverseite ausgeführt wird.&lt;/p&gt;&#10;&lt;p&gt;Es ist also egal, in welchen Zustand ich meine Instanz versetze - solange sie am Netz ist, bleibt sie angreifbar.&lt;/p&gt;&#10;&lt;h2 id="schritt-3-vorläufige-eindämmung-nextcloud-instanz-deaktivieren-lassen"&gt;Schritt 3 Vorläufige Eindämmung: Nextcloud-Instanz deaktivieren lassen&lt;/h2&gt;&#10;&lt;p&gt;Ich finde auch mit Hilfe diverser Online-Suchanfragen keinen Weg, meine mangaged-Instanz abzuschalten. Ich überlege kurz, die Namensauflösung und das DNS-Routing zu killen. Mir wird aber schnell klar: Bis sich das durchpropagiert, ist der Fix längst draußen.&lt;/p&gt;&#10;&lt;h3 id="status-21102026-1143-mesz"&gt;Status 21.10.2026 11:43 MESZ&lt;/h3&gt;&#10;&lt;p&gt;Ich schreibe also ein Support-Ticket an meinen Hoster mit der Bitte um Hilfe beim Herunternehmen meiner Instanz.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-10-21-hoster-response-takedown.avif" alt="Image: Screenshot of an E-mail from my hoster, stating that my Nextcloud instance has been deactivated until a patch is available and in place."&gt;&lt;/figure&gt;&#10;&lt;h3 id="status-21102026-1201-mesz"&gt;Status 21.10.2026 12:01 MESZ&lt;/h3&gt;&#10;&lt;p&gt;Ich erhalte eine Mail vom Hoster!&lt;/p&gt;&#10;&lt;p&gt;Tatsache, ich kann die Instanz nicht mehr erreichen und erhalte eine &lt;code&gt;ERR_CERT_COMMON_NAME_INVALID&lt;/code&gt;-Meldung. Klicke ich diese weg, erscheint &lt;strong&gt;REQUESTED PAGE LOCKED&lt;/strong&gt;. Gute Arbeit. Die Reaktionszeit meines Anbieters inlusive Rückmeldung an den Kunden betrug &lt;code&gt;18min&lt;/code&gt;.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-10-21-instance-locked.avif" alt="Image: A flatscreen showing a &amp;#39;no entry&amp;#39; symbol, connected to multiple small boxes that look like mini servers. Image caption says &amp;#39;Requested page locked&amp;#39;."&gt;&lt;/figure&gt;&#10;&lt;p&gt;Nun wechsle ich den Modus vom Akteur zum Beobachter. Ich sehe erste Exploit-Versuche (oder zumindest Beteuerungen davon) im Web und muss an eine Folie eines Vortrages denken (Zeitstempel &lt;code&gt;11:24&lt;/code&gt;), den ich vor kurzem gesehen habe: &lt;a href="https://kernel-recipes.org/en/2026/security-in-the-llm-age/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Security in the LLM age&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Dort zeigt ein Linux-Kernel Sachverständiger, dass wir in 2026 im Schnitt sieben Tage &lt;em&gt;vor&lt;/em&gt; einem Patch in betroffener Software bereits Exploits in freier Wildbahn sehen.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-log" data-lang="log"&gt;discover --&amp;gt; disclose --&amp;gt; patch --&amp;gt; deploy&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Diese traditionelle Ereigniskette funktioniert nur bei &amp;ldquo;langsamen&amp;rdquo; Angreifern gut. Wir benötigen etwas, um wieder vor die Lage zu kommen.&lt;/p&gt;&#10;&lt;h2 id="schritt-4-beobachten-der-situation-verfügbarkeit-des-patches-einspielen-erster-betreiber"&gt;Schritt 4 Beobachten der Situation: Verfügbarkeit des Patches, Einspielen erster Betreiber&lt;/h2&gt;&#10;&lt;p&gt;Laut &lt;a href="https://thehackernews.com/2026/10/php-issues-emergency-patches-for-two.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Hackernews&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; wird der Patch um etwa &lt;strong&gt;16:00 MESZ&lt;/strong&gt; verfügbar. Ich besorge mir den RSS-Feed meines Hosters und warte auf Meldung.&lt;/p&gt;&#10;&lt;h3 id="status-21102026-1420-mesz"&gt;Status 21.10.2026 14:20 MESZ&lt;/h3&gt;&#10;&lt;p&gt;Auch das Bundesamt für Sicherheit in der Informationstechnik hat einen &lt;a href="https://www.bsi.bund.de/SharedDocs/Cybersicherheitswarnungen/DE/2026/2026-297981-1032.pdf?__blob=publicationFile&amp;amp;v=4" target="_blank" rel="noopener noreferrer" class="external-link"&gt;BSI-IT-Sicherheitshinweis&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; herausgegeben, wo mit der &amp;ldquo;Kritikalität 3/Orange&amp;rdquo; vor der Lücke gewarnt und folgendes angemerkt wird:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&amp;ldquo;Der Patch für die Schwachstelle ist heute 16 Uhr deutscher Zeit (14:00 UTC) angekündigt und sollte unverzüglich zu diesem Zeitpunkt installiert werden.&amp;rdquo; - BSI, 21.10.2026&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-10-21-hoster-vulnerability-notice.avif" alt="Image: Screenshot of my hoster&amp;#39;s notification feed for the PHP vulnerabilities in question. There are multiple entries at different points in time, all dated 21-Oct-2026."&gt;&lt;/figure&gt;&#10;&lt;h3 id="status-21102026-1634-mesz"&gt;Status 21.10.2026 16:34 MESZ&lt;/h3&gt;&#10;&lt;p&gt;Mein Hoster &lt;a href="https://status.hetzner.com/de/incident/f4144d55-38c3-48d1-8664-7a3429355cd7" target="_blank" rel="noopener noreferrer" class="external-link"&gt;meldet, dass die Patches nun verfügbar seien&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; und mit der Implementierung begonnen würde. Betroffen sind nicht nur die Nextcloud-Instanzen, sondern auch seine komplette Administrationsoberfläche sowie sein Webmailer.&lt;/p&gt;&#10;&lt;h3 id="status-21102026-1952-mesz"&gt;Status 21.10.2026 19:52 MESZ&lt;/h3&gt;&#10;&lt;p&gt;Mein Hoster meldet Vollzug für die von ihm betriebenen Webhosting-Angebote und Managed Servers.&lt;/p&gt;&#10;&lt;h3 id="status-21102026-2240-mesz"&gt;Status 21.10.2026 22:40 MESZ&lt;/h3&gt;&#10;&lt;p&gt;Die Hetzner-Anwendung &lt;em&gt;KonsoleH&lt;/em&gt;, über die ich meine Nextcloud-Instanz verwalte, ist down.&lt;/p&gt;&#10;&lt;h3 id="status-21102026-2300-mesz"&gt;Status 21.10.2026 23:00 MESZ&lt;/h3&gt;&#10;&lt;p&gt;&lt;em&gt;KonsoleH&lt;/em&gt; ist wieder live (und gepatcht).&lt;/p&gt;&#10;&lt;h2 id="schritt-5-erkenntnis-und-schlussfolgerung"&gt;Schritt 5 Erkenntnis und Schlussfolgerung&lt;/h2&gt;&#10;&lt;p&gt;Was lerne ich aus den Ereignissen dieses turbulenten Tages? Wie gehe ich in Zukunft mit Sicherheitslücken um? Und wie erkenne ich überhaupt, dass ein Problem vorliegt?&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Nicht nur der Service als Ganzes ist angreifbar sondern auch seine Komponenten. &amp;ndash;&amp;gt; Kenne alle Komponenten und achte auf Schwachstellen und Patches!&lt;/li&gt;&#10;&lt;li&gt;Die Gegenspieler sind (durch LLMs) unglaublich schnell geworden. &amp;ndash;&amp;gt; Rechne mit Exploit vor Patch-Verfügbarkeit!&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Eine Liste geeigneter Quellen für Verwundbarkeiten, Neuigkeiten und Patches stelle ich mir gerade zusammen. Sobald die Liste stabil ist, werde ich darüber berichten.&lt;/p&gt;&#10;&lt;h2 id="schritt-6-aktionen"&gt;Schritt 6 Aktionen&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Sensible Daten wenn möglich aus dem Netz nehmen. Gedankengang: Was wäre, wenn das weg kommt? Reicht Verfügbarkeit im LAN/Intranet?&lt;/li&gt;&#10;&lt;li&gt;Besseres Monitoring und Abuse detection sind nur konsequent: Früh erkennen, früh sperren, früh melden, früh abschalten, sofort patchen.&lt;/li&gt;&#10;&lt;li&gt;Standardbezugsquellen für Informationen zu verwendeter Software besorgen. CVE-List-Scanner bauen? HackerNews-Filter?&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="nachtrag-22102026-0930-mesz"&gt;Nachtrag: 22.10.2026 09:30 MESZ&lt;/h3&gt;&#10;&lt;p&gt;Der Hoster hat meine Nextcloud-Instanz gepatcht und wieder online genommen. Alle Systeme normal. Es gibt nun auch einen &lt;a href="https://de.wikipedia.org/wiki/PHP2Shell" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Wikipedia-Eintrag&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; zum Thema, der sehr aktuell gehalten wird.&lt;/p&gt;&#10;</description></item><item><title>Kritische Schwachstellen bei Gitea (und Forgejo)</title><link>https://blog.schallbert.de/gitea-critical-vulnerability-active-exploitation-rce/</link><pubDate>Sun, 04 Oct 2026</pubDate><author>Schallbert</author><guid>https://blog.schallbert.de/gitea-critical-vulnerability-active-exploitation-rce/</guid><description type="html">&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-10-04-gitea-lower-than-V27-vulnerable-cve.avif"&#10; class="post-cover"&#10; alt="Image: The logo of Gitea, a cup of tea. It is boiling hot, and steam is emanating from the cup&amp;#39;s contents. In one of the steam clouds, there is a Jolly Roger. The image caption says &amp;#39;Gitea "&#10; title="Kritische Schwachstellen bei Gitea (und Forgejo)" /&gt;&#10;&lt;aside class="update-box update-box--error" role="note"&gt;&#10; &lt;span class="update-box__icon" aria-hidden="true"&gt;&#10; ⛔&#10; &lt;/span&gt;&#10;&#10; &lt;div class="update-box__body"&gt;&#10; &lt;div class="update-box__heading"&gt;&#10; &lt;strong class="update-box__title"&gt;&#10; &#10; Update: Forgejo v16.0.4 und abwärts ebenfalls betroffen&#10; &#10; &lt;/strong&gt;&#10;&#10; &lt;time datetime="2026-10-02T00:00:00Z"&gt;&#10; 02. Okt. 2026&#10; &lt;/time&gt;&#10; &#10; &lt;/div&gt;&#10;&#10; &#10; &lt;div class="update-box__content"&gt;&#10; Die &lt;a href="https://forgejo.org/releases/16.x/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Release notes&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; lesend, betrachte ich die Software-Forge-Lösung &lt;a href="https://forgejo.org/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Forgejo&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; (ein Fork von Gitea) als ebenfalls von den unten beschriebenen CVEs betroffen. Erst mit v16.0.5 vom 17.09.2026 aufwärts sind sämtliche in diesem Artikel diskutierten CVEs behoben. Kommt im Artikel also das Wort &amp;lsquo;Gitea&amp;rsquo; vor, ist Forgejo ausdrücklich mitgemeint.&#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10;&lt;/aside&gt;&#10;&lt;h2 id="gewahrwerdung"&gt;Gewahrwerdung&lt;/h2&gt;&#10;&lt;p&gt;Wie so oft beginnt auch diese Geschichte mit einem Netzwerk der menschlichen Kommunikation. Dieser &lt;a href="https://blog.schallbert.de/gitea-critical-vulnerability-active-exploitation-rce/#credits"&gt;unersetzliche Austausch&lt;/a&gt; hat schon viel zur Sicherheit der Software beigetragen, mit der ich diesen Blog betreibe. Nun kann ich eine weitere Sicherheitslücke schließen. Aber der Reihe nach.&lt;/p&gt;&#10;&lt;h3 id="gitea-als-angriffsziel"&gt;Gitea als Angriffsziel&lt;/h3&gt;&#10;&lt;p&gt;Ich hörte, dass die selbst gehostete Versionsverwaltungslösung &lt;a href="https://en.wikipedia.org/wiki/Gitea" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Gitea&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; eines meiner Bekannten Ziel einer Attacke geworden ist. Hierbei wurde eine &lt;a href="https://www.crowdstrike.com/en-us/cybersecurity-101/cyberattacks/remote-code-execution/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;RCE&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; (Remote Code Execution) möglich und tatsächlich auch ausgeführt.&lt;/p&gt;&#10;&lt;h3 id="warum-ist-gitea-ein-attraktives-ziel"&gt;Warum ist Gitea ein attraktives Ziel?&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Diebstahl von (Firmen)geheimnissen: Bei Zugriff auf Repositories ist vertraulicher Quellcode gefährdet, offengelegt zu werden.&lt;/li&gt;&#10;&lt;li&gt;Abfluss von Zugangsdaten: Wird ein größeres Produkt mit Schnittstellen in Gitea verwaltet, sind &lt;a href="https://en.wikipedia.org/wiki/API_key" target="_blank" rel="noopener noreferrer" class="external-link"&gt;API keys&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, Konten und Passwörter in Gefahr, falls sie unverschlüsselt vorliegen. Abhilfe schaffen Tools wie &lt;a href="https://dev.to/vnjogani/a-guide-to-git-secret-49g3" target="_blank" rel="noopener noreferrer" class="external-link"&gt;git-secret&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;; sie werden aber durch Einführen zusätzlicher Komplexität noch nicht flächendeckend eingesetzt.&lt;/li&gt;&#10;&lt;li&gt;Klassische Rechteeskalation: Unter Umständen kann man durch Ausbruch aus der Gitea-Software die ganze Maschine übernehmen.&lt;/li&gt;&#10;&lt;li&gt;Nutzen des &lt;a href="https://gitea.com/gitea/runner" target="_blank" rel="noopener noreferrer" class="external-link"&gt;runner&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;: Schafft man es den Runner zu kapern, kann man auch ohne erweiterte Rechte Ressourcen der Hostmaschine in Beschlag nehmen und für eigene Zwecke missbrauchen (Stichwort &lt;a href="https://dev.to/golu12/crypto-mining-is-killing-all-free-cicd-platforms-28ip" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Cryptominers in CI/CD&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="was-ist-eine-rce"&gt;Was ist eine RCE?&lt;/h3&gt;&#10;&lt;p&gt;Eine Remote Code Execution ist ein erfolgreicher Angriff, bei dem nicht autorisierter Code ohne Zutun von Besitzer oder Administration der befallenen Ressource aus der Ferne über das Netzwerk eingespielt und ausgeführt werden kann.&lt;/p&gt;&#10;&lt;h2 id="das-gitea-ökosystem"&gt;Das Gitea-Ökosystem&lt;/h2&gt;&#10;&lt;p&gt;Als Versionsverwaltung und &lt;a href="https://en.wikipedia.org/wiki/Forge_%28software%29" target="_blank" rel="noopener noreferrer" class="external-link"&gt;forge&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; gehört zum Basisumfang von Gitea die Möglichkeit, webbasiert und kollaborativ Software zu entwickeln und zu bauen. Daher ist vorgesehen, dass sich Nutzer registrieren und unter Umständen sogar &lt;a href="https://github.com/features/actions" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Aktionen&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; ausführen können, damit Software automatisiert gebaut und/oder ausgeliefert werden kann.&lt;/p&gt;&#10;&lt;p&gt;Genau dieses automatische Nachladen und Ausführen von Code kann böse Folgen haben, wenn Sicherheitslücken in der Verwaltungssoftware selbst bestehen.&lt;/p&gt;&#10;&lt;h3 id="verwundbarkeit-durch-offene-registrierung"&gt;Verwundbarkeit durch offene Registrierung&lt;/h3&gt;&#10;&lt;p&gt;Lässt man als Betreiberin die Registrierung neuer Accounts (&amp;ldquo;self-registration&amp;rdquo;) in Giteas Konfiguration auf dem Standardwert &lt;code&gt;DISABLE_REGISTRATION = false&lt;/code&gt;, so können sich Nutzerinnen selbst einschreiben, eigene Repository anlegen, issues aufmachen und alles tun, was ohne Adminrechte möglich ist.&lt;/p&gt;&#10;&lt;p&gt;Hat man zusätzlich noch den Standardwert &lt;code&gt;REQUIRE_SIGNIN_VIEW = false&lt;/code&gt; gesetzt, können auch unauthentisierte Besucher öffentliche Repositories sehen, die Seiten von Gitea browsen und vor allem die öffentliche &lt;a href="https://docs.gitea.com/api/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;API des Gitea Endpoints&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; ansprechen.&lt;/p&gt;&#10;&lt;h3 id="verwundbarkeit-durch-standardkonfiguration-für-reverse-proxies"&gt;Verwundbarkeit durch Standardkonfiguration für Reverse Proxies&lt;/h3&gt;&#10;&lt;p&gt;In der Standardkonfiguration des Gitea Docker image vertraut Gitea &lt;code&gt;&amp;lt;V1.26.3&lt;/code&gt; allen Proxies.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# gitea/app.ini&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[security]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;REVERSE_PROXY_LIMIT&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;REVERSE_PROXY_TRUSTED_PROXIES&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;* # This is a vulnerability!&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="die-sicherheitslücken"&gt;Die Sicherheitslücken&lt;/h2&gt;&#10;&lt;p&gt;Womit haben wir es hier zu tun? Mit mehreren kritischen Sicherheitslücken des Ausmaßes &lt;code&gt;9.8/10&lt;/code&gt; &lt;a href="https://www.first.org/cvss/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;CVSS score&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, von denen es bekannte Fälle der Ausnutzung gibt.&lt;/p&gt;&#10;&lt;figure class="media-frame media-frame--center"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-10-04-cvss-calculator.avif" alt="Image: Common vulnerability scoring system calculator. The selectors are switched in a way that reproduces a critical vulnerability over a network vector without user interaction as discussed in this post."&gt;&lt;/figure&gt;&#10;&lt;h3 id="cvss-scoring"&gt;Exkurs: Die CVSS-Bewertung&lt;/h3&gt;&#10;&lt;p&gt;Zur Einordnung der Bewertung von &amp;ldquo;kritisch&amp;rdquo;: Die CVSS-Kriterien sind ähnlich aufgebaut wie in der klassischen Gefahren- und &lt;a href="https://de.wikipedia.org/wiki/Risikoanalyse" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Risikoanalyse&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, einem Zweig der Ingenieurswissenschaften. Anders als dort liegt der Fokus allerdings nicht in der Analyse möglicher Fehlerfälle, Schweregrad, Eintritts- und Ausfallwahrscheinlichkeit oder Detektierbarkeit, sondern auf dem Schwierigkeitsgrad der Ausnutzung und möglicher Auswirkungen.&lt;/p&gt;&#10;&lt;h3 id="bedeutung-der-cvss-einzelwerte"&gt;Bedeutung der CVSS-Einzelwerte&lt;/h3&gt;&#10;&lt;p&gt;Je höher der CVSS-Wert, desto einfacher ist die Sicherheitslücke auszunutzen und desto gravierender sind mögliche Folgen hinsichtlich der Datensicherheitskriterien (&lt;a href="https://en.wikipedia.org/wiki/CIA_triad" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Confidentiality, Integrity, Availability&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;).&lt;/p&gt;&#10;&lt;p&gt;Das Bild oben zeigt eine Konstellation, in der eine mögliche Attacke aus der Ferne (Netzwerk) mit geringem Aufwand (Complexity, meint Systemhärtung) ohne Randbedingungen (Requirement, z.B. das Anfahren einer vulnerablen Stelle im Code, Vorhandensein eines bestimmten Zustandes des angegriffenen Systems, Auslösen einer &lt;a href="https://en.wikipedia.org/wiki/Race_condition" target="_blank" rel="noopener noreferrer" class="external-link"&gt;race condition&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; etc.), ohne zusätzliche Rechte (als Gast ohne Authentisierung oder Autorisierung) oder Interaktion mit dem User oder der Administratorin des Systems durchgeführt werden kann.&lt;/p&gt;&#10;&lt;p&gt;Das wäre für sich genommen noch nicht schlimm, wenn niemand das System benötigt &lt;code&gt;Score 0.0&lt;/code&gt; und nichts Interessantes darauf gespeichert ist. Liegen dort allerdings sensitive Daten &lt;code&gt;Confidentiality, 8.7&lt;/code&gt; oder zum Beispiel eine Datenbank, deren Werte sich nun manipulieren lassen &lt;code&gt;Integrity, 8.7&lt;/code&gt;, oder wird auch nur die Verfügbarkeit von benötigten Daten eingeschränkt &lt;code&gt;Availability, 8.7&lt;/code&gt;, befindet man sich bereits im Bereich &lt;code&gt;High&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Mit diesem Wissen nehmen wir nun den Transfer auf die kritischen Lücken von Gitea vor.&lt;/p&gt;&#10;&lt;h3 id="cve-2026-20896-authentication-bug-in-gitea-through-reverse-proxies"&gt;CVE-2026-20896: Authentication bug in Gitea through reverse-proxies&lt;/h3&gt;&#10;&lt;p&gt;Kommt ein Angreifer hinter den Reverse Proxy (oder ist gar kein Reverse Proxy vorgeschaltet), kann er eine Anfrage mit &lt;code&gt;X-WEBAUTH-USER&lt;/code&gt; im Header direkt an die Gitea-Instanz senden und sich für einen Reverse Proxy ausgeben. Ist Gitea gleichzeitig darauf eingestellt, &lt;a href="https://app.opencve.io/cve/CVE-2026-20896" target="_blank" rel="noopener noreferrer" class="external-link"&gt;allen reverse proxies zu vertrauen&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; &lt;code&gt;REVERSE_PROXY_TRUSTED_PROXIES = *&lt;/code&gt;, so geht es davon aus, dass bereits &lt;a href="https://df00tech.com/detections/blog/cve-2026-20896" target="_blank" rel="noopener noreferrer" class="external-link"&gt;authentisiert wurde und eine gültige Session vorliegt&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. Der Angreifer erhält also Nutzerrechte mit Schreibzugriff auf Repositories, obwohl er nicht mal einen Account angelegt hat.&lt;/p&gt;&#10;&lt;p&gt;Das eigentliche Lücke ist hier das unhinterfragte Vertrauen gegenüber dem Sender des Headers ohne weiteren Abgleich mit einem Session Token oder ähnlichem; das Annehmen desselben von fremden Quellen erzeugt lediglich die Verwundbarkeit.&lt;/p&gt;&#10;&lt;p&gt;Für diesen Bug gibt es &lt;a href="https://www.cloudlinktech.com/news/active-attacks-exploit-critical-gitea-docker-auth-bug/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Belege für bereits erfolgte Attacken&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h3 id="cve-2026-59774-file-read-flaw-for-anything-the-gitea-service-account-can-read"&gt;CVE-2026-59774: File-read flaw for anything the Gitea Service Account can read&lt;/h3&gt;&#10;&lt;p&gt;Diese kritische Sicherheitslücke basiert auf einer unzureichenden Eingabeprüfung des &lt;a href="https://docs.gitea.com/next/administration/external-renderers/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;eingebauten Textrenderers von Gitea&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; für &lt;a href="https://en.wikipedia.org/wiki/Org-mode" target="_blank" rel="noopener noreferrer" class="external-link"&gt;org-mode&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; Dateien. Eine detaillierte Beschreibung des Vektors und zu möglichen Wegen eines Angriffs kann auf &lt;a href="https://www.satyamrastogi.com/blog/gitea-org-mode-unauthenticated-file-read-cve-2026-59774/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Saytam Rastogis&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; hervorragendem Blog nachgelesen werden.&lt;/p&gt;&#10;&lt;p&gt;Kurzgesagt kann sich ein Angreifer mit Zugriff auf zumindest ein öffentliches Repository eine bösartige &lt;code&gt;.org&lt;/code&gt;-Datei zusammenbasteln, mit deren Hilfe er Giteas Konfiguration &lt;code&gt;app.ini&lt;/code&gt; auslesen und damit auf darin enthaltene Secrets zugreifen kann, welche ihm erweiterte Rechte zugestehen oder ihn zumindest lateral auf dem System bewegen lassen.&lt;/p&gt;&#10;&lt;p&gt;Dies kann laut &lt;a href="https://thehackernews.com/2026/08/critical-gitea-flaw-let-unauthenticated.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;hacker news&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; und &lt;a href="https://github.com/go-gitea/gitea/security/advisories/GHSA-6v53-hr58-556r" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Giteas eigenen Leuten&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; zufolge beispielsweise auch dazu ausgenutzt werden, die Registration Token eines Runners auszulesen und selbigen zu übernehmen.&lt;/p&gt;&#10;&lt;h3 id="cve-2026-60004-rce-allowing-attacker-with-ordinary-user-rights-to-execute-arbitrary-shell-commands-as-the-gitea-os-user"&gt;CVE-2026-60004: RCE allowing attacker with ordinary user rights to execute arbitrary shell commands as the Gitea OS user.&lt;/h3&gt;&#10;&lt;p&gt;Diese Sicherheitslücke ist deswegen besonders schlimm, weil sie zusätzlich eine &lt;a href="https://www.thehackerwire.com/vulnerability/CVE-2026-60004/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;privilege escalation ermöglicht&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&amp;ldquo;The vulnerability in question is CVE-2026-60004 (CVSS score: 9.8), a case of remote code execution that allows an attacker with ordinary write access to a repository to execute arbitrary shell commands as the Gitea OS user.&amp;rdquo; &lt;a href="https://thehackernews.com/2026/08/critical-gitea-rce-actively-exploited.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;thehackernews&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, Aug-2026&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Das Ausnutzen dieser Lücke kann den Angreifer also die gesamte Gitea-Instanz übernehmen lassen, sofern er Schreibzugriff auf irgendein (evtl. sogar öffentliches) Repository hat.&lt;/p&gt;&#10;&lt;h2 id="das-lagebild"&gt;Das Lagebild&lt;/h2&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--right"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/posts/2026-10-04-gitea-cve-chaining.avif" alt="Image: A decision tree, connecting the dots between the three discussed CVEs. Baseline message is that the system has to be regarded as compromised in case an attacker is able to get ordinary write access to any repository on the instance which can be done by exploiting any of the discussed CVEs."&gt;&lt;/figure&gt;&#10;Es gibt noch weitere kritische Sicherheitslücken, allerdings könen sich Angreifer mit einer Kombination der obigen Darstellungen ohne großen Aufwand&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Als normale User auf dem Gitea-System bewegen, &lt;em&gt;ohne sich registriert zu haben&lt;/em&gt;, und &lt;em&gt;ohne SSH-Zugriff&lt;/em&gt; zu benötigen&lt;/li&gt;&#10;&lt;li&gt;Sich als Gitea-Service User ausgeben&lt;/li&gt;&#10;&lt;li&gt;Actions übernehmen oder sogar Workflows injizieren und ausführen&lt;/li&gt;&#10;&lt;li&gt;Mit etwas Mehraufwand die gesamte Instanz übernehmen, verschlüsseln, Lösegeld verlangen usw.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Was mein Bekannter erlebt hat betraf die Punkte eins und drei. Der Angriff wurde sehr wahrscheinlich automatisiert ausgeführt, nachdem das Internet auf verwundbare Instanzen gescannt worden war.&lt;/p&gt;&#10;&lt;p&gt;Zusammengefasst kann man im vorliegenden Fall von einer &lt;a href="https://www.techtimes.com/articles/325724/20260827/cisa-confirms-gitea-cve-2026-60004-exploited-cryptominer-hits-5000-exposed-dev-servers.htm" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Mass-Exploitation Campaign&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; für Cryptomining ausgehen.&lt;/p&gt;&#10;&lt;h3 id="der-cryptominer"&gt;Der Cryptominer&lt;/h3&gt;&#10;&lt;p&gt;Bei meinem Bekannten wird folgende Datei als statisch gelinkte Executable (!) auf dem System abgelegt: &lt;code&gt;gitea/data/gitea/sys_health_s3&lt;/code&gt;&#10;Der Hash der Datei legt seiner Ansicht nach nahe, dass ein &lt;a href="https://github.com/xmrig/xmrig" target="_blank" rel="noopener noreferrer" class="external-link"&gt;XMRig cyptominer&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; als &lt;a href="https://www.cloudflare.com/learning/security/glossary/malicious-payload/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;bösartige Payload&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; eingesetzt wurde, der mit &lt;code&gt;pool.hashvault.pro&lt;/code&gt; kommuniziert und dabei einen Großteil der verfügbaren CPU-Leistung für sich beansprucht.&lt;/p&gt;&#10;&lt;h3 id="noch-größerer-schaden-möglich"&gt;Noch größerer Schaden möglich&lt;/h3&gt;&#10;&lt;p&gt;Sogar für den auslegungsüberschreitenden Stöfall habe ich &lt;a href="https://thehackernews.com/2026/09/red-heron-exploits-gitea-rce-to.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;ein aktuelles (Sep-2026) Beispiel auf Hackernews&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; finden können: Diebstahl von Quellcode, Sammlung von Zugangsdaten, Privilege escalation bis hin zum &lt;code&gt;root&lt;/code&gt;-Zugriff auf das betroffene System.&lt;/p&gt;&#10;&lt;h2 id="wie-entdecke-ich-einen-angriff"&gt;Wie entdecke ich einen Angriff?&lt;/h2&gt;&#10;&lt;p&gt;Schlimmstenfalls gar nicht. Sind Profis zielgerichtet am Werk, können allenfalls die Logdateien zum Zeitpunkt direkt nach dem Einbruch Aufschluss geben. Im Falle, dass man sie sofort liest und interpretieren kann. Aber ich schweife ab&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&#10;&lt;p&gt;Dannoch sollte man sich folgende Fragen stellen:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Betreibe ich eine vulnerable Gitea-Version (&lt;code&gt;&amp;lt;1.27.2&lt;/code&gt;)?&lt;/li&gt;&#10;&lt;li&gt;Verzichte ich auf eine Monitoring-Lösung, die bei Auffälligkeiten warnt?&lt;/li&gt;&#10;&lt;li&gt;Liegt eine ungewöhnlich &lt;em&gt;hohe CPU-Last&lt;/em&gt; des Systems vor (Deutet auf Kryptominer-Befall hin)?&lt;/li&gt;&#10;&lt;li&gt;Für diesen konkreten Miner kann man zusätzlich nachsehen, ob auf dem System folgende Datei zu finden ist:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;find / -name &lt;span style="color:#e6db74"&gt;&amp;#39;.sys_health_s3&amp;#39;&lt;/span&gt; 2&amp;gt;/dev/null&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Beantwortet man sich nur eine dieser Fragen mit &lt;code&gt;ja&lt;/code&gt;, ist zügiges Handeln angebracht. Dabei ist durch den Schweregrad der Sicherheitslücken das gesamte Hostsystem als kompromittiert anzusehen, insbesondere wenn der Gitea-Container oder ein eventuell eingebundener Runner &lt;code&gt;rootful&lt;/code&gt; läuft, also mit dem Docker Socket ausgestattet wurde.&lt;/p&gt;&#10;&lt;h3 id="bei-befall-quarantäne"&gt;Bei Befall: Quarantäne&lt;/h3&gt;&#10;&lt;p&gt;Nächste Schritte: Sofort die betroffene Maschine isolieren und vom Netz nehmen. Die Container herunterfahren, Hostmaschine durchbooten und Updates nachladen. Aschließend die Docker Registry auf Stand bringen und über die Logdateien (Zeitstempel!) ermitteln, ob andere Teile des Systems betroffen sind. Für weitere Details siehe &lt;a href="https://blog.schallbert.de/gitea-out-of-memory/"&gt;mein Artikel über einen selbsterlebten Angriff auf Gitea&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="lösungen"&gt;Lösungen&lt;/h2&gt;&#10;&lt;h3 id="gitea-updaten"&gt;Gitea Updaten!&lt;/h3&gt;&#10;&lt;p&gt;Gitea muss dringend auf eine Version &lt;code&gt;&amp;gt;1.27.1&lt;/code&gt; gebracht werden. Dafür kann beispielsweise die &lt;code&gt;docker-compose.yml&lt;/code&gt; geändert und die Container danach durchgebootet werden:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# docker-compose.yml&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;gitea&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;gitea/gitea:latest&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;container_name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;gitea&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Weitere Informationen zu aktuellen Fixes finden sich auf &lt;a href="https://blog.gitea.com/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Giteas Blog&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. Der Major Release auf Version 27 löst eine ellenlange Liste an kritischen Sicherheitslücken. Ich habe in diesem Artikel nur ein paar davon herausgepickt, da sie mein direktes Umfeld betreffen und ihre Ausnutzung bekannt ist.&lt;/p&gt;&#10;&lt;h3 id="gitea-und-runner-rootless-ausführen"&gt;Gitea und Runner &lt;code&gt;rootless&lt;/code&gt; ausführen&lt;/h3&gt;&#10;&lt;p&gt;Führt das Ausnutzen einer Sicherheitslücke zum Verlust von Gitea oder dem Action Runner, sollte nicht auch noch das Hostsystem kompromittiert werden. Der Betrieb in einem Container kann den Schadensumfang deutlich reduzieren. Das Aufsetzen einer &lt;a href="https://blog.schallbert.de/gitea-act-runner-dind/"&gt;&lt;code&gt;rootless&lt;/code&gt;-Lösung habe ich daher hier beschrieben&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="zusätzliche-maßnahmen-härtung"&gt;Zusätzliche Maßnahmen (Härtung)&lt;/h2&gt;&#10;&lt;h3 id="cve-2026-20896-netzwerkzugriff-erschweren"&gt;CVE-2026-20896: Netzwerkzugriff erschweren&lt;/h3&gt;&#10;&lt;p&gt;Bei den folgenden Schritten folge ich der &lt;a href="https://df00tech.com/detections/CVE-2026-20896#kql" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Empfehlung von d00ftech&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Einfügen des Adressraumes des selbst verwendeten Reverse Proxy. Dafür gilt erst einmal herauszufinden, unter welcher Adresse der Reverse Proxy im Netzwerk erreichbar ist. Auf meinem Server beispielsweise laufen Gitea und Reverse Proxy (Caddy) in Docker. Daher finde ich die IP-Adresse wie folgt:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker inspect caddy &lt;span style="color:#ae81ff"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --format&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;{{range $name, $network := .NetworkSettings.Networks}}{{$name}}: {{$network.IPAddress}}{{&amp;#34;\n&amp;#34;}}{{end}}&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;caddy-proxy: 172.20.0.2&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dieser Wert wird nun in der &lt;code&gt;gitea/app.ini&lt;/code&gt; eingetragen:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[security]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;REVERSE_PROXY_LIMIT&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;REVERSE_PROXY_TRUSTED_PROXIES&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;172.20.0.2/32&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;&#10;&lt;li&gt;Direkten Netzwerkzugriff auf Gitea unter Umgehung des eigenen Reverse Proxy blockieren. Dazu darf der Port von Gitea (meist &lt;code&gt;3000&lt;/code&gt;) nicht in der Portfreigabe beispielsweise der Docker-Konfiguration erscheinen:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# docker-compose.yml&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;services&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;gitea&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ports&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;&amp;#34;3000:3000&amp;#34;&lt;/span&gt; &lt;span style="color:#75715e"&gt;# remove this!&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="cve-2026-59774-gitea-updaten"&gt;CVE-2026-59774: Gitea updaten!&lt;/h3&gt;&#10;&lt;p&gt;Es gibt zwar die Möglichkeit, den org-mode renderer in der &lt;code&gt;app.ini&lt;/code&gt; zu deaktivieren (Siehe &lt;a href="https://docs.gitea.com/next/administration/external-renderers/#appini-file-configuration" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Gitea Documentation&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; zum Thema), der weitaus bessere Weg ist aus meiner Sicht aber das Update von Gitea selbst!&lt;/p&gt;&#10;&lt;h3 id="cve-2026-60004-falls-möglich-self-registration-abschalten"&gt;CVE-2026-60004: Falls möglich Self-Registration abschalten&lt;/h3&gt;&#10;&lt;p&gt;Der eigentliche Fix ist nur durch ein Update der Gitea-Version möglich. Für kleinere Instanzen mit wenigen Usern mag es zusätzlich zweckmäßig erscheinen, die Selbstregistrierung für neue User abzuschalten. Sie müssen eine Registrierung von nun an bei den Administratoren anfragen (sofern sie nicht eine der anderen oben beschriebenen CVEs ausnutzen).&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# gitea/app.ini&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[service]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;DISABLE_REGISTRATION&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Weitere hilfreiche Einstellungen sind:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;REGISTER_EMAIL_CONFIRM&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;true # Requires user&amp;#39;s email to be confirmed for registration to complete&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ENABLE_OPENID_SIGNUP&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;false # Disallow logons via external API&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;REQUIRE_SIGNIN_VIEW&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;true # Force users to login before they can view content or use the public API &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ausblick-und-fazit"&gt;Ausblick und Fazit&lt;/h2&gt;&#10;&lt;p&gt;Versionsverwaltungen sind sehr atttraktive Ziele für gleich einen ganzen Strauß an Angreifertypen: Von Cryptominern wegen der Möglichkeit der Ressourcenübernahme über Ransomware-Gruppen wegen der Quellcodedateien und möglicher Zugangsdaten bis hin zu hochprofessionellen, zielgerichteten Angreifern und staatlichen Akteuren dadurch, dass die Software eine Art Infrastruktur darstellt.&lt;/p&gt;&#10;&lt;p&gt;Daher:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&amp;ldquo;Alle Patches einspielen. Immer. Sofort. Ohne Ausnahmen.&amp;rdquo; - &lt;a href="https://codeberg.org/tomas-jakobs/fefe-blog-backup/src/branch/main/content/assets/hackback/hackback.htm#L509" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Felix von Leitner&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, sagt aber auch das &lt;a href="https://www.bsi.bund.de/DE/Themen/Verbraucherinnen-und-Verbraucher/Informationen-und-Empfehlungen/Cyber-Sicherheitsempfehlungen/Updates-Browser-Open-Source-Software/Wichtige-Softwareupdates/wichtige-softwareupdates_node.html" target="_blank" rel="noopener noreferrer" class="external-link"&gt;BSI&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Was mich ein wenig ratlos zurücklässt ist die schiere Zahl und Kritikalität der gestopften Sicherheitslücken (35 CVEs binnen eines Monats laut Giteas eigenem Blog!). Aus meiner blauäugigen Sicherheitsperspektive ist diese Lösung ein Schweizer Käse und ich bin mir nicht sicher, ob ich Gitea weiter betreiben sollte.&lt;/p&gt;&#10;&lt;h3 id="sofort-härtung-durchführen"&gt;Sofort: Härtung durchführen&lt;/h3&gt;&#10;&lt;p&gt;Na klar: Gitea auf &lt;code&gt;latest&lt;/code&gt; bringen und die oben beschriebenen Härtungsmaßnahmen durchführen.&lt;/p&gt;&#10;&lt;h3 id="kurzfristig-automatische-updates"&gt;Kurzfristig: Automatische Updates&lt;/h3&gt;&#10;&lt;p&gt;In den nächsten Tagen und Wochen werde ich mich damit beschäftigen, die Docker Registry automatisch nach Updates für meine Software zu durchsuchen und sie ebenso automatisch auf meinem Server auszurollen. Blog-Post folgt!&lt;/p&gt;&#10;&lt;h3 id="mittelfristig-her-mit-monitoring"&gt;Mittelfristig: Her mit Monitoring&lt;/h3&gt;&#10;&lt;p&gt;Ich werde mich auf die Suche machen nach einer kleinen und leichten Monitoring-Lösung, die Auffälligkeiten wie &amp;ldquo;CPU-Last ungewöhnlich hoch seit HH:MM:SS&amp;rdquo; meldet und &lt;a href="https://oneuptime.com/blog/post/2026-01-06-docker-health-checks/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;healthchecks&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt; durchführen und überwachen kann. Dabei darf sie selbst kein Einfallstor dastellen, muss also praktisch ohne Rechte auskommen. Ob das wohl einfach möglich ist?&lt;/p&gt;&#10;&lt;h3 id="mittelfristig-2-weg-mit-den-secrets"&gt;Mittelfristig 2: Weg mit den Secrets&lt;/h3&gt;&#10;&lt;p&gt;Unverschlüsselte Secrets haben in Repositories nichts verloren. Selbst auf dem Server selbst ist eine &lt;code&gt;.env&lt;/code&gt;-Datei, die dort herumliegt, als nicht mehr sicher zu werten. Auch hier werde ich mir Gedanken machen und entsprechend berichten, wenn ich eine Lösung ausgerollt habe.&lt;/p&gt;&#10;&lt;h3 id="mittelfristig-3-news-feeds-einrichten"&gt;Mittelfristig 3: News-Feeds einrichten&lt;/h3&gt;&#10;&lt;p&gt;Hierunter fallen Abos z.B. von Newslettern oder RSS-Feeds idealerweise aller meiner Softwareanbieter, IT-Security-Institutionen oder -Journalisten und weiteren Quellen, aus denen ich Sicherheitslücken, Patches und Maßnahmen zur Systemhärtung entnehmen kann.&lt;/p&gt;&#10;&lt;h3 id="credits"&gt;Langfristig: Mit Leuten weiterhin ins Gespräch gehen&lt;/h3&gt;&#10;&lt;p&gt;Es endet wie es beginnt. Bevor ich Probleme mit meiner Software lösen kann, bevor ich überhaupt von den Problemen weiß, ja genau da! Ganz am Anfang, bevor ich überhaupt entschieden habe, welche Software ich einsetze, da stehen: Andere Menschen.&lt;/p&gt;&#10;&lt;p&gt;Leute, die ich fragen kann, um Hilfe bitten kann. Deren Zeit ich in Anspruch nehmen darf für eigene Belange. Die ich zum Beispiel per Messenger aus dem Nichts heraus anschreibe und aus ihrem Fokus reiße.&lt;/p&gt;&#10;&lt;p&gt;Leute, die sich besser auskennen als ich, die einen anderne Blick auf die Dinge haben, oder deren Meinung ich interessant finde.&lt;/p&gt;&#10;&lt;p&gt;Kolleginnen, auch Ehemalige, Bekannte und Freunde, Familie, die ich zufällig oder zielgerichtet auf einen Austausch treffe. Auf einen Kaffee, ein Eis, ein Kaltgetränk, zum Musizieren oder für einen Brettspielnachmittag.&lt;/p&gt;&#10;&lt;p&gt;Leute, die mir trotz der Unterbrechung und doofer Fragen freundlich und geduldig helfen. Die vielleicht kurz mit den Augen rollen, mir die Dinge dann aber doch noch ein weiteres mal erklären. Die meine Monologe, kritische Nachfragen und gelegentliche Gegenrede irgendwie tolerieren.&lt;/p&gt;&#10;&lt;p&gt;Leute, mit denen ich in einen Austausch treten kann, der am Ende hoffentlich beiden Seiten nützt.&lt;/p&gt;&#10;&lt;p&gt;&lt;figure class="media-frame media-frame--left"&gt;&#10; &lt;img src="https://blog.schallbert.de/assets/images/root/Schallbert.avif" alt="Image: A computer-drawn image of Schallbert, pixelized, and in 256 colors."&gt;&lt;/figure&gt;&#10;Bei euch allen möchte ich mich bedanken. Mit Leuten wie euch wird alles viel einfacher. Auch der Betrieb dieses Blogs, wo so viel meiner Zeit hineingeht. Ich kann mit euch Entscheidungen diskutieren, erfahren wie ihr Dinge gemacht habt und warum genau so, die Perspektiven wechseln. Und neue Ideen entwickeln.&lt;/p&gt;&#10;&lt;p&gt;Bitte bleibt mir erhalten.&lt;/p&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;Verweis an &lt;a href="https://de.wikipedia.org/wiki/Fefes_Blog" target="_blank" rel="noopener noreferrer" class="external-link"&gt;&amp;ldquo;Fefe&amp;rdquo; Felix von Leitner&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;. Zitat: &amp;ldquo;Annahmen [&amp;hellip;]: Wir werden angegriffen. Wir merken es zeitnah. Aller Erfahrung nach: Nein, tun wir nicht. Typischer Zeitraum vor Entdeckung von blinden Passagieren: Ein halbes bis fünf Jahre.&amp;rdquo; - aus dem Vortrag &lt;a href="https://codeberg.org/tomas-jakobs/fefe-blog-backup/src/commit/5d0e24d085463a5fc3b852edb589347f6d909a85/content/assets/hackback/hackback.htm#L634" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Hackback&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;, Link führt zu &lt;a href="https://codeberg.org/" target="_blank" rel="noopener noreferrer" class="external-link"&gt;Codeberg&lt;span class="external-link-icon" aria-hidden="true"&gt;↗&lt;/span&gt;&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item></channel></rss>