감자 텃밭

Webpack Vulnerability (웹팩 취약점) 본문

Web Vulnerability

Webpack Vulnerability (웹팩 취약점)

g2h 2023. 1. 28. 19:20

What is Webpack?

웹팩(Webpack)은 js에서 주로 사용되는 모듈 번들라이다. 호환 플러그인을 포함하는 경우 HTML, CSS, JPG 등 
프런트엔드 자산들을 변환할 수 있다. 즉, 각각의 Web Application을 구성하는 자원을 각각의 모듈로 보며, 이를 하나로
합치는 역할을 해준다.
모듈 번들링이란?
종속성이 있는 모듈을 가져와서 웹 애플리케이션에 포함될 수 있는 단일 번들을 생성하는 도구이다.

 

모듈 - 하나의 큰 파일을 여러 개로 분리하게 될 때 분리된 각각의 파일을 모듈이라 부른다. 쉽게 생각해서, 하나의 스크립트, 또는 흩어져 있는 각각의 함수의 기능을 을 나눈 것 또한 모듈이라고 보면 된다. 이러한 모듈이 합쳐져서 하나의 파일을 생성하게 되는 것이다.

 

Vulnerbilitey for Webpack

이러한 웹팩은 WebApplication을 제작하는 과정에서 많이 사용하는 추세이며, 웹팩(Webpack) 또한 여러 취약점이 발견되었다. 대부분 공격자가 의도하는 코드를 삽입하여 파일을 조작할 수 있다. 그중 일부분의 취약점은 아래와 같다.

 

  1.   WebSocket 처리 시 입력 유효성 검사 및 삭제가 부족하여 발생
  2.  웹팩(Webpack)의 friendlu-errors-webpack-plugin에서 오류메시지 처리 시 입력 유효성 검사 및 삭제가 부족해서 발생하여 공격자가 호스트 시스템에서 임의의 코드를 실행 가능
  3.  웹팩(Webpack)의 copy-webpack-plugin에서 파일 경로 처리 입력 유효성 검사 및 삭제 부족으로 인한 공격자가 호스트 시스템의 입의 파일을 덮어쓸 수 있음.

 

대표적으로 CVE-2018-14732를 예로 들 수 있다.

해당 CVE는 Webpack 버전 3.1.6 이하에서 발생하며, webpac Application 개발 서버인 webpack-dev-server의 lib/Server.js에서 해당 취약점이 발생된다. 해당 취약점은 공격자가 서버의 디렉터리 통과 취약점을 악용하여, 호스트 파일 시스템에 임의의 파일을 작성할 수 있다. 또한 
HMR(Hot Module Replacement)에 사용되는 WebSocket server에서 요청의 출처를 확인하지 않기 때문에 개발자의 코드를 확인할 수 있다. 누구나 인증 없이 모든 origin에서 ws://127.0.0.1:8080/ 연결을 통해 WebSocket 서버에서 보낸 HMR 메시지를 확인할 수 있다.
HMR(Hot Module Replacement)란?
webpack에서 제공하는 기능 중 하나이며, 모듈을 새로고침 할 필요 없이 runtime에 업데이트할 수 있다.

즉 브라우저를 새로고침 하지 않고도 webpack을 통한 build 한 결과가 실시간을 반영된다.

 

"해당 취약점은 webpack-dev-server가 실행 중인 개발 환경에 access 할 수 있어야 한다."

 

늘 최신버전을 업데이트해야 한다.

 

 

 

※ 내용이 이상하거나 문제가 있을 경우, 또는 설명에 부족한 내용이 있으시면 알려 주시면 감사합니다.