本文へ移動
English version →
重大 9.6 急ぎ度: 早めに

Part-DB、添付ファイル経由でコード実行の恐れ 2.12.1で修正

電子部品の在庫管理システム Part-DB で、ログインできる一般利用者が部品の添付ファイルを使い、サーバー上で任意のPHPコードを実行できる弱点が見つかりました。2.12.1 より前の版が対象で、Docker イメージも初期状態で該当します。社内や研究室で運用している場合は、2.12.1 以降への更新と、アップロード済みファイルの確認を進めてください。

CVE-2026-54630 公開 生成 AI で作成
画像は生成 AI で作成したイメージです

急ぎ度: 早めに

CVSS 9.6の致命的な評価で、既定の一般利用者権限だけで悪用できますが、ログインが必要で、実際の攻撃での悪用は公表されていません。

関係があるか

Part-DBを自社や自組織のサーバー、Docker環境で運用していて、複数の利用者にアカウントを配っている組織が対象です。ApacheとPHP-FPMの同梱設定で動かしている場合は特に該当します。

製品影響を受ける版直った版
Part-DB-server 2.12.1より前の版(影響を受ける最も古い版は公表されていません) 2.12.1
Part-DB の Docker イメージ 2.12.1より前の版は初期状態で該当 2.12.1を含むイメージ

確かめ方

  1. 1Part-DBの導入方法(Docker、手動導入など)と、現在動いている版を確認します。Dockerの場合は、使用しているイメージのタグを確認します。
  2. 2版が2.12.1より前であれば、該当するものとして扱ってください。
  3. 3Webサーバーの設定で、.phar ファイルがPHP-FPMに渡されるようになっているかを確認します。同梱のApache設定を使っている場合は、この状態です。
  4. 4ログインできるアカウントの数と持ち主を洗い出します。既定のusersグループのアカウントがあれば、攻撃の入口になり得ます。

何が起きたか

Part-DBは、電子部品の在庫を管理するオープンソースのシステムです。部品ごとにデータシートなどのファイルを添付できます。この添付機能に弱点があり、特定の種類のファイルを添付すると、サーバー側でプログラムとして実行されてしまいます。ログインしている一般利用者でも実行でき、管理者権限は必要ありません。

Part-DBには、危険な拡張子のファイルを安全な .txt に書き換える仕組みがあります。ところが、その一覧に phar が入っていませんでした。.phar はPHPの実行形式として扱えるファイルです。

公開設定の添付ファイル(既定)は、Webから直接見られる public/media/ に保存されます。同梱のApache設定は .phar をPHP-FPMに渡すため、そのファイルにアクセスするとPHPコードとして動きます。添付ファイルの種類ごとに設けられた拡張子の制限は、既定では空です。一般利用者でも制限のない添付ファイルの種類を作れるため、この制限は防御になりません。

実行されるのはWebサーバーの実行ユーザー(www-data)の権限です。公表では、Webサーバーの設定によって悪用できるかが変わるとされています。一方、Dockerイメージは初期状態で脆弱でした。2.12.1で修正されています。

攻撃の流れ

  1. 1

    ログイン

    既定のusersグループの一般利用者としてPart-DBにログインします。

  2. 2

    添付の準備

    制限のない添付ファイルの種類を作り、部品に添付できる状態にします。

  3. 3

    不正ファイル保存

    拡張子の書き換え対象から漏れたファイルが、公開ディレクトリにそのまま保存されます。

  4. 4

    Webから呼び出し

    保存されたファイルにアクセスすると、PHP-FPMがPHPコードとして実行します。

  5. 5

    サーバー操作

    Webサーバーの実行ユーザーの権限で、任意の処理が動きます。

公開されている情報をもとにした流れの例です。

どう悪用されるか

悪用にはログインが必要です。ただし、既定のusersグループの権限で足り、管理者権限や、別の利用者の操作は必要ありません。ネットワーク経由で攻撃でき、攻撃の難易度は低いと評価されています。Part-DBを社外から見える状態で公開していたり、アカウント登録を広く認めていたりすると、攻撃を受けやすくなります。

CVSSは9.6で、機密性と完全性への影響が高く、影響範囲が他に及ぶ(スコープの変更あり)と評価されています。被害としては、Part-DBのデータベース接続情報や設定ファイルの読み取り、登録データの改ざん、同じサーバーや同じネットワーク上の他のシステムへの足がかりにされることが考えられます。可用性への影響は評価に含まれていません。

実際の攻撃で悪用されたことが確認されたという公表は、現時点でありません。悪用される見込み(EPSS)の値も示されていません。

今すぐやること

  1. 1

    2.12.1以降へ更新する

    根本的な対策は、修正版の2.12.1以降に更新することです。Dockerで運用している場合は、2.12.1以降を含むイメージに入れ替えます。更新前にデータとファイルのバックアップを取ってください。

  2. 2

    アップロード済みの `.phar` を確認する

    公開ディレクトリに不審な .phar ファイルがないかを調べます。見つかった場合は、すぐに削除せず、調査のために退避して保存します。Dockerの場合は、コンテナ内または保存先のボリュームで実行してください。

    find public/media -iname '*.phar'
  3. 3

    不審な動きがなかったか調べる

    Webサーバーのアクセスログで、/media/ 以下の .phar へのアクセスがないか確認します。覚えのない添付ファイルの種類や、不審なアカウントが追加されていないかも見ます。痕跡があれば、DBの接続パスワードなど、サーバーに置いた秘密情報の変更を検討してください。

  4. 4

    アカウントとアクセス元を見直す

    使っていないアカウントを無効にし、Part-DBへのアクセスを社内ネットワークやVPNに限ります。更新までの間の被害を小さくできます。

すぐ更新できないとき

すぐに更新できない場合は、Webサーバーの設定で .phar をPHP-FPMに渡さないようにし、public/media/ 以下ではファイルをプログラムとして実行させない設定にします。あわせて、Part-DBへのアクセスを信頼できるネットワークに限り、アカウントを必要最小限にしてください。これらは暫定策です。設定の違いによって効果が変わるため、2.12.1以降への更新を優先してください。

背景

Part-DBは、電子部品の型番、在庫数、保管場所、データシートなどをまとめて管理するWebアプリケーションです。ものづくりの現場や研究室、開発部門で、複数人が共有して使われます。利用者がファイルを添付する機能が中心にあるため、社内のシステムであっても、アップロードの扱いが安全かどうかが問われます。

ファイルのアップロード機能の弱点は、Webアプリケーションで長く繰り返し問題になってきた種類のものです。危険な拡張子を「一覧に載せて禁止する」方式は、一覧に漏れが一つあるだけで防御が崩れます。対策としては、許可する種類だけを通す方式にすること、アップロード先でプログラムが実行されないようにすることが、一般に勧められています。

よくある質問

Q.管理者でなくても悪用できますか。
A.はい。既定のusersグループに属する、ログイン済みの一般利用者でも悪用できると公表されています。管理者権限は必要ありません。
Q.社内ネットワークだけで使っていれば安全ですか。
A.外部から直接攻撃される可能性は下がりますが、安全とは言えません。社内のアカウントを持つ人や、乗っ取られたアカウントから悪用される恐れがあります。更新は進めてください。
Q.Dockerで使っている場合はどうすればよいですか。
A.初期状態のDockerイメージも脆弱でした。2.12.1以降を含むイメージに入れ替えてください。保存先のボリュームに、不審な .phar ファイルがないかも確認してください。

まだ分かっていないこと

  • 影響を受ける最も古い版は公表されていません。2.12.1より前としか示されていません。
  • 実際の攻撃で悪用されたかどうか、悪用される見込み(EPSS)の値は公表されていません。最新の状況は、開発元のセキュリティ告知(GitHubのGHSA-w5m7-3xf7-6g7g)で確認してください。

この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。

影響パッケージ

種類パッケージ影響を受ける版直った版
Part-DB Part-DB-server — —
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

Part-DB is an open source inventory management system for electronic components. Prior to version 2.12.1, the part attachment upload handler stores uploaded files under the web-served media directory using the client-supplied file extension, and its extension blocklist does not include phar. AttachmentSubmitHandler::renameBlacklistedExtensions() rewrites dangerous extensions (php, phtml, sh, cgi, py, js, html, htaccess, ...) to .txt, but phar is absent from the list, so a .phar file keeps its extension. Public attachments (the default) are written into public/media/, which is the Apache document root. The shipped Apache configuration routes .phar to PHP-FPM, so the stored file is executed as PHP on request. The per-attachment-type extension filter is empty by default and is not consulted by the upload handler in a way that blocks this, and a non-admin user in the default users group can create an attachment type with no filter and attach files to parts. Any authenticated user in the default users group uploads a .phar attachment to a part and fetches it under /media/, executing arbitrary PHP as the www-data web user. Ability to exploit depends on the webserver config, docker image contained the vulnerability by default. This issue has been patched in version 2.12.1.

出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく