GitLabセキュリティインシデント:CVE-2026-97229の悪用試行
GitLab Security Incident: Attempted Exploitation of CVE-2026-97229 (alpinelinux.org)
要約
Alpine Linuxは、GitLabインスタンスに対するCVE-2026-97229の脆弱性を悪用しようとする攻撃を検知しました。攻撃は修正リリースから1週間後に発生し、インスタンスは侵害されたと見なされ、ゼロから再構築されました。現時点では、リポジトリやパッケージへの改ざんの証拠は見つかっていませんが、コード実行の可能性は排除されていません。
全文翻訳
GitLabセキュリティインシデント:CVE-2026-97229の悪用試行
2026-10-28
10月20日と21日、攻撃者が修正リリースから1週間後に当社のインスタンスでGitLabの脆弱性(CVE-2026-97229)を悪用しようと試みました。攻撃は成功寸前でしたが、成功した証拠は見つかっていません。しかし、排除することもできないため、インスタンスは侵害されたとみなし、ゼロから再構築しました。当社のチェックでは、aportsリポジトリ、パッケージ、および10月21日のリリースは改ざんされていないことが示されています。
GitLabは、一般公開を再開する前にテスト中です。すべてのパスワードはリセットされたため、再開時にはサインインページで「パスワードをお忘れですか?」を使用して新しいパスワードを設定する必要があります。再開時に必要な手順については、正確に投稿します。それまでの間、もしあなたがgit.alpinelinux.orgアカウントで同じパスワードを他の場所でも使用していた場合は、そちらのパスワードも変更してください。他のサイトから漏洩したパスワードを使用した当社のGitLabに対する自動ログイン試行を確認しています。
ご質問やご懸念がある場合は、infra@alpinelinux.orgまでご連絡ください。
何が起こったのか
脆弱性: CVE-2026-97229は、GitLabがCI設定で正規表現を評価する方法における重大な(CVSS 10.0)脆弱性です。根本的なバグは、GitLabがバンドルしているRubyに組み込まれている正規表現エンジンであるOnigmoにあります。GitLabは10月12日に修正リリースを公開しましたが、修正自体はGitLabが独自のパッケージやコンテナイメージにバンドルしているRubyへのパッチセットです。アップストリームのRubyは10月23日に修正をリリースしました(Ruby 3.3.13、3.4.12、4.0.9)。
攻撃: 10月20日と21日、新しく登録されたアカウントが、まだ19.3.4を実行しており10月12日の修正が適用されていなかった当社のGitLabインスタンスに、細工されたCI設定を送信しました。これにより、GitLabワーカープロセスが8回クラッシュしました。4回のクラッシュでは、攻撃者はエクスプロイトを途中まで実行しましたが、次のステップで失敗しました。攻撃者は当社のGitLabコンテナイメージもダウンロードしており、これは彼らが当社の正確なビルドに合わせてエクスプロイトを調整していたことを示唆しています。攻撃者がサーバー上でコードを実行した証拠は見つかっていませんが、それを排除することはできません。
当社のアップグレードでは脆弱性は修正されませんでした: 10月22日にGitLab 19.3.6にアップグレードしても、脆弱性は修正されませんでした。修正はGitLab自身のコードにあるのではなく、Rubyへのパッチにあり、GitLabは公式パッケージにのみ適用しています。当社のイメージは標準的なRubyを使用していたため、パッチは適用されていませんでした。
GitLabのパッケージではなく、独自のRuby(ソースから、または独自のコンテナイメージ内)でGitLabを実行している場合、GitLabのアップグレードだけでは不十分です。Ruby 3.3.13、3.4.12、4.0.9以降も必要です。
当社のalpinelinux/gitlabコンテナイメージを使用している場合は、alpinelinux/gitlab:19.3.6を再度プルしてください。10月27日に公開されたイメージにはRuby 3.3.13が含まれています。10月27日より前にプルした19.3.6イメージ、およびそれ以前のすべてのタグは脆弱です。
インシデントタイムライン
| 日付 | イベント |
|---|---|
| 10月28日 | GitLab再構築完了;全パスワードリセット、GitLabのシークレットキー交換 |
| 10月27日 | GitLabを開発者とビルドサーバー以外は閉鎖;再構築開始 |
| 10月26日 | アップグレード後もインスタンスが脆弱であることを発見 |
| 10月25日~26日 | 攻撃者が戻り、侵入を試みる;試行は失敗 |
| 10月24日 | aports、パッケージ、10月21日リリースを外部記録と照合 |
| 10月23日 | 攻撃者のアカウントをブロック;Rubyが修正をリリース |
| 10月22日 | GitLab 19.3.6にアップグレード |
| 10月21日 | 主要な攻撃;GitLabクラッシュ、502エラー、CIジョブ失敗 |
| 10月20日 | 攻撃者がアカウントを登録し、偵察を開始 |
| 10月13日 | CVE-2026-97229公開;誤ってGitLab 19.3.4(修正あり)ではなく19.3.5にアップグレード |
| 10月12日 | GitLabが修正をリリース |
我々が知っていること、そして排除できないこと
判明したこと
- Alpineのリリースとパッケージは変更されていません。 10月21日の安定版リリース(3.21.9、3.22.7、3.23.7、3.24.3)、そのISOイメージ、公式
alpineDockerイメージのビルド元となるminirootfs tarball、および10月20日から24日にビルドされたすべてのパッケージは、GitLab外部の記録と照合したaportsコミットから来ています。詳細はFAQを参照してください。 - 署名キーは漏洩していません。 Alpineパッケージとリリースに署名するキーは、GitLabサーバーに保存されておらず、過去にも保存されたことはありません。
- 攻撃者のコードが実行された証拠はありません:タイミングプローブでは遅延は見られず、予期しないファイル、キー、フック、プロセスは見つかりませんでした。
- 確認できるWebまたはAPIリクエストを通じて、攻撃者にプライベートデータが返されたことはありません。
確信が持てない理由
- 攻撃が成功した場合、クラッシュやWebログの痕跡は残りません。
- 攻撃当日のログの一部が失われています(バックグラウンドジョブログ、古いコンテナのファイルシステム)。
- アウトバウンドネットワーク接続のロギングがなく、ホスティングプロバイダーも保持していません。
攻撃が成功した場合に公開された可能性のあるもの
- すべてのユーザーのメールアドレス、名前、IPアドレス
- パスワードハッシュ
- 2FAシークレット、CI/CD変数、ランナートークン
- Webhook、統合、プッシュミラーの認証情報
- 個人アクセストークン(ハッシュとして保存)
- プライベートリポジトリ、機密性の高いイシューおよびマージリクエスト
FAQ
攻撃を緩和できたのに、なぜGitLabを再構築したのですか?
コード実行を排除できず、それを確認するために必要な証拠が存在しないため、より困難な道を選び、GitLabインスタンスをゼロから再構築しました。これにより、成功した可能性のあるエクスプロイトが残した可能性のある足場をすべて取り除きます。
GitLabが閉鎖されている間、当社のパッケージミラー、cgit、メーリングリスト/IRCは通常通り利用可能です。
Alpineのパッケージとリリースは影響を受けますか?
aportsまたはリリースに変更の兆候は見つかっていません。
10月20日から22日に追加されたすべてのaportsコミットは、既知の開発者による記録されたプッシュを通じて到着しました。これを、攻撃者がアクセスできなかった記録(開発者のクローンとすべての45のビルダー)と照合しました。10月20日から24日にビルドされたすべてのパッケージは、すべてのアーキテクチャで、git.alpinelinux.orgで公開されたコミットから来ています。10月21日のリリース(3.21.9、3.22.7、3.23.7、3.24.3)は、これらの検証済みの同じコミットからビルドされました。
これらのチェックは10月24日に実行され、10月20日から22日までのコミットと、10月24日までのビルドパッケージを対象としていました。当社のGitLabは10月27日に閉鎖されるまで脆弱でしたが、このチェックをその日まで延長しています。
Alpineのrubyパッケージは影響を受けますか?
バグはRubyの正規表現エンジンにあるため、信頼できない入力から正規表現をコンパイルするすべてのプログラムが影響を受け、GitLabだけではありません。Alpine 3.22、3.23、3.24、edgeはRuby 3.4.12を搭載しており、Alpine 3.21はRuby 3.3.13を搭載しています。どちらにも修正が含まれています。apk upgradeを実行して入手してください。
このイベントを受けて、私たちは何を変更しますか?
- 修正されたRuby: 再構築されたインスタンスは、修正済みのRuby(3.3.13以降)を実行します。
- より迅速なパッチ適用: 重大なGitLabセキュリティリリースを1日以内に適用し、各リリースでRubyまたは当社のビルドが適用する必要のあるその他のコンポーネントパッチを確認します。
- より良いロギング: GitLabホストからのアウトバウンド接続とデータベース接続を記録し、ログを14日以上保持します。
- 署名付きリリースタグ: リリースをGitLabとは独立して検証できるようにします。