r19 vs r20
......
1818
1919
이는 엔진에 존재하지 않는 권한이기 때문에 문서 편집을 시도 시 편집이 거부되며 편집 요청으로 넘어가는데, 패치 전에는 '''편집 권한이 부족합니다. perm: OR perm: 이어야 합니다.''' 라는 메시지가 뜨며 ACL에 삽입한 내용이 textContent가 아니라 innerHTML로 출력되는 현상이 발생했었다.
2020
21
다행히 [[https://www.w3.org/TR/2008/WD-html5-20080610/dom.html#innerhtml0|W3C HTML5]] 스펙 상 애초부터 페이지에 포함된 것이 아닌, 차후에 {{{.innerHTML}}} 등으로 포함된 {{{<script>}}} 태그의 경우 실행이 기술적으로 차단되 있어 위키 내부에서 이동한 경우 문제가 발생하지는 않았으나, 그 상태에서 페이지를 새로고침하거나 애초에 외부 링크를 타고 들어온 경우 {{{alert('xss')}}}가 실행되며 경고 창이 뜨고, 이후 [[https://theseed.io/thread/RipeLuckyBrashWood]] 페이지로 강제 납치되었다.
21
다행히 [[https://www.w3.org/TR/2008/WD-html5-20080610/dom.html#innerhtml0|W3C HTML5]] 스펙 상 차후에 {{{.innerHTML}}} 등으로 포함된 inline script 차단되 것이 표준이라 위키 내부 링크를 타고 들어온 경우 일이 없었으나, 그 상태에서 페이지를 새로고침하거나 애초에 외부 링크를 타고 들어온 경우 SSR을 사용하므로 해당 제한의 대상이 아니었다. 때문에 {{{alert('xss')}}}가 실행되며 경고 창이 뜨고, 이후 [[https://theseed.io/thread/RipeLuckyBrashWood]] 페이지로 강제 납치되었다.
2222
2323
[[https://revi.wiki/wiki/파일:더시드_XSS_20250919.mp4|(외부 링크) 해당 취약점 시연 영상]][* [[사용자:revi]]에 의해 [[https://theseed.io/thread/AboundingGlibLittleBait#318|제공]]됨.]
2424
== 위험성 ==
25
하나의 ACL 엔티티는 그 길이를 최대 255자까지밖에 지정할 수 없기는 하나, 추가할 수 있는 ACL 엔티티의 개수에는 제한이 없기에 사실상 무용지물로, 내부에 값을 잔뜩 추가한 다음 eval()을 해버리면 간단히 우회가 가능했었다. 따라서 공격자가 공격 코드의 길이 제한을 간단하게 없애버릴 수 있었다.
25
하나의 ACL 엔티티는 그 길이를 최대 255자까지밖에 지정할 수 없기는 하나, 추가할 수 있는 ACL 엔티티의 개수에는 제한이 없기에 사실상 무용지물로, 내부에 값을 잔뜩 추가한 다음 eval()을 해버리면 간단히 우회가 가능했었다. 따라서 공격자가 공격 코드의 길이 제한을 간단하게 없애버릴 수 있었다. 이 때문에 길이 제한 없이 공격자가 사실상 자유롭게 공격 가능한 환경이 조성되었다.
2626
27
또한 HTML5 스펙 위키 내부 링크로 접근한 경우 문제가 없었으나, 그 상태에서 페이지를 새로고침하거나 외부 링크로 접속경우 임의의 코드를 실행시킬 있기 때문에 RCE 취약점으분류할 다. CVE에서 어지간하면 Severity를 High 또는 Critical로 분류하취약점이다.
27
다행히 the seed engine을 사용하는 위키에는 [[2017년 나무위키 XSS 공격 보고서]]에서 언급 있듯이 Content Security Policy가 별도적용되어고, 쿠키에모두 Secure 및 HttpOnly 플래그가 붙어있어 공격자가 쿠키획득한다든가, 외부 XHR을 생성한다든가 없었다.
2828
29
다행히 the seed engine을 사용하는 위키에서는 [[2017년 나무위키 XSS 공격 보고서]]에서도 언급한 바 있듯이 Content Security Policy가 적용되어 있고, 쿠키에는 모두 Secure 및 HttpOnly 플래그가 붙어있어 공격자가 쿠키를 외부 전송한다든가 할 수는 없었다.
30
31
== 진행상황 ==
29
== 대응 ==
3230
=== 더시드위키에서 ===
3331
ACL 조정은 [[admin]] 권한이 있어야 가능하나, 이 권한은 대부분의 사용자들이 아무 제약 없이 받을 수 있는 권한이기에 발견 즉시 모든 사용자의 ACL 조정이 [[https://theseed.io/thread/AwfulAdDeliciousTurn|제한]]되었고, v4.28.0.897에서 해결된 것을 확인 후 ACL 조정 제한이 해제되었다.
3432
......