Skip to main content
QUICK REVIEW

[논문 리뷰] Code-based Vulnerability Detection in Node.js Applications: How far are we?

Bodin Chinthanet, Serena Elisa Ponta|arXiv (Cornell University)|2020. 08. 11.
Advanced Malware Detection Techniques참고 문헌 10인용 수 4
한 줄 요약

이 논문은 npm 종속성 내 JavaScript 구조를 분석할 수 있도록 Eclipse-Steady를 확장하여 Node.js 애플리케이션을 대상으로 코드 중심의 취약성 탐지 기법을 제안한다. 이는 65개의 SAP에서 개발한 애플리케이션 중 18개에서 실제 취약한 코드를 성공적으로 탐지하였으며, 수정된 프로그램 구조의 정적 분석을 통해 다섯 개인 알려진 취약성을 식별하였다. 이는 동적 JavaScript 환경에서 정적 분석의 타당성을 입증한다.

ABSTRACT

With one of the largest available collection of reusable packages, the JavaScript runtime environment Node.js is one of the most popular programming application. With recent work showing evidence that known vulnerabilities are prevalent in both open source and industrial software, we propose and implement a viable code-based vulnerability detection tool for Node.js applications. Our case study lists the challenges encountered while implementing our Node.js vulnerable code detector.

연구 동기 및 목표

  • 불완전하거나 정확하지 않은 메타데이터에 의존하는 npm 취약성 탐지의 한계를 해결하기 위해.
  • Node.js 애플리케이션 내 실제 취약한 코드 구조를 식별하는 코드 중심의 접근법을 개발하여, 잘못된 경고와 빠진 경고를 줄이기 위해.
  • 정적 분석 기법을 JavaScript의 동적이고 이벤트 기반의 코드베이스에 적용할 수 있는지 타당성을 평가하기 위해.
  • Node.js 애플리케이션의 빌오브마테리얼(BoM)을 구성하고 종속성 수준 간의 취약한 구조를 탐지하는 데 직면한 과제를 이해하기 위해.
  • evolving npm 생태계에서 취약성 탐지 향상에 있어 연구자와 실무자에게 통찰과 교훈을 제공하기 위해.

제안 방법

  • 프로그램 분석을 위해 계층적 구조 모델(Package, Module, Function, Class, Method, Constructor, Object)을 정의하여 Eclipse-Steady 프레임워크를 JavaScript 지원하도록 확장하기.
  • 패치에서 수정된 프로그램 구조를 추출하고 분석하여 npm 종속성 내 취약한 코드 패턴을 식별하기.
  • 직접 종속성과 간접 종속성을 구분할 수 있도록 Node.js 애플리케이션의 빌오브마테리얼(BoM)을 구성하기.
  • 정적 분석을 사용하여 취약한 구조(예: 메서드, 함수)가 응용 프로그램 코드 내에서 존재하고 실행 가능성이 있는지 확인하기.
  • 정확도와 성능 평가를 위해 65개의 SAP 개발 애플리케이션에 대한 사례 연구에 이 접근법을 적용하기.
  • 다양한 추상화 수준(MODU, FUNC, OBJT 등)에서 탐지를 평가하여 세분화의 성과와 비용의 상충 관계를 분석하기.

실험 결과

연구 질문

  • RQ1메타데이터에 의존하지 않고 실제 코드 구조를 분석함으로써, 코드 중심의 접근법이 Node.js 애플리케이션에서 알려진 취약성을 효과적으로 탐지할 수 있는가?
  • RQ2JavaScript의 동적이고 프rototype 기반의 모델에서 빌오브마테리얼(BoM)을 구성하고 취약한 구조를 탐지하는 데 직면한 핵심 과제는 무엇인가?
  • RQ3이벤트 기반의 비동기적 Node.js 애플리케이션에서 정적 분석이 취약한 코드 패턴을 식별하는 데 얼마나 효과적인가?
  • RQ4간접 종속성은 얼마나 많은 취약한 코드를 유발하는가? 그리고 이를 더 잘 추적할 수 있는 방법은 무엇인가?
  • RQ5현대적인 JavaScript와 npm 생태계에 기존의 정적 분석 기법을 적용할 때 실용적 영향과 한계는 무엇인가?

주요 결과

  • 코드 중심의 접근법은 65개의 SAP 개발 애플리케이션 중 18개에서 다섯 개인 알려진 취약성을 성공적으로 탐지하였으며, 이는 JavaScript 환경에서 정적 분석의 타당성을 입증한다.
  • 대부분의 취약한 구조는 간접 종속성에 존재했으며(런타임 28개, 테스트 27개), 이는 개발자가 간접 종속성에 대한 시야가 부족함을 시사한다.
  • 대부분의 취약한 구조는 모듈(MODU) 및 함수(FUNC) 수준에서 탐지되었으며, 이는 초보 탐지에 있어 세분화된 개체(OBJT) 및 생성자(CONS) 분석이 반드시 필요하지 않음을 시사한다.
  • 2019년 기준 npm 생태계에서 681개의 취약성이 보고된 것으로 밝혀졌으며, 이는 문제의 규모가 크고 더 나은 탐지 기법이 필요함을 강조한다.
  • JavaScript의 다수의 함수 선언 방식과 프로토타입 기반 상속을 매핑하는 데 어려움을 겪었으며, 이는 언어 모델링을 향상시킬 필요가 있음을 시사한다.
  • 결과적으로, ECMAScript의 연간 업데이트와 Node.js의 빠른 진화에 대응하기 위해 정적 분석 도구도 발전시켜야 하며, 정확성과 관련성을 유지해야 한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.