리얼월드 (Real world)

네이버 카페 Stored XSS 취약점

2020. 4. 13. 06:58

GS칼텍스서울KIXX배구단 레프트 강소휘

 

 네이버 카페 서비스에서는 글을 쓸 때 Smart Editor 2를 이용한다. 카페 서비스에서 이용하는 Smart Editor 2는 글꼴, 글자 크기 변경, 글자 색 변경 등 다양한 기능을 이용할 수 있고, 비교적 간단하다는 이유로 네이버의 다양한 서비스에 적용되었다.

 

 하지만 Smart Editor 2는 사용자가 작성한 글을 HTML로 서버에 전송하기 때문에, 사용자가 HTML만 조작하면 XSS 공격에 취약할 수 있다는 단점이 있다. 당연히 블로그, 카페 등 Smart Editor 2 를 사용했던 모든 서비스도 XSS 공격에 취약했었으나 네이버의 꾸준한 보안 패치로 현재는 안정화 단계에 접어들었다.


 '글쓰기에서의 Logical bug를 이용한 Stored XSS' 취약점은 XSS 보안패치의 논리적인 결함을 이용한 취약점이다. Back-end service의 코드를 보지 못해 왜 이렇게 되는지는 알 수 없지만, 이미지의 src를 처리하는 과정에서 Logical한 버그가 생겨 XSS 취약점까지 연계되는 것이라고 추측한다. img의 src 속성을 아래의 PoC 로 바꾸어 글을 쓰면 Stored XSS를 유발할 수 있다. img의 src 속성이 중복으로 처리되면서 src 속성에서 escape하여 다른 속성을 지정할 수 있게 된다. src 속성에서 escape하여 event 관련 속성에 자바스크립트 코드를 삽입하면 XSS 취약점이 발생한다.

[*] src attr escape PoC : https://storep-phinf.pstatic.net/ogq_58146d6d0ab0a/original_6.png">

[*] XSS PoC :
https://storep-phinf.pstatic.net/ogq_58146d6d0ab0a/original_6.png?type=p50_5"0"/onerror="prompt(document.domain,/xss/)">

 

아래는 취약점 시연

naver cafe stored xss!.mp4
3.42MB