🇰🇷 한글 설명
Twisted 프레임워크의 telnet 모듈(twisted.conch.telnet.Telnet.dataReceived)이 서브네고시에이션 데이터의 최대 길이를 제한하지 않아, 인증 전 공격자가 종료자(IAC SE)를 보내지 않고 버퍼를 무한히 키울 수 있습니다. 이로 인해 메모리 고갈이 발생하여 프로세스와 그 위에서 동작하는 모든 서비스가 종료될 수 있습니다. 26.10.0rc1 버전에서 수정되었습니다.
💡 쉬운 설명
Twisted로 만든 인터넷 서비스에 로그인 전 누구나 특정 데이터를 계속 보내 서버의 메모리를 가득 채울 수 있습니다. 그 결과 서버 프로그램이 멈추거나 꺼질 수 있습니다.
🇺🇸 원문 (English)
Twisted is an event-based framework for internet applications, supporting Python 3.6+. Prior to 26.10.0rc1, twisted.conch.telnet.Telnet.dataReceived appends every byte received after IAC SB to a persistent subnegotiation buffer until IAC SE is received, without applying a maximum length. Telnet option negotiation occurs before authentication, so an unauthenticated peer can omit the terminator and continuously grow the buffer. The resulting memory exhaustion can terminate the process and every service it hosts. This issue is fixed in version 26.10.0rc1.
📍 영향받는 시스템
Twisted 26.10.0rc1 미만 버전을 사용하는 Python 애플리케이션 (특히 twisted.conch telnet 서버 기능 사용 시)
⚔️ 공격 벡터
인증 없이 telnet 연결을 맺은 뒤 IAC SB 이후 IAC SE 종료자를 보내지 않고 데이터를 지속적으로 전송하여 버퍼 메모리를 고갈시킴
🛡️ 대응 방법
Twisted를 26.10.0rc1 이상으로 업그레이드하고, 불필요한 telnet 서비스는 비활성화하거나 방화벽으로 접근을 제한
🔧 검증 코드
출력된 Version 값이 26.10.0rc1 미만이면 취약하며, 이상이면 수정된 버전입니다 (명령 결과가 없으면 Twisted가 설치되지 않은 상태입니다).
pip show twisted 2>/dev/null | grep -i version