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
gdcm-security-poc — Pacote privado de reprodução de sanitizador ponta a ponta para seis descobertas do GDCM | Kitploit
Ferramentas/GitHubGitHub/abhinavagarwal07/gdcm-security-poc
Análise EstáticaAnálise Dinâmica (Sandboxing)Forensia de MemóriaAnálise de VulnerabilidadesExploraçãoFuzzingAnálise de BináriosPapers e PesquisaAprendizado e Educação
GitHubabhinavagarwal07/gdcm-security-poc

gdcm-security-poc

Pacote privado de reprodução de sanitizador ponta a ponta para seis descobertas do GDCM

Ver Repositório
61há 21 diasAinda 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

Achados GDCM 1-6: pacote de reprodução

Seis defeitos de parser/codec no GDCM, reproduzidos na v3.2.6 como falhas de sanitizer ou verificações de propagação limitada. Cada gatilho automatizado possui um controle quase válido que não produz o sinal vulnerável. O Achado 1 também inclui uma primitiva de fluxo de controle instrumentada.

Destinado à revisão do mantenedor e do coordenador de vulnerabilidades. Leia SAFETY.md antes de executar qualquer coisa.

Alvos fixados

manifest/targets.env:

NomeRevisãoO que é
vulnerable9c71b163tag v3.2.6
master2cd05d13snapshot upstream do master revisado estaticamente; matriz de runtime pendente
fixednão definidopreencher apenas quando existir um commit de remediação revisado

master é um snapshot datado, não um branch móvel. Ambas as revisões são alcançáveis a partir do repositório público, então bootstrap.sh pode preparar qualquer uma sem nenhum código-fonte privado.

Escopo dos achados

A evidência de runtime neste repositório é para a v3.2.6. Os intervalos mais amplos abaixo vêm da inspeção do histórico do código-fonte; os padrões implicados também permanecem no snapshot fixado do master.

#CWEIntervalo inspecionado no código-fonteCaminho necessário
1CWE-787v3.0.4 até v3.2.7leitura multi-frame RLE YBR_FULL_422
2CWE-787v2.0.16 até v3.2.7codificação/transcodificação JPEG2000
3CWE-125v2.0.5 até v3.2.7parsing de paleta segmentada; a aplicação da LUT expõe valores propagados
4CWE-787v2.0.8 até v3.2.7ImageRegionReader::ReadIntoBuffer; relacionado à validação de precisão incompleta após CVE-2024-22373
5CWE-674v2.0.4 ou anterior até v3.2.7parsing comum de sequências aninhadas
6CWE-369v2.0.4 ou anterior até v3.2.7parsing comum de RLE com NumSegments=0

Conteúdo

  • fixtures/ - as entradas DICOM inertes, com SHA-256 fixado em manifest/expectations.json e verificadas antes de cada execução de gatilho
  • generators/ - geradores de código-fonte determinísticos e sem dependências para cada fixture
  • harnesses/ - harnesses mínimos de leitura/codificação/decodificação; o Achado 2 é demonstrado tanto pela CLI gdcmconv quanto pela API de transcodificação da biblioteca que um servidor chamaria
  • manifest/expectations.json - comandos legíveis por máquina, sinais decisivos e critérios de aceitação para o alvo fixed
  • scripts/ - preparação de código-fonte fixado, builds com sanitizer, execução limitada, limpeza
  • evidence/ - resultados concisos já observados, com alvos não testados declarados explicitamente
  • LICENSE - licença MIT

Pré-requisitos

Um ambiente de build descartável Linux ou macOS com Git, Python 3, CMake 3.20+, Ninja e uma toolchain C++11 (Clang ou GCC). No Ubuntu: git python3 cmake ninja-build clang zlib1g-dev. Defina CC/CXX para usar GCC em vez disso.

A preparação do código-fonte clona via HTTPS a menos que GDCM_SOURCE_REPO aponte para um clone local existente. Nenhum host SSH é usado.

Preparar e compilar

Estes comandos preparam apenas o código-fonte e os artefatos de build; eles não abrem nenhuma fixture.

./scripts/build-target.sh vulnerable asan  debug
./scripts/build-target.sh vulnerable ubsan debug
./scripts/build-target.sh master     asan  debug
./scripts/build-target.sh master     ubsan debug

O terceiro argumento é o perfil. debug é -O0 -g; release é -O2 -g -DNDEBUG, que elimina os gdcm_debug_assert() do GDCM e corresponde a como as distribuições compilam a biblioteca. Executar a matriz em ambos responde à primeira pergunta que um mantenedor faz, que é se os relatórios são um artefato de um build com assertions habilitadas.

GDCM_SUPPORT_BROKEN_IMPLEMENTATION=ON é o próprio padrão do GDCM e é deixado como está. Substitua o paralelismo conservador com JOBS=8.

Cada build grava build-info.json (revisão, compilador, flags, plataforma) em sua árvore de build do GDCM, e cada resumo de execução o incorpora, então a evidência arquivada é autodescritiva.

Executar

export GDCM_REPRO_ACK=I_UNDERSTAND_THIS_CRASHES_A_LOCAL_PROCESS

./scripts/run-matrix.sh vulnerable master --profile debug   # todos os casos automatizados
./scripts/run-one.sh vulnerable f1                          # um gatilho
./scripts/run-one.sh vulnerable f1 --control                # seu controle

run-matrix.sh executa todos os casos automatizados para cada alvo, não para na primeira falha, e grava _runs/matrix-<stamp>.json mais um _runs/matrix-<stamp>.md renderizado. O caso f1-exploit de dois estágios permanece manual e é reportado como tal em vez de ser classificado erroneamente como um caso automatizado falho.

Cada processo filho tem core dumps desabilitados e um timeout de 15 segundos; o Achado 5 recebe adicionalmente um limite de pilha limitado. As saídas permanecem sob _runs/. O classificador corresponde à classe do sanitizer e à função implicada, nunca a endereços, PIDs ou números de linha do código-fonte.

Para vulnerable, um caso passa quando o sinal decisivo aparece e seu controle permanece limpo. Para master, o executor registra observação em vez de um veredito pré-declarado. Para fixed, um caso passa apenas quando o sinal está ausente, nenhum outro sanitizer ou sinal fatal aparece, e o harness retorna um resultado limpo permitido. Essas regras são provisórias até que FIXED_REV nomeie um patch real; elas devem ser revisadas contra o comportamento pretendido de rejeitar-ou-processar desse patch.

Casos

CasoAchadoO que mostra
f11escrita de heap ASan em RLECodec::DecodeFragment
f1-exploit1sobrescrita instrumentada de objeto adjacente e controle de branch indireto (Linux x86-64)
f22escrita de heap ASan em opj_write_from_memory via gdcmconv --j2k
f2-lib2a mesma escrita via ImageChangeTransferSyntax::Change
f33leitura de heap ASan na expansão de paleta segmentada
f3-propagation3bytes fora dos limites alcançam pixels decodificados, reportado como uma contagem
f3-sentinel3uma palavra de guarda conhecida e limitada cruza o limite lógico da LUT
f44escrita de heap ASan na decodificação de região JPEG2000
f55esgotamento de pilha ASan em itens de sequência aninhados
f66divisão por zero UBSan na decodificação RLE; SIGFPE em x86

Dois harnesses adicionais são pesquisa de explorabilidade em vez de casos de reprodução, e compilam apenas no perfil sem sanitizer em Linux x86-64:

HarnessAchadoO que estabelece
finding01_groom1a adjacência glibc testada, observada através de hooks de registro de alocação
finding03_leak3uma leitura excessiva de 131070 bytes pode expor um ponteiro de biblioteca específico do build

Evidência retida

evidence/v3.2.6-macos-arm64-debug.md registra a matriz de debug completa da v3.2.6, incluindo cada controle e ambas as verificações limitadas de propagação do Achado 3.

evidence/v3.2.6-linux-x86_64-finding01-groom.md e evidence/v3.2.6-linux-x86_64-finding03-leak.md registram os dois resultados de explorabilidade abaixo. Resultados do master atual, da matriz completa do perfil release e do f1-exploit não são reivindicados até que suas transcrições sejam retidas.

Limpeza

./scripts/clean.sh

A limpeza se recusa a executar sem o marcador do pacote e remove apenas _work, _build, _generated, _runs e caches de bytecode Python sob este repositório. A evidência retida em evidence/ não é removida.

Primitiva de exploração (Achado 1)

f1-exploit é apenas para Linux-x86_64 e é executado manualmente; manifest/expectations.json contém a sequência exata de comandos. Sob o layout de alocação determinístico do harness, ele testa três fatos separados, cada um com um caso negativo correspondente:

Baixar ferramenta