インターネット印刷プロトコル

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をサポートする

インターネット印刷プロトコル (IPP) は、RFC 2910 および RFC 2911 に規定されており、ネットワーク印刷の事実上の標準です。これは HTTP/1.1 の上に位置し(クリアテキストまたはTLS)、印刷ジョブの作成、プリンターの機能の照会、キューの管理のための豊富なAPIを提供します。IPP Everywhere のような現代の拡張機能は、モバイルおよびクラウド環境からのドライバなし印刷を可能にし、同じパケット形式は3Dプリンターにも再利用されています。

残念ながら、ポート 631/tcp(およびプリンター発見のための631/udp) を公開することは、従来のオフィスプリンターや CUPS を実行しているLinux/Unixホストの両方で深刻なセキュリティ問題を引き起こすことがよくあります。


クイックPoC – Pythonを使用した生のIPPの作成

python
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

bash
# 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 に対して動作):
bash
ippfind --timeout 3 --txt -v "@local and port=631"  # プリンタのリスト
  • ipptool.test ファイルで定義された任意のリクエスト:
bash
ipptool -tv ipp://<IP>/ipp/print get-printer-attributes.test

バンドルされた get-printer-attributes.test ファイルはファームウェアバージョン、サポートされているドキュメント形式などをクエリします。

3. Shodan / Censys dorks

bash
shodan search 'product:"CUPS (IPP)" port:631'

70,000 以上のホストが2025年4月にCUPSを公開していました。


最近の脆弱性 (2023-2025)

CVE ID(s)影響を受けるコンポーネント影響
2025CVE-2023-50739Lexmarkファームウェア (IPPパーサ)ヒープオーバーフロー → Wi-Fi/LAN経由のRCE
2024CVE-2024-47076, 47175, 47176, 47177cups-browsed, libcupsfilters, libppd, cups-filtersCUPSブラウジングが有効な任意のLinuxデスクトップ/サーバーでの完全な認証なしRCEチェーン
2024CVE-2024-35235cupsd 2.4.8-シンボリックリンクトリック → 任意の chmod 666 → 権限昇格
2023CVE-2023-0856 (Canon) + Pwn2Ownsides属性のスタックオーバーフロー → リモートコード実行

cups-browsed RCEチェーン (2024年9月)

  1. cups-browsedUDP/631でプリンタ広告をリッスンします。
  2. 攻撃者は悪意のあるIPP URLを指す単一の偽装パケットを送信します (CVE-2024-47176)。
  3. libcupsfiltersは検証なしにリモートPPDを自動的に取得します (CVE-2024-47076 & 47175)。
  4. 作成された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.confListen ディレクティブにシンボリックリンクを配置すると、cupds (root) が攻撃者が選択したパスに対して chmod 666 を実行し、書き込み可能なシステムファイルにつながり、Ubuntuでは FoomaticRIPCommandLine を使用した悪意のあるPPDによるコード実行が可能になります。


攻撃技術

  • 認証されていない生印刷ジョブ – 多くのプリンターは認証なしで POST /ipp/print を受け入れます。悪意のある PostScript ペイロードは高性能デバイス上でシェルコマンド(system("/bin/nc ..."))を呼び出すことができます。
  • ジョブハイジャックCancel-Job の後に Send-Document を行うことで、攻撃者は他の人のドキュメントを物理的に印刷される前に置き換えることができます。
  • SNMP → IPP コンボ – デフォルトのコミュニティ public は、IPP URL に必要な内部キュー名を漏洩することがよくあります。

防御のベストプラクティス

  1. CUPSとプリンターのファームウェアを迅速にパッチし、ベンダーのPSIRTフィードに登録してください。
  2. ゼロコンフィグ印刷が必要ない限り、cups-browsed と UDP/631 を無効にしてください。
  3. TCP/631を信頼できるサブネット/VPNに制限し、TLS (ipps://) を強制してください。
  4. 匿名印刷の代わりに Kerberos/Negotiate または証明書認証を要求してください。
  5. ログを監視してください: /var/log/cups/error_logLogLevel debug2 で表示すると、不正なPPDダウンロードや疑わしいフィルタの呼び出しが表示されます。
  6. 高セキュリティネットワークでは、印刷をハードニングされた隔離された印刷サーバーに移動し、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をサポートする