Design-Bug in Proxmox gefunden – evtl. gefährlich für Proxmox-Hoster

Wir haben den Bug bereits vor 2-3 Wochen  gefunden und auch schon im Proxmox-Bug-Center gelistet! Es ist bisher jedoch keine Reaktion erfolgt! Offensichtlich wird das Risiko nicht richtig eingeschätzt!

In Proxmox 4.x gibt es in der Firewall  in den Optionen ein Flag für IP-Filter. In der Vorversion 3.x mußten diese IP-Filter via  IPSets manuell gesetzt werden, insbesondere bei den KVM-Maschinen, da diese bereits über bridge mit MAC arbeiteten und nicht via venet direkt adressiert wurden!

Die neue Version 4.x will  es den Hostern einfach machen, die IP auch für die bridged – Technik, einfach zu setzen. Dabei werden dann im Container, die notwendigen Konfigurations-Scripte beim Erzeugen des LXC-Containers automatisch generiert! Leider ignorieren manche OS-Varianten  und dies sogar bei Einsatz der vorgefertigten OS-Templates, dann das Gateway, wenn dem LXC-Container eine Single-IP als /32 zugewiesen wird und das Gateway im  dann übergeordneten IP-Block selbst vorhanden ist!  Die Hoster, die Proxmox verwenden, müssen also in diesem Fall die IP als CIDR für den gesamten Block eingeben und weisen somit dem LXC-Container einen IP-Block zu, statt eine Single-IP! Evtl. wird dies von den Hostern sogar aus Mißverständnis, dann sogar generell  so gemacht?!

Der IP-Filter arbeitet dann allerdings auch mit dem gesamten IP-Block  und somit könnte in den LXC-Containern von  den LXC-Admins (z.B. Kunden) ein  IP-Spoofing ausgenutzt  werden!

Ein Workarround, den wir einsetzen, verhindert dies auf Firewall – Ebene, aber es ist durchaus möglich, daß diverse Proxmox-Hoster dieses Problem noch nicht erkannt haben und jetzt deren  Systeme unsicher konfiguriert sind, zumindest ermöglichen diese unter Umständen, Hacking von innen durch „Freischaltung“ von IP-Spoofing!

Wir sehen dieses Sicherheitsproblem nicht als „echten Bug“, sondern als „Design-Bug“, der es allerdings in sich hat, denn in 99%  aller Fälle erhalten LXC-Container eine Single-IP und nicht einen IP-Block!

Beispiel (257 gibt es nicht in einer IP, ist nur für das Beisiel hier so):

IP: 223.12.257.2/32 und Gateway 223.12.257.62 wird im LXC-Container als Fehler abgelehnt. Also verwendet der Hoster die
IP: 223.12.257.2/28 und dann wird das Gateway  223.12.257.62 akzeptiert! Fatal, denn wenn der Hoster nun dem IP-Filter vertraut, so filtert dieser alle IPs. von 223.12.257.0 bis 223.12.257.63  und nicht nur die IP 223.12.257.2 und der Inhaber des LXC-Containers (Mieter/Kunde) kann jetzt die IPs in der Netzkonfiguration ändern und alle IPs, die er eigentlich nicht bekommen sollte, verwenden von 223.12.257.0 bis 223.12.257.63 und damit IP-Spoofing betreiben!

Dieses läuft auf jeden Fall eine Weile gut und damit  kann sich ein LXC-Container als  der Nachbar ausgeben und Daten des Nachbarn abziehen, ggf. manipulieren, als Nachbar Attacken durchführen und bis erkannt wird, daß es gar nicht der eigentliche Inhaber des LXC-Containers ist, der die Attacken verübt hat, vergeht Zeit, die im Rechenzentrum unter Umständen zur Sperrung des gesamten Hosts führen können!

Workarround, der im Moment mehr Arbeit kostet, aber alles sauber absichert:

In Firewall-Optionen  den Traffic ausgehend auf DISABLE setzen und in  eine eigene Firewall-Rule manuell hinzu zu setzen, die nur die Single IP durchläßt! Gibt es jedoch mehrere Rules für ausgehenden Traffic, muß genau die richtige Reihenfolge der Rules gesetzt werden, damit die zugefügte Rule für die IP nicht alle ausgehenden Rules zu aushebelt!

Also die IP-Rule, die die IP durchlässt, muß eine größere Prioritäts-Nummer haben, als die Rules, die bestimmte Ports ausgehend verbieten!

Falsch gesetzt, als Beispiel, läßt alle Ports nach Außen durch, obwohl dies nicht gewollt ist, also wird auch Port 22 von innen nach außen durch gelassen!

Prio 0: Out Accept <IP>
Prio 1: Out Drop Port 22

Richtig gesetzt, wobei wir hier die IP auf die letzte Priorität gesetzt haben :
Prio 0: Out Drop Port 22
Prio  25: Out Accept <IP>

Witziger Weise, haben wir vor 3 Jahren, nach Neuveröffentlichung  einer neuen Version von Proxmox, hier ebenfalls einen gefährlichen Bug in der Firewall gefunden, nach zu lesen im Artikel:

Security Bug in Proxmox-Firewall gefunden

In 2015 führte eine Fehlkonfiguration der Firewall zu extremen Problemen, nach zu lesen in Artikel: https://blog.1awww.com/2015/05/07/proxmox-in-neuem-kernel-2-6-32-37-ploetzlich-mit-fehlfunktionen-ipv6-fehlt-pve-firewall-startet-nicht/

Wir sind sicher, daß Proxmox diesen Bug, wie auch noch andere offene Bugs, bald  beseitigen werden!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert