NEWS

HOME

SECURITY NEWS

[보안뉴스] 노드JS를 공략하는 새로운 기법, ‘숨겨진 특성 남용’
  • 관리자
  • |
  • 1655
  • |
  • 2020-08-03 13:02:05

노드JS 기반 애플리케이션, 내부 프로그램 메모리 정보와 관련된 특성 포함하고 있어

특성에 대해 잘 모르고 안전할 거라고 여기는 개발자 많아...이 인식이 공격의 핵심

[보안뉴스 문가용 기자] 조지아공과대학의 보안 전문가들이 노드JS(Node.js) 기반 애플리케이션들을 공략하는 방법을 개발했다. 내부 프로그램 메모리 위치 정보를 추적하는 데 사용되는 ‘숨겨진 특성들(hidden properties)’을 조작하는 건데, 상세한 내용은 곧 개최되는 블랙햇(Black Hat) 행사를 통해 공개될 것이라고 한다.

[이미지 = utoimage]


이 공격 기법에는 ‘숨겨진 특성 남용(Hidden Property Abusing)’이라는 이름이 붙었다. 원격의 공격자들이 새로운 값을 노드JS 프로그램들에 주입하고, 이를 내부 데이터인 것처럼 위장시키는 것이 핵심이라고 한다. 연구원들은 특수한 도구를 만들어 60개가 넘는 주요 노드JS 요소들에 ‘숨겨진 특성 남용’ 기법이 통하는지 점검했고, 이를 통해 약 13개의 취약점들을 발견했다. 이 도구는 링스(Lynx)라고 하며 역시 블랙햇 기간 동안 공개될 예정이라고 한다.

연구에 참여했던 페이 시아오(Feng Xiao)는 “사용자 ID와 같은 프로그램 기능 등 개발자들이 정의한 특성이나 프로그램 메모리 정보에 초점을 맞추는 것이 이번 공격의 핵심”이라며 “꽤나 흔히 나타날 수 있는 공격 기법이지만 찾아내기가 쉽지 않다는 것을 알아냈고, 그래서 탐지 도구를 개발해 배포할 계획인 것”이라고 설명했다.

‘숨겨진 특성 남용’ 공격은 개발자들이 ‘으레 당연하다’고 여기는 지점을 파고드는 기법이라고 한다. 그건 바로 ‘내부 프로그램 메모리 위치 정보가 외부인들에게는 접근이 불가하다’는 것이다. “하지만 입력된 데이터가 객체로 전환된 후 노드JS는 이 객체들을 다른 정상 객체들인 것처럼 취급합니다. 그게 바로 ‘숨겨진 특성 남용’ 공격이 가능한 근본적인 이유가 됩니다.”

이 공격은 자바스크립트 프로토타입 폴루션(JavaScript Prototype Pollution) 공격과 비슷하다고 시아오는 설명을 덧붙인다. “공격자가 프로토타입 객체를 조작해 합침으로써 프로토타입의 특성이 바뀌고, 이렇게 바뀐 프로토타입이 다른 자바스크립트 객체의 기본 바탕으로써 계속 증식하도록 하는 게 바로 프로토타입 폴루션 공격입니다. ‘숨겨진 특성 남용’ 공격에서는 프로토타입을 건드리지는 않지만, 프로토타입으로부터 전달된 특성들을 덮어쓰기 합니다.”

이 특성들은 꽤나 중요도가 높은 프로그램 메모리 정보와 연결되어 있는데, “이 특성이라는 것이 존재한다는 걸 모르는 사람들이 거의 대부분”이라고 연구원들은 설명한다. “그래서 ‘숨겨진 특성’이라고 이름을 붙였습니다.”

노드JS는 자바스크립트 코드를 서버 환경에서 실행할 수 있게 해주는 플랫폼으로, 인기가 매우 높다. 노드JS를 반드시 사용한다는 개발자가 51%를 넘을 정도다. 또한 가장 많이 사용하는 애플리케이션 개발 플랫폼이라는 개발자가 70% 이상이라는 통계도 있다. 이 때문에 ‘숨겨진 특성 남용’ 공격 기법은 꽤나 광범위한 악영향을 미칠 수 있다.

게다가 노드JS는 디펜던시에 대한 의존도가 높다. 한 개의 노드JS 요소가 수십 개의 다른 요소들을 임포트 하는 방식이다. 즉 한 개의 패키지가 취약하기만 해도, 수많은 노드JS 요소들이 취약해진다는 것이다. “노드JS 생태계는 코드 재활용이 대단히 활성화 되어 있는 곳입니다. 널리 사용되는 모듈 하나만 잘 공략해도 노드JS 애플리케이션 다수를 감염시킬 수 있습니다.”

또 하나 ‘숨겨진 특성 남용’이 성립할 수 있는 이유는 노드JS 애플리케이션의 서버와 클라이언트 간 통신이 자바스크립트 객체들의 형태로 이뤄진다는 것이다. 따라서 공격자가 추가 특성이 붙은 객체들을 전송하게 된다면 애플리케이션에 대한 공격이 가능하게 된다. “아무 형태의 데이터가 특성으로서 추가될 수 있습니다. 따라서 취약점이 증식하는 과정에도 공격자가 개입할 수 있습니다. 프로그램의 논리 구조도 조작할 수 있고요.”

링스는 이런 식의 공격 가능성을 노드JS 애플리케이션에서 탐지할 수 있게 해주는 도구다. “링스는 (비정상적인) 특성이 퍼져가는 걸 분석하기 위해 동적 분석과 정적 분석 기술 모두를 사용합니다. 또한 발견된 것에 맞는 익스플로잇을 생성하기도 합니다.” 연구원들은 링스를 사용해 60개의 인기 노드JS 프로그램을 검사했고, 이 과정에서 13개의 취약점들을 발견했다.

펭은 “링스가 유용할 사람은 API 개발자들과 보안 전문가들”이라고 말한다. “API 개발자들은 링스를 가지고 자기들이 개발한 도구를 공격해볼 수 있습니다. 그리고 발견된 문제들을 고쳐서 보다 안전하고 탄탄한 API를 만들 수 있을 겁니다. 보안 전문가들 중 화이트 해커로 분류되는 사람들 역시 이 도구를 가지고 여러 오픈소스 프로그램을 실험해볼 수 있습니다.” 

 

4줄 요약

1. 노드JS 애플리케이션을 공략할 수 있는 방법, ‘숨겨진 특성 남용.’

2. 자바스크립트의 객체에 덧붙은 특성들, 중요 내부 데이터 포함하고 있지만 사람들이 잘 모름.

3. 개발자들은 ‘이 내부 데이터에 아무도 접근할 수 없다’고 여기고 프로그램 개발.

4. 노드JS는 디펜던시 의존도가 높아서 취약 요소가 광범위하게 퍼져갈 수 있어서 위험. 

[국제부 문가용 기자(globoan@boannews.com)]

 

[출처 : 보안뉴스(https://www.boannews.com/media/view.asp?idx=90242&page=1&kind=1​)]

이전글 [보안뉴스] 악성코드 은닉사이트 지난 하반기보다 34% 늘었다
다음글 [보안뉴스] 오래된 로봇용 프로그래밍 언어들, 대부분 사이버 공격에 취약
비밀번호 입력
비밀번호
확인
비밀번호 입력
비밀번호
확인
TOP