최근 구글서비스와 클라우드로 다량의 ddos공격이 발생하였다고 합니다.
해당 공격은 http2를 이용한 공격이였으며, 공격규모는 매우컸으며, 초당 3억9000만 요청을 초과했다고 합니다.
>보안 취약점(CVE-2023-44487)
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
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 |
---|