Juli 2023
Autor:in des Beitrags
Kevin
Senior Consultant
Veröffentlicht am
19.07.2023 von Kevin
Jetzt Blogbeitrag teilen
Xing LinkedIn Facebook Twitter
CVE-2023-3519, CVE-2023-3466, CVE-2023-3467

Kritische Schwachstellen in Citrix NetScaler ADC und Gateway

Citrix warnt seine Kunden vor den kritischen Sicherheitslücken CVE-2023-3519, CVE-2023-3466, CVE-2023-3467 in den Produkten NetScaler ADC und NetScaler Gateway (CTX561482).

Folgende Versionen sind betroffen:

  • NetScaler ADC und NetScaler Gateway 13.1 vor 13.1-49.13
  • NetScaler ADC und NetScaler Gateway 13.0 vor 13.0-91.13
  • NetScaler ADC 13.1-FIPS vor 13.1-37.159
  • NetScaler ADC 12.1-FIPS vor 12.1-65.36
  • NetScaler ADC 12.1-NDcPP vor 12.65.36
Hierzu gibt es von Citrix bereits eine Sicherheitsmeldung:

Sicherheitslücken wurden bereits von Angreifern missbraucht

Eine der Schwachstellen soll von Angreifern ausgenutzt worden sein, um ohne vorherige Anmeldung auf anfälligen Systemen schadhaften Code auszuführen. Dafür muss die jeweilige Appliance als Gateway (virtueller VPN-Server, ICA-Proxy, CVPN, RDP-Proxy) oder als virtueller Authentifizierungsserver (AAA-Server) konfiguriert sein. Eine weitere Sicherheitslücke erlaubt die Ausführung von Cross-Site-Scripting, sofern eine Person aus dem Zielsystem auf einen manipulierten Link klickt. Außerdem können angemeldete Nutzer, die Zugriff auf das Management-Interface von NSIP oder SNIP haben, ihre Rechte auf root respektive Administrator ausweiten.

Hierfür ist jedoch ein authentifizierter Zugang erforderlich.

Installation von Sicherheitsupdates dringend notwendig

Administratoren sollten deshalb schnellstmöglich ihr Security Bulletin überprüfen und die für die beiden Produkte bereitgestellten Sicherheitsupdates einspielen.
Citrix weist außerdem darauf hin, dass NetScaler ADC und Gateway 12.1. am End-of-Life angekommen sind und empfiehlt deshalb, ein Upgrade auf Appliances der noch unterstützten Versionen vorzunehmen.

Validierung von Sicherheitslücken

Es gibt von Citrix bislang keine Aussagen darüber, wie festgestellt werden kann, ob die Sicherheitslücke bereits ausgenutzt wurde.

Wir haben auf Basis unseres Verständnisses für NetScaler und die aktuelle Sicherheitslücke sowie verschiedenen Quellen im Internet mögliche Angriffspunkte des NetScalers identifiziert und ein Skript generiert, welches mögliche Manipulationen erkennt.

Disclaimer: Es handelt sich hierbei nicht um eine offizielle Lösung von Citrix. Daher können wir nicht vollständig ausschließen, dass die Sicherheitlücke dennoch ausgenutzt wurde.

Die folgende Anleitung erklärt das Verwenden des Skripts, das auf dem NetScaler auszuführen ist.

Einrichtung

Schritt 1: Auf dem NetScaler via SCP Tool (z.B. WinSCP) anmelden
Starte das SCP Tool (z.B. WinSCP) auf deinem Computer.

  • Gib die IP-Adresse oder den Hostnamen des NetScaler-Geräts ein.
    Wähle das Protokoll “SCP” (Secure Copy Protocol) aus.
  • Gib deine Anmeldeinformationen (Benutzername und Passwort) für den NetScaler ein.
  • Klicke auf “Verbinden”, um eine Verbindung zum NetScaler herzustellen

Schritt 2: In den Ordner “/tmp” wechseln

  • Nachdem die Verbindung hergestellt wurde, siehst du auf der linken Seite des WinSCP-Fensters dein lokales Dateiverzeichnis und auf der rechten Seite die Verzeichnisse des NetScalers.
  • Navigiere auf der rechten Seite zum Verzeichnis “/tmp”, indem du darauf klickst.

Schritt 3: Das passende Script für die NetScaler-Version auswählen und hochladen

  • Entscheide dich basierend auf der Version deines NetScalers, welches Script du hochladen möchtest:
    – Wenn du die NetScaler-Version 13.1 verwendest, lade das Script “cve_13.1.py” hoch.
    – Wenn du die NetScaler-Versionen 12.1 und 13.0 verwendest, lade das Script “cve.py” hoch.
  • Navigiere auf der linken Seite zu dem Verzeichnis, in dem sich das entsprechende Script auf deinem Computer befindet.
  • Markiere die Datei des gewählten Scripts in deinem lokalen Verzeichnis.
  • Ziehe die Datei mit der Maus auf das Verzeichnis “/tmp” auf der rechten Seite des WinSCP-Fensters, um sie auf den NetScaler hochzuladen.

Alternativ:

Schritt 3: Code in die neu erstellte Datei “cve.py” einfügen (falls notwendig)

  • Solltest du eine neue Datei namens “cve.py” angelegt haben, doppelklicke darauf, um sie in einem Texteditor im WinSCP-Fenster zu öffnen.
  • Kopiere den entsprechenden Code für deine NetScaler-Version aus dem entsprechenden Script (entweder “cve_13.1.py” oder “cve.py”).
  • Füge den kopierten Code in den Texteditor ein.
  • Speichere die Datei “cve.py” im Verzeichnis “/tmp” auf dem NetScaler.

Nachdem du diese Schritte durchgeführt hast, sollte das Script “cve.py” (bzw. “cve_13.1.py”) erfolgreich auf dem NetScaler im Verzeichnis “/tmp” vorhanden sein. Beachte, dass dies nur die erste Phase der Installation ist. Je nachdem, was das Script tut, müssen möglicherweise weitere Schritte unternommen werden, um es auszuführen oder zu konfigurieren. Überprüfe dazu die Dokumentation des Scripts oder die Anweisungen des Entwicklers.

Verwendung

Anleitung zum Ausführen des Scripts “cve.py” auf dem NetScaler mittels SSH und der Konsole:

Schritt 1: Über ein SSH Tool (z.B. Putty) mit dem NetScaler verbinden

  • Starte das SSH Tool (z.B. Putty) auf deinem Computer.
    Gib die IP-Adresse oder den Hostnamen des NetScaler-Geräts ein.
  • Wähle das Protokoll “SSH” aus.
  • Klicke auf “Verbinden”, um eine SSH-Verbindung zum NetScaler herzustellen.
  • Gib deine Anmeldeinformationen (Benutzername und Passwort) für den NetScaler ein, wenn du dazu aufgefordert wirst.

Schritt 2: In der Konsole den Befehl “shell” eingeben, um in die Shell zu wechseln

  • Nachdem die SSH-Verbindung erfolgreich hergestellt wurde, siehst du eine Eingabeaufforderung in der Konsole.
  • Gebe den Befehl “shell” ein und drücke die “Enter”-Taste, um in die Shell des NetScalers zu wechseln.
  • Du befindest dich nun in der Betriebssystem-Shell des NetScalers.

Schritt 3: Mit dem Befehl “cd /tmp” in das Verzeichnis “/tmp” wechseln

  • In der NetScaler-Shell navigiere mit dem Befehl “cd /tmp” zum Verzeichnis “/tmp”.
  • Dieses Verzeichnis dient als Zielort, in dem du das Script “cve.py” hochgeladen hast.

Schritt 4: Das Script starten mit dem Befehl “python ./cve.py”

  • Um das Script “cve.py” auszuführen, verwende den Befehl “python ./cve.py” in der Konsole.
  • Drücke die “Enter”-Taste, um das Script zu starten.

Nachdem du den Befehl ausgeführt hast, sollte das Script “cve.py” gestartet werden und seine Aufgabe ausführen. Überprüfe die Ausgabe in der Konsole, um zu sehen, ob das Script wie erwartet funktioniert. Je nachdem, was das Script tut, können weitere Anweisungen oder Interaktionen erforderlich sein. Stelle sicher, dass du die Dokumentation des Scripts oder die Anweisungen des Entwicklers beachtest, um das gewünschte Ergebnis zu erzielen.

NetScaler Version 12.1 und 13.0

# -*- coding: utf-8 -*-

import os
import time
from datetime import datetime
import subprocess
import gzip
import StringIO

cve_analyse_file = „/tmp/cve-analyse.txt“

def check_adc():
print(„Start ADC Check“)
print(„Create Analyse“)
create_analyse()

print(„Get Last Update Conf Backup“)
latest_file, latest_mtime = get_update_date()
formatted_date = time.strftime(„%m/%d/%Y“, time.localtime(latest_mtime))
file_name_content = „Die neueste Datei ist: “ + latest_file
file_date_content = „Das Datum der letzten Aenderung ist: “ + formatted_date
extend_analyse(file_name_content)
extend_analyse(file_date_content)

print(„Check nobody CronJobs“)
try:
crontab_process = subprocess.Popen([„crontab“, „-l“, „-u“, „nobody“], stderr=subprocess.STDOUT, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
crontab_output, _ = crontab_process.communicate()
crontab_output = crontab_output.decode(„utf-8“)
print(crontab_output)
extend_analyse(„CronJobs fuer nobody:“)
extend_analyse(crontab_output)
except subprocess.CalledProcessError as e:
extend_analyse(„Es wurde kein CronJob fuer nobody gefunden“)

print(„Pruefung der bekannten Verzeichnisse (ohne NSGUI)“)
extend_analyse(„Pruefung der bekannten Verzeichnisse (ohne NSGUI)“)
folders_to_check = [„/var/python“, „/var/vpn“, „/var/netscaler/logon/“]
for folder in folders_to_check:
newer_files = check_folder(folder, latest_mtime)
extend_analyse(„Fuer den Ordner “ +folder + “ gefundene Dateien.“)
for file_path in newer_files:
extend_analyse(„Datei Gefunden: “ +file_path + „“)

print(„Pruefung des Datum vom NS_Gui Ordner“)
nsgui_change_date = check_nsgui_folder()
extend_analyse(„Der NS_GUI Ordner wurde zuletzt an folgenden Datum geaendert: “ +nsgui_change_date + „“)

print(„Pruefung der HTTP Error Logs“)
extend_analyse(„Pruefung der HTTP Error Logs“)
loglines = check_http_error_logs()
for line in loglines:
extend_analyse(line)

print(„Pruefung der SH Logs“)
extend_analyse(„Pruefung der SH Logs“)
loglines = check_http_error_logs()
for line in loglines:
extend_analyse(line)

print(„Pruefung der setui“)
extend_analyse(„Pruefung der setui“)
setuid_result = check_setuid(formatted_date)
extend_analyse(setuid_result)

def create_analyse():
with open(cve_analyse_file, „w“) as cve_analyse:
content = „Analyse zum NetScaler CVE-2023-3466, CVE-2023-3467, CVE-2023-3519“
cve_analyse.write(content + „\n\n“)

def extend_analyse(content):
with open(cve_analyse_file, „a“) as cve_analyse:
cve_analyse.write(content + „\n“)

def get_update_date():
folder_path = „/nsconfig“
prefix = „ns.conf.NS“
matching_files = [file for file in os.listdir(folder_path) if file.startswith(prefix)]
if not matching_files:
return None, None

file_with_mtime = [(file, os.path.getmtime(os.path.join(folder_path, file))) for file in matching_files]
file_with_mtime.sort(key=lambda x: x[1], reverse=True)
latest_file = file_with_mtime[0][0]
latest_mtime = file_with_mtime[0][1]
return latest_file, latest_mtime

def check_folder(folder, latest_mtime):
newer_files = []
print(„Checking files in folder: “ +folder + „“)
for root, _, files in os.walk(folder):
for file in files:
file_path = os.path.join(root, file)
file_mtime = os.path.getmtime(file_path)
if file_mtime > latest_mtime:
newer_files.append(file_path)
return newer_files

def check_nsgui_folder():
folder_path = „/netscaler/ns_gui/“
try:
last_mod_time = os.path.getmtime(folder_path)
formatted_date = time.strftime(„%m/%d/%Y %H:%M:%S“, time.localtime(last_mod_time))
except FileNotFoundError:
print(„Folder ‚“ +folder_path + „‚ not found.“)
return formatted_date

def check_http_error_logs():
search_directory = ‚/var/log/‘
file_patterns = [‚httperror.log‘]
line_patterns = [‚.sh‘, ‚.php‘]
matching_files = search_files_for_patterns(search_directory, file_patterns)
matching_lines = search_lines_in_files(matching_files, line_patterns)
return matching_lines

def check_sh_logs():
search_directory = ‚/var/log/‘
file_patterns = [’sh.log‘]
line_patterns = [‚/flash/nsconfig/keys‘]
matching_files = search_files_for_patterns(search_directory, file_patterns)
matching_lines = search_lines_in_files(matching_files, line_patterns)
return matching_lines

def search_files_for_patterns(directory, filename_patterns):
matching_files = []
for root, _, files in os.walk(directory):
for file in files:
if all(pattern in file for pattern in filename_patterns):
matching_files.append(os.path.join(root, file))
return matching_files

def open_file(file_path):
if file_path.lower().endswith(‚.gz‘):
return gzip.open(file_path, ‚rb‘)
else:
return open(file_path, ‚r‘)

def search_lines_in_files(files, patterns):
matching_lines = []
for file in files:
try:
with open_file(file) as f:
if isinstance(f, gzip.GzipFile):
gzip_content = f.read()
f_text = StringIO.StringIO(gzip_content)
for line in f_text:
if any(pattern in line for pattern in patterns):
matching_lines.append(line.strip())
else:
for line in f:
if any(pattern in line for pattern in patterns):
matching_lines.append(line.strip())
except IOError:
pass
return matching_lines

def check_setuid(last_update):
search_path = „/netscaler/ns_gui/“
php_files_pattern = „*.php“
update_date_str = last_update

update_date = datetime.strptime(update_date_str, „%m/%d/%Y“).strftime(„%Y-%m-%d“)

command = „find “ +search_path + “ -type f -name ‚“ +php_files_pattern + „‚ -newermt “ +update_date + “ -exec ls -l “ +“ + + “ + “ \\;“

try:
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
output, error = process.communicate()

if process.returncode != 0:
print(„Fehler bei der Ausfuehrung des Befehls: “ + error)
return None

setuid_result = output
return setuid_result
except subprocess.CalledProcessError as e:
print(„Fehler bei der Ausfuehrung des Befehls: “ + str(e))
return None

 

if __name__ == ‚__main__‘:
check_adc()

NetScaler Version 13.1

# -*- coding: utf-8 -*-

import os
import time
from datetime import datetime
import subprocess
import gzip

cve_analyse_file = „/tmp/cve-analyse.txt“

def check_adc():
print(„Start ADC Check“)
print(„Create Analyse“)
create_analyse()

print(„Get Last Update Conf Backup“)
latest_file, latest_mtime = get_update_date()
formatted_date = time.strftime(„%m/%d/%Y“, time.localtime(latest_mtime))
file_name_content = „Die neueste Datei ist: “ + latest_file
file_date_content = „Das Datum der letzten Aenderung ist: “ + formatted_date
extend_analyse(file_name_content)
extend_analyse(file_date_content)

print(„Check nobody CronJobs“)
try:
crontab_output = subprocess.check_output([„crontab“, „-l“, „-u“, „nobody“], stderr=subprocess.STDOUT, text=True, encoding=“utf-8″)
print(crontab_output)
extend_analyse(„CronJobs fuer nobody:“)
extend_analyse(crontab_output)
except subprocess.CalledProcessError as e:
extend_analyse(„Es wurde kein CronJob fuer nobody gefunden“)

print(„Pruefung der bekannten Verzeichnisse (ohne NSGUI)“)
extend_analyse(„Pruefung der bekannten Verzeichnisse (ohne NSGUI)“)
folders_to_check = [„/var/python“, „/var/vpn“, „/var/netscaler/logon/“]
for folder in folders_to_check:
newer_files = check_folder(folder, latest_mtime)
extend_analyse(f“Fuer den Ordner {folder} gefundene Dateien.“)
for file_path in newer_files:
extend_analyse(f“Datei Gefunden: {file_path}“)

print(„Pruefung des Datum vom NS_Gui Ordner“)
nsgui_change_date = check_nsgui_folder()
extend_analyse(f“Der NS_GUI Ordner wurde zuletzt an folgenden Datum geaendert: {nsgui_change_date}“)

print(„Pruefung der HTTP Error Logs“)
extend_analyse(f“Pruefung der HTTP Error Logs“)
loglines = check_http_error_logs()
for line in loglines:
extend_analyse(line)

print(„Pruefung der SH Logs“)
extend_analyse(f“Pruefung der SH Logs“)
loglines = check_http_error_logs()
for line in loglines:
extend_analyse(line)

print(„Pruefung der setui“)
extend_analyse(f“Pruefung der setui“)
setuid_result = check_setuid(formatted_date)
extend_analyse(setuid_result)

def create_analyse():
with open(cve_analyse_file, „w“) as cve_analyse:
content = „Analyse zum NetScaler CVE-2023-3466, CVE-2023-3467, CVE-2023-3519“
cve_analyse.write(content + „\n\n“)

def extend_analyse(content):
with open(cve_analyse_file, „a“) as cve_analyse:
cve_analyse.write(content + „\n“)

def get_update_date():
folder_path = „/nsconfig“
prefix = „ns.conf.NS“
matching_files = [file for file in os.listdir(folder_path) if file.startswith(prefix)]
if not matching_files:
return None, None

file_with_mtime = [(file, os.path.getmtime(os.path.join(folder_path, file))) for file in matching_files]
file_with_mtime.sort(key=lambda x: x[1], reverse=True)
latest_file = file_with_mtime[0][0]
latest_mtime = file_with_mtime[0][1]
return latest_file, latest_mtime

def check_folder(folder, latest_mtime):
newer_files = []
print(f“Checking files in folder: {folder}“)
for root, _, files in os.walk(folder):
for file in files:
file_path = os.path.join(root, file)
file_mtime = os.path.getmtime(file_path)
if file_mtime > latest_mtime:
newer_files.append(file_path)
return newer_files

def check_nsgui_folder():
folder_path = „/netscaler/ns_gui/“
try:
last_mod_time = os.path.getmtime(folder_path)
formatted_date = time.strftime(„%m/%d/%Y %H:%M:%S“, time.localtime(last_mod_time))
except FileNotFoundError:
print(f“Folder ‚{folder_path}‘ not found.“)
return formatted_date

def check_http_error_logs():
search_directory = ‚/var/log/‘
file_patterns = [‚httperror.log‘]
line_patterns = [‚.sh‘, ‚.php‘]
matching_files = search_files_for_patterns(search_directory, file_patterns)
matching_lines = search_lines_in_files(matching_files, line_patterns)
return matching_lines

def check_sh_logs():
search_directory = ‚/var/log/‘
file_patterns = [’sh.log‘]
line_patterns = [‚/flash/nsconfig/keys‘]
matching_files = search_files_for_patterns(search_directory, file_patterns)
matching_lines = search_lines_in_files(matching_files, line_patterns)
return matching_lines

def search_files_for_patterns(directory, filename_patterns):
matching_files = []
for root, _, files in os.walk(directory):
for file in files:
if all(pattern in file for pattern in filename_patterns):
matching_files.append(os.path.join(root, file))
return matching_files

def search_lines_in_files(files, patterns):
matching_lines = []
for file in files:
try:
with gzip.open(file, ‚rt‘, encoding=’utf-8′) as f:
for line in f:
if any(pattern in line for pattern in patterns):
matching_lines.append(line.strip())
except OSError:
with open(file, ‚r‘, encoding=’utf-8′) as f:
for line in f:
if any(pattern in line for pattern in patterns):
matching_lines.append(line.strip())
return matching_lines

def check_setuid(last_update):
search_path = „/netscaler/ns_gui/“
php_files_pattern = „*.php“
update_date_str = last_update

update_date = datetime.strptime(update_date_str, „%m/%d/%Y“).strftime(„%Y-%m-%d“)
command = f“find {search_path} -type f -name ‚{php_files_pattern}‘ -newermt {update_date} -exec ls -l {{}} \\;“

try:
result = subprocess.run(command, shell=True, check=True, capture_output=True, text=True)
output_lines = result.stdout.splitlines()
setuid_result = „\n“.join(output_lines)
return setuid_result
except subprocess.CalledProcessError as e:
print(f“Fehler bei der Ausfuehrung des Befehls: {e}“)
return None

if __name__ == ‚__main__‘:
check_adc()

Analyse

Anleitung zur Analyse der Script Findings auf dem NetScaler:

Schritt 1: Erneut via SCP Client (z.B. WinSCP) auf dem NetScaler einloggen

  • Starte das SCP Client (z.B. WinSCP) auf deinem Computer.
  • Gib die IP-Adresse oder den Hostnamen des NetScaler-Geräts ein.
  • Wähle das Protokoll “SCP” (Secure Copy Protocol) aus.
  • Gib deine Anmeldeinformationen (Benutzername und Passwort) für den NetScaler ein.
  • Klicke auf “Verbinden”, um eine Verbindung zum NetScaler herzustellen.

Schritt 2: In den Ordner “/tmp” wechseln

  • Nachdem die Verbindung hergestellt wurde, siehst du auf der linken Seite des WinSCP-Fensters dein lokales Dateiverzeichnis und auf der rechten Seite die Verzeichnisse des NetScalers.
  • Navigiere auf der rechten Seite zum Verzeichnis “/tmp”, indem du darauf klickst.

Schritt 3: Die Datei “cve-analyse.txt” herunterladen

  • Markiere die Datei “cve-analyse.txt” in dem “/tmp”-Verzeichnis auf der rechten Seite des WinSCP-Fensters.
  • Ziehe die Datei mit der Maus auf das lokale Verzeichnis auf der linken Seite des WinSCP-Fensters, um sie herunterzuladen.

Schritt 4: Die Datei “cve-analyse.txt” öffnen und den Inhalt auswerten

  • Öffne die heruntergeladene Datei “cve-analyse.txt” mit einem Texteditor auf deinem Computer.

Inhalte auswerten

a. Check “nobody CronJobs”:
Wenn es Ergebnisse unter diesem Punkt gibt, bedeutet dies, dass der NetScaler möglicherweise kompromittiert wurde. Du solltest sofort Maßnahmen ergreifen, um die Sicherheit wiederherzustellen.

b. Prüfung der bekannten Verzeichnisse (ohne NSGUI):
Hier können diverse Ergebnisse auftauchen, wo der NetScaler gegen sich selber (127.0.0.2) anfragen stellt. Diese sind idr. Unbedenklich. Verdächtige Aktivitäten sollten genauer untersucht werden.

c. Der NS_GUI Ordner wurde zuletzt an folgendem Datum geändert:
Vergleiche dieses Datum mit dem letzten Boot des ADCs. Wenn der letzte Boot früher als diese Änderung erfolgt ist, sollte dies genauer untersucht werden. Es könnte auf unbefugte Änderungen hindeuten.

d. Prüfung der HTTP Error Logs:
Hier können diverse Ergebnisse auftauchen, wo der NetScaler gegen sich selber (127.0.0.2) anfragen stellt. Diese sind in der Regel unbedenklich. Verdächtige Aktivitäten sollten genauer untersucht werden.

e. Prüfung der setuid:
Es werden wahrscheinlich Ergebnisse erscheinen, die mit dem Datum des letzten Bootvorgangs des NetScalers übereinstimmen sollten. Wenn die Ergebnisse nicht mit diesem Datum übereinstimmen, sollte dies genauer geprüft werden, da es auf potenziell verdächtige Aktivitäten hindeuten könnte.

Hinweis: Wenn du unsicher bist oder verdächtige Aktivitäten feststellst, solltest du sofort weitere Schritte unternehmen, um die Sicherheit des NetScalers zu gewährleisten. Es könnte ratsam sein, die Ergebnisse mit einem erfahrenen Sicherheitsexperten zu teilen, um eine detaillierte Analyse und entsprechende Maßnahmen durchzuführen.

Gegenmaßnahmen bei betroffenen Systemen

  • NetScaler-Instanz vom Netzwerk nehmen
  • Änderung der Kennwörter aller auf dem NetScaler gespeicherten LDAP oder anderen AD / Netzwerkkonten
  • Erstellung eines neuen SSL-Zertifikats und einer neuen Key-Datei für alle Client SSL-Dateien auf dem Gerät (Die Schlüssel sind in Dateien auf dem NetScaler gespeichert, die theoretisch vom Angreifer ausgelesen werden könnten)
  • Wenn es eine VPX Appliance ist und Snapshots des Geräts (älter als 3 Monate) vorhanden sind, kann es sich lohnen, diese zuerst wiederherzustellen, aber dies ist KEINE GARANTIE für die Sicherheit
    • Um ganz sicher zu gehen, die Konfigurationsdatei des betroffenen Systems exportieren und in eine neue frische VPX Appliance kopieren / wiederherzustellen
    • Beachtet hierbei das die gleiche Hardware-Adresse genutzt wird, sonst ist die Lizenz ungültig und muss neu angefordert / eingespielt werden
    • Trennt das Netzwerk vor dem Start
    • Startet die Appliance und überprüft über die Konsole, dass der VPX nicht kompromittiert ist
    • Ändert das nsroot-Passwort
    • Nur das interne Netzwerk anschließen
    • Das externe Netzwerk anschließen
    • Behaltet die Protokolle und die Responder Hits im Auge
  • Ersetzt die SSL Zertifikate auf der Appliance zum frühestmöglichen Zeitpunkt
  • Widerruf der kompromittierten SSL-Zertifkate und SSL Keys

Quelle: Checkliste für NetScaler (Citrix ADC) CVE-2023-3519 – Deyda.net

Sie möchten mehr infos?

Wir sind für Sie da.

Bei welchem Projekt oder welcher Herausforderung dürfen wir Sie unterstützen?
Wir sind gerne für Sie da.

 

HEIKO WESSELS

+49 89 71040920

heiko@provectus.de

 

Zum Kontaktformular

 

Das könnte dich auch interessieren

Blogbeitrag

Experts Live Germany 2026 in Leipzig: Provectus vor Ort – mit neuem Azure Managed Service.

Dann sehen wir uns am 03. März 2026 auf der EXPERTS LIVE GERMANY in Leipzig. Ein besonderes Highlight: Unser Vortrag “ 12.500 € Azure‑Kosten – und niemand merkt’s“
Weiterlesen
Blogbeitrag

Datenklassifizierung als Fundament für KI-Einsatz und Voraussetzung für NIS2, DORA & KRITIS

Datenklassifizierung ist die Basis für sichere, regelkonforme Datenverarbeitung und den sinnvollen Einsatz von KI – auch im Kontext von NIS2, DORA und KRITIS.
Weiterlesen
Webinar

12.500 € verbrannt und niemand merkt’s: So verhindern Managed Services Kostenfallen und Risiken

In diesem kostenlosen Webinar erfahren Sie, wie Azure-Kostenfallen entstehen, wie Fehlkonfigurationen frühzeitig erkannt werden und welche Betriebsstandards Managed Services dafür einsetzen.
Weiterlesen
Blogbeitrag

Datenstrategie und hohe Datenqualität: Der Schlüssel für KI, Automatisierungen & Compliance

Ohne Datenstrategie keine KI: Wie Unternehmen mit hoher Datenqualität, Governance und Datenhygiene Automatisierung ermöglichen und DSGVO, NIS2, DORA & KRITIS erfüllen.
Weiterlesen
Whitepaper

ROI messbar steigern mit M365 Copilot

Erfahren Sie, wie Sie den ROI von Microsoft Copilot berechnen und KI-Adoption in messbaren Business Value verwandeln.
Weiterlesen
Blogbeitrag

Microsoft 365: Schonfrist für abgelaufene Abonnements endet

Microsoft stellt das bisherige Modell für ablaufende Microsoft-365-Abonnements grundlegend um. Ab 01. April 2026 schafft der Konzern die bekannte kostenfreie Schonfrist ab und ersetzt sie durch ein neues Abrechnungsmodell.
Weiterlesen
Blogbeitrag

Provectus Microsoft Copilot Jumpstart: Ihre Vorteile

Provectus ist Microsoft Copilot & Agents at Work Jumpstart Ready Partner und gibt die Förderung direkt an Sie weiter. So ermöglichen wir unseren Kund:innen einen finanziell erleichterten Einstieg in Microsoft Copilot und KI-Agents.
Weiterlesen
Blogbeitrag

Hessische Beauftragte für Datenschutz und Informationssicherheit (HBDI) veröffentlichen Bericht zur datenschutzkonformen Nutzung von Microsoft 365

Der HBDI bestätigt: Microsoft 365 kann unter bestimmten Bedingungen DSGVO-konform eingesetzt werden. Der Bericht ordnet rechtliche und technische Aspekte ein.
Weiterlesen
Blogbeitrag

Szenario: Teams-Bot greift im Benutzerkontext auf Azure Ressourcen zu 

Im Entwicklungsverlauf eines Teams–Bots zeigt sich folgendes Anforderungsszenario: Der Bot soll im Kontext der angemeldeten Person auf weitere Azure–Ressourcen zugreifen.
Weiterlesen
Blogbeitrag

Unser Start ins Trainee-Programm bei Provectus 

Unsere Trainees berichten von den ersten Monaten im Provectus-Traineeprogramm, geben Einblicke in Workshops, Lernphasen und den täglichen Einsatz von KI-Tools und zeigen, wie sie auf ihre Rolle als Junior Professionals vorbereitet werden.
Weiterlesen
Jetzt Blogbeitrag teilen
Xing LinkedIn Facebook Twitter