🇰🇷 한글 설명
Quasar Framework 2.22.0 미만 버전의 extend() 유틸리티에서 발생하는 프로토타입 오염 취약점입니다. 공격자가 제어하는 객체의 __proto__ 속성을 적절히 차단하지 않아, Object.prototype에 임의의 속성을 주입할 수 있습니다. 이를 통해 로직 우회, 기본 옵션 주입, 서비스 거부(DoS) 등의 피해가 발생할 수 있습니다.
💡 쉬운 설명
프로그램의 기본 설계도에 공격자가 몰래 내용을 적어 넣을 수 있는 취약점입니다. 이로 인해 프로그램이 예상치 못한 동작을 하거나 갑자기 멈출 수 있습니다.
🇺🇸 원문 (English)
Quasar Framework is a framework for building high-performance Vue.js user interfaces. Prior to 2.22.0, the public extend() utility in ui/src/utils/extend/extend.js recursively copied attacker-controlled object keys during extend(true, target, source) deep merges without rejecting an own __proto__ property. The merge could descend into the prototype object and write attacker-controlled properties to Object.prototype in the same JavaScript process. Applications that passed user-controlled or partially user-controlled objects to extend() could experience logic bypass, unsafe default-option injection, denial of service, or other application-specific impact when polluted properties were later consumed. This issue is fixed in version 2.22.0.
📍 영향받는 시스템
Quasar Framework 2.22.0 미만 버전
⚔️ 공격 벡터
사용자로부터 입력받은 객체를 extend(true, target, source) 함수를 통해 깊은 복사(Deep Merge)할 때 발생
🛡️ 대응 방법
Quasar Framework를 2.22.0 이상의 버전으로 업데이트하십시오.
🔧 검증 코드
명령어 결과에 버전이 출력되면 취약한 버전이 설치되어 있는 것이며, 아무것도 출력되지 않으면 안전할 가능성이 높습니다.
npm list quasar | grep -E 'quasar@([0-1]\.|2\.(?:[0-1][0-9]|2[0-1])\.)'