
Критическая уязвимость удалённого выполнения кода (RCE) до аутентификации в Oracle E-Business Suite (версии 12.2.3 - 12.2.14) позволяет злоумышленникам получить полный контроль над уязвимыми серверами с помощью вредоносных HTTP-запросов — в настоящее время активно эксплуатируется в дикой природе.
CVE-2025-61882 — это критическая RCE-уязвимость без предварительной аутентификации в Oracle E-Business Suite (EBS), активно эксплуатируемая в кампаниях вымогательства и кражи данных. Затронутые версии: 12.2.3 → 12.2.14. Oracle опубликовал экстренное уведомление с IOC (IP-адреса, команда shell-stager, SHA-256 хэши). Немедленно установите патч или закройте доступ к скомпрометированным системам, проведите охоту с помощью предоставленных детектов и используйте безопасный Python-скрипт ниже для сканирования журналов. Не запускайте публичные PoC на производстве — тестируйте только в изолированной лаборатории с авторизацией. 🛑🗿
Oracle EBS обеспечивает выполнение критически важных бизнес-функций (ERP, расчёт заработной платы, финансы, HR). RCE без предварительной аутентификации в веб-ориентированном экземпляре EBS позволяет атакующему выполнять произвольные команды на сервере приложений, потенциально получать доступ к конфиденциальным данным, размещать веб-шеллы и выгружать файлы. Эта уязвимость была использована в реальных атаках и связана с кампаниями вымогательства — это реальный инцидент для бизнеса, а не теоретический CVE. 🔥
/OA_HTML/ и связанные конечные точкиUiServlet и /OA_HTML/ для запуска RCE./bin/bash -i >& /dev/tcp/...).Oracle отмечает, что эти IOC представляют наблюдаемую активность в рамках инцидентов (не ограничиваясь CVE-2025-61882). Любое положительное совпадение рассматривать как приоритетное.
IP-адреса
200.107.207.26 — потенциальная GET/POST активность185.181.60.11 — потенциальная GET/POST активностьПаттерн shell stager
sh -c /bin/bash -i >& /dev/tcp// 0>&1 — наблюдаемый стиль исходящей обратной оболочки TCPSHA-256 хэши (артефакты эксплойта / PoC)
76b6d36e04e367a2334c445b51e1ecce97e4c614e88dfb4f72b104ca0f31235d
(oracle_ebs_nday_exploit_poc_scattered_lapsus_retard_cl0p_hunters.zip)aa0d3859d6633b62bccfb69017d33a8979a3be1f3f0a5a4bf6960d6c73d41121
(.../exp.py)6fd538e4a8e3493dda6f9fcdc96e814bdd14f3e2ef8aa46f0143bff34b882c1b
(.../server.py)Затронутые версии (повтор для акцента)
TL;DR Репозиторий GitHub содержит пассивные артефакты обнаружения для CVE-2025-61882 (предварительная аутентификация RCE в Oracle E-Business Suite). Используйте их для охоты, триажа и сдерживания — не для эксплуатации. 🛑🗿
Краткое описание Description.md (мини-README) уже добавлено в папку detections/ — проверьте этот файл для полного описания и TL;DR. Этот верхнеуровневый README лишь резюмирует набор детектов и их использование, чтобы вы могли быстро приступить к работе.
detections/splunk/
oracle_cve61882_ioc_traffic.spl — Обнаружение трафика к/от IOC IP-адресов, предоставленных Oracle.oracle_cve61882_uiservlet_post.spl — Обнаружение подозрительных POST-запросов к UiServlet / /OA_HTML/ с внешних IP-адресов.oracle_cve61882_reverse_shell.spl — Обнаружение создания процессов в стиле обратной оболочки в журналах конечных точек.detections/elastic/
oracle_cve61882_uiservlet_post.kql — KQL для POST-запросов к UiServlet/OA_HTML.oracle_cve61882_filehash_detection.kql — KQL для сопоставления вредоносных SHA-256 хэшей, предоставленных Oracle.detections/scripts/
ebs_safe_hunt.py — Безопасный автономный Python-парсер журналов (без сетевых вызовов, без выполнения эксплойтов). Запускайте на копиях ваших журналов доступа.detections/Description.md
Просмотрите detections/Description.md для контекста и IOC. ✅
Загрузите Splunk .spl запросы в вашу среду Splunk (или импортируйте их в сохранённые поиски / оповещения).
Вставьте KQL-запросы в правила обнаружения Kibana / Elastic.
Скопируйте ebs_safe_hunt.py на хост, который имеет только доступ на чтение к архивированным или отредактированным журналам, затем запустите:
python3 ebs_safe_hunt.py /path/to/access.log
Просмотрите отмеченные выходные данные malicious_ips, servlet_posts, shell_stager и malicious_hash и эскалируйте по мере необходимости. 🕵️♂️
Принцип: комбинируйте раскрытие версий или попадания в UI с высокодостоверными индикаторами (вредоносные IP-адреса, POST к UiServlet/OA_HTML, строки процессов обратной оболочки, совпадения хэшей файлов, крупные исходящие загрузки).
Примеры Splunk Обнаружение трафика к IOC Oracle:
index=web_logs OR index=proxy_logs
| where clientip IN ("200.107.207.26","185.181.60.11") OR dest_ip IN ("200.107.207.26","185.181.60.11")
| stats count by clientip, dest_ip, uri, method, useragent, _time
| sort - count
Обнаружение POST-запросов к UiServlet/OA_HTML с внешних IP-адресов:
index=web_logs sourcetype=access_combined
| where (uri LIKE "%UiServlet%" OR uri LIKE "%/OA_HTML/%") AND method="POST"
| where NOT cidrmatch("10.0.0.0/8", clientip) // настройте под ваши внутренние диапазоны
| stats count by clientip, uri, useragent, _time
| sort - count
Обнаружение создания процессов обратной оболочки (EDR):
index=endpoint_events sourcetype=os_process
| where process_cmdline LIKE "%/bin/bash -i%/dev/tcp/%" OR process_cmdline LIKE "%/dev/tcp//%"
| table _time host user process_name process_cmdline parent_process
Примеры Elastic / KQL Подозрительный POST к UiServlet:
http.request.method : "POST" and (http.request.uri : "*UiServlet*" or http.request.uri : "/OA_HTML/*") and not client.ip : ("10.0.0.0/8")
Обнаружение хэша файла:
event.type: "file" and file.hash.sha256 : ("76b6d36e04e3...", "aa0d3859d66...", "6fd538e4a8e3...")
Sigma (переносимые идеи правил)
UiServlet//OA_HTML/ с внешних IP-адресов → высокий приоритет/bin/bash -i >& /dev/tcp/ → критическийЭтот скрипт анализирует журналы веб-доступа в комбинированном формате и отмечает подозрительные POST-запросы к UiServlet/OA_HTML, запросы с вредоносных IP-адресов из списка Oracle, паттерны shell stager и появления предоставленных SHA-256 хэшей. Он не выполняет никакой сетевой активности и не запускает код эксплойта.
#!/usr/bin/env python3
"""
ebs_safe_hunt.py — Безопасный парсер журналов для индикаторов CVE-2025-61882.
Использование:
python3 ebs_safe_hunt.py /path/to/access.log
Примечания:
- Анализирует строки комбинированного журнала Apache/Nginx.
- Отмечает POST-запросы к UiServlet/OA_HTML, вредоносные IP-адреса из уведомления Oracle,
паттерны shell stager и наблюдаемые SHA256 хэши.
- Безопасно: без сети / без выполнения эксплойтов.
"""
import sys
import re
from collections import Counter, defaultdict
# Регулярное выражение для распространённого комбинированного формата журнала
LOG_PATTERN = re.compile(
r'(?P<ip>\S+) \S+ \S+ \[(?P<time>.*?)\] "(?P<method>\S+) (?P<uri>\S+) \S+" (?P<status>\d{3}) (?P<size>\S+) "(?P<ref>[^"]*)" "(?P<ua>[^"]*)"'
)
# IOC, предоставленные Oracle
MALICIOUS_IPS = {"200.107.207.26", "185.181.60.11"}
MALICIOUS_HASHES = {
"76b6d36e04e367a2334c445b51e1ecce97e4c614e88dfb4f72b104ca0f31235d",
"aa0d3859d6633b62bccfb69017d33a8979a3be1f3f0a5a4bf6960d6c73d41121",
"6fd538e4a8e3493dda6f9fcdc96e814bdd14f3e2ef8aa46f0143bff34b882c1b",
}
SHELL_PATTERN = "/bin/bash -i" # ищем эту подстроку (стиль обратной оболочки)
SUSPICIOUS_PATHS = ["UiServlet", "/OA_HTML/"]
# Необязательно: список подозрительных user-agent, часто используемых сканерами
SUSPICIOUS_UAS = ["curl", "wget", "python-requests", "nikto", "sqlmap", "masscan", "Nmap"]
def analyze_log(path):
ip_counts = Counter()
uri_counts = Counter()
ua_counts = Counter()
suspicious = defaultdict(list)
with open(path, "r", errors="replace") as fh:
for line_no, line in enumerate(fh, 1):
m = LOG_PATTERN.search(line)
if not m:
# При желании всё равно проверяем хэши или паттерн оболочки в неструктурированных строках
if any(h in line for h in MALICIOUS_HASHES):
suspicious["malicious_hash_lines"].append((line_no, line.strip()))
if SHELL_PATTERN in line or "/dev/tcp/" in line:
suspicious["shell_pattern_lines"].append((line_no, line.strip()))
continue
ip = m.group("ip")
method = m.group("method")
uri = m.group("uri")
ua = m.group("ua")
size = m.group("size")
ip_counts[ip] += 1
uri_counts[uri] += 1
ua_counts[ua] += 1
# 1) Вредоносные IP-адреса (Oracle)
if ip in MALICIOUS_IPS:
suspicious["malicious_ips"].append((line_no, ip, method, uri, ua))
# 2) POST-запросы к подозрительным путям EBS
if method.upper() == "POST" and any(p in uri for p in SUSPICIOUS_PATHS):
suspicious["servlet_posts"].append((line_no, ip, uri, ua))
# 3) Подозрительные user-agent (сканеры)
if any(k.lower() in ua.lower() for k in SUSPICIOUS_UAS):
suspicious["suspicious_ua"].append((line_no, ip, uri, ua))
# 4) Очень большие ответы (возможная выгрузка) — настройте порог под вашу среду
try:
if size != "-" and int(size) > 5_000_000: # >5МБ
suspicious["large_responses"].append((line_no, ip, uri, size))
except ValueError:
pass
# 5) Паттерн shell stager или паттерны /dev/tcp в строке
if SHELL_PATTERN in line or "/dev/tcp/" in line:
suspicious["shell_stager"].append((line_no, ip, uri, line.strip()))
# 6) Известные вредоносные хэши файлов в журналах (если доступны)
for h in MALICIOUS_HASHES:
if h in line:
suspicious["malicious_hash"].append((line_no, ip, uri, h))
return {
"ip_counts": ip_counts,
"uri_counts": uri_counts,
"ua_counts": ua_counts,
"suspicious": suspicious
}
def pretty_report(r, top=10):
print("\n=== ОТЧЁТ ОБ ОХОТЕ EBS ===\n")
print("Топ исходных IP-адресов:")
for ip, c in r["ip_counts"].most_common(top):
print(f" {ip}: {c}")
print("\nТоп URI:")
for uri, c in r["uri_counts"].most_common(top):
print(f" {uri}: {c}")
print("\nТоп User-Agent:")
for ua, c in r["ua_counts"].most_common(top):
print(f" {ua}: {c}")
print("\nПодозрительные находки:")
if not r["suspicious"]:
print(" Ничего не найдено.")
return
for k, items in r["suspicious"].items():
print(f"\n-- {k} ({len(items)} совпадений) --")
for item in items[:100]:
print(" " + " | ".join(map(str, item)))
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Использование: python3 ebs_safe_hunt.py /path/to/access.log")
sys.exit(1)
path = sys.argv[1]
result = analyze_log(path)
pretty_report(result)
Как использовать: скопируйте ebs_safe_hunt.py на хост, имеющий доступ на чтение к архивированным или скопированным журналам. Запустите:
python3 ebs_safe_hunt.py /path/to/access.log
Просмотрите отмеченные результаты malicious_ips, servlet_posts, shell_stager и malicious_hash и эскалируйте соответствующим образом. 🕵️♂️
200.107.207.26 и 185.181.60.11, а также любые другие IP-адреса/домены IOC, предоставленные вендорами.Тема: Критично: CVE-2025-61882 — Oracle E-Business Suite — требуются немедленные действия
Что: Критическая RCE без предварительной аутентификации (CVE-2025-61882) в Oracle EBS (12.2.3–12.2.14). Эксплуатируется в кампаниях кражи данных/вымогательства.
Немедленные запросы (в течение следующих 24 часов):
Риск: Высокий — потенциальная полная компрометация сервера приложений, выгрузка данных, регуляторные риски. Суть: патч или защита сейчас. — 🗿
У вас есть всё необходимое: обзор, IOC прямо от Oracle, практические охоты и безопасный скрипт для начала триажа. Пропатчите или защитите ваши EBS-серверы, прогоните IOC-охоты через ваш SOC и изолируйте всё, что выглядит подозрительно. Будьте начеку, патчите быстро и прокачивайте мышцы реагирования на инциденты. 🗿🔥