🇰🇷 한글 설명
Notesnook은 노트 작성 앱입니다. 3.3.11 이전의 Web/Desktop 버전과 3.3.17 이전의 Android/iOS 버전에서는 Web Clipper 렌더링 과정의 저장형 XSS가 데스크톱 앱에서 원격 코드 실행(RCE)으로 악용될 수 있습니다. 클리퍼가 원본 페이지의 루트 요소에 포함된 공격자 제어 속성을 그대로 보존하여 웹 클립 HTML에 저장하고, 이후 same-origin이며 샌드박스가 없는 iframe에 contentDocument.write로 렌더링하면서 이벤트 핸들러가 실행됩니다. Electron의 nodeIntegration이 true이고 contextIsolation이 false이기 때문에 RCE로 이어집니다.
💡 쉬운 설명
악意的인 웹페이지를 노트앱으로 클리핑하면, 저장된 클립을 열 때 숨겨진 스크립트가 실행됩니다. 데스크톱 앱에서는 이로 인해 공격자가 사용자 컴퓨터에서 명령을 실행할 수 있습니다.
🇺🇸 원문 (English)
Notesnook is a note-taking app. Prior to version 3.3.11 on Web/Desktop and 3.3.17 on Android/iOS, a stored XSS in the Web Clipper rendering flow can be escalated to remote code execution in the desktop app. The root cause is that the clipper preserves attacker-controlled attributes from the source page’s root element and stores them inside web-clip HTML. When the clip is later opened, Notesnook renders that HTML into a same-origin, unsandboxed iframe using `contentDocument.write(...)`. Event-handler attributes such as `onload`, `onclick`, or `onmouseover` execute in the Notesnook origin. In the desktop app, this becomes RCE because Electron is configured with `nodeIntegration: true` and `contextIsolation: false`. Version 3.3.11 Web/Desktop and 3.3.17 on Android/iOS patch the issue.
📍 영향받는 시스템
Notesnook Web/Desktop 3.3.11 미만, Android/iOS 3.3.17 미만
⚔️ 공격 벡터
공격자가 조작된 웹페이지를 만들어 사용자가 Web Clipper로 저장하게 유도하면, 저장된 클립을 열 때 이벤트 핸들러 기반 XSS가 Electron에서 원격 코드 실행으로 이어집니다.
🛡️ 대응 방법
Notesnook Web/Desktop을 3.3.11 이상, Android/iOS를 3.3.17 이상으로 업데이트하세요.
🔧 검증 코드
출력된 버전이 3.3.11 미만이면 취약하므로 업데이트가 필요하며, 3.3.11 이상이면 패치가 적용된 상태입니다.
notesnook --version 2>/dev/null || dpkg -l notesnook 2>/dev/null | grep -i notesnook || rpm -qa | grep -i notesnook