Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
pac4j-check — Scanner offline para CVE-2026-29000 (CVSS 10.0) em org.pac4j:pac4j-jwt. Inspeciona jars/fat-jars diretamente, por isso funciona onde mvn dependency:tree não consegue. Jar único, zero dependências, Java 8+. | Kitploit
Ferramentas/GitHubGitHub/xiaoqimikko/pac4j-check
Análise EstáticaScanners de VulnerabilidadesDevSecOpsSegurança da Cadeia de Suprimentos
GitHubxiaoqimikko/pac4j-check

pac4j-check

Scanner offline para CVE-2026-29000 (CVSS 10.0) em org.pac4j:pac4j-jwt. Inspeciona jars/fat-jars diretamente, por isso funciona onde mvn dependency:tree não consegue. Jar único, zero dependências, Java 8+.

Ver Repositório
16há 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

pac4j-check

Verificação offline da CVE-2026-29000 (CVSS 10.0) — incluindo os pacotes que o advisory oficial não lista.

English | 中文

Um único jar, cerca de 24KB, zero dependências em tempo de execução, disponível a partir do Java 8, totalmente offline, não envia nenhum dado para fora.


O que é esta vulnerabilidade

O JwtAuthenticator do org.pac4j:pac4j-jwt não força a validação de assinatura ao processar JWT criptografados (JWE). Basta que o atacante obtenha a chave pública RSA do servidor (a chave pública é pública por natureza), para construir um PlainJWT encapsulado em JWE, escrever valores arbitrários em subject e role, e autenticar-se como qualquer usuário, incluindo administrador. Sem precisar de nenhuma credencial.

ItemValor
CVECVE-2026-29000
GitHub advisoryGHSA-pm7g-w2cf-q238
CVSS10.0 (nota máxima)
Data de publicação2026-03-05

O pac4j é amplamente integrado com Spring Security, Apereo CAS, JEE, Vert.x, Play, Dropwizard, entre outros.

🔴 Correção da v0.2.0: a alegação central da v0.1.0 estava errada

A v0.1.0 afirmava que "a base oficial de vulnerabilidades lista apenas 1 pacote, quando na verdade são 5", e por isso reportava como vulneráveis pac4j-oidc / javalin-pac4j / lagom-pac4j / ratpack-pac4j. Isso era falso positivo. O advisory oficial listar apenas pac4j-jwt está correto.

Base da revisão (duas evidências independentes, ambas reproduzíveis por conta própria):

ArtefatoSua dependência de pac4j-jwtÉ repassada ao consumidor
pac4j-oidcescopo test (verificado versão a versão em 3.0.0 / 4.0.0 / 4.5.0 / 5.0.0 / 5.7.0 / 6.0.0 / 6.3.0)❌
javalin-pac4jescopo test❌
lagom-pac4j-parentescopo provided❌
ratpack-pac4j:1.4.6todo o bloco de dependência está envolvido por um comentário XML, simplesmente não existe❌
  1. O escopo não é propagado — no Maven, dependências test / provided não são repassadas para downstream, o pac4j-jwt não aparece no runtime classpath do consumidor.
  2. Reinspeção do artefato real — o pac4j-oidc-6.0.0.jar tem 78 entradas, todas sob org/pac4j/oidc/, sem nenhuma classe pac4j-jwt embutida via shade. Nem é propagado, nem é carregado.

Onde estava o erro: a v0.1.0 analisou cada pom individualmente, mas olhou apenas "quem escreveu a coordenada pac4j-jwt", sem olhar o scope — tratando "está escrito no pom" como "o consumidor vai receber".

Se você atualizou o pac4j por causa do relatório da v0.1.0, essa atualização não era necessária (a atualização em si é inofensiva). Só é preciso agir quando existir de fato um pac4j-jwt de versão afetada na sua aplicação.

Por que ainda é necessária uma ferramenta dedicada

Para determinar se uma máquina específica tem ou não o pac4j-jwt afetado, o mvn dependency:tree falha em dois casos — na máquina de produção só existe um fat-jar já empacotado (sem código-fonte e sem pom); ou ele foi embutido via shade dentro de algum SDK, e nem aparece na árvore de dependências. Esta ferramenta escaneia diretamente o artefato em si, sem depender do ambiente de build.

ArtefatoNúmero de versões afetadasAdvisory oficial
org.pac4j:pac4j-jwt114✅ o único listado, e isso está correto

Uso

java -jar pac4j-check.jar ./myapp.jar        # escaneia um jar/war
java -jar pac4j-check.jar /opt/apps          # escaneia um diretório (recursivo)
java -jar pac4j-check.jar /opt/apps --json   # saída JSON, para encadear em pipes
java -jar pac4j-check.jar ./app.jar --gbk    # use quando o console do Windows exibir caracteres chineses corrompidos

Códigos de saída: 0 = não encontrado afetado · 1 = em dúvida/não determinável · 2 = encontrado afetado. Pode ser plugado diretamente no CI.

Exemplo de saída

[CRITICAL] pac4j-jwt 5.4.3
  位置    :demo-app.jar!/BOOT-INF/lib/pac4j-jwt-5.4.3.jar
  版本来源:pom.properties(可靠)
  部署形态:Spring Boot fat-JAR
  结论    :命中 CVE-2026-29000 —— JWE 处理路径未强制校验签名,
            拿到服务器 RSA 公钥即可伪造任意身份(含管理员)登录
  处置    :升级 pac4j-jwt 至 5.7.9

A v0.1.0 ainda reportaria aqui uma linha extra [CRITICAL] pac4j-oidc — isso era falso positivo, removido na v0.2.0, o motivo está na correção no início do documento.

O que ele faz

  • Expande recursivamente fat-JARs do Spring Boot (em memória, sem descompactar em disco), rastreando até o caminho aninhado específico
  • Identifica casos embutidos via shade no jar hospedeiro — exatamente o tipo que o mvn dependency:tree não encontra
  • Rastreia a cadeia de introdução — informa qual artefato arrastou o pac4j-jwt para dentro
  • Fornece o veredito e o alvo de atualização concreto conforme os intervalos oficiais

Regras de veredito e limites (leia até o fim antes de usar)

O veredito segue sempre o advisory oficial GHSA-pm7g-w2cf-q238:

pac4j-jwt  < 4.5.9                      -> 升 4.5.9
pac4j-jwt  >= 5.0.0-RC1  且 < 5.7.9     -> 升 5.7.9
pac4j-jwt  >= 6.0.4.1    且 < 6.3.3     -> 升 6.3.3

Autoverificação: esta ferramenta roda o veredito sobre todas as 147 versões do pac4j-jwt no Maven Central, o número de acertos é 114, coincidindo exatamente com a soma das versões dos três intervalos do advisory oficial (13+33+68). Essa asserção está escrita nos testes (OfficialRangeCrossCheckTest), e o build falha se não bater.

⚠️ Mas é preciso ter clareza sobre o que isso valida: valida que o algoritmo de intervalo de versões está correto, não valida "quais artefatos devem entrar na tabela de veredito" — o falso positivo da v0.1.0 ocorreu justamente neste último ponto, e na época essa autoverificação estava verde. O escopo em que a verificação passa ≠ o escopo em que a conclusão é válida.

Duas limitações que precisam ser explicitadas

  1. Cobre apenas o groupId org.pac4j. Há pesquisas de terceiros afirmando que os artefatos afetados somam 19, com 1.020 versões, mas a lista completa não foi divulgada. O que esta ferramenta reconstrói de forma independente é a parte dentro do escopo org.pac4j, sem alegar cobertura total. Outros groupIds (como org.apereo.cas do Apereo CAS) não foram incluídos.

  2. pac4j-jwt 6.0.0 ~ 6.0.4 é marcado como "em dúvida" e não como "afetado". O oficial afirma que a linha 6.x é afetada a partir de 6.0.4.1; já a pesquisa de terceiros afirma que a vulnerabilidade foi introduzida já em 1.9.2 — se isso for verdade, essas 5 versões também deveriam contar. Não verificamos de forma independente a conclusão de terceiros, por isso marcamos separadamente e recomendamos atualização conservadora, em vez de classificar diretamente como crítico.

Por que ser tão conservador: uma regra de veredito errada não é um "falso positivo", é fazer o usuário agir errado. Preferimos marcar como em dúvida a fixar como conclusão um escopo não verificado.

Build

mvn package        # 产物:target/pac4j-check.jar
mvn test           # 31 个测试

Feedback

Se encontrar erro de veredito, omissão ou falso positivo, abra uma Issue. Se você puder fornecer coordenadas reproduzíveis do artefato (groupId:artifactId:version), a correção será muito mais rápida.

License

Apache License 2.0


pac4j-check (English)

Offline scanner for CVE-2026-29000 (CVSS 10.0) — including the packages the official advisory does not list.

Single jar, ~24KB, zero runtime dependencies, Java 8+, fully offline, sends nothing anywhere.

The vulnerability

Baixar ferramenta