2019-08-24 10:52 (토)
jQuery에서 프로토타입 오염 결함 발견...더 많은 프로토타입 오염 공격은 계속
상태바
jQuery에서 프로토타입 오염 결함 발견...더 많은 프로토타입 오염 공격은 계속
  • 페소아 기자
  • 승인 2019.04.23 13:12
이 기사를 공유합니다

coding-1841550_640.jpg
74%의 인터넷 사이트에서 사용중인 jQuery 자바스크립트 라이브러리에서 중요한 보안 버그가 나온지 3년이 지난 이번주 또 다른 패치가 이루어졌다.

이 업데이트는 보안 연구원들이 이제 연구하고 발견하기 시작한 프로토타입 오염(Prototype pollution)이라 불리는 취약점에 관련된 것이다.

◇프로토타입 오염이란

이름에서 유추할 수 있듯이 프로토타입 오염은 공격자가 자바스크립트 오브젝트의 프로토타입을 수정하는 것에 관련된 취약점이다. 자바스크립트 오브젝트는 변수와 비슷하나 하나의 값을 저장(var car = "Fiat")하는 변수와 달리 선정의된 구조체를 기반으로 여러 값들을 저장할 수 있다(var car ={type:"Fiat", model:"500", color:"white"}).

프로토타입은 자바스크립트 오브젝트의 기본 구조와 기본 값을 정의해 값이 설정되지 않아도 어플리케이션이 크래쉬되지 않도록 한다. 공격자가 오브젝트 프로토타입을 바꿀 수 있다면 응용프로그램에서 데이터를 처리하는 방식에 심각한 영향을 줄 수 있으며, 응용 프로그램 크래쉬(서비스 거부 공격), 응용프로그램 하이재킹(코드 실행)과 같은 더 위험한 공격이 가능하다.

◇프로토타입 오염, 자바스크립트에 대한 늘어나는 위협

프로토타입 오염 공격은 새로운 것이 아니라 수 년 전에 문서화된 적이 있다. 그러나 지금은 자바스크립트가 단순히 클라이언트 언어로서 기본 UI 상호작용을 처리하는 것뿐만 아니라 서버 측 프로그래밍 언어로 엄청난 양의 민감한 데이터를 처리하는 것으로 진화하고 Node.js 프로젝트에 이르고 있다. 따라서 프로토타입 오염 공격은 데스크탑, 모바일, 브라우저 또는 서버 측 응용 프로그램에서 거의 모든 것이 자바스크립트로 돌아가는 웹 개발 세계에 심각한 위협이 될 수 있다.

지난 세월, 특히 프로토타입 오염 공격에 대한 올리비어아르튜(Olivier Arteau)의 NorthSec2018 발표 이후 보안연구원들은 사용하고 있는 자바스크립트 라이브러리를 보다 자세히 살펴보고 가능한 프로토타입 오염 버그를 찾기 시작했다.

이러한 노력으로 Mongoose, lodash.merge, node.extend, deep-extend, HAPI와 같은 많은 라이브러리에서 여러 프로토타입 오염 공격이 발견되었다. 이 중 일부는 자바스크립트 서버측 응용프로그램에서 매우 많이 사용된다.

◇JQUERY에서의 프로토타입 오염

프로토타입 오염 공격은 소스코드 스캐닝 기술을 제공하는 Snyk의 주목을 끌었으며 연구원 리란 탈(Liran Tal)은 이 새로운 공격벡터를 문서화하는데 관심을 가졌다. 프로토타입 오염 공격에 대한 분석 결과 모든 웹사이트의 74%에서 사용되고 있는 자바스크립트 라이브러리인 jQuery에서 유사한 결함이 발견되었다. 이 라이브러리에서 프로토타입 오염결함이 발견되었다는 것은 수억의 웹사이트에 대한 공격의 문이 열린다는 의미이다.

지난 주 발표된 보고서에서 탈과 Snyk 팀은 jQuery에 영향을 주는 프로토타입 오염 공격(CVE-2019-11358)에 대한 개념 증명 코드를 설명하고 발표했다. 이 취약점이 얼마나 위험한지를 보여주기 위해 공격자가 프론트 엔드에 jQuery 코드를 사용하는 웹 응용 프로그램에 대한 관리자 권한을 가져올 수 있는 방법을 보여주었다.

◇익스플로잇은 쉽지 않아

그러나 좋은 소식은 프로토타입 오염 공격은 각 공격코드가 개별적인 대상에 대한 세부 설정이 필요하므로 대량 공격이 어렵다는 것이다. 프로토타입 오염 결함은 공격자가 각 웹사이트가 오브젝트 프로토타입과 함께 작동하는 방식에 대한 심층적인 정보와 이러한 프로토타입이 큰 스키마에 대해 어떻게 영향을 미치는지를 알아야 한다. 또한 일부 웹사이트는 jQuery를 사용하지 않고 단지 몇 개의 메뉴를 애니메이션으로 만들고 팝업을 표시하기만 하므로 위협에서 벗어나 있다.

그는 "이 익스플로잇의 jQuery 버전을 찾는 것은 어려운 일은 아니지만 프로토타입 오염과 관련하여 jQuery의 취약한 API를 사용하여 사용자 정의 코드를 실제 자동화하는 것은 어려울 것이다"라고 설명한다.

또한 소스코드를 공개하지 않는 앱과 웹 사이트도 공격의 위험에서 벗어나 있다고 덧붙였다.

또 "조사를 위해 접근하기 쉽지 않은 서버 비공개 소스코드를 익스플로잇하는 것은 글로벌 오브젝트 범위를 오염시키는 것이 애플리케이션에 어떤 영향을 미치는지 알아내기 위한 많은 연구를 필요로 한다."고 전했다.

그럼에도 불구하고 jQuery가 전체 프론트 엔드를 구축하거나 서버 측 시스템과 상호작용하는 등 복잡한 작업에 사용되는 경우 프로토타입 오염 공격은 해커는 안전한 것으로 간주되는 시스템에 접근할 수 있는 이상적인 버그가 될 것이다.

◇거대 공격 표면

Node.js팀과 함께 버그를 jQuery팀에 보고한 탈은 웹 개발자가 프로젝트를 최신 jQuery 버전인 3.4.0으로 업데이트할 것을 권장한다.

오늘날 대부분의 웹사이트들은 여전히 jQuery의 1.x나 2.x 버전을 사용하고 있다. 즉 대다수의 jQeury 기반 응용프로그램과 웹사이트들이 공격에 노출되어 있다.세가지 메이저 버전들 사이에는 문법적인 차이가 있으며 따라서 웹개발자들이 소스코드를 다시 작성하는 것보다는 이전 버전을 계속 사용하는 것을 선택할 것이다.

다행히 패치는 이전 릴리즈로 백포트되었다.

◇더 많은 프로토타입 오염 공격이 오고 있다

Snyk는 더 많은 프로토타입 오염 공격을 찾고 문서화하는 작업을 계속한다. 이 회사는 이미 브라우저 및 Node.js 생태계 전반에 걸친 프로토타입 오염 공격에 대해 20건이 넘게 알고 있으며 더 많은 것을 찾아낼 것이다.


[의료기관 컨퍼런스 안내]
국내 최대 의료기관 개인정보보호&정보보안 컨퍼런스 MPIS 2019
-MPIS 2019 사전등록:
http://conf.dailysecu.com/conference/mpis/2019.html
-참가문의: 데일리시큐 길민권 기자 / mkgil@dailysecu.com

★정보보안 대표 미디어 데일리시큐!★