🇰🇷 한글 설명
Isso 댓글 서버의 website와 author 필드에서 발생하는 저장된 XSS 취약점입니다. HTML 이스케이프 시 따옴표가 남아있어 단일 따옴표로 href 속성을 벗어날 수 있으며, 이를 통해 onclick/onmouseover 등의 이벤트 핸들러를 주입할 수 있습니다.
💡 쉬운 설명
Isso 댓글 서버에서 사용자가 입력한 웹사이트 주소에 악의적인 코드를 숨길 수 있습니다. 댓글을 보는 방문자의 브라우저에서 숨겨진 코드가 자동으로 실행됩니다.
🇺🇸 원문 (English)
Isso is a lightweight commenting server written in Python and JavaScript. In commits before 0afbfe0691ee237963e8fb0b2ee01c9e55ca2144, there is a stored Cross-Site Scripting (XSS) vulnerability affecting the website and author comment fields. The website field was HTML-escaped using quote=False, which left single and double quotes unescaped. Since the frontend inserts the website value directly into a single-quoted href attribute via string concatenation, a single quote in the URL breaks out of the attribute context, allowing injection of arbitrary event handlers (e.g. onmouseover, onclick). The same escaping is missing entirely from the user-facing comment edit endpoint (PUT /id/) and the moderation edit endpoint (POST /id//edit/). This issue has been patched in commit 0afbfe0691ee237963e8fb0b2ee01c9e55ca2144. To workaround, nabling comment moderation (moderation = enabled = true in isso.cfg) prevents unauthenticated users from publishing comments, raising the bar for exploitation, but it does not fully mitigate the issue since a moderator activating a malicious comment would still expose visitors.
📍 영향받는 시스템
Isso 0.12.x 및 이전 버전 (commit 0afbfe0691ee237963e8fb0b2ee01c9e55ca2144 이전)
⚔️ 공격 벡터
댓글 작성/수정 시 website 필드에 단일 따옴표를 포함한 URL 입력 (예: ') onmouseover='alert(1)) 을 통해 속성 벗어남 및 이벤트 핸들러 주입
🛡️ 대응 방법
Isso를 commit 0afbfe0691ee237963e8fb0b2ee01c9e55ca2144 이후 버전으로 업그레이드하거나, isso.cfg에서 moderation = enabled = true로 설정하여 미인증 댓글 게시 차단
🔧 검증 코드
Version이 표시되면 해당 버전의 릴리스 날짜를 Isso GitHub 릴리스 노트와 확인하여 0afbfe0 커밋 이후 패치 버전인지 검증하세요.
pip show isso 2>/dev/null | grep Version