🇰🇷 한글 설명
RTIR은 RT의 HTML 필터를 확장해 내부 링크 플레이스홀더를 허용하는데, 플레이스홀더를 포함하기만 하면 javascript: 스킴 링크도 통과시킵니다. 이 변경은 RTIR 설치 시 RT 인스턴스 전체에 적용되며, 티켓에 HTML을 추가할 수 있는 누구든 악성 링크를 저장할 수 있습니다. 기본 설정상 누구나 HTML 이메일을 보낼 수 있는 Incident Reports 큐도 포함됩니다. 사용자가 링크를 클릭하면 해당 사용자의 세션에서 스크립트가 실행됩니다.
💡 쉬운 설명
RTIR 티켓 시스템에서 HTML 필터의 허점으로 악성 링크가 걸러지지 않습니다. 공격자가 보낸 링크를 직원이 클릭하면 그 직원의 권한으로 시스템을 조작할 수 있습니다.
🇺🇸 원문 (English)
RTIR extends RT's HTML scrubber to allow an internal link
placeholder, and the extension lets through any link that merely
contains the placeholder, including links using the executable
javascript: scheme. The change applies to the whole RT instance
once RTIR is installed, not only to RTIR's own queues. Anyone who
can add HTML content to a ticket on such an instance can store
such a link. That includes an unauthenticated sender of HTML email
to the Incident Reports queue, which RTIR opens to everyone by
default. Script runs when a user clicks the link, in that user's
session, and can act in RT with that user's authority.
This issue was fixed in version 5.0.11 and 6.0.4
📍 영향받는 시스템
RTIR이 설치된 Request Tracker(RT) 인스턴스, 5.0.11 미만 및 6.0.4 미만 버전
⚔️ 공격 벡터
공격자가 Incident Reports 큐에 악성 javascript: 링크가 포함된 HTML 이메일을 보내거나 티켓에 저장하면, 사용자가 링크 클릭 시 XSS가 실행됨
🛡️ 대응 방법
RTIR을 5.0.11 이상 또는 6.0.4 이상으로 업그레이드
🔧 검증 코드
출력된 RTIR 버전이 5.0.11 미만(5.x 계열) 또는 6.0.4 미만(6.x 계열)이면 취약하며, 명령어가 아무 결과도 내지 않으면 RTIR이 설치되지 않았거나 경로가 달라 수동 확인이 필요합니다.
perl -MRTIR -e 'print $RTIR::VERSION' 2>/dev/null || grep -ri 'rtir' /opt/rt*/lib/RT/Extension/RTIR.pm /usr/share/request-tracker*/lib 2>/dev/null | grep -i version | head -5