
CVE-2026-4480の概念実証。Sambaプリントジョブ名コマンドインジェクション脆弱性。悪意のあるプリントジョブ名による悪用を示し、検出および緩和ガイダンスを含む。
CVE-2026-4480 は、外部印刷コマンドを使用する特定の Samba 印刷設定に影響を与えるコマンドインジェクションの脆弱性です。
この脆弱性は、Samba がユーザー制御の印刷ジョブメタデータをシェルコマンドに挿入する際に、シェルメタ文字を適切にエスケープしないために発生します。特定の設定では、攻撃者が悪意のある印刷ジョブ名を提供することで、サーバー上で任意のコマンドを実行させることができます。
この問題は、一部のプリンター共有がゲストアクセスを許可しているため、認証なしで悪用が可能となる点で特に危険です。
Samba は複数の印刷バックエンドをサポートしています。sysv 形式の印刷 と呼ばれるレガシーオプションの1つは、印刷ジョブが完了するたびに外部コマンドを実行します。
管理者は、次のような置換マクロを使用してコマンドを設定できます。
print command = /usr/local/bin/print-helper %s %J
ここで:
%s → スプールファイルへのパス%J → クライアントから提供された印刷ジョブ名修正前は、%J の値はシステムシェルを介して実行されるコマンドに挿入される前に、最小限のサニタイズしか行われていませんでした。
シェルメタ文字がそのまま残っていたため、特別に細工されたジョブ名によって意図されたコマンドフローが変更され、攻撃者が制御する命令を実行する可能性がありました。
典型的な攻撃は4つの段階で構成されます。
印刷コマンドが %J を参照している場合、攻撃者のペイロードはシェルコマンドの一部となり、Samba 印刷プロセスの権限で実行されます。
すべての Samba インストールが脆弱であるわけではありません。
一般的に、以下の条件がすべて満たされている必要があります。
%J を参照している。CUPS ベースの印刷を使用する最新のデプロイメントでは、ジョブがシェルコマンドではなく CUPS API を介して渡されるため、この攻撃経路は露出しません。
悪用に成功すると、攻撃者は以下を行う可能性があります:
深刻度は、印刷プロセスの権限と周囲のシステム設定に大きく依存します。
影響を受けるリリースは、以下のバージョンより前のものです:
これらのバージョンよりも新しいリリースを使用しているシステムは、この問題の影響を受けません。
推奨される緩和策は以下の通りです:
%J を削除する。printing = cups に移行する。防御側は以下を調査すべきです:
smbd が予期せずシェルインタプリタを起動するsh
bash
python
perl
nc
curl
wget
Samba サービスからのプロセス作成を監視することで、悪用の試みを特定するのに役立ちます。
このリポジトリは、教育および許可されたセキュリティ研究のみを目的としています。
所有者の明示的な許可なしに、このコードをシステム、ネットワーク、またはサービスに対して使用しないでください。コンピュータシステムへの無許可アクセスは違法であり、非倫理的です。
常に、隔離されたラボ環境またはセキュリティトレーニング用に特別に設計されたプラットフォームでテストを実施してください。