블로그 | NGINX

Imperva HTTP/2 취약점 보고서 및 NGINX

NGINX-F5-수평-검정-유형-RGB의 일부
오웬 개렛 썸네일
오웬 개렛
2016년 8월 5일 게시

인터넷 보안 회사인 Imperva는 8월 3일 HTTP/2 프로토콜의 잠재적인 보안 취약점 4개를 발표하고 , 이러한 취약점에 대해 여러 웹 서버를 평가하는 자세한 보고서를 발표했습니다.

(Imperva 보고서 19페이지의) 표에서 볼 수 있듯이, NGINX 1.9.9는 Imperva의 테스트에서 비교적 좋은 성능을 보였으며, 4가지 잠재적 취약점 중 3개에 영향을 받지 않았습니다. 나머지 취약점인 "Slow Read"를 악용하려는 시도로 인해 NGINX에서 리소스 누출이 발생했고 궁극적으로 HTTP/2 서비스에 대한 서비스 거부 공격이 가능해졌습니다.

주요 웹 서버에서 노출된 취약점

해당 오류는 NGINX에 보고되었고 NGINX 1.9.12 및 NGINX Plus R9 릴리스에서 즉시 해결되었습니다. Imperva에서 설명한 잠재적 공격에 대해 NGINX Plus, NGINX 오픈 소스 '메인라인' 또는 NGINX 오픈 소스 '안정적'을 포함한 현재 버전의 NGINX 소프트웨어 중 어느 것도 취약하지 않다는 사실을 확인하게 되어 기쁩니다.

HTTP/2를 구현했고 NGINX 1.9.12 또는 NGINX Plus R9 이전 버전의 소프트웨어를 사용하고 있다면 소프트웨어를 업데이트하세요. HTTP/2는 복잡하고 비교적 새로운 프로토콜이므로 항상 최신 소프트웨어 버전을 실행하는 것이 좋습니다.

NGINX 및 NGINX Plus 튜닝에 대한 모범 사례를 검토해 보시기 바랍니다. 기본 Linux 구성의 튜닝은 매우 보수적인 경우가 많으며, 일부 매개변수를 변경하면 NGINX 또는 NGINX Plus 시스템의 용량을 늘릴 수 있습니다.

문제

2016년 8월 현재 HTTP/2는 전체 웹사이트의 약 9% 에서 사용되고 있으며, 여기에는 Facebook, Google, Wikipedia와 같은 인기 사이트도 포함됩니다. NGINX 및 NGINX Plus를 사용하는 콘텐츠 전송 네트워크(CDN) 제공자는 종종 제품의 일부로 HTTP/2를 포함합니다.

HTTP/2의 복잡한 설계로 인해 연구자들이 설계나 구현상의 약점을 찾기 위해 탐색할 수 있는 가능성이 많습니다. Imperva 보고서는 HTTP/2의 네 가지 잠재적인 취약점을 설명합니다.

  • Apache HTTP Server 2.4.17 및 2.4.18에 영향을 미치는 Slow Read 공격 (CVE-2016-1546) 이는 NGINX에 영향을 미치는 4가지 취약점 중 유일한 것입니다. 보고서 11페이지를 참조하세요. 국가 취약점 데이터베이스(NVD) 목록은 CVE-2016-1546 입니다.
  • HTTP/2 스트림 멀티플렉싱 (CVE-2016-0150)Microsoft Windows 10 Gold 및 1511에 영향을 미칩니다. NVD 목록은 CVE-2016-0150 입니다.
  • 종속성 및 우선순위nghttpd 1.7.0 이전 버전 및 Apache HTTP Server 2.4.18 및 이전 버전에 영향을 미칩니다. 보고서는 해당 취약점이 "더 일반적인 메모리 정리 문제 (CVE-2015-8659) 의 일부로" nghttpd 1.7.0에서 수정되었다고 명시합니다. NVD 목록은 (CVE-2015-8659) 입니다.
  • HPACK Bomb (CVE-2016-1544CVE-2016-2525)nghttpd 1.7.1 이전 버전과 Wireshark 2.0.2 및 1.12.10 이전 버전에 영향을 미칩니다. NVD 목록은 CVE-2016-2525 이고, CVE-2016-1544 목록은 예약됨으로 표시되어 아무런 정보도 포함하지 않습니다.

Imperva에서 다양한 웹 서버를 테스트하여 취약점이 있는지 확인했을 때, "Slow Read" 테스트의 변형을 통해 NGINX 및 NGINX Plus에서 리소스 누수 버그가 드러났습니다. 이러한 리소스 누출은 결국 서비스 거부로 이어졌습니다.

NGINX 및 NGINX Plus는 일반적으로 "Slow Read" 공격(종종 Slowloris 라고 함)에 취약하지 않습니다. Imperva의 테스트 사례는 이전에 보고된 리소스 누출 버그를 분리하는 데 도움이 되었습니다. 그런 다음 추가적인 시간 초과 및 보호 기능을 추가하여 HTTP/2 리소스가 올바르게 닫히고 해제되도록 함으로써 이 오류 사례를 해결할 수 있었으며, 이러한 조치가 효과적인지 확인할 수 있었습니다.

완화

특히 HTTP/2를 구현했고 NGINX 1.9.11 이하 또는 NGINX Plus R8 이하를 사용하는 경우 최신 버전의 NGINX 및 NGINX Plus로 업그레이드하는 것을 적극 권장합니다. Imperva의 테스트 사례에서 노출된 리소스 누출 버그는 NGINX 1.9.12 이상 또는 NGINX Plus R9 이상에서는 나타나지 않습니다.

NGINX와 NGINX Plus는 Imperva 보고서에 설명된 관련 취약성을 해결하는 효과적인 방법을 제공하며, 두 제품 중 하나를 최신 릴리스로 업그레이드하면 취약성이 완전히 제거됩니다.

사이트의 취약성을 전반적으로 줄이려면 DDoS 공격 완화 에 대한 게시물에 설명된 조치를 취하는 것이 좋습니다. 여기에는 다음이 포함됩니다.

  • 단일 사용자의 요청 속도 제한( limit_req 지시어)
  • 단일 클라이언트가 열 수 있는 연결 수 제한( limit_conn 지시어)
  • 더욱 공격적인 시간 초과로 연결을 더 빠르게 닫습니다.

궁금한 점이 있으면 이 게시물에 댓글을 남겨주세요. NGINX Plus 구독자이신 경우 지원팀 에 문의해 주시기 바랍니다.


"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."