🔍 CVE-2026-42197

8.7
CVSS Score
HIGH
2026-05-27
2026-10-26 11:10
✅ 완료

🇰🇷 한글 설명

RELATE 웹 기반 교육 소프트웨어의 저장형 XSS 취약점으로, 등록된 학생이 관리자 브라우저에서 임의의 JavaScript를 실행할 수 있습니다. ParticipationAdmin의 get_user() 메서드가 mark_safe와 문자열 포매팅으로 사용자 입력을 검증 없이 렌더링하여 발생합니다. 학생이 프로필 페이지에서 first_name, last_name을 악의적 코드로 수정하면, 관리자가 Participation 목록 조회 시 해당 코드가 관리자 세션에서 실행되어 계정 탈취가 가능합니다.

💡 쉬운 설명

학교 교육 소프트웨어에서 학생이 자신의 이름 필드에 악의적인 코드를 입력하면, 선생님이 학생 목록을 볼 때 그 코드가 선생님의 브라우저에서 자동으로 실행됩니다. 이를 통해 공격자가 선생님의 관리자 계정을 완전히 장악할 수 있습니다.

🇺🇸 원문 (English)

RELATE is a web-based courseware package. Versions prior to commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 have a stored cross-site scripting vulnerability that allows any enrolled student to execute arbitrary JavaScript in an administrator's browser session, potentially leading to full admin account takeover. The `get_user()` method in `ParticipationAdmin` renders user-controlled input using `mark_safe` combined with Python's % string formatting. This bypasses Django\'s automatic HTML escaping entirely. The value returned by `get_full_name` is derived directly from the `first_name` and `last_name` fields of the User model. These fields are freely editable by any authenticated user through the profile page (`/profile/`) with no sanitization applied. When an admin views the Participation list in the Django admin panel, the unsanitized value is rendered directly into the HTML response, causing the injected script to execute in the admin's browser. Commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 fixes the issue.

📍 영향받는 시스템

RELATE (commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 이전의 모든 버전)

⚔️ 공격 벡터

등록된 학생이 /profile/ 페이지의 first_name 또는 last_name 필드에 JavaScript 페이로드를 입력 후 저장하면, 관리자가 Django 관리 패널에서 Participation 목록 조회 시 자동 실행

🛡️ 대응 방법

commit 555f0efb1c5bd7531c07cd73724d7e566a81f620 이상으로 업그레이드하거나, mark_safe 제거 및 Django 자동 HTML 이스케이프 활성화

🔧 검증 코드

PATCHED 출력 시 패치 적용됨, VULNERABLE 출력 시 취약점 존재

Shell / Script
git log --all --oneline | grep -q '555f0ef' && echo 'PATCHED' || echo 'VULNERABLE'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N

💻 영향받는 소프트웨어

Python