OpenSSL 1.0.1t, 1.0.2h 업데이트

(2016년 5월 6일 수정사항) 새로운 Node.js 릴리스

이 글에서 얘기한 OpenSSL 보안 업데이트를 포함한 새로운 버전을 릴리스했습니다. 공개된 취약점을 차단하려면 가능한 한 빨리 Node.js를 업그레이드하세요.

위험도 평가를 아래 원래의 글에 추가했습니다.

OpenSSL 프로젝트에서 이번 주(UTC 기준 5월 3일 화요일)에 1.0.1t와 1.0.2h를 릴리스하겠다고 발표했습니다. 이번 릴리스에서는 보안 정책에 따라 심각도가 “높게” 평가된 “다수의 보안 결함”을 수정할 것입니다. 높은 심각도의 이슈는 다음을 의미합니다.

… 일반적인 구성에는 적게 영향을 주거나 이용될 가능성이 작아 보이기 때문에 심각함보다는 낮은 위험으로 판단됩니다.

Node.js v0.10과 v0.12는 둘 다 OpenSSL v1.0.1을 사용하고 Node.js v4, v5, v6은 OpenSSL v1.0.2를 사용합니다. nodejs.org와 그 외 많이 사용하는 배포처의 릴리스는 정적으로 컴파일되기 때문에 사용 중인 모든 릴리스 라인은 이번 업데이트에 영향을 받습니다.

현재 상황에서는 비밀 유지를 위해서 이번 결함의 자세한 내용을 밝혀지지 않았고 Node.js 사용자에게 어떤 영향이 있는지도 알지 못합니다. 그래서 다음의 과정에 따라 진행할 예정입니다.

OpenSSL 릴리스 후 대략 24시간 이내에 우리 crypto 팀에서 OpenSSL 릴리스에 관해서 Node.js 사용자의 영향도를 평가할 것입니다. 이 평가는 사용 중인 릴리스 라인에 따라 다양할 수 있고 그 내용은 이 글에 올릴 것입니다.

영향도 평가 과정의 일부로 영향도를 고려해서 각 릴리스 라인의 릴리스 계획을 발표할 것입니다. 5월 3일 화요일 이후 Node.js v0.10, v0.12, v4, v5, v6에 중요한 업데이트가 있을 수 있으므로 준비하길 바랍니다. 5월 5일 목요일이나 그 이후에 업그레이드가 필요할 수 있습니다.

Node.js v5는 6월까지 지원될 것이므로 이번 릴리스에 포함될 것입니다.

OpenSSL 릴리스 이후 대략 24시간 이내에 영향도 평가와 릴리스 시기에 대한 자세한 내용을 올릴 것이므로 nodejs-sec 구글 그룹을 주의 깊게 보기 바랍니다. https://groups.google.com/forum/#!forum/nodejs-sec

연락처와 차기 업데이트

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

Node.js 취약점에 대해 보고하고 싶다면 security@nodejs.org로 연락 주세요.

보안 취약점과 보안과 관련된 릴리스에 대한 최신 정보를 받고 싶다면 https://groups.google.com/forum/#!forum/nodejs-sec에서 약간의 공지만 올라오는 nodejs-sec 메일링 리스트를 구독하기 바랍니다. 프로젝트는 nodejs GitHub 조직에서 관리하고 있습니다.

(2016년 5월 4일 갱신됨) OpenSSL 영향 평가

우리의 crypto 팀(Ben Noordhuis, Shigeki Ohtsu, Fedor Indutny)에서 이번 주의 OpenSSL 릴리스 1.0.2h1.0.1t에서 처리한 결함을 분석했습니다. 이 분석 결과는 아래에 나와 있습니다.

보안을 보장하려고 새로운 버전의 OpenSSL을 포함해서 모든 릴리스 라인의 새로운 버전을 이번 주에 릴리스할 것입니다. 모든 릴리스가 완료되면 이 글에 올릴 예정입니다. UTC 기준 5월 5일 목요일 이후에 릴리스할 것으로 예상합니다.

CVE-2016-2107: AES-NI CBC MAC 검사의 패딩 오라클

연결이 AES-CBC 암호를 사용하고 서버가 AES-NI를 지원하는 Intel CPU에서 돌아가고 있을 때 중간자(MITM, man-in-the-middle) 공격자가 트래픽을 복호화하려고 패딩 오라클 공격을 할 수 있습니다. 이는 TLS 서버의 일반적인 구성입니다.

OpenSSL 프로젝트는 심각도가 높은 취약점으로 분류했습니다.

평가: Node.js의 모든 버전은 이 취약점에 영향을 받습니다.

CVE-2016-2105: EVP_EncodeUpdate 오버플로

바이너리 데이터의 Base64 인코딩에 사용하는 OpenSSL EVP_EncodeUpdate() 함수에서 오버플로가 발생할 수 있습니다. 오버플로를 일으키려면 공격자가 대량의 입력데이터를 보낼 수 있어야 합니다.

Node.js는 SPKAC 인증서 서명 요청에서 crypto.Certificate#exportPublicKey()를 호출할 때 내부적으로 EVP_EncodeUpdate()를 사용합니다. 취약점이 동작하려면 애플리케이션에서 사용자가 제공한 데이터를 이 메서드에 전달해야 합니다. 이 메서드는 Node.js v0.12부터 사용 가능합니다.

OpenSSL 프로젝트는 심각도가 낮은 취약점으로 분류했습니다.

  • Node.js v0.10은 영향을 받지 않습니다.
  • Node.js v0.12, v4, v5, v6은 영향을 받습니다.

CVE-2016-2108: ASN.1 인코더에서 메모리 변조

평가: Node.js의 모든 버전은 이 취약점에 영향을 받지 않습니다.

CVE-2016-2106: EVP_EncryptUpdate 오버플로

평가: Node.js의 모든 버전은 이 취약점에 영향을 받지 않습니다.

CVE-2016-2109: ASN.1 BIO 과도한 메모리 할당(CVE-2016-2109)

평가: Node.js의 모든 버전은 이 취약점에 영향을 받지 않습니다.

CVE-2016-2176: EBCDIC 오버리드(overread)

평가: Node.js의 모든 버전은 이 취약점에 영향을 받지 않습니다.