🇰🇷 한글 설명
python-engineio 4.13.2 미만 버전에서 하트비트 메커니즘을 악용하여 불필요한 백그라운드 스레드를 생성할 수 있는 취약점이 존재합니다. 공격자는 이를 통해 동기식 서버의 자원을 고갈시켜 서비스 거부(DoS) 상태를 유발할 수 있습니다. 4.13.2 버전에서는 인증된 클라이언트에 대해서만 스레드를 생성하고 중복 생성을 방지하도록 수정되었습니다.
💡 쉬운 설명
서버에 가짜 신호를 계속 보내서 서버가 감당할 수 없을 만큼 많은 일꾼(스레드)을 만들게 유도하는 공격입니다. 이로 인해 서버가 과부하에 걸려 정상적인 서비스를 제공하지 못하게 될 수 있습니다.
🇺🇸 원문 (English)
python-engineio is a Python implementation of the Engine.IO realtime client and server. Prior to version 4.13.2, an attacker can cause the creation of unnecessary background threads in the python-engineio server by exploiting the heartbeat mechanism, which launches a thread when a new connection is received, and when the client sends a PONG packet. This issue primarily affects synchronous servers. Asynchronous servers allocate background tasks instead of physical threads, which are lightweight and less likely to cause denial of service. However, the fix that was implemented was also applied to the asynchronous case. Version 4.13.2 addresses this issue as follows: The initial background thread (or async task( for heartbeat management is only launched if a client passes authentication in the `connect` handler; and the server now ensures that there is only one background heatbeat thread (or async task) per client at a given point in time. Out of sequence PONG packets are now discarded when an active heartbeat thread is already running.
📍 영향받는 시스템
python-engineio versions prior to 4.13.2
⚔️ 공격 벡터
하트비트 메커니즘을 악용하여 인증되지 않은 상태에서 다수의 PONG 패킷을 전송함으로써 백그라운드 스레드 생성 유도
🛡️ 대응 방법
python-engineio를 4.13.2 이상의 버전으로 업데이트
🔧 검증 코드
출력된 버전 번호가 4.13.2 미만인지 확인하여 취약 여부를 판단합니다.
pip show python-engineio | grep Version