Go製フレームワークEchoのProxyミドルウェアに脆弱性、WebSocketの切り替えを断られた接続でルートの認証を回避されるおそれ。govulncheckで出ない間の確かめ方

公開 2026-11-01公表 2026-10-23更新 2026-11-01資料確認 2026-11-01Goの脆弱性 54件のまとめ
対象製品Echo
識別番号CVE-2026-118264
影響範囲v4:4.0.0〜4.16.0/v5:5.0.0〜5.4.0(Proxyミドルウェアを使う場合)
修正情報4.16.1・5.4.1(上げるなら4.16.3・5.4.4)

Go製のWebフレームワークEchoのProxyミドルウェアで、WebSocketへの切り替えを上流に断られた接続が中継されたまま残り、Echoのルートで行う認証・認可を回避されるおそれがある脆弱性(CVE-2026-118264)が、2026年10月23日にEchoから公表されました。修正版はv4の4.16.1とv5の5.4.1ですが、その後にProxyミドルウェアとクライアントのIPの扱いの修正が続いたため、上げる先はv4が4.16.3、v5が5.4.4です。11月1日時点で、Goの脆弱性データベースには未収録で、govulncheckでは検出されません。

2026-11-01更新:重点記事と同じ作りに書き直しました。上げる先(4.16.3・5.4.4)とIPExtractorの移行、govulncheckでまだ検出されない点を加えました。

この記事の要点
  • 対象は、EchoのProxyミドルウェアで上流へ転送するルートを外に開いている構成です。v4は4.16.0以前、v5は5.4.0以前が該当します。
  • 深刻度はEchoの評価でCVSS 4.0の9.1(緊急)です。11月1日時点でKEVには載っておらず、攻撃のコード(PoC)の公開も確認できませんでした。
  • 上げる先はv4が4.16.3(Go 1.26以上)、v5が5.4.4です。4.16.3はクライアントのIPの扱いが変わるため、プロキシの裏で動かす場合は先にIPExtractorを設定します。

01EchoのProxyミドルウェアで起きることと仕組み

EchoのProxyミドルウェアは、利用者がWebSocketへの切り替え(アップグレード)を求めると、上流のサーバーが受け入れたかを確かめる前に、接続をそのまま中継する方式(生のトンネル)に切り替えていました。上流が通常のHTTP応答を返して接続を保ったままにすると、その接続で続けて送られるHTTPリクエストは、Echoのルーターやルートごとのミドルウェアを通らずに、同じ上流へ直接届きます。[1]

このため、Echoのルートだけで行っている認証・認可を回避されるおそれがあります。Echoは、任意のホストへ中継できるわけではなく、上流自身の認証を回避するものでもないと説明しています。修正版では、アップグレードをGoの標準のリバースプロキシで扱い、上流が正しく受け入れたときだけ中継に切り替えます。断られたアップグレードは通常のHTTPリクエストのままです。[1]

断られたアップグレードの接続が中継されたまま残り、Echoのルートの認証を通らない

Echoのアドバイザリから、攻撃の入口と脆弱な処理を並べる。

利用者WebSocketへのアップグレードを求める
Proxyを置いた外部のルート

EchoのProxyミドルウェア(v4 4.16.0以前、v5 5.4.0以前)

受け入れの確認の前に切り替える上流が受け入れたかを確かめる前に、生のトンネルにする
断っても接続を閉じない上流
上流のサーバー続けて送られたHTTPリクエストが直接届く
起きること
ルートの認証・認可を回避Echoのルーターとルートごとのミドルウェアを通らない
及ばない範囲任意のホストへの中継や、上流自身の認証の回避はできない

出典 Echo公式「GHSA-cxf3-9h37-7rr8」(2026-10-29更新)

02Echoの脆弱性の影響を受ける条件

Echoのアドバイザリは、悪用には次の3つがそろう必要があるとしています。Proxyミドルウェアを使っていないアプリは、この脆弱性の対象になりません。[1]

  • 外部から届くルートに、Proxyミドルウェア(middleware.Proxy・middleware.ProxyWithConfig)を置いている
  • 上流のサーバーが、アップグレードを断っても接続を閉じない
  • 狙われる上流のリソースが独自の認可を持たず、Echoのルートでの確認に頼っている

影響を受ける版について、Echoはv4・v5の全系列で生のトンネルの実装があったとし、v4.15.0・v4.16.0・v5.0.0・v5.4.0で再現を確かめ、v4.0.0のソースにも同じ確認の抜けがあると書いています。[1]

03Echoの脆弱性の悪用の状況

11月1日に確かめた時点で、米CISAの悪用が確認された脆弱性の一覧(KEV、10月30日版)には載っていません。CVEの記録に米CISAが付けた評価(SSVC、10月30日)も、悪用は「なし」です。[3][4]

Echoのアドバイザリには再現を確かめた版の記載がありますが、攻撃のコード(PoC)は載っておらず、公開されたPoCも確認できませんでした。今後30日に悪用される見込みの推定(EPSS)は0.43%です(10月31日時点)。深刻度は、EchoとCVEの採番機関のGitHubの評価でCVSS 4.0の9.1(緊急)です。NVDは11月1日時点で分析中で、独自の値を付けていません。[1][5][6]

公表から1週間で修正が続き、11月1日時点で悪用もGoのデータベースへの収録も無い

アドバイザリ、CVEの記録、KEVなどから、日付のある出来事を並べる。

Echo GitHub・米CISAなど

2026年10月23日

アドバイザリを公表し、4.16.1・5.4.1を公開
9.1CVSS 4.0(Echoの評価)

10月24日

GitHub Advisory Databaseに収録

10月29日

CVE-2026-118264の記録を公開同じ日にEchoがアドバイザリを更新

10月30日

4.16.3・5.4.4を公開v4はIPのヘッダーを信頼してしまう2件も修正

10月30日

米CISAの評価(SSVC)は悪用「なし」KEVの10月30日版にも載っていない

10月31日

EPSSの推定
0.43%今後30日に悪用される見込み

11月1日

Goの脆弱性データベースに未収録govulncheckでは検出されない

出典 Echo公式「GHSA-cxf3-9h37-7rr8」(2026-10-29更新)、CVE Program「CVE-2026-118264」(2026-10-29)、米CISA「Known Exploited Vulnerabilities Catalog」(2026-10-30版)、Go公式「Go Vulnerability Database」(2026-11-01確認)

04Echoの対象の版と推奨する版

今回の脆弱性は4.16.1と5.4.1で直ります(どちらも10月23日公開)。ただ、4.16.1の時点ではv4に、クライアントが送ったIPのヘッダーを信頼してしまう2件(CVE-2026-118651、CVE-2026-118653)が残っていました。この2件はEchoのv4.16.3のリリースノートで修正済みとされています(GitHub Advisory Databaseの修正版の欄は、11月1日時点で空欄です)。v5は5.4.3で別の問題(GHSA-v97q-3xf5-rj74)が直り、5.4.4でProxyのX-Real-IPの扱いがさらに直されています。[2][7][8][9]

モジュール影響を受ける版今回の修正版推奨する版必要なGo
github.com/labstack/echo/v44.0.0〜4.16.04.16.14.16.3(10月30日公開)1.26以上
github.com/labstack/echo/v55.0.0〜5.4.05.4.15.4.4(10月30日公開)1.25以上

推奨する版は、Echoのアドバイザリ・リリースノートと、Goのモジュールのプロキシ(proxy.golang.org)で公開済みの版から出しました(11月1日確認)。更新の前に、Echoのリリースノートで変更点を確かめてください。[2][7][10]

この件は4.16.1・5.4.1で直るが、上げる先は4.16.3・5.4.4

アドバイザリとリリースノートから、v4とv5を並べる。

v4github.com/labstack/echo/v4
v5github.com/labstack/echo/v5
影響を受ける版
4.0.0〜4.16.0
5.0.0〜5.4.0
この件の修正版
4.16.1(10月23日)
5.4.1(10月23日)
その後の修正
IPのヘッダーを信頼してしまう2件を4.16.3で修正
5.4.3でGHSA-v97q-3xf5-rj74、5.4.4でX-Real-IPの扱いを修正
推奨する版
4.16.3(10月30日公開)
5.4.4(10月30日公開)
必要なGo
1.26以上
1.25以上
IPExtractor
設定しないとRealIP()が接続元のアドレスを返す。プロキシの裏なら先に設定
移行は要らない

出典 Echo公式「GHSA-cxf3-9h37-7rr8」(2026-10-29更新)、Echo公式「v4.16.3のリリースノート」(2026-10-30)、Echo公式「v5.4.3・v5.4.4のリリースノート」(2026-10-30)

05Echoの版を確かめて上げる手順

  1. 間接的な依存も含めて、v4・v5のどちらが何の版で入っているかを確認します。

    ターミナル
    go list -m all | grep labstack/echo
  2. Proxyミドルウェアを使っている箇所を探します。見つからなければ、この脆弱性の対象ではありません(他の修正のために上げることは勧めます)。

    ターミナル
    grep -rn 'middleware.Proxy' --include='*.go' .
  3. v4を4.16.3に上げる場合は、Goの版が1.26以上かを確かめます。プロキシの裏で動かしているなら、先にIPExtractorを設定します。

    ターミナル
    go version
    grep -rn 'IPExtractor' --include='*.go' .
  4. 推奨する版へ上げ、go.mod・go.sumを整えます(使っている系列の行を実行します)。

    ターミナル
    go get github.com/labstack/echo/v4@v4.16.3
    go get github.com/labstack/echo/v5@v5.4.4
    go mod tidy
  5. テストを通したあと、組み上がったバイナリに記録された版を確かめます。コンテナイメージの中のバイナリでも同じ確認をします。

    ターミナル
    go list -m github.com/labstack/echo/v4 github.com/labstack/echo/v5
    go version -m ./app | grep labstack/echo

06すぐ上げられないときの回避策

Echoのアドバイザリが挙げる回避策は次の2つです。[1]

  • 影響するProxyのルートに届く前に、WebSocketのアップグレード要求を拒否する
  • 上流の各リソースで、Echoとは別に認可を行う

上流から101以外の応答を返すようにするだけでは、問題の中継は防げないと書かれています。WebSocketを使っていないProxyのルートなら、前段のロードバランサーやEchoの手前のミドルウェアでUpgradeヘッダー付きの要求を断る形が、1つめの回避策に当たります。[1]

074.16.3に上げる前のIPExtractorの設定

4.16.3では、Echo#IPExtractorを設定していない場合、Context.RealIP()がX-Forwarded-For・X-Real-IPを使わず、接続元のアドレスを返すように変わりました。Proxyミドルウェアが上流へ送るX-Real-IPも、この値で置き換えます。[7][10]

ロードバランサーなどの裏で動かしているアプリは、設定しないまま上げると、利用者全員がプロキシのアドレスに見えます。回数制限、IPによるアクセス制限、ログに影響するため、Echoは上げる前に、自社のプロキシだけを信頼するIPExtractor(ExtractIPFromXFFHeaderかExtractIPFromRealIPHeaderにTrustIPRangeを指定)を設定するよう求めています。プロキシを置かない場合はExtractIPDirect()を使います。v5は5.4.4でもこの移行は要りません。[7][9][10]

08govulncheckで出ない間の確かめ方

Goの脆弱性データベース(vuln.go.dev)には、11月1日時点でEchoのv4が3件(GO-2021-0051・GO-2022-1031・GO-2026-6293)、v5が2件(GO-2026-4502・GO-2026-6293)しか載っておらず、今回のCVE-2026-118264や同じ時期のEchoのアドバイザリは収録されていません。govulncheckやそれを使うCIの検査で何も出なくても、対象外とは判断できません。[11]

当面は、go list -mや、組み上がったバイナリに記録されたモジュールの版で、v4・v5の版を直接確かめます。Echo v4は、最新版に対して不具合の修正を2026年12月31日まで、セキュリティの修正を2027年12月31日まで行うとしています。新しく作るものにはv5を勧めています。[10]

脆弱性の公表・更新一覧で、Goの関連情報を調べることもできます。

緊急の場合AI攻撃リスク即点検サービス公開情報と、契約後すぐに用意できるアクセスの記録から先に調べ、被害や狙われやすい構成がないかを早く確かめます。

よくある質問

WebSocketを使っていなければ、対象外ですか?

アプリがWebSocketを使っていなくても、Proxyミドルウェアのルートがあれば、攻撃者がアップグレードを求めることはできます。対象かどうかは、Proxyミドルウェアを使っているか、上流が断った後に接続を閉じるか、上流のリソースが独自に認可しているかで判断します。[1]

上流がアップグレードに101以外を返せば防げますか?

防げません。Echoのアドバイザリは、101以外の応答を返すだけでは問題の中継を防げないとしています。上げられないときは、Proxyのルートに届く前にアップグレード要求を断るか、上流で認可します。[1]

govulncheckで警告が出ません。対応済みと考えてよいですか?

11月1日時点で、この脆弱性はGoの脆弱性データベースに収録されていないため、govulncheckでは出ません。go list -m all | grep labstack/echoで版を確かめてください。[11]

4.16.1で止めてもよいですか?

今回の脆弱性は4.16.1で直りますが、v4のクライアントのIPに関する2件は4.16.3で直っています。4.16.3はIPExtractorの設定が要るため、プロキシの裏で動かす場合は設定を済ませてから上げます。[7][8]

出典・参考資料

  1. Echo公式:GHSA-cxf3-9h37-7rr82026-10-23公表・10-29更新(日本時間) / 仕組み、悪用の3つの条件、影響を受ける版と再現した版、修正版4.16.1・5.4.1、修正の内容、回避策、CVSS 4.0 9.1
  2. GitHub Advisory Database:GHSA-cxf3-9h37-7rr82026-10-24収録(日本時間) / 収録日、影響範囲と修正版、原公表日との区別
  3. 米CISA:Known Exploited Vulnerabilities Catalog(JSON版 2026.10.30)2026-11-01確認 / KEVに載っていないこと
  4. CVE Program:CVE-2026-118264の記録2026-10-29公開(日本時間) / 採番機関(GitHub)、CVEの公開日、CISAのSSVC(Exploitation: none、10月30日)
  5. FIRST:EPSS(CVE-2026-118264)2026-10-31 / 今後30日に悪用される見込みの推定 0.43%
  6. NVD:CVE-2026-1182642026-11-01確認 / 分析中で、GitHubの評価だけが載っていること
  7. Echo公式:v4.16.3のリリースノート2026-10-30 / CVE-2026-118651・CVE-2026-118653の修正、IPExtractorの移行、Go 1.26以上
  8. GitHub Advisory Database:GHSA-99jh-6h7p-pp36・GHSA-246p-cpwv-v3jq2026-10-29更新(日本時間) / v4の影響範囲が4.16.2までで、修正版の欄が空欄であること(GHSA-246p-cpwv-v3jqも同じ)
  9. Echo公式:v5.4.3・v5.4.4のリリースノート2026-10-30 / 5.4.3でのGHSA-v97q-3xf5-rj74の修正、5.4.4のX-Real-IPの修正、v5は移行不要
  10. Echo公式:README(v4.16.3)2026-10-30 / IPExtractorの移行の例、v4の修正の提供期間、Go 1.26以上。版の公開日はproxy.golang.orgで確認
  11. Go公式:Go Vulnerability Database(モジュールの索引)2026-11-01確認 / labstack/echo/v4・v5の収録がGO-2021-0051・GO-2022-1031・GO-2026-6293・GO-2026-4502だけであること
  12. 修正のコミット:github.com/labstack/echo/commit/1855061e572ae9dab727c811d8382f266bfbaaecGitHub Advisoryの参考リンク / 修正の内容・経緯
  13. 修正のコミット:github.com/labstack/echo/commit/3fb0ba7e17645bb65611e2a08875d0a2f65c421fGitHub Advisoryの参考リンク / 修正の内容・経緯
  14. リリースノート:github.com/labstack/echo/releases/tag/v4.16.1GitHub Advisoryの参考リンク / 修正の内容・経緯
  15. リリースノート:github.com/labstack/echo/releases/tag/v5.4.1GitHub Advisoryの参考リンク / 修正の内容・経緯

あわせて読みたい記事

PHP公表 2026-10-26

PHPのWindows版のBrotliの脆弱性、8.5.12-1などへの入れ替えとcURL・Guzzleの確かめ方(CVE-2026-111497)

PHPのWindows版に同梱のBrotliの脆弱性CVE-2026-111497は、米CISAが悪用を確認しています。10月21日の版も対象のままである理由、GuzzleやWordPressで自動展開が有効になる条件、8.5.12-1などへの入れ替えと確かめ方を説明します。

Python公表 2026-10-22

Brotliの脆弱性の確認方法、PythonとNode.jsで対象かを確かめて直す(CVE-2026-111497、コード実行のおそれ)

圧縮形式Brotliの展開処理の脆弱性CVE-2026-111497(HTTP2Shell)は、米CISAが悪用を確認しています。Pythonのbrotli・brotlicffi、Node.jsの同梱版などで、自分の版と構成が対象かを確かめる方法と修正版を、言語ごとに説明します。

Python公表 2026-05-22

Starletteの脆弱性BadHost、Hostヘッダーでパスによる認証の確認を回避されるおそれ。FastAPIを上げても古い版が残る場合の確かめ方

Starletteの脆弱性CVE-2026-48710(BadHost)は、細工したHostヘッダーでrequest.url.pathを偽り、パスで判定するアクセスの確認を回避されるおそれがあります。9月2日にKEVに追加されました。FastAPI・vLLM・LiteLLMの下で古いStarletteが残る例と、間接依存の確かめ方を説明します。