GitLab の SAML 脆弱性 CVE-2024-45409:セキュリティ修正を拡張

GitLab backports fix for CVE-2024-45409 to older versions

2024/09/25 SecurityOnline — GitLab が 9月25日にリリースしたセキュリティ・アップデートは、GitLab Community Edition(CE)/Enterprise Edition(EE) の全バージョンに影響を与える、深刻な SAML 認証バイパス脆弱性 CVE-2024-45409 に対処するためのものだ。セルフマネージド・インストールの管理者に対して強く推奨されるのは、新たにパッチが適用されたバージョン (16.10.10/16.9.11/16.8.10/16.7.10/16.6.10/16.5.10/16.4.7/16.3.9/16.2.11/16.1.8/16.0.10) へと直ちにアップグレードすることだ。 これらのバージョンに含まれるのは、9月17日に GitLab バージョン 17.x.x/16.11.10 向けにリリースされたセキュリティ修正である。

CVE-2024-45409 は深刻な脆弱性であり、GitLab の OmniAuth フレームワークで用いられる、SAML (Security Assertion Markup Language) 認証に影響を及ぼすものだ。ユーザー・ログインを簡素化する SSO (single sign-on)プロトコルである SAML は、1組の認証情報を用いて複数のサービスへのアクセスを実現するものだ。

この脆弱性は、IdP (Identity Provider) から送信された SAML レスポンスを、GitLab が検証する際の方式から生じる。具体的に言うと、OmniAuth-SAML および Ruby-SAML ライブラリに起因する。

このバグは、GitLab が SAML アサーションの特定の要素を、特に extern_uid (外部ユーザー ID) を、誤って処理した場合に発生する。この extern_uid という識別子はユーザーを認識するものであるが、複数のシステムにまたがって使用されるため、きわめて重要なものとなる。したがって、SAML レスポンスが誤って設定/操作された場合には、この脆弱性を悪用する攻撃者は認証を回避し、GitLab インスタンスへの不正アクセスを達成する。

つまり、この脆弱性の悪用に成功した攻撃者は、悪意の SAML レスポンスを作成し、正規の認証済みユーザーであると、GitLab に信じ込ませることが可能となる。その結果として、SAML 認証を完全に回避する攻撃者は、GitLab の機密リポジトリに無制限にアクセスし、ソースコードや知的財産などの重要なビジネス資産を、危険にさらす可能性を手にする。

実環境での悪用事例について、GitLab は明確にしていないが、同社のセキュリティ情報においては、すでに試行されている可能性があると警告されている。悪用された可能性を示す兆候は下記の通りだ:

  • “RubySaml::ValidationError” に関連するエラー (未遂)
  • 新規もしくは異常な “extern_uid” 値が認証ログに記録されている (成功)
  • SAML レスポンスにおいて、情報の欠落または誤りある
  • 単一ユーザーに対して、複数の “extern_uid” 値が記録されている (アカウントが侵害された可能性)
  • 不明または疑わしい IP アドレスから SAML 認証が実行されている

GitLab が強く推奨するのは、影響を受ける全てのセルフマネージド・インストールに関して、適用バージョンへと直ちにアップグレードすることだ。