SJ blog
backend
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

Go 1.26.3 / 1.25.10が11件の脆弱性を修正——html/template XSS・モジュールプロキシバイパス・ReverseProxy情報漏洩を解剖

2026年5月7日リリースのGo 1.26.3と1.25.10は11件のCVEを修正。html/templateのXSS(CVE-2026-27142)、モジュールプロキシのチェックサムバイパス、net/http/httputilのReverseProxyクエリパラメータ漏洩など標準ライブラリ全域に及ぶ。

一言結論

Go 1.26.3・1.25.10が2026年5月7日にリリースされ11件のセキュリティ修正を含む。最重要はhtml/template XSS(CVE-2026-27142)・モジュールプロキシのチェックサムバイパス・ReverseProxyのクエリパラメータ漏洩の3件で、GoサーバーをHTTPプロキシとして使う場合やhtml/templateにユーザー入力を流す場合は即時アップグレードが必要だ。

何が起きたか

2026年5月7日、Goプロジェクトが Go 1.26.3Go 1.25.10 をリリースした。

両バージョンは合計11件のセキュリティ修正を含む。影響範囲は標準ライブラリの広い範囲に及ぶ:

修正対象パッケージ:
- cmd/go(goコマンド)
- cmd/pack(packツール)
- html/template
- net
- net/http
- net/http/httputil
- net/mail
- syscall

主要な脆弱性の詳細

CVE-2026-27142 — html/template のXSS

<meta> タグの http-equiv="refresh" 属性内でURLが正しくエスケープされないバグだ。

URLコンテンツに = 記号の周囲にASCII空白文字が含まれる場合、エスケーパーがそれを見逃し、XSSが成立する。

// ❌ 脆弱なパターン(旧バージョン)
// ユーザー入力をリフレッシュURLに直接渡す場合
tmpl := template.Must(template.New("").Parse(`
  <meta http-equiv="refresh" content="0; url={{.URL}}">
`))

// URLに "http://example.com/path? redirect =evil" のような
// = 周囲にASCII空白文字を含む値を渡すと
// エスケーパーが失敗してXSSが成立する

// ✅ 修正後(Go 1.26.3/1.25.10)
// 入力をホワイトスペースサニタイズ後にエスケープするよう変更
// → ユーザーは特別な対応なしにアップグレードするだけでよい

影響: html/template でユーザー入力をURL属性に直接流すサーバーサイドHTMLレンダリング。

モジュールプロキシのチェックサムバイパス

悪意あるモジュールプロキシが、go コマンドのモジュールチェックサムバリデーションを迂回できる脆弱性だ。

影響条件:
- 信頼されていないカスタムモジュールプロキシを使用している(GOMODPROXY)
- または信頼されていないチェックサムDBを使用している(GOSUMDB)

リスク:
- 改ざんされたモジュールがチェックサム検証を通過してしまう
- サプライチェーン攻撃の一手段として悪用されうる
# 現在の GOMODPROXY と GOSUMDB 設定を確認
go env GOMODPROXY
go env GOSUMDB

# デフォルト設定(公式プロキシ・チェックサムDB)であれば実質的なリスクは低い
# カスタム設定の場合は速やかなアップグレードが必要

デフォルトの proxy.golang.org / sum.golang.org を使っている限り、実際の攻撃ベクトルは限定的だ。しかしプライベートモジュールプロキシを内部構築している企業環境では注意が必要。

ReverseProxy クエリパラメータ漏洩(net/http/httputil)

httputil.ReverseProxyRewrite または Director 関数と組み合わせて使われる場合、クエリパラメータのサニタイゼーションに問題がある。

url.ParseQuery のパラメータ上限(GODEBUG=urlmaxqueryparams=N で制御)を超えたパラメータが、Rewrite 関数からは 見えない状態のままバックエンドにフォワードされる

// ❌ 問題のあるパターン(旧バージョン)
proxy := &httputil.ReverseProxy{
    Rewrite: func(r *httputil.ProxyRequest) {
        // クエリパラメータを検査・フィルタリングするセキュリティ層
        params := r.Out.URL.Query()
        if _, ok := params["admin"]; ok {
            // ← urlmaxqueryparamsの上限を超えた "admin" パラメータは
            //   ここに現れないが、バックエンドにはフォワードされてしまう
            r.Out.Header.Set("X-Blocked", "true")
        }
    },
}

// ✅ 修正後(Go 1.26.3/1.25.10)
// urlmaxqueryparamsの上限を超えたパラメータはフォワード前に除去される

ReverseProxyでクエリパラメータを検査・フィルタリングしているセキュリティ層がある場合、このバイパスは重大なリスクになりうる。API GatewayパターンやBFFをGoで実装している場合は特に確認が必要だ。

その他の修正項目

  • net/mail: メールアドレスパース処理の問題
  • syscall: Windowsシステムコール関連の修正
  • net: DNS解決処理の問題
  • net/http: HTTPサーバーのヘッダー処理修正

アップグレード手順

# 現在のGoバージョン確認
go version

# Go 1.26系を使っている場合 → go1.26.3 にアップグレード
# Go 1.25系を使っている場合 → go1.25.10 にアップグレード

# Linux/macOS: 公式ダウンロードページから取得
# https://go.dev/dl/

# Dockerベースのプロジェクト(Dockerfileを更新)
FROM golang:1.26.3-alpine AS builder
# または
FROM golang:1.25.10-alpine AS builder

CIパイプラインでのバージョン固定

# GitHub Actions の例
- name: Setup Go
  uses: actions/setup-go@v5
  with:
    go-version: '1.26.3'  # パッチバージョンまで明示的に指定

優先度の判断基準

状況優先度
html/template にユーザー入力を流している高(即時)
httputil.ReverseProxy でクエリパラメータ検査をしている高(即時)
カスタムモジュールプロキシを使っている高(即時)
デフォルト設定で標準パッケージのみ使用中(通常リリーススケジュール内)

落とし穴・注意点

  • 11件のうち全CVE番号は未公開: 本記事執筆時点でNVDに全CVEが掲載されていない。golang-announce メーリングリストと pkg.go.dev/vuln/list を確認すること
  • Go 1.24以前はサポート外: GoのサポートポリシーはN/N-1の2系統のみ。1.24以前を使っている場合は最新サポートブランチへの移行が必要
  • モジュールプロキシバイパスは設定依存: 公式プロキシ proxy.golang.org を使っている限り実質的なリスクは低い。カスタムプロキシ設定時のみ要注意

まとめ・参考リンク

Go 1.26.3/1.25.10 はhtml/templateのXSS、モジュールプロキシのチェックサムバイパス、ReverseProxyのクエリパラメータ漏洩など11件を修正した。GoでサーバーサイドHTMLレンダリングやHTTPリバースプロキシを実装している場合は速やかなアップグレードが必要だ。それ以外の一般的なGoバックエンドサービスも、通常のリリースサイクル内でのアップグレードを推奨する。

参考リンク:

注意事項: 11件の脆弱性のうち、本記事執筆時点で公式CVE番号が確認できたものはCVE-2026-27142を含む一部だ。全修正内容はgolang-announceの公式リリースノートを参照のこと。