🇰🇷 한글 설명
Forgejo 15.0.3 이전 버전에는 저장형 크로스 사이트 스크립팅(XSS) 취약점이 존재합니다. 인증된 공격자가 전체 이름에 HTML 페이로드를 설정하고 Actions 실행을 트리거하면, DEFAULT_SHOW_FULL_NAME 옵션이 활성화된 경우 해당 실행 페이지를 보는 다른 사용자의 브라우저에서 임의의 JavaScript가 실행될 수 있습니다. 원인은 번역 함수의 인자 미이스케이프 처리와 프론트엔드의 v-html 바인딩입니다.
💡 쉬운 설명
악의적인 사용자가 자신의 이름에 프로그램 코드를 숨겨 두면, 그 사람의 작업 기록을 보는 다른 사용자의 화면에서 그 코드가 몰래 실행될 수 있습니다. 이를 통해 로그인 정보 등이 빼앗길 위험이 있습니다.
🇺🇸 원문 (English)
Forgejo before 15.0.3 contains a stored cross-site scripting vulnerability that allows authenticated attackers to execute arbitrary JavaScript in other users' browsers by setting a full name containing an HTML payload and triggering an Actions run. When the DEFAULT_SHOW_FULL_NAME option is enabled, the run description is assembled server-side with the user's display name interpolated into an HTML string via a translation function that does not escape its arguments, and the frontend renders the result using a Vue v-html binding, causing script execution for any user who views the affected Actions run page.
📍 영향받는 시스템
Forgejo 15.0.3 미만 버전 (DEFAULT_SHOW_FULL_NAME 옵션 활성화 환경)
⚔️ 공격 벡터
인증된 사용자가 전체 이름에 HTML/스크립트 페이로드를 넣고 Actions 실행을 트리거하여, 타 사용자가 해당 실행 페이지를 열면 스크립트가 실행됨
🛡️ 대응 방법
Forgejo를 15.0.3 이상으로 업그레이드하고, 업그레이드 전까지 DEFAULT_SHOW_FULL_NAME 옵션을 비활성화
🔧 검증 코드
출력된 버전이 15.0.3 미만이면 취약하며, 15.0.3 이상이면 패치가 적용된 것입니다.
forgejo --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+'