[RISOLTO] no accesso ssh, causa libc6 e libtinfo (broken..)

Ottimizzazione, pulizia, gestione e manutenzione di una Debian Box
aventuri
Newbie
Newbie
Messaggi: 7
Iscritto il: 19/04/2020, 18:27

[RISOLTO] no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da aventuri »

ciao,
mi presento, sono Andrea Venturi e utilizzo Debian da tanti anni, perché è per me sempre stata una distribuzione "filosoficamente" evoluta ed "operativamente" affidabile. estremamente affidabile ed innovativa.

Utilizzo Debian come PC e come distribuzione per server che installo e gestisco poi da remoto via openvpn / ssh.

Ho anche "roba" vecchia, che per vari motivi, essendo in reti isolate e che funzionano, rimangono con distribuzioni piuttosto vecchie (e che non ritengo utile aggiornare perché fanno il loro mestiere e a cambiare le cose, a volte si "rompono"!). Capisco però che altri possono avere diverse opinioni.

A questo giro però, per colpa di una mia ingenuità, son rimasto "chiuso fuori" e sto cercando un modo per evitare una trasferta assurda (che di questi tempi è anche impossibile tecnicamente!)

Questa storia spero che possa anche essere interessante..

Stiamo parlando di una Debian 7 Wheezy (il cui ultimo uptime era di 320 giorni, quando stavo facendo la manutenzione)

Tutto è scatenato quando mi hanno connesso, per fare backup, un disco USB da 500GB ma partizionato GPT. A me francamente bastava MBR e quindi ho cercato di "tornare" indietro (anche perché il kernel è ancora un 3.2.0..) come partizione, e da internet ho visto che esiste una utilità "gdisk" che ha una opzione avanzata per "togliere" le signature GPT dal disco.

purtroppo gdisk non era installata su quella Wheezy che peraltro è finita in archive.debian.org ed adesso i pacchetti si trovano solo qua:

http://archive.debian.org/debian/dists/

A voler fare un aggiornamento "completo" chissà quanti pacchetti e quanti rischi di "instabilità" temporanea; non avendo la macchina in locale, ho cercato un approccio più conservativo possibile.

Ho scaricato il gdisk e poi ho cercato di capire quali dipendenze aveva per ridurre al minimo i pacchetti da aggiornare. Parliamo di una utility a linea di comando quindi speravo poco o niente.

La dipendenza che mi procurato i guai è stata quella delle librerie ncurses per gestire quei menu che si vedono anche nel "menuconfig" del kernel linux..

trovate qua le versioni gestire da Debian, nelle varie distro.

http://archive.debian.org/debian/pool/main/n/ncurses/

ncurses dipende da lib32tinfo

ed io sul sistema avevo questa: lib32tinfo5_5.9-10 del 27.6.2012
http://archive.debian.org/debian/pool/m ... _amd64.deb

ma gdisk richiede la: lib32tinfo5_5.9+20140913 del 13.6.2018 (chissà quale buco di sicurezza!)

http://archive.debian.org/debian/pool/m ... _amd64.deb

vabbè, scarico ed installo con dpkg questa lib in formato Deb e vado avanti col mio lavoro, tranquillo..

Un giorno dopo, vado per accedere al server in ssh e salta fuori IL PROBLEMA!
$ ssh username@serverRemoto
username@server's password:
Linux serverDebianWheezy 3.2.0-4-686-pae #1 SMP Debian 3.2.46-1+deb7u1 i686

The programs included with the Debian GNU/Linux system are free software;
...
Last login: Sat Apr 18 10:50:52 2020 from 172.30.0.1
-bash: /lib/i386-linux-gnu/i686/cmov/libc.so.6: version `GLIBC_2.15' not found (required by /lib/i386-linux-gnu/libtinfo.so.5)
Connection to localhost closed.

la autenticazione via ssh funziona
ma quando c'è il fork della shell, la libc.so.6 riconosce la presenza della libtinfo con una incompatibilità! e chiude la connessione!

e non è un problema di bash, ma anche un scp termina di brutto con lo stesso errore. son rimasto fuori dal server.

Ho anche paura che se venisse fatto un reboot, l'OS con la libc.so.6 cosi compromessa, non sarebbe in grado di ripartire.. per cui gli ho detto di non fare niente su quel server..

Ora una strada per recuperare sarebbe andare sul server con un livecd e fare in qualche maniera un downgrading della libtinfo alla vecchia versione (come poi? con chroot? con debootstrap? o direttamente a mano spacchettando la vecchia versione e cambiando file per file..)

Però mi domandavo se qualcun altro avevo visto/affrontato questo tipo di problema durante la manutenzione di un sistema Debian.. e se c'erano suggerimenti.. ovviamente sul sistema non c'è neanche il telnetd, potrei chiedere (e chiederò) di verificare se almeno da console locale si riesce ad entrare (ma son poco fiducioso..)

Con google non ho trovato tante descrizioni di problemi "simili" da cui prendere ispirazione.. e francamente non capisco perché la libc.so.6 debba pretendere/verificare una libreria "opzionale" come libtinfo (che francamente non so neanche a cosa serva..) se quest'ultima è una dipendenza di libncurses! mah..

Mi sa che dovrò spendere un po' di tempo a documentarmi..

Grazie per l'attenzione, per chi è arrivato fin qua in fondo!
Avatar utente
mark
Hero Member
Hero Member
Messaggi: 871
Iscritto il: 10/01/2007, 16:53

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da mark »

complimenti bel guaio! ;D
comunque GPT è supportato dalla versione 2.5.45
CONFIG_EFI_PARTITION: EFI GUID Partition support

poi di che dimensione è il disco? se maggiore di 2TB usare gpt è necessario per sfruttarlo al 100%
edit: ok è 500gb ;D

in ogni caso non vedo soluzioni alternative al "viaggetto", spero di sbagliarmi, a meno che da remoto non riescano ad aiutarti
Aki
Hero Member
Hero Member
Messaggi: 9970
Iscritto il: 27/12/2007, 16:59

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da Aki »

Ciao e benvenuto nel forum.
aventuri ha scritto:Questa storia spero che possa anche essere interessante..
In effetti, nella sua "drammaticità", il racconto che ci hai fatto permette di trarre molti spunti interessanti e di approfondire alcuni argomenti.
aventuri ha scritto:Stiamo parlando di una Debian 7 Wheezy (il cui ultimo uptime era di 320 giorni, quando stavo facendo la manutenzione)
Complimenti a Debian Wheezy per l'uptime: questo è un esempio a favore dei sostenitori della tesi che, in assenza di vulnerabilità di sicurezza, i kernel meno recenti sono più stabili di quelle più recenti.
aventuri ha scritto:sul sistema avevo questa: lib32tinfo5_5.9-10 del 27.6.2012

Codice: Seleziona tutto

http://archive.debian.org/debian/pool/main/n/ncurses/lib32tinfo5_5.9-10_amd64.deb
ma gdisk richiede la: lib32tinfo5_5.9+20140913 del 13.6.2018 (chissà quale buco di sicurezza!)

Codice: Seleziona tutto

http://archive.debian.org/debian/pool/main/n/ncurses/lib32tinfo5_5.9+20140913-1+deb8u3_amd64.deb
Un bel salto dal 2012 al 2018 :o
aventuri ha scritto:

Codice: Seleziona tutto

$ ssh username@serverRemoto
username@server's password: 
Linux serverDebianWheezy 3.2.0-4-686-pae #1 SMP Debian 3.2.46-1+deb7u1 i686

The programs included with the Debian GNU/Linux system are free software;
...
Last login: Sat Apr 18 10:50:52 2020 from 172.30.0.1
[b]-bash: /lib/i386-linux-gnu/i686/cmov/libc.so.6: version `GLIBC_2.15' not found (required by /lib/i386-linux-gnu/libtinfo.so.5)[/b]
Connection to localhost closed.
la autenticazione via ssh funziona ma quando c'è il fork della shell, la libc.so.6 riconosce la presenza della libtinfo con una incompatibilità! e chiude la connessione!
Temo proprio che l'errore sopra indicato si verifichi all'avvio della shell bash (/bin/bash) sul server remoto a seguito della richiesta del client ssh: il programma /bin/bash non riesce ad avviarsi perché il linker dinamico (ld.so) quando cerca le librerie dinamiche ad esso collegate trova libtinfo.so.5 ed in questa, quando trova il simbolo GLIBC_2.15, lo cerca nella libreria libc.so.6 e non lo trova. Quindi, l'avvio della shell bash fallisce essendo la libreria dinamica libtinfo incompatibile a livello binario (ai fini del link dinamico) con la libreria libc.
aventuri ha scritto:e non è un problema di bash, ma anche un scp termina di brutto con lo stesso errore.
Il comando scp invia il comando di copia tramite client ssh, che a sua volte apre una shell sul server (che in questo caso fallisce): vedi il codice sorgente del comando scp che si occupa di inviare il comando al server via ssh [0].
aventuri ha scritto:Ho anche paura che se venisse fatto un reboot, l'OS con la libc.so.6 cosi compromessa, non sarebbe in grado di ripartire.. per cui gli ho detto di non fare niente su quel server..
Con la shell bash fuori uso potresti avere problemi nell'avvio di molti servizi e, comunque, dopo il riavvio non avresti in ogni caso disponibile una shell bash funzionante.
aventuri ha scritto:Ora una strada per recuperare sarebbe andare sul server con un livecd e fare in qualche maniera un downgrading della libtinfo alla vecchia versione (come poi? con chroot? con debootstrap? o direttamente a mano spacchettando la vecchia versione e cambiando file per file..)
Temo che, come ha anticipato chi mi ha preceduto, l'unico modo sia accedere al computer "in locale", nel modo che consideri più agevole. Per bypassare la libreria danneggiata, potresti installare manualmente una nuova bash creando un link simbolico /bin/bash che rimanda all'eseguibile /bin/bash-static prelevato manualmente dal pacchetto bash-static [1] che è stato creato proprio per prevenire di incorrere in questo tipo di problematiche. Questo ti consentirebbe di poter aver una shell funzionante per poter eseguire le eventuali ulteriori attività di manutenzione.
aventuri ha scritto:Grazie per l'attenzione, per chi è arrivato fin qua in fondo!
Grazie a te per l'accurata descrizione. Tienici aggiornati sui progressi.

[0] https://sources.debian.org/src/openssh/ ... cp.c/#L307
[1] http://archive.debian.org/debian/pool/main/b/bash/
⢀⣴⠾⠻⢶⣦⠀
⣾⠁⢠⠒⠀⣿⡁ Debian - The universal operating system
⢿⡄⠘⠷⠚⠋⠀ https://www.debian.org
⠈⠳⣄⠀
Aki
Hero Member
Hero Member
Messaggi: 9970
Iscritto il: 27/12/2007, 16:59

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da Aki »

@aventuri: hai aggiornamenti ?

EDIT: ad ogni buon conto, memore della tua esperienza, oggi ho colto l'occasione di installare sulla mia macchina Debian il pacchetto bash-static. ;)
⢀⣴⠾⠻⢶⣦⠀
⣾⠁⢠⠒⠀⣿⡁ Debian - The universal operating system
⢿⡄⠘⠷⠚⠋⠀ https://www.debian.org
⠈⠳⣄⠀
aventuri
Newbie
Newbie
Messaggi: 7
Iscritto il: 19/04/2020, 18:27

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da aventuri »

Aki ha scritto:@aventuri: hai aggiornamenti ?

EDIT: ad ogni buon conto, memore della tua esperienza, oggi ho colto l'occasione di installare sulla mia macchina Debian il pacchetto bash-static. ;)
eccomi di ritorno, scusate il ritardo!

intanto grazie per l'attenzione ed i suggerimenti.

il server incredibilmente continua a fare il suo lavoro con la versione di libreria libtinfo che è in memoria, per fortuna è anche sotto UPS

ovviamente, stiamo lavorando per mettere su un server clone di backup (che era PROPRIO lo scopo del disco esterno "GPT") e quindi "spero" che se si rimpiazza il servizio sull'altro server, poi eventualmente mi faccio mandare il disco "vecchio" per ripristinarlo da me con calma..

molto interessante il discorso della bash-static che non conoscevo e che vedrò di approfondire (si vede che il problema è sentito.. anche in altri contesti)

il fatto che bash NON vada per quel simbolo mancante dalla glibc presente, mi fa presumere che tutti (o molti) binari dinamici si "schianterebbero" per lo stesso motivo; chissà se si potesse "iniettare" in qualche maniera 'sto simbolo, ma purtroppo non ho console rimaste aperte!

a dir la verità avrei un po' di terminali "screen detached" con sotto-processi in esecuzione.. peccato solo che screen, da quel che mi risulta, non è accedibile da rete, ma solo quando si è loggati e si fa un re-attach allo screen di interesse..

insomma la situazione rimane "appesa" finché non mettono su un server alternativo (avrei voluto cavarmela con un clone di wheezy, ma a questo punto parto direttamente con Debian 10, sperando che l'applicazione (di nicchia) non si lamenti troppo di tutte le versioni aggiornate degli appliicativi (è un server web LAMP.. sarà cambiato il mondo ! :-| )

vi tengo informati, quando rimetto le mani sul disco orginale per vedere di trovare come recuperare anche quello
aventuri
Newbie
Newbie
Messaggi: 7
Iscritto il: 19/04/2020, 18:27

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da aventuri »

umh. ora che mi ci rimetto a pensare, in realtà il problema deve essere proprio di chi usa ncurses

tant'è che c'è gente che si domanda perché bash debba avere proprio quella dipendenza alle libtinfo5!

https://unix.stackexchange.com/question ... to-ncurses

purtroppo da li leggo che anche "screen" ha la stessa dipendenza , per "colpa" della funzionalità "termcap" (che mi riporta alla notte dei tempi..); comunque molto interessante l'excursus che si legge li sopra.

ora la mia idea è di provare quindi a lanciare con ssh un comando diverso, un altro terminale (od equivalente..) che mi possa dare un'accesso "interattivo" (od al limite andare a "sovrascrivere" la nuova libtinfo5 con la vecchia!

anche perché ho visto che ssh ha un parametro -N che non lancia la shell (utilizzato quando ssh viene usato per fare "port forward"..)

sembra che qualche possibilità ci potrebbe essere.. vediamo se almeno "echo" mi torna indietro..
Aki
Hero Member
Hero Member
Messaggi: 9970
Iscritto il: 27/12/2007, 16:59

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da Aki »

aventuri ha scritto:la mia idea è di provare quindi a lanciare con ssh un comando diverso, un altro terminale (od equivalente..) che mi possa dare un'accesso "interattivo" (od al limite andare a "sovrascrivere" la nuova libtinfo5 con la vecchia!
Ne dubito, purtroppo, salvo che la configurazione del sistema operativo non abbia un "buco" da qualche parte.
⢀⣴⠾⠻⢶⣦⠀
⣾⠁⢠⠒⠀⣿⡁ Debian - The universal operating system
⢿⡄⠘⠷⠚⠋⠀ https://www.debian.org
⠈⠳⣄⠀
aventuri
Newbie
Newbie
Messaggi: 7
Iscritto il: 19/04/2020, 18:27

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da aventuri »

Aki ha scritto:
aventuri ha scritto:la mia idea è di provare quindi a lanciare con ssh un comando diverso, un altro terminale (od equivalente..) che mi possa dare un'accesso "interattivo" (od al limite andare a "sovrascrivere" la nuova libtinfo5 con la vecchia!
Ne dubito, purtroppo, salvo che la configurazione del sistema operativo non abbia un "buco" da qualche parte.
e' talmente "vecchia" come installazione che di "exploit" ce ne saranno un sacco internamente per scalare da utente a root.

ma l'unico "esterno" che mi ricordi è "shell shock" di qualche anno fa.. (e fu piuttosto drammatico)

https://security.stackexchange.com/ques ... ploitation

solo che in questo specifico caso, proprio la bash exploitata non riuscirebbe ad andare in esecuzione!! (a parte che ovviamente questo server ha IP statico e DHCP "client daemon" disattivo..)
Aki
Hero Member
Hero Member
Messaggi: 9970
Iscritto il: 27/12/2007, 16:59

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da Aki »

aventuri ha scritto:
Aki ha scritto:
aventuri ha scritto:la mia idea è di provare quindi a lanciare con ssh un comando diverso, un altro terminale (od equivalente..) che mi possa dare un'accesso "interattivo" (od al limite andare a "sovrascrivere" la nuova libtinfo5 con la vecchia!
Ne dubito, purtroppo, salvo che la configurazione del sistema operativo non abbia un "buco" da qualche parte.
e' talmente "vecchia" come installazione che di "exploit" ce ne saranno un sacco internamente per scalare da utente a root.

ma l'unico "esterno" che mi ricordi è "shell shock" di qualche anno fa.. (e fu piuttosto drammatico)

https://security.stackexchange.com/ques ... ploitation

solo che in questo specifico caso, proprio la bash exploitata non riuscirebbe ad andare in esecuzione!! (a parte che ovviamente questo server ha IP statico e DHCP "client daemon" disattivo..)
Se un inguaribile ottimista ;)
⢀⣴⠾⠻⢶⣦⠀
⣾⠁⢠⠒⠀⣿⡁ Debian - The universal operating system
⢿⡄⠘⠷⠚⠋⠀ https://www.debian.org
⠈⠳⣄⠀
aventuri
Newbie
Newbie
Messaggi: 7
Iscritto il: 19/04/2020, 18:27

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da aventuri »

Aki ha scritto:@aventuri: hai aggiornamenti ?

EDIT: ad ogni buon conto, memore della tua esperienza, oggi ho colto l'occasione di installare sulla mia macchina Debian il pacchetto bash-static. ;)
tornando invece alla "bash-static", l'ho installata sul mio PC ed in effetti non è molto più "voluminosa"!
andrea@av-workstation:~/$ ls -l /bin/bash*
-rwxr-xr-x 1 root root 1168776 Apr 18 2019 /bin/bash
-rwxr-xr-x 1 root root 2128040 Apr 18 2019 /bin/bash-static
e le dipendenze dalle librerie non ci sono proprio.. compresa la libc6 (inglobata)
andrea@av-workstation:~/$ ldd /bin/bash
linux-vdso.so.1 (0x00007ffeeeb65000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f0a4161e000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0a41619000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0a41458000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0a417c0000)
andrea@av-workstation:~/$ ldd /bin/bash-static
not a dynamic executable
direi che installarla ed utilizzarla dovrebbe essere una buona pratica più nota!

probabilmente potrei prendere proprio questo "binario amd64", e con un "liveCD" andare a sostituire quello presente nel server "scassato" sotto /bin/bash per almeno rimettere la macchina in condizioni di rebootare decentemente!

per far le cose da remoto, con un minimo di assistenza sul campo mi servirebbe che sul posto, potessero fare reboot con liveCD in rescue mode che avesse già un ssh server che risponde. vi risulta che il netinst di Debian in rescue mode abbia anche il ssh daemon attivo?
Avatar utente
mark
Hero Member
Hero Member
Messaggi: 871
Iscritto il: 10/01/2007, 16:53

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da mark »

fai attenzione che il live cd dovrebbe anzitutto riconoscere il controller del disco fisso, per accedere al filesystem

poi debian dovrebbe avere installato di default anche la shell dash e forse potresti trovare anche busybox-static, verifica se possono essere utili al tuo caso
Aki
Hero Member
Hero Member
Messaggi: 9970
Iscritto il: 27/12/2007, 16:59

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da Aki »

aventuri ha scritto:per far le cose da remoto, con un minimo di assistenza sul campo mi servirebbe che sul posto, potessero fare reboot con liveCD in rescue mode che avesse già un ssh server che risponde. vi risulta che il netinst di Debian in rescue mode abbia anche il ssh daemon attivo?
No, le immagini iso di default non hanno un server ssh attivo, ma se lo desideri puoi crearti da solo un’immagine ISO dell'installer con queste caratteristiche (per esempio, vedi https://lists.debian.org/debian-italian ... 00217.html).
⢀⣴⠾⠻⢶⣦⠀
⣾⠁⢠⠒⠀⣿⡁ Debian - The universal operating system
⢿⡄⠘⠷⠚⠋⠀ https://www.debian.org
⠈⠳⣄⠀
Avatar utente
mark
Hero Member
Hero Member
Messaggi: 871
Iscritto il: 10/01/2007, 16:53

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da mark »

ti sei dovuto trasformare in turista o sei riuscito a risolvere?
Avatar utente
mark
Hero Member
Hero Member
Messaggi: 871
Iscritto il: 10/01/2007, 16:53

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da mark »

peccato che questa discussione sia stata abbandonata, sarebbe stato utile ed interessante sapere se e come il problema è stato risolto
Aki
Hero Member
Hero Member
Messaggi: 9970
Iscritto il: 27/12/2007, 16:59

Re: no accesso ssh, causa libc6 e libtinfo (broken..)

Messaggio da Aki »

mark ha scritto:peccato che questa discussione sia stata abbandonata, sarebbe stato utile ed interessante sapere se e come il problema è stato risolto
Credo che la discussione possa essere contrassegnata come risolta, in quanto l'unico modo per risolvere è intervenire in locale.
⢀⣴⠾⠻⢶⣦⠀
⣾⠁⢠⠒⠀⣿⡁ Debian - The universal operating system
⢿⡄⠘⠷⠚⠋⠀ https://www.debian.org
⠈⠳⣄⠀
Rispondi