2020년 6월 보안 릴리스

_(2020년 6월 2일 수정됨) 보안 릴리스를 사용할 수 있습니다.

다음 이슈에 대해 모든 Node.js 활성 릴리스 라인의 업데이트를 이용할 수 있습니다.

TLS 세션 재사용으로 인해 호스트 인증서 검증이 우회될 수 있음 (높음) (CVE-2020-8172)

session 이벤트는 secureConnect 이벤트 전에 발생할 수 있습니다. 하지만 접속은 인가되지 않을 수도 있으므로 이렇게 동작하면 안됩니다. 세션이 저장되어버리면 해당 세션 티켓을 사용해 인가된 접속을 만들 수 있게 됩니다. https 에이전트는 세션을 캐시하기 때문에 이런 문제에 취약합니다.

이제 session 이벤트는 secureConnect 이후에만, 인가된 접속에서만 발생합니다.

Node.js 12.x, 14.x 버전이 영향을 받습니다. Node.js 10.x 버전에는 영향이 없습니다.

HTTP/2 대규모 SETTINGS 프레임 서비스 거부 (낮음) (CVE-2020-11080)

지나치게 큰 HTTP/2 SETTINGS 프레임을 받으면 해당 설정을 처리하기 위해 CPU 자원을 100% 소비하여, 작업이 완료되기 전까지 다른 모든 활동이 중단됩니다.

기본값으로 HTTP/2 세션 프레임은 32개 설정 항목으로 제한되어 있습니다. 필요한 경우 maxSettings 옵션을 통해 설정할 수 있습니다.

이 문제를 보고해 준 F5 Networks의 Jordan Zebor와 Adam Cabrey에게 감사드립니다.

Node.js 10.x, 12.x, 14.x 버전이 영향을 받습니다.

napi_get_value_string_*()가 다양한 메모리 손상을 일으킬 수 있음 (높음) (CVE-2020-8174)

NULL이 아닌 buf와 값이 0bufsize를 사용해 napi_get_value_string_latin1(), napi_get_value_string_utf8(), napi_get_value_string_utf16() 함수를 호출하면 전체 문자열이 buf에 작성되거나 버퍼의 길이를 넘어버리는 문제가 발생할 수 있습니다.

보고된 악용 사례는 없고 아마 악용하기 어려우리라 생각하지만, 다음과 같이 권고합니다.

  • Node.js LTS 버전을 사용하는 모든 사용자는 이 보안 문서에 공지된 버전으로 업데이트하세요. 사전 빌드되지 않은 애드온 전체에 대해 이 문제를 수정합니다.
  • 이미 지원이 종료된 Node.js 버전을 지원하고 있거나 내부적으로 N-API를 지원하지 않는 Node.js 버전에 대응하여 빌드하고 있다면 node-addon-api 1.x와 2.x의 새 버전으로 업데이트 해야 합니다. 이 버전은 지금 이 공지 이후 곧 출시될 것입니다.

Node.js 10.x, 12.x, 14.x 버전이 영향을 받습니다.

네이티브 애드온이 내부적으로 N-API를 지원하지 않은 Node.js 버전을 사용해 빌드된 경우, https://www.npmjs.com/package/node-addon-api 1.x와 2.x 버전이 영향을 받습니다. N-API 버전 매트릭스에서 N-API를 지원하지 않는 Node.js 버전을 확인할 수 있습니다.

ICU-20958 값을 추가할 때 SEGV_MAPERR가 발생하지 않음 (높음) (CVE-2020-10531)

유니코드 국제화 컴포넌트(ICU, International Components for Unicode) 66.1 버전까지 C/C++에서 발견된 문제입니다.
common/unistr.cpp 파일의 UnicodeString::doAppend() 함수 내부에 힙기반 버퍼의 오버플로를 일으키는 정수 오버플로가 있었습니다.

비록 Node.js 10.x에 이러한 오버플로를 일으킬 수 있는 방법은 없지만,
예방 차원에서 10.x에 수정 사항이 적용되었습니다.

문제가 발생하는 ICU 버전을 포함하지 않는 Node.js 12.x, 14.x 버전에는 영향이 없습니다.

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


요약

Node.js 프로젝트는 2020년 6월 2일 화요일 또는 그 직후 지원하는 모든 릴리스 라인에서 보안 업데이트를 릴리스할 것입니다.

가장 높은 심각도는 "높음"입니다.

영향

지원하는 모든 Node.js 버전(10.x, 12.x, 14.x)이 취약합니다.
13.x 버전은 보안 릴리스 일자 이전인 6월 1일에 지원이 종료되었으므로, 정책에 따라 아무런 업데이트도 받지 못합니다.

릴리스 시기

2020년 6월 2일 화요일 또는 그 직후 릴리스 될 것입니다.

연락처와 차후 업데이트

현재 Node.js 보안 정책은 https://nodejs.org/en/security/에서 확인할 수 있습니다. Node.js의 취약점을 보고하고 싶다면
https://github.com/nodejs/node/blob/master/SECURITY.md에 정리된 절차를 따르기 바랍니다.

Node.js의 보안 취약점과 보안과 관련된 릴리스의 최신 정보를 얻으려면
https://groups.google.com/forum/#!forum/nodejs-sec에서 소수의 공지만 하는
nodejs-sec 메일링 리스트를 구독해 주세요. 이 프로젝트는
nodejs GitHub 조직에서 관리하고 있습니다.