jQuery 자바스크립트 라이브러리에서 웹사이트 취약점 발견돼
jQuery JavaScript library flaw opens the doors for attacks on hundreds of millions of websites
인기 있는 jQuery 자바 스크립트 라이브러리에서 공격자가 자바스크립트 객체(Object)의 프로토타입 변조를 허용할 수 있는 ‘프로토타입 오염(Prototype pollution)’ 결함이 발견되었습니다.
jQuery 자바스크립트 라이브러리는 현재 온라인 전체 웹사이트 중 74%에 사용되고 있습니다.
<이미지 출처: https://w3techs.com/technologies/details/js-jquery/all/all>
사이트 대부분이 ‘프로토타입 오염’ 결점에 취약한 라이브러리 1.x와 2.x 버전을 사용하고 있었습니다.
<이미지 출처: https://w3techs.com/technologies/details/js-jquery/all/all>
해당 라이브러리는 금주 이 문제를 수정하기 위한 보안 패치를 발표했습니다. 이는 해당 코드에서 주요 보안 취약점이 발견된 지 3년 만입니다.
자바스크립트 객체는 미리 정의된 구조를 기반으로 여러 값을 저장하는 데 사용할 수 있는 변수와 같습니다.
프로토타입은 자바스크립트 객체의 기본 구조와 기본값을 정의하는데 사용되며, 값이 설정되지 않았을 때에는 구조를 지정하는데 필수적입니다.
공격자는 예상된 값을 받지 못할 경우 어플리케이션을 충돌시키고 동작을 변경할 수 있게 됩니다.
자바 스크립트의 사용 현황을 감안할 때, 프로토타입 오염 결함 악용은 웹 어플리케이션에 심각한 영향을 미칠 것입니다.
jQuery 라이브러리에 존재하는 이 취약점(CVE-2019-11358)은 Snyk의 연구원들이 발견했으며, 프로토타입 오염 공격의 PoC 코드도 공개되었습니다.
이 보안 취약점은 프로토타입 오염을 나타내며, 공격자들이 자바 스크립트 어플리케이션 객체 프로토타입을 덮어쓰기가 가능하도록 허용합니다.
이 같은 일이 발생할 경우, 공격자가 제어하는 속성은 객체에 주입됩니다.
그리고 자바 스크립트 예외를 트리거 해 서비스 거부(DoS)를 유발하거나 공격자가 삽입하는 코드 경로를 강제로 변조할 수 있습니다.
전문가들은 공격자들이 이 취약점을 악용할 경우 jQuery 라이브러리 코드를 사용하는 웹 앱에서 관리자 권한을 부여받을 수 있다는 것을 시연해 보였습니다.
전문가에 따르면, 다행히도 이 프로토타입 오염 문제는 대규모 공격에서 악용이 불가능한 것으로 나타났습니다.
익스플로잇 코드가 타깃에 따라 다르게 작성되어야 하기 때문입니다.
어플리케이션에 jQuery 자바스크립트 라이브러리를 사용하는 웹 개발자들은 최신 버전인 jQuery 3.4.0으로 업데이트할 것을 권고 드립니다.
jQuery 팀은 블로그를 통해 jQuery 3.4.0은 jQuery.extend (true, {}, …)를 사용할 때 발생하는 의도치 않은 행동들에 대한 수정사항이 포함되어 있다고 밝혔습니다.
검사하지 않은 소스 객체가 열거 가능한 __proto__ 속성을 포함하고 있을 경우, 이는 기존의 Object.prototype을 확장시킬 수 있습니다.
이 수정사항은 jQuery 3.4.0에 포함되어 있으나, 이전 jQuery 버전을 패치하기 위한 patch diffs도 있다고 언급했습니다.
출처:
https://securityaffairs.co/wordpress/84340/hacking/jquery-javascript-library-flaw.html