🇰🇷 한글 설명
permessage-deflate 확장을 사용하는 경우, WebSocket 서버나 클라이언트가 설정된 최대 메시지 크기를 초과하는 메시지를 수락할 수 있는 취약점입니다. 이는 압축된 데이터의 크기만을 기준으로 제한을 확인하고 압축 해제 후의 크기를 확인하지 않기 때문에 발생하며, 의도치 않은 리소스 사용량 초과를 유발할 수 있습니다.
💡 쉬운 설명
압축된 데이터의 크기만 체크하고 압축을 풀었을 때의 실제 크기를 체크하지 않아 발생하는 문제입니다. 이로 인해 공격자가 아주 큰 데이터를 보내 서버의 메모리를 과도하게 사용하게 만들 수 있습니다.
🇺🇸 원문 (English)
### Impact
If this library is used in tandem with the `permessage-deflate` extension, a
WebSocket server or client can be made to accept messages that are larger than
the configured maximum message size. This is because this limit is checked
against the message frames' length headers, which give the size of the
compressed data, not the size after decompression. This can lead to applications
accepting larger messages than expected and exceeding their intended resource
usage.
### Patches
The issue has been patched in version 0.8.1, by checking the length of messages
after they are processed by incoming extensions. All users should upgrade to
this version.
### Workarounds
No known workarounds exist.
### Acknowledgements
This issue was discovered and reported by Pranjali Thakur, DepthFirst Security
Research Team.
📍 영향받는 시스템
permessage-deflate 확장을 사용하는 라이브러리 0.8.1 미만 버전
⚔️ 공격 벡터
압축된 상태에서는 작지만 압축을 풀면 매우 커지는 WebSocket 메시지를 전송하여 리소스 고갈 유도
🛡️ 대응 방법
해당 라이브러리를 보안 패치가 적용된 0.8.1 버전 이상으로 업그레이드
🔧 검증 코드
출력된 라이브러리 버전이 0.8.1 미만인지 확인합니다.
npm list <library_name> | grep -E 'version'
💻 영향받는 소프트웨어
IBM WebSphere Application Server