Beiträge von m_ueberall

    Ich habe erst mal alle aktuell nicht zwingend gebrauchten Server runtergefahren.

    Ganz so drastische Maßnahmen muss man derzeit nicht ergreifen, wenn man selbst einen Root-Zugang besitzt und eine Linux-Distribution verwendet, welche den betreffenden Code als Modul nachlädt (siehe hier und hier) :

    Code
    sudo tee /etc/modprobe.d/disable-algif-aead.conf <<<'install algif_aead /bin/false'
    sudo rmmod algif_aead 2>/dev/null
    Zitat

    Creating a separate post so more people see this: the mitigation recommended by [Theori.io] for [copy.fail] *WILL NOT WORK* for any RHEL or RHEL-derived distro, including CentOS, Fedora, Oracle, and Alma as the vulnerable code is built-in.

    [netcup] Lars S. : Vielleicht wäre das eine gute Gelegenheit, eine "Kundenwarnungs-Seite" und/oder einen RSS-Feed aufzusetzen für derartige Situationen?

    Ohne jetzt in falsche Sicherheit zu wiegen, habe ich gestern natürlich auf einer Ubuntu-24.04-Maschine (x86_64) mit dem GA-Kernel einen Test gemacht und dort funktionierte der beschriebene Exploit nicht; auch im ycombinator-Diskussionsfaden gibt es Nutzer, welche das "Problem" nicht nachvollziehen können:

    EDIT2: Es könnte sein, dass bei den existierenden proof-of-concept-Beispielen auch die verfügbaren Nutzerkonten eine Rolle und die SELinux-Konfigurationen der Hosts eine Rolle spielen (GrapheneOS bspw. ist immun), wie in diesem GitHub-Repository erläutert; das dortige Test-Script gefällt jedenfalls und sollte via `dsh`/`ansible` o. ä. problemlos auf allen Hosts mit Python 3.10 oder neuer ausführbar sein:

    EDIT1: Wer meint, dank Nutzung eines aarch64-Servers sei er gegen den copy.fail-Exploit per se immun – dem ist nicht (mehr) so, es gibt inzwischen einen architekturunabhängigen proof-of-concept auf GitHub.

    Zitat

    Architectures supported by the vendored nolibc (per upstream): x86_64, i386, arm, aarch64, riscv32/64, mips, ppc, s390x, loongarch, m68k, sh, sparc. nolibc dispatches on the compiler's arch macros, so picking the right CC/LD is sufficient.

    cool - da braucht man aber User für oder?

    Siehe https://copy.fail/#faq-list :

    Zitat

    Is this remotely exploitable?→

    Not by itself — it requires local code execution as a regular user. Chain it with anything that gives you that (web RCE landing in an unprivileged service account, an SSH foothold, a malicious PR on a CI runner) and you're root.

    […]

    Where's the full technical write-up?→

    Root cause, scatterlist diagrams, the 2011 → 2015 → 2017 history, and the exploit walkthrough are on the Xint blog. Part 2 (Kubernetes container escape) is forthcoming.

    Bruuuuh wollte heute meine ganzen Server updaten, zum Glück guck ich immer wieder mal hier vorbei.

    Der Status der Canonical-Infrastruktur ist leider schon seit längerer Zeit in einem sehr schlechten Zustand; dabei sieht man in der Historie auf obiger Seite nur einen Ausschnitt (mehr verrät der einschlägige Matrix-Kanal) – wer bspw. auf Launchpad angewiesen ist, muss Geduld mitbringen. "Lustig" ist, dass die aktuellen RISCV64-Builds noch drei Wochen Zeit benötigen (siehe hier), das Release aber nächste Woche über die Bühne gehen soll.

    Wenn jemand sowas hat wäre ich dankbar

    Ich selbst will mich in den nächsten Tagen mit diesem Thema beschäftigen (habe also noch keine aktuellen Tutorials durchgearbeitet), und schaue zur initialen Informationssammlung gerne einschlägige Forenbeiträge [reddit.com] an; das dort zuerst empfohlene Buch "Hugo in Action"* (Leitseite, GitHub-Repository) steht bislang oben auf meiner eigenen Liste, da es etwas umfangreicher ist. Daneben wird man aber wohl auch hier "nicht darum herumkommen", sich durch das "Hauptforum" (Einstiegsposting) zu lesen …

    Zitat

    In wie fern ins Auge fassen könnte.

    Was mich betrifft, so wäre ich überglücklich wenn netcup eine Lösung im CCP anbieten könnte.

    "ins Auge fassen" im Sinne von lizensieren/installieren und den Nutzern im Forum zur Verfügung stellen. ;)

    Im CCP(?) vermisse ich einen Source-Editor bis dato nicht.

    hab jetzt die IPs zum einkommentieren ins obige script eingebaut.

    oder man gibt name oder IP direkt mit, z.b.: fb-reconnect 192.168.178.2

    Ich hoffe doch sehr, dass die Box von außen über die öffentliche IP-Adresse nicht auf derartige Anforderungen wie "reconnect" reagiert … =O

    (In Verbindung mit einer lokalen Geolokalisierung könnte man dann in DE/AT/CH diverse AVM-Kunden regelmäßig ärgern; das würde bestimmt schon praktiziert – nicht, dass ein eigenständig ausgelöster Reconnect an der Box in den letzten Jahren bei Vodafone eine IP-Änderung zur Folge gehabt hätte, aber "Schluckauf" würde man schon merken.)

    Ich selbst verwende Checkmk nicht; auf Basis der Installationsbeschreibung hier ist die Lösung tatsächlich noch einfacher, wenn Checkmk den "system-apache" als Reverse Proxy (auf Ports 80/443) verwendet, während der "site-apache" auf Port 5000 läuft.

    Um diese Annahmen zu verifizieren, kann man als root nach Starten aller Apache-Instanzen auf der Konsole ein "LANG=C netstat -tulpen | grep -E '^[AP]|:5000'" eingeben (Abfrage, auf welche IP-Adressen/Ports der "site-apache" reagiert; "netstat" kann man via "apt-get -y install net-tools" installieren, wenn nicht vorhanden).

    (1) Wenn der vorherige Befehl sowas zurückliefert wie "tcp […] 0.0.0.0:5000" bzw. "tcp6 […] :::5000", dann lauscht/reagiert der site-apache auch auf Abfragen von außen über die offizielle IP-Adresse. Das sollte man unterbinden – vorzugsweise über eine Konfigurationsänderung auf dem Host/Raspi selbst.

    (2) Daneben ist zu beachten, dass der Reverse Proxy (der "system-apache" im referenzierten Post) grundsätzlich auch auf allen IP-Adressen lauscht und auf externe Abfragen antworten würde – selbst wenn man den "site-apache" oben auf localhost einschränken würde (wenn das nicht schon der Fall ist), darf/muss der Zugriff über den "system-apache" (zwangsweise) immer auch via 127.0.0.1 erfolgen (die alleinige Absicherung vom "site-apache", den Checkmk mitbringt, würde beim Zugriff über den Reverse Proxy/system-apache also immer "unterlaufen" werden). Ergo muss man auch die von "system-apache" gelesenen Konfigurationen, die checkmk mitbringt, insofern ändern, dass hier nur ein lokaler Zugriff möglich ist.

    ^ ^ Einschub: Nach Lesen obiger Konfiguration scheidet die iptables/nftables-Lösung dann aus, wenn Teile des "system-apache" (also andere auszuliefernden Seiten) immer verfügbar sein sollen und nur "*/monitoring/" lediglich lokal ausgeliefert werden soll – denn hier muss die Filterung/Zugriffssteuerung auf Apache-Ebene (Applikationsebene) erfolgen – iptables/nftables bzw. eine Einschränkung der IP-Adressen, auf welche der system-apache hört, läuft nur auf TCP/IP-Ebene.

    (2b) Soll der "system-apache" und der "site-apache" vollständig nur lokal verfügbar sein (kein Problem, wenn man von außen zuvor via ssh auf den lokalen Rechner wechselt), dann empfiehlt sich für beide Instanzen eine Einstellung in /etc/apache2/ports.conf (für den "system-apache" -- keine Ahnung, wo der "site-apache" seine Konfiguration ablegt, nicht nachgeschlagen):

    Code
    #Statt der Namen unten, die vom DNS-Server aufgelöst werden können müssen (wäre ggf. einzutragen!), kann man direkt "127.0.0.1" bzw. "::1" verwenden – hier nur zur Verdeutlichung, was man haben will:
    Listen ip4-localhost:80
    Listen ip4-localhost:443
    Listen ip6-localhost:80
    Listen ip6-localhost:443

    (Alle anderen "Listen"-Direktiven sind natürlich aus der Datei "ports.conf" zu entfernen; nach Neustart der jeweiligen Apache-Instanz kann wieder "netstat -tulpen | grep -E ':80|:443|:5000'" zur Überprüfung herangezogen werden, wo es jetzt keine "0.0.0.0"- bzw. ":::"-Einträge mehr geben darf.)

    (2c) Wenn man nicht darauf vertraut, dass obige Einstellungen Bestand haben nach Veränderung der Konfigurationsdateien, kann man zusätzlich via iptables/nftables die entsprechenden Ports 80, 443 (system-apache) und 5000 (site-apache) ggü. Zugriffen von anderen IP-Adressen blockieren. Hier ist aber zusätzlich zu beachten, dass man normalerweise daheim irgendeine Fritz-Box o.ä. vom Internet-Provider vor dem internen lokalen Netzwerk hat, und auch hier müsste man überhaupt explizit einmal die entsprechenden Ports (nur 80, 443) freischalten.

    (2d) Zur Einschränkung auf Apache2/Anwendungsebene: In den von Checkmk eingebundenen Regeln sollte sich ein Konstrukt ähnlich dem Folgenden für den "Reverse Proxy" (system-apache) finden ("ähnlich" insofern, als dass irgendwo eine "Directory"-Definition stehen muss, die den Zugriff regelt – das unten ist keine Reverse-Proxy-Definition, die wäre länger; alternativ könnte ggf. auch eine "Location"-Definition zur Anwendung kommen):

    Code
    <Directory /blahblubb/monitoring/>
        DirectoryIndex index.php
        Options -Indexes +FollowSymLinks
        AllowOverride FileInfo Options
        Require ip 192.168.0.0/16 172.16.0.0/16 10.0.0.0/8 127.0.0.1 ::1
    </Directory>

    Hier ist lediglich die letzte Zeile zu ergänzen – diese regelt, dass Apache alles unterhalb von /blahblubb/monitoring/ nur dann ausliefert, wenn die Anfrage (an den system-apache/Reverse Proxy über Port 80/443) von einer lokalen IP-Adresse kommt.

    Besteht die Möglichkeit das Monitoring (Web-Admin-Oberfläche) per nur per ssh Tunner per einer lokalen IP aufzurufen wenn ich es benötige.
    Und dass ansonsten der Zugang (Web-Admin-Oberfläche), wenn der ssh Tunner nicht aufgebaut ist, dann auch nicht erreichbar ist?

    Das geht beispielsweise dadurch, dass Du checkmk in einem Container installierst (vorzugsweise einen System-Container via Incus/LXD anstelle eines Anwendungs-Containers via Docker/Podman); durch das Mapping der Ports kannst Du sicherstellen, dass ohne jegliche Änderung der Standardeinstellung der Anwendung (hier: checkmk) von "außen" (also dem Hostrechner) nur ein Zugriff via 127.0.0.1 möglich ist. Diese Abschirmung ist insofern wasserdicht, als sie von der Anwendung im Container nicht modifiziert werden kann.

    Analog ist es natürlich möglich, via iptables/nftables durch Regeln den Zugriff auf den checkmk-Port (bzw. die zugehörige Web-Admin-Oberfläche, also den Apache-Port) einfach auf 127.0.0.1 zu beschränken (wenn sich die checkmk-Apache-Instanz mit dem anderen Apache2 direkt auf dem Host "verträgt"). Tip: Diese Regeln lassen sich nach Einrichtung "persistieren", so dass sie sofort nach Initialisierung des Netzwerks im Rahmen des Bootvorgangs gültig werden – bevor irgendeine Anwendung gestartet wird. Dadurch ist sichergestellt, dass checkmk nicht temporär von außen erreichbar wäre, bis die Regeln anderweitig gesetzt werden.