gohttpserverに任意ファイル書き込みの脆弱性 CVSS 9.8
ファイル共有に使われるgohttpserverのv1.3.0までに、細工したZIPをアップロードされるとサーバー内に任意のファイルを書き込まれる脆弱性が公表されました。利用の有無を洗い出し、リポジトリの告知で修正版を確認してください。
急ぎ度: 早めに
CVSSは9.8で、認証なしにネットワーク越しで悪用できる評価ですが、公表は2026年11月3日で、修正版の有無は告知で確認する段階です。
関係があるか
gohttpserverをファイル共有や受け渡しに使い、アップロード機能に到達できる環境が対象です。開発チームや部署が手軽に立てたサーバーも含まれます。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| codeskyblue gohttpserver | v1.3.0までの版 | 修正版の有無と版番号は、GitHubリポジトリの告知とissueで確認してください |
確かめ方
- 1情報システム部門の資産台帳だけでなく、各部署や開発チームに、gohttpserverを動かしていないか問い合わせる。
- 2サーバー上で
ps aux | grep -i gohttpserverを実行し、プロセスの有無を調べる。コンテナで動かしているなら、稼働中のイメージ名にgohttpserverが含まれていないかも確認する。 - 3見つかったら、導入時のバイナリやイメージの版を確認する。v1.3.0以前なら対象とみて扱う。
- 4ネットワーク上のどこから/uploadに到達できるかを確認する。インターネットに公開されていれば、優先度を上げる。
何が起きたか
gohttpserverのアップロード機能に、細工したZIPアーカイブを受け取ると、サーバー上の任意の場所にファイルを書き込まれる脆弱性が見つかりました。
原因は、ZIPを展開するときに、展開先のフォルダーの外へ出ていくファイル名を拒否していないことです。「Zip Slip」と呼ばれる種類で、分類はCWE-22(パストラバーサル)です。ZIPの中のファイル名が、親のフォルダーをたどる相対パスになっていると、本来の保存場所を越えて書き出されます。
書き込めるのは、gohttpserverを動かしているユーザーの権限で届く範囲です。CVSS v3は9.8で、機密性・完全性・可用性のすべてが高と評価されています。
攻撃の流れ
-
1
サーバーへ到達
gohttpserverのアップロード先にネットワーク経由でアクセスする。
-
2
細工ZIPを送信
展開先の外を指すファイル名を含むZIPをアップロードする。
-
3
展開先の外へ書込
展開の際に、保存場所の外にファイルが書き込まれる。
-
4
改ざん・乗っ取り
設定やスクリプトが書き換えられ、サーバーの制御を奪われる可能性がある。
どう悪用されるか
CVSSのベクターでは、ネットワーク越しに、認証なしで、利用者の操作も要らずに悪用でき、条件も複雑ではないと評価されています。ZIPをアップロードできる経路にたどり着ければ足りる、ということです。社内LANだけで動かしていても、すでに社内に入り込んだ端末や、同じネットワークの別の利用者から届くなら、条件は同じです。
悪用されると、gohttpserverの実行権限で、任意のファイルを作成または上書きされます。保管中のファイルや設定、起動スクリプトが書き換えられ、実行されるファイルまで置かれれば、サーバーの乗っ取りにつながる可能性があります。実際にどこまで及ぶかは、サーバーの権限と配置で変わります。
今すぐやること
-
1
gohttpserverの稼働状況を洗い出す
サーバーやコンテナで動いているものを探します。部署が個別に立てたものも対象に含め、公開範囲とアップロード機能の使用有無を控えておきます。
ps aux | grep -i gohttpserver -
2
ベンダーの告知で修正版を確認して更新する
GitHubリポジトリの告知とissueで、修正版の有無と版番号を確認します。修正版が出ていれば、更新を最優先にします。
-
3
修正版を当てられない間は露出を絞る
すぐに更新できない、または修正版が見当たらないときは、下の回避策でアクセス元を限り、不要なら停止します。
-
4
侵害の跡を点検する
公開範囲が広かったサーバーは、公開以降に更新された想定外のファイルがないか、アップロードのログに不審なZIPがないかを調べます。設定ファイルや起動スクリプトの更新日時も見ておきます。
修正版がないあいだのつなぎ
アクセス元を、必要な利用者や端末のIPアドレスに限ります。前段にリバースプロキシがあれば、/uploadへのアクセスを遮断します。アップロード機能を無効にできる設定があれば、オフにします。gohttpserverの実行ユーザーは、書き込み先を絞った非特権のアカウントにして、被害が及ぶ範囲を狭めます。アップロードを使う必要がなければ、サービスごと止めるのが確実です。
背景
gohttpserverは、指定したディレクトリをブラウザから閲覧し、ファイルをダウンロードやアップロードできるGo製のHTTPサーバーです。導入が手軽で、部署内のファイル受け渡しや、開発中の成果物の共有に使われやすい種類のツールです。そのぶん、情報システム部門の管理外で動いたまま忘れられることが多く、版の更新も追われにくいと考えられます。
今回の脆弱性は、Snykが2018年に「Zip Slip」と名付けた型にあたります。アーカイブの中のファイル名を確認せずに展開すると、展開先の外へ書き込まれるという問題で、ライブラリごと、プロジェクトごとに実装が異なるため、同じ型の脆弱性があちこちで見つかってきました。gohttpserverでは、アップロードされたZIPの展開処理が該当します。
よくある質問
Q.自社でZIPを展開するシステムを作っています。同じ問題は起きますか。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
A Zip Slip vulnerability in the /upload endpoint of codeskyblue gohttpserver through v1.3.0 allows attackers to write arbitrary files via uploading a crafted Zip archive.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- advisory github.com
- advisory nvd.nist.gov
- advisory github.com
- package github.com
- report github.com
- web security.snyk.io
- web github.com