概要
ghcr.io と ghrc.io のタイポが重大なセキュリティリスクにつながる事例の解説。 ghrc.io は一見普通のnginxサーバーだが、 OCI API へのアクセス時に不審な挙動を見せる。 www-authenticateヘッダー を悪用し、 GitHub認証情報 を盗む可能性。 docker login 等で誤ってログインした場合、資格情報が漏洩する危険性。 対策としては パスワード変更 や PATの無効化 が推奨される。
ghcr.ioとghrc.ioの違いと危険性
- ghcr.io は GitHub が運営する、 OCI準拠のコンテナイメージ/アーティファクトレジストリ。
- ghrc.io は タイポスクワッティング されたドメインで、見た目はnginxのデフォルトページ表示。
- /v2/ パスにアクセスすると、 nginxデフォルト ではなく OCIレジストリ のような401レスポンスと www-authenticateヘッダー を返す挙動。
- Dockerやcontainerd, podman, Kubernetes などのOCIクライアントは、このヘッダーに従い 認証情報をghrc.io/tokenに送信 する。
- 正規のnginx には不要な設定であり、明らかに 認証情報窃取 を狙った攻撃。
どんな場合に情報漏洩が起こるか
- docker login ghrc.io を実行した場合、入力した認証情報が ghrc.io に送信される。
- GitHub Actions で
uses: docker/login-actionとregistry: ghrc.ioを指定した場合、 トークンやPAT が漏洩。 - Kubernetes Secret でghrc.io向けのレジストリ資格情報を作成し、イメージプル時に送信した場合。
- push/pullのみ (ログインなし)では 匿名トークン取得 が失敗するだけで、資格情報自体は漏れない。
- ghrc.io 用に保存された認証情報がなければ、基本的に影響は限定的。
影響とリスク
- GitHubアカウント乗っ取り や ghcr.ioリポジトリへの不正アクセス の危険性。
- 漏洩した認証情報で 悪意のあるイメージのプッシュ や アカウント自体へのアクセス が可能に。
- GitHub Personal Access Token(PAT) やパスワードが特に狙われやすい。
対策・対応方法
- 誤ってghrc.ioにログインした場合 は、すぐに パスワード変更 と PATの無効化 を実施。
- GitHubアカウントの不審なアクティビティ を確認。
- レジストリURLの正確な入力 を徹底し、 タイポスクワッティング に注意。
- CI/CDや自動化スクリプト でもURLをコピペでなく、公式ドキュメントを参照推奨。
まとめ
- ghcr.io と ghrc.io のタイポは 単なるミス では済まない 重大なセキュリティインシデント に発展。
- www-authenticateヘッダー の悪用により OCIクライアントの認証情報送信 を誘発。
- 誤操作時は速やかな対応 と 今後の再発防止策 が重要。