REPRO-2026-00077: Verified Repro With Script Download
REPRO-2026-00077: GNU InetUtils telnetd Remote Authentication Bypass
REPRO-2026-00077 is verified against inetutils · gnu. Affected versions: 1.9.3 - 2.7. Vulnerability class: Auth Bypass. This critical reproduction includes runnable sandbox proof, artifacts, and a plain-text agent view under REPRO-2026-00077.
What Is REPRO-2026-00077?
REPRO-2026-00077 reproduces a critical remote authentication bypass in GNU InetUtils telnetd (versions 1.9.3 through 2.7), where the daemon accepts the client-supplied USER environment variable and passes it unsanitized to login(1). Pruva reproduced it (reproduction REPRO-2026-00077).
REPRO-2026-00077 Severity
REPRO-2026-00077 is rated critical severity.
Critical — the most severe class — typically remotely exploitable with severe impact. Treat as an emergency.
Affected inetutils Versions
inetutils · gnu versions 1.9.3 - 2.7 are affected.
How to Reproduce REPRO-2026-00077
pruva-verify REPRO-2026-00077 curl -O https://pruva.dev/api/v1/reproductions/REPRO-2026-00077/artifacts/reproduction_steps.sh && chmod +x reproduction_steps.sh && ./reproduction_steps.sh Proof of Reproduction for REPRO-2026-00077
Reproduced by Pruva's autonomous agents — 300 tool calls over 36 min. Full root-cause analysis and the complete transcript are below.
How the agent worked
Root Cause and Exploit Chain for REPRO-2026-00077
telnetd passes USER environment variable directly to login(1) without validation. When USER begins with -f root, login interprets -f as a flag to skip authentication.
REPRO-2026-00077 Reproduction Transcript
The agent's step-by-step process — every tool call, every handoff, the moment the exploit fired.
Full session Replay every step — scrub the timeline or play it back.
ls -latotal 29 drwxr-xr-x 6 root root 4096 Jan 21 08:45 . drwxr-xr-x 4 root root 4096 Jan 21 08:45 .. drwxr-xr-x 3 root root 4096 Jan 21 08:45 artifacts drwxr-xr-x 2 root root 4096 Jan 21 08:45 coding -rw-r--r-- 1 root root 697 Jan 21 08:45 handoffs.jsonl drwxr-xr-x 2 root root 4096 Jan 21 08:45 logs drwxr-xr-x 2 root root 4096 Jan 21 08:45 repro
{"output":"{\"returncode\": 0, \"stdout\": \"total 29\\ndrwxr-xr-x 6 root root 4096 Jan 21 08:45 .\\ndrwxr-xr-x 4 root root 4096 Jan 21 08:45 ..\\ndrwxr-xr-x 3 root root 4096 Jan 21 08:45 artifacts\\ndrwxr-xr-x 2 root ro"}ls -la /home/user/pruva/artifacts/runs/inetutils-telnetd-auth-bypass/20260121-084502/repototal 8 drwxr-xr-x 2 root root 4096 Jan 21 08:45 . drwxr-xr-x 4 root root 4096 Jan 21 08:45 ..
{"output":"{\"returncode\": 0, \"stdout\": \"total 8\\ndrwxr-xr-x 2 root root 4096 Jan 21 08:45 .\\ndrwxr-xr-x 4 root root 4096 Jan 21 08:45 ..\\n\", \"stderr\": \"\", \"cwd\": \"/home/user/pruva/artifacts/runs/inetutils-telnet"}ls -la /home/user/pruva/artifacts/runs/inetutils-telnetd-auth-bypass/20260121-084502/inetutils-telnetd-auth-bypass/artifacts/preppedtotal 8 drwxr-xr-x 2 root root 4096 Jan 21 08:45 . drwxr-xr-x 3 root root 4096 Jan 21 08:45 ..
{"output":"{\"returncode\": 0, \"stdout\": \"total 8\\ndrwxr-xr-x 2 root root 4096 Jan 21 08:45 .\\ndrwxr-xr-x 3 root root 4096 Jan 21 08:45 ..\\n\", \"stderr\": \"\", \"cwd\": \"/home/user/pruva/artifacts/runs/inetutils-telnet"}git --versiongit version 2.43.0
python3 --versionPython 3.11.14
iduid=0(root) gid=0(root) groups=0(root)
{"output":"{\"returncode\": 0, \"stdout\": \"uid=0(root) gid=0(root) groups=0(root)\\n\", \"stderr\": \"\", \"cwd\": \"/home/user/pruva/artifacts/runs/inetutils-telnetd-auth-bypass/20260121-084502/inetutils-telnetd-auth-bypas"}git clone https://codeberg.org/inetutils/inetutils.git /tmp/inetutilsCloning into '/tmp/inetutils'...
{"output":"{\"returncode\": 0, \"stdout\": \"\", \"stderr\": \"Cloning into '/tmp/inetutils'...\\n\", \"cwd\": \"/home/user/pruva/artifacts/runs/inetutils-telnetd-auth-bypass/20260121-084502/inetutils-telnetd-auth-bypass\"}"}git -C /tmp/inetutils tag -l | tail -n 20inetutils-1_9_1_100 inetutils-1_9_2 inetutils-1_9_3 inetutils-1_9_4 make-3-75-91 make-3-75-92 make-3-75-93 make-3-76
{"output":"{\"returncode\": 0, \"stdout\": \"inetutils-1_9_1_100\\ninetutils-1_9_2\\ninetutils-1_9_3\\ninetutils-1_9_4\\nmake-3-75-91\\nmake-3-75-92\\nmake-3-75-93\\nmake-3-76\\nmake-3-76-1\\nv1.9.4.90\\nv1.9.4.91\\nv2.0\\nv2.1\\"}apt-get updateHit:1 https://storage.googleapis.com/bazel-apt stable InRelease Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB] Hit:3 http://archive.ubuntu.com/ubuntu noble InRelease Get:4 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB] Hit:5 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu noble InRelease Hit:6 https://ppa.launchpadcontent.net/ondrej/php/ubuntu noble InRelease Get:7 http://archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB] Get:8 http://archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Packages [35.9 kB]
{"output":"{\"returncode\": 0, \"stdout\": \"Hit:1 https://storage.googleapis.com/bazel-apt stable InRelease\\nGet:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]\\nHit:3 http://archive.ubuntu.com"}apt-get install -y build-essential autoconf automake libtool pkg-config bison flex