🇰🇷 한글 설명
Electron 프레임워크의 특정 버전에서 렌더러 프로세스가 `nodeIntegrationInSubFrames` 옵션을 통해 `ipcRenderer`에 접근할 수 있는 취약점이 발견되었습니다. 만약 애플리케이션이 IPC 메시지 전송 시 `senderFrame` 검증을 수행하지 않는다면, 공격자는 이를 악용하여 권한이 없는 동작을 수행하거나 기밀 데이터에 접근할 수 있습니다.
💡 쉬운 설명
웹 페이지를 보여주는 프로그램 내부의 보안 설정 허점을 이용해, 공격자가 프로그램의 중요한 기능을 마음대로 조작할 수 있는 문제입니다. 특히 메시지를 보낸 사람이 누구인지 확인하는 절차가 없을 때 발생합니다.
🇺🇸 원문 (English)
Electron is a framework for writing cross-platform desktop applications using JavaScript (JS), HTML, and CSS. A vulnerability in versions prior to 18.0.0-beta.6, 17.2.0, 16.2.6, and 15.5.5 allows a renderer with JS execution to obtain access to a new renderer process with `nodeIntegrationInSubFrames` enabled which in turn allows effective access to `ipcRenderer`. The `nodeIntegrationInSubFrames` option does not implicitly grant Node.js access. Rather, it depends on the existing sandbox setting. If an application is sandboxed, then `nodeIntegrationInSubFrames` just gives access to the sandboxed renderer APIs, which include `ipcRenderer`. If the application then additionally exposes IPC messages without IPC `senderFrame` validation that perform privileged actions or return confidential data this access to `ipcRenderer` can in turn compromise your application / user even with the sandbox enabled. Electron versions 18.0.0-beta.6, 17.2.0, 16.2.6, and 15.5.5 contain a fix for this issue. As a workaround, ensure that all IPC message handlers appropriately validate `senderFrame`.
📍 영향받는 시스템
Electron versions prior to 18.0.0-beta.6, 17.2.0, 16.2.6, and 15.5.5
⚔️ 공격 벡터
JS 실행 권한을 가진 렌더러를 통해 `ipcRenderer`에 접근한 후, 검증되지 않은 IPC 메시지를 전송하여 공격 수행
🛡️ 대응 방법
Electron을 수정된 버전(18.0.0-beta.6, 17.2.0, 16.2.6, 15.5.5 이상)으로 업데이트하거나, 모든 IPC 핸들러에서 `senderFrame` 검증 로직을 추가함
🔧 검증 코드
출력된 Electron의 버전을 확인하여 취약한 버전 범위에 포함되는지 체크함