1 ポイント 投稿者 GN⁺ 2025-08-25 | まだコメントはありません。 | WhatsAppで共有
  • 単純なタイプミスである ghcr.io と ghrc.io の取り違えが、深刻なセキュリティ脅威を引き起こす
  • ghrc.io は一見すると標準的な nginx サーバーのように見えるが、内部では OCI API を模倣する挙動 が確認されている
  • このサイトは www-authenticate ヘッダー を通じて、コンテナクライアントに 機密性の高い認証情報 を送らせようと誘導する
  • docker login などで誤って認証情報を入力したり、レジストリを間違えて使用した場合、認証情報の漏えい が発生する可能性がある
  • 誤ったサーバーにログインしてしまった場合は、パスワード変更、PAT の失効、GitHub アカウントの不審な活動の確認 が必要

概要

単純なタイプミスによって頻繁に起こり得る ghcr.io と ghrc.io の混同が、非常に 危険なセキュリティ問題 を引き起こしている事例である。多くの開発者やチームが利用する GitHub Container Registry (ghcr.io) のタイプミス版である ghrc.io で、認証情報の窃取の試み が確認された。

ghcr.io とは何か

  • ghcr.ioコンテナイメージおよび OCI アーティファクト のための OCI 互換レジストリ
  • GitHub の一部であり、多数のオープンソースプロジェクトで 人気のあるレジストリ として使われている

ghrc.io: 表面上の見え方

  • ghrc.io にアクセスすると、単なる nginx のデフォルト画面 が表示される
  • 典型的な 404 エラーなど、基本的な挙動 は一般的な nginx サーバーと同じ

悪意ある挙動の正体

  • 核心的な問題は、/v2/ プレフィックス配下の OCI API 呼び出し時 に現れる
  • この経路にアクセスすると、www-authenticate ヘッダーと 401 応答により、公式コンテナレジストリと非常によく似た挙動 を示す
  • www-authenticate: Bearer realm="https://ghrc.io/token"; ヘッダーが存在する
  • このヘッダーのため、Docker、containerd、podman、Kubernetes など のクライアントが、ユーザー認証情報を https://ghrc.io/token自動送信しようとする
  • nginx のデフォルト設定にはこのヘッダーは存在しないため、明らかに意図的に構成 されたもの

危険性: 認証情報窃取のシナリオ

  • このパターンは タイポスクワッティング (typo-squatting) を利用した認証情報窃取攻撃 と判断される
  • 危険が生じるのは、ユーザークライアントが ghrc.io 用の認証情報を入力または保存 している場合に限られる
  • 実際に認証情報が露出する可能性のある状況の例
    • docker login ghrc.io を実行した場合
    • GitHub Action 内で docker/login-action を使用し、レジストリに ghrc.io を指定した場合
    • Kubernetes シークレットに ghrc.io 用のレジストリ認証情報を保存し、イメージの pull を試みた場合
  • 単に ghrc.io に対してイメージの push/pull を試みるだけでは、認証情報は露出しない(匿名トークンを試行した後にエラーを返す)

対応策

  • ghrc.io に 誤ってログイン したことがあるなら、直ちにパスワードを変更し、使用した PAT (Personal Access Token) を失効させる必要がある
  • GitHub アカウントで 不審なログインや悪意ある活動 がないか必ず確認すべき
  • 攻撃者はこれを悪用して ghcr.io 上のリポジトリに 悪意あるイメージを追加 したり、アカウントへのアクセス権を取得したりする可能性がある

結論

  • ghcr.io に似たアドレスを使う フィッシングサイト に注意が必要
  • 認証情報、トークン、パスワードなど セキュリティ情報の管理 について、より厳格な方針が求められる

まだコメントはありません。

まだコメントはありません。