インターネット印刷プロトコル
Reading time: 8 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
インターネット印刷プロトコル (IPP) は、RFC 2910 および RFC 2911 に規定されており、ネットワーク印刷の事実上の標準です。これは HTTP/1.1 の上に位置し(クリアテキストまたはTLS)、印刷ジョブの作成、プリンターの機能の照会、キューの管理のための豊富なAPIを提供します。IPP Everywhere のような現代の拡張機能は、モバイルおよびクラウド環境からのドライバなし印刷を可能にし、同じパケット形式は3Dプリンターにも再利用されています。
残念ながら、ポート 631/tcp(およびプリンター発見のための631/udp) を公開することは、従来のオフィスプリンターや CUPS を実行しているLinux/Unixホストの両方で深刻なセキュリティ問題を引き起こすことがよくあります。
クイックPoC – Pythonを使用した生のIPPの作成
import struct, requests
# Minimal IPP Get-Printer-Attributes request (operation-id 0x000B)
ipp = struct.pack(
">IHHIHH", # version 2.0, operation-id, request-id
0x0200, # 2.0
0x000B, # Get-Printer-Attributes
0x00000001, # request-id
0x01, 0x47, # operation-attributes-tag, charset attr (skipped)
) + b"\x03" # end-of-attributes
r = requests.post("http://printer:631/ipp/print", headers={"Content-Type":"application/ipp"}, data=ipp)
print(r.status_code, r.content[:40])
列挙と偵察
1. Nmap NSE
# run all CUPS/IPP scripts
nmap -sV -p631 --script=cups* <target>
# or only basic info
nmap -p631 --script=cups-info,cups-queue-info <target>
cups-info
スクリプトはモデル、状態、キュー統計を抽出し、cups-queue-info
は保留中のジョブを列挙します。
2. CUPS の IPP ユーティリティ
ippfind
– マルチキャスト/UDP 発見 (cups-browsed に対して動作):
ippfind --timeout 3 --txt -v "@local and port=631" # プリンタのリスト
ipptool
– .test ファイルで定義された任意のリクエスト:
ipptool -tv ipp://<IP>/ipp/print get-printer-attributes.test
バンドルされた get-printer-attributes.test ファイルはファームウェアバージョン、サポートされているドキュメント形式などをクエリします。
3. Shodan / Censys dorks
shodan search 'product:"CUPS (IPP)" port:631'
70,000 以上のホストが2025年4月にCUPSを公開していました。
最近の脆弱性 (2023-2025)
年 | CVE ID(s) | 影響を受けるコンポーネント | 影響 |
---|---|---|---|
2025 | CVE-2023-50739 | Lexmarkファームウェア (IPPパーサ) | ヒープオーバーフロー → Wi-Fi/LAN経由のRCE |
2024 | CVE-2024-47076, 47175, 47176, 47177 | cups-browsed, libcupsfilters, libppd, cups-filters | CUPSブラウジングが有効な任意のLinuxデスクトップ/サーバーでの完全な認証なしRCEチェーン |
2024 | CVE-2024-35235 | cupsd 2.4.8- | シンボリックリンクトリック → 任意の chmod 666 → 権限昇格 |
2023 | CVE-2023-0856 (Canon) + Pwn2Own | sides 属性のスタックオーバーフロー → リモートコード実行 |
cups-browsed RCEチェーン (2024年9月)
cups-browsed
はUDP/631でプリンタ広告をリッスンします。- 攻撃者は悪意のあるIPP URLを指す単一の偽装パケットを送信します (CVE-2024-47176)。
libcupsfilters
は検証なしにリモートPPDを自動的に取得します (CVE-2024-47076 & 47175)。- 作成されたPPDは、印刷されるたびに任意のシェルコマンドを実行するためにfoomatic-ripフィルタを悪用します (CVE-2024-47177)。
概念実証コードは研究者のブログで公開されており、エクスプロイトには認証が不要です;UDP/631へのネットワークアクセスがあれば十分です。
一時的な緩和策
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
sudo ufw deny 631/udp # or equivalent firewall rule
パッチは2024年10月に主要なディストリビューションによってリリースされました – cups-filters ≥ 2.0.0 を確認してください。
cupsdシンボリックリンク Listen
の誤設定 (CVE-2024-35235)
cupsd.conf の Listen
ディレクティブにシンボリックリンクを配置すると、cupds (root) が攻撃者が選択したパスに対して chmod 666
を実行し、書き込み可能なシステムファイルにつながり、Ubuntuでは FoomaticRIPCommandLine
を使用した悪意のあるPPDによるコード実行が可能になります。
攻撃技術
- 認証されていない生印刷ジョブ – 多くのプリンターは認証なしで
POST /ipp/print
を受け入れます。悪意のある PostScript ペイロードは高性能デバイス上でシェルコマンド(system("/bin/nc ...")
)を呼び出すことができます。 - ジョブハイジャック –
Cancel-Job
の後にSend-Document
を行うことで、攻撃者は他の人のドキュメントを物理的に印刷される前に置き換えることができます。 - SNMP → IPP コンボ – デフォルトのコミュニティ
public
は、IPP URL に必要な内部キュー名を漏洩することがよくあります。
防御のベストプラクティス
- CUPSとプリンターのファームウェアを迅速にパッチし、ベンダーのPSIRTフィードに登録してください。
- ゼロコンフィグ印刷が必要ない限り、
cups-browsed
と UDP/631 を無効にしてください。 - TCP/631を信頼できるサブネット/VPNに制限し、TLS (ipps://) を強制してください。
- 匿名印刷の代わりに Kerberos/Negotiate または証明書認証を要求してください。
- ログを監視してください:
/var/log/cups/error_log
をLogLevel debug2
で表示すると、不正なPPDダウンロードや疑わしいフィルタの呼び出しが表示されます。 - 高セキュリティネットワークでは、印刷をハードニングされた隔離された印刷サーバーに移動し、USB経由でデバイスにジョブをプロキシするようにしてください。
参考文献
- Akamai – “CUPSにおける重大なLinux RCE脆弱性 — 我々が知っていることと準備方法”, 2025年4月。
- Debian Security Tracker – CVE-2024-35235の詳細。
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。