🇰🇷 한글 설명
draw.io의 OAuth 콜백 핸들러에서 IS_GAE 설정이 false일 때 stateToken과 cookieToken의 비교를 건너뛰는 취약점이 발견되었습니다. 이로 인해 공격자가 자신의 클라우드 저장소 계정 인증 코드를 사용하여 피해자의 draw.io 세션을 공격자의 계정으로 강제 연결할 수 있습니다. 이 문제는 Google Drive, OneDrive, GitHub, GitLab, Dropbox 통합 기능에 영향을 미칩니다.
💡 쉬운 설명
공격자가 만든 가짜 로그인 링크를 클릭하면, 사용자의 draw.io 계정이 공격자의 클라우드 저장소 계정과 연결되어 버립니다. 이로 인해 사용자가 작업한 내용이 공격자의 저장소에 저장되거나 계정 정보가 뒤섞이는 문제가 발생할 수 있습니다.
🇺🇸 원문 (English)
draw.io is a configurable diagramming and whiteboarding application. Prior to version 30.2.7, the OAuth callback handler in src/main/java/com/mxgraph/online/AbsAuth.java skips comparison of stateToken and cookieToken whenever IS_GAE is false, which affects self-hosted Docker and WAR deployments. An attacker can provide an authorization code for the attacker's cloud-storage identity and induce a victim to visit a callback URL, causing the victim's draw.io session to become authenticated as the attacker identity without a valid state binding. The shared handler affects Google Drive, OneDrive, GitHub, GitLab, and Dropbox integrations. The victim can then unknowingly perform cloud-storage actions under the attacker's identity, causing session integrity loss and misattribution, but the identity binding does not itself grant access to existing victim cloud files. This issue is fixed in version 30.2.7.
📍 영향받는 시스템
draw.io 30.2.7 미만 버전 (self-hosted Docker 및 WAR 배포 환경)
⚔️ 공격 벡터
공격자가 조작된 OAuth 콜백 URL을 피해자에게 방문하도록 유도하여 세션 결합 유도
🛡️ 대응 방법
draw.io를 최신 버전인 30.2.7 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 30.2.7보다 낮은지 확인하여 취약 여부를 판단합니다.
curl -s http://<your-drawio-instance>/version | grep -E '30\.[0-9]\.[0-9]'