🇰🇷 한글 설명
NiceGUI는 Python 기반의 UI 프레임워크입니다. 버전 v2.10.0부터 3.4.1까지, 인증되지 않은 공격자가 Redis 백업 저장소를 사용하는 NiceGUI 애플리케이션에서 브라우저 탭을 반복적으로 열고 닫음으로써 Redis 연결을 소진할 수 있습니다. 연결은 절대 해제되지 않으며, Redis가 연결 제한에 도달하면 서비스가 저하됩니다. NiceGUI는 새로운 연결을 계속 수락하지만 오류는 기록되며 앱은 손상된 저장소 기능과 함께 유지됩니다. 이 문제는 버전 3.5.0에서 패치되었습니다.
💡 쉬운 설명
NiceGUI를 사용하는 애플리케이션의 Redis 연결을 공격자가 소진시킬 수 있어 서비스가 저하될 수 있습니다. 이는 Redis 연결 제한에 도달했을 때 발생합니다. 새로운 연결은 수락되지만 저장소 기능이 손상됩니다.
🇺🇸 원문 (English)
NiceGUI is a Python-based UI framework. From versions v2.10.0 to 3.4.1, an unauthenticated attacker can exhaust Redis connections by repeatedly opening and closing browser tabs on any NiceGUI application using Redis-backed storage. Connections are never released, leading to service degradation when Redis hits its connection limit. NiceGUI continues accepting new connections - errors are logged but the app stays up with broken storage functionality. This issue has been patched in version 3.5.0.
📍 영향받는 시스템
NiceGUI 버전 v2.10.0부터 3.4.1까지
⚔️ 공격 벡터
인증되지 않은 공격자가 브라우저 탭을 반복적으로 열고 닫음으로써 Redis 연결을 소진
🛡️ 대응 방법
NiceGUI를 버전 3.5.0 이상으로 업그레이드
🔧 검증 코드
이 코드는 로컬 시스템의 NiceGUI 버전을 확인하여 취약점 여부를 판단합니다. Python이 설치되어 있고, nicegui 패키지가 설치되어 있어야 합니다. 코드를 실행하기 전에 필요한 의존성은 pkg_resources입니다.
import pkg_resources
nicegui_version = pkg_resources.get_distribution('nicegui').version
if nicegui_version >= '3.5.0':
print({"result": "양호", "reason": "NiceGUI 버전이 3.5.0 이상"})
else:
print({"result": "취약", "reason": "NiceGUI 버전이 3.5.0 미만"})