信頼度ランク
| 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.3 と Go 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.ReverseProxy が Rewrite または 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バックエンドサービスも、通常のリリースサイクル内でのアップグレードを推奨する。
参考リンク:
- [security] Go 1.26.3 and Go 1.25.10 are released - golang-announce
- Go Vulnerability Database
- Go Release History - go.dev
- CVE-2026-27142 - NVD
- GoLang Go Security Vulnerabilities 2026 - stack.watch
注意事項: 11件の脆弱性のうち、本記事執筆時点で公式CVE番号が確認できたものはCVE-2026-27142を含む一部だ。全修正内容はgolang-announceの公式リリースノートを参照のこと。