2019년 2월 보안 릴리스

(2018년 2월 28일 업데이트) 보안 릴리스 사용 가능

요약

현재 모든 활성 Node.js 릴리스 라인에 대한 업데이트를 사용할 수 있습니다. Node.js의 보안 결함에 대한 수정 외에 중간 수준의 보안 취약점에 대한 수정 사항이 포함된 Node.js 6 및 8을 OpenSSL 1.0.2r로 업그레이드하는 것도 포함됩니다. 최초 공지는 아래와 같습니다.

이 릴리스의 경우 원래 공지에서 언급된 입력 해석 오류(CWE-115) 결함에 대한 수정을 보류하기로 결정했습니다. 이 결함은 매우 낮은 심각도를 가지고 있으며, 릴리스 준비가 완벽하고 안정적인 것으로 확인되지 않았습니다. 우리는 가까운 시일 내에 다른 메커니즘을 통해 이 결함을 해결할 수 있도록 노력할 것입니다. 또한 서비스 거부 취약점(CWE-400) 결함으로 분류하기로 결정한 Node.js 6의 변경 사항에 대해 CVE를 추가로 도입했습니다.

모든 Node.js 사용자에게 최대한 빨리 아래에 나열된 버전으로 업그레이드 할 것을 권장합니다.

다운로드 & 릴리스 상세내용

아래 버전들의 다운로드가 가능합니다. 상세 코드 변경사항 또한 릴리스 페이지에 있습니다.

Node.js: keep-alive로 인한 Slowloris HTTP 서비스 거부(CVE-2019-5737)

분류: 제어되지 않은 리소스 소비 / 서비스 거부(CWE-400)

적극적으로 지원되는 릴리스 라인은 모두 취약하며 심각도는 '낮음’입니다. 공격자는 keep-alive 모드에서 HTTP 또는 HTTPS 연결을 설정하고 헤더를 매우 느리게 전송하여 장시간 connection 및 관련 자원을 점거함으로써 서비스 거부(DoS)를 유발할 수 있습니다. 공격 가능성은 로드밸런서 또는 다른 프록시 계층 사용으로 완화시킬 수 있습니다.

이 취약점은 2018년 11월에 해결된 CVE-2018-12121의 확장입니다. server.headersTimeout에 의한 40초의 timeout과 이 시간의 조정은 CVE-2018-12121에서와 같이 이번 수정에 적용됩니다.

CVE-2018-12121은 Jay Maybach(liebdich.com)에 의해 처음 보고되었고, keep-alive 변형은 Marco Pracucci(Voxnest)에 의해 보고되었으며, Matteo Collina가 수정하였습니다.

영향:

  • Node.js 6(LTS “Boron”)의 모든 버전은 취약합니다
  • Node.js 8(LTS “Carbon”)의 모든 버전은 취약합니다
  • Node.js 10(LTS “Dubnium”)의 모든 버전은 취약합니다
  • Node.js 11(현재 버전)의 모든 버전은 취약합니다

Node.js: keep-alive HTTP 연결로 인한 서비스 거부(CVE-2019-5739)

분류: 제어되지 않은 리소스 소비 / 서비스 거부(CWE-400)

Keep-alive HTTP 및 HTTPS 연결은 Node.js 6.16.0 및 이전 버전에서 최대 2분 동안 열린 채로 비활성 상태를 유지할 수 있습니다. Node.js 8.0.0은 전용 [server.keepAliveTimeout]((https://nodejs.org/api/http.html#http_server_keepalivetimeout)을 도입했으며, 기본값은 5초입니다. Node.js 6.16.0 및 이전 버전의 동작은 잠재적인 서비스 거부(DoS) 공격 경로입니다. Node.js 6.17.0은 server.keepAliveTimeout과 5초의 기본값을 도입했습니다.

최초 수정본은 Timur Shemsedinov(nodejs/node#2534)에 의해 제출되었으며 Matteo Collina에 의해 백포트 되었습니다.

영향:

  • Node.js 6(LTS “Boron”)의 모든 버전은 취약합니다
  • Node.js 8(LTS “Carbon”)의 모든 버전은 취약하지 않습니다
  • Node.js 10(LTS “Dubnium”)의 모든 버전은 취약하지 않습니다
  • Node.js 11(현재 버전)의 모든 버전은 취약하지 않습니다

OpenSSL: 0 바이트 레코드 패딩 오라클 (CVE-2019-1559)

심각도: 보통

OpenSSL 1.0.2r에는 CVE-2019-1559에 대한 수정 사항이 포함되어 있으며 Node.js 버전 6과 8의 릴리스에만 포함되어 있습니다. Node.js 10과 11은 결함이 없는 OpenSSL의 최신 버전을 사용하기 때문에 취약점의 영향을 받지 않습니다.

특정 상황에서 유효하지 않는 MAC이 있는 0 바이트 레코드와 비교하여 유효하지 않은 패딩의 0 바이트 레코드를 받은 경우 TLS 서버는 클라이언트에 다르게 응답해야 할 수 있습니다. 이것은 데이터를 해독하기 위한 패딩 오라클 공격의 기초로 사용할 수 있습니다.

특정 조건 하에서 실행되는 특정 암호 체계를 사용하는 TLS 연결만이 악용의 여지가 있습니다. 현재 Node.js에서 OpenSSL을 사용하는 것이 이 취약점을 노출시키는지 여부를 확인할 수 없습니다. 우리는 주의 깊게 접근하고 있으며 사용자에게도 이를 권장합니다. 자세한 내용은 권고문 및 취약점 제보자의 상세 보고서를 참고하세요.

영향:

  • Node.js 6(LTS “Boron”)의 모든 버전은 취약합니다
  • Node.js 8(LTS “Carbon”)의 모든 버전은 취약합니다
  • Node.js 10(LTS “Dubnium”)의 모든 버전은 취약하지 않습니다
  • Node.js 11(현재 버전)의 모든 버전은 취약하지 않습니다

감사의 글

Matteo Collina가 취약성을 고쳤습니다.

Shigeki Ohtsu와 Sam Roberts가 OpenSSL을 업그레이드 했습니다.

Jan Maybach와 Marco Pracucci가 적절한 채널을 통해 취약점을 보고해 주었습니다. (아래 참조)

Node.js 보안 팀의 다른 멤버들이 리뷰와 논의를 했습니다.

아래부터는 원래의 글입니다

요약

Node.js 프로젝트는 2019년 2월 27일(표준시) 또는 그 직후, 지원되는 모든 릴리스 라인의 새 버전을 출시할 예정입니다. 이 릴리스에는 Node.js와 관련된 최소 두 가지 보안 수정사항이 포함되며, 이 중 가장 높은 심각도는 ‘낮음’ 입니다.

OpenSSL 프로젝트는 26일에 적용되는 릴리스를 발표했는데, 이는 Node.js의 일부 릴리스 라인에 영향을 미칠 수 있으며 보안 릴리스에 포함되어야 하는 것입니다. OpenSSL이 지정한 가장 높은 심각도는 '보통’이며, Node.js 6.x 및 8.x에서 사용하는 OpenSSL 1.0.2에 영향을 줍니다. OpenSSL 1.1.1에 대한 버그 수정 릴리스도 제공될 예정이며, OpenSSL 1.1.1을 사용하는 Node.js 11.x에 미칠 영향을 평가할 것입니다. Node.js 10.x는 OpenSSL 릴리스에 영향을 받지 않습니다.

영향

현재 지원되는 모든 릴리스 라인은 아래와 같은 취약점을 해결할 수 있습니다.

Node.js 6(LTS “Boron”) 의 모든 버전은 아래에 취약합니다.

  • 제어되지 않는 리소스 소비 / 서비스 거부(CWE-400) 취약점 1건
  • 입력 해석 오류(CWE-115) 취약점 1건
  • 평가된 영향에 따라 OpenSSL 1.0.2r에 가능한 업데이트

Node.js 8(LTS “Carbon”) 의 모든 버전은 아래에 취약합니다.

  • 제어되지 않는 리소스 소비 / 서비스 거부(CWE-400) 취약점 1건
  • 입력 해석 오류(CWE-115) 취약점 1건

Node.js 10(LTS “Dubnium”) 의 모든 버전은 아래에 취약합니다.

  • 제어되지 않는 리소스 소비 / 서비스 거부(CWE-400) 취약점 1건
  • 입력 해석 오류(CWE-115) 취약점 1건

Node.js 11(현재 버전) 의 모든 버전은 아래에 취약합니다.

  • 제어되지 않는 리소스 소비 / 서비스 거부(CWE-400) 취약점 1건
  • 하나의 입력 해석 오류(CWE-115) 취약점 1건
  • 평가된 영향에 따라 OpenSSL 1.1.1b에 가능한 업데이트

릴리스 시기

릴리스는 사용자가 완전하게 영향을 평가할 수 있도록 각 릴리스에서 해결된 결함에 대한 세부 정보와 함께 2019년 2월 27일 수요일(표준시) 또는 그 직후에 제공될 예정입니다.

연락처와 차후 업데이트

현재 Node.js 보안 정책은 https://nodejs.org/en/security/에서 확인할 수 있습니다.

Node.js의 취약점을 보고하고 싶으시다면 security@node.js로 연락해 주세요.

최소한의 공지만 하는 nodejs-sec 메일링 리스트를 https://groups.google.com/forum/#!forum/nodejs-sec에서 구독하면 Node.js와 nodejs GitHub 조직에서 관리하는 프로젝트의 보안 취약성 및 보안 관련 릴리스의 최신 정보를 얻을 수 있습니다.