http2 DDOS 공격

최근 구글서비스와 클라우드로 다량의 ddos공격이 발생하였다고 합니다.

해당 공격은 http2를 이용한 공격이였으며, 공격규모는 매우컸으며, 초당 3억9000만 요청을 초과했다고 합니다.

>보안 취약점(CVE-2023-44487)

관련 링크 : https://cloud.google.com/blog/products/identity-security/how-it-works-the-novel-http2-rapid-reset-ddos-attack?hl=en 

 

How it works: The novel HTTP/2 ‘Rapid Reset’ DDoS attack | Google Cloud Blog

Learn how the new DDoS attack technique Rapid Reset works, and how to mitigate it

cloud.google.com

https://www.nginx.com/blog/http-2-rapid-reset-attack-impacting-f5-nginx-products/

 

HTTP/2 Rapid Reset Attack Impacting F5 NGINX Products - NGINX

Update your NGINX configuration to mitigate a possible denial-of-service attack implemented on the server-side portion of the HTTP/2 specification.

www.nginx.com

https://tomcat.apache.org/security-9.html#Fixed_in_Apache_Tomcat_9.0.81

 

Apache Tomcat® - Apache Tomcat 9 vulnerabilities

This page lists all security vulnerabilities fixed in released versions of Apache Tomcat 9.x. Each vulnerability is given a security impact rating by the Apache Tomcat security team — please note that this rating may vary from platform to platform. We al

tomcat.apache.org

https://aws.amazon.com/ko/security/security-bulletins/AWS-2023-011/

 

CVE-2023-44487 - HTTP/2 Rapid Reset 공격

게시일: 2023년 10월 10일 오전 5시(PDT) AWS는 HTTP/2 지원 웹 서버와 관련되어 있으며 빠른 스트림 생성 및 취소로 인해 추가 부하가 발생하여 서비스 거부로 이어질 수 있는 CVE-2023-44487('HTTP/2 Rapid Reset

aws.amazon.com

https://support.microsoft.com/ko-kr/topic/2023%EB%85%84-10%EC%9B%94-10%EC%9D%BC-kb5031354-os-%EB%B9%8C%EB%93%9C-22621-2428-ecc07685-218f-4ba9-b3c8-fe2e35059aec

 

2023년 10월 10일 - KB5031354(OS 빌드 22621.2428) - Microsoft 지원

관련 주제 하이라이트  이 업데이트는 Windows 운영 체제의 보안 문제를 해결합니다.      개선 기능 이 보안 업데이트에는 업데이트 KB5030310 일부였던 개선 사항이 포함되어 있습니다(2023년 9월 2

support.microsoft.com

http2를 사용중이라면, 사용중인 웹(apache-tomcat,nginx등)에서 제공하는 패치, 대응방법을 참고하여 적용하시기 바랍니다.

추가로 이번 포스팅에선, curl을 이용하여 서비스중인 도메인이 http2를 사용하는지 체크하는 파이썬 스크립트를 작성해보겠습니다.

#!/usr/bin/env python3
import subprocess
import argparse

def main():
    parser = argparse.ArgumentParser(description='Read and print the contents of a text file.')
    parser.add_argument('file_path', help='Path to the text file to read')

    args = parser.parse_args()
    specific_text = "HTTP/2"

    try:
        with open(args.file_path, 'r') as file:
            for line in file:
                line_addhttps = "https://"+line.strip()
                line_addhttp = "http://"+line.strip()
                cmd_https = ["curl", "-I", "--http2", line_addhttps]
                cmd_http = ["curl", "-I", "--http2", line_addhttp ]
                result = subprocess.run(cmd_http, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
                stdout_text = result.stdout.decode('utf-8')
                if specific_text in stdout_text :
                    print("\033[31mhttp2 used!\033[0m")
                else:
                    print("\033[32mhttp2 not used!\033[0m")
                print(result.stdout)
                result = subprocess.run(cmd_https, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
                stdout_text = result.stdout.decode('utf-8')
                if specific_text in stdout_text :
                    print("\033[31mhttp2 used!\033[0m")
                else:
                    print("\033[32mhttp2 not used!\033[0m")

                print(result.stdout)
    except FileNotFoundError:
        print(f"File not found: {args.file_path}")

if __name__ == "__main__":
    main()

체크하는 파이썬 스크립트이며, 임의의 파일명으로 생성해주시면 됩니다.(ex,http2_check.py)

다음은 확인할 url 목록 text파일을 작성합니다.

예를 들어 alwaystest.com이라는 도메인으로 서비스중이라면 url_list.txt파일 안에 alwaytest.com을 넣주시면 됩니다.

 

#url_list.txt
#테스트 도메인입니다.
alwaystest.com

#사용방법
./http2_check.py url_list.txt
#url목록 파일을 지정하여 실행하면 됩니다. python스크립트 파일과 다른 경로에 있다면, url_list.txt 파일의 절대경로로 작성해주시면 됩니다.

 

 

'Security' 카테고리의 다른 글

리눅스에서 사용가능한 보안점검툴  (0) 2023.02.02