🇰🇷 한글 설명
Wekan 9.90 미만 버전에서 파일 MIME 타입 검증 로직의 결함으로 인해 발생합니다. 시스템에 Unix file 명령어가 없을 경우, 서버가 파일의 실제 내용 대신 공격자가 조작한 MIME 타입을 그대로 신뢰하여 악성 HTML/JavaScript 파일을 이미지 파일로 위장해 업로드할 수 있습니다.
💡 쉬운 설명
파일의 진짜 종류를 확인하는 기능이 제대로 작동하지 않아, 위험한 스크립트 파일을 일반 이미지인 것처럼 속여서 올릴 수 있는 문제입니다. 이렇게 올라간 파일은 다른 사용자가 열었을 때 해킹 공격을 수행할 수 있습니다.
🇺🇸 원문 (English)
Wekan is open source kanban built with Meteor. Prior to 9.90, isFileValid() in models/fileValidation.js used the Unix file command for content-based MIME detection, but detectMimeFromFile() silently returned undefined when that binary was unavailable and the validation fell back to the attacker-controlled fileObj.type supplied through server/routes/attachmentApi.js. On deployments with WITH_API=true and no file binary, an authenticated board member could label HTML containing JavaScript as image/png, bypass the dangerous MIME check, and store active content under the Wekan origin for execution when another user opened it. Version 9.90 adds looksLikeDangerousMarkup() to inspect file bytes and force dangerous-content scanning when MIME detection is unavailable. This issue is fixed in version 9.90.
📍 영향받는 시스템
Wekan versions prior to 9.90 (with WITH_API=true and no file binary installed)
⚔️ 공격 벡터
인증된 보드 멤버가 악성 HTML을 이미지 확장자로 위장하여 업로드함으로써 XSS 공격 수행
🛡️ 대응 방법
Wekan을 9.90 버전 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 9.90 미만인지 확인하십시오.
npm list wekan || wget -qO- https://registry.npmjs.org/wekan | grep -oE '"version":"[^"]+"' | head -1