Από το 2015, μια επικίνδυνη ευπάθεια στο telnetd επιτρέπει σε κάθε client να αποκτήσει root πρόσβαση σε ευάλωτα συστήματα.
Παρότι υπάρχει patch, η γενική σύσταση είναι ξεκάθαρη: απενεργοποιήστε το telnetd όπου είναι δυνατόν.
Τι είναι το Telnetd και γιατί θεωρείται ξεπερασμένο
Το telnetd είναι ο daemon που εξυπηρετεί το πρωτόκολλο Telnet — ένα παλιό πρωτόκολλο client/server που χρησιμοποιούνταν ευρέως για απομακρυσμένη πρόσβαση σε servers και εκτέλεση εντολών.
Σήμερα, για λόγους ασφάλειας, έχει αντικατασταθεί στην πράξη από το SSH, τον κρυπτογραφημένο «διάδοχο» του Telnet.
Παρ’ όλα αυτά, το Telnet μπορεί να παραμένει ενεργό σε παλαιότερους servers ή σε ειδικά περιβάλλοντα.
Που “ακούει” το telnetd και τι σημαίνει αυτό για την έκθεση
Από προεπιλογή, το telnetd “ακούει” στο TCP port 23, περιμένοντας αιτήματα σύνδεσης από clients.
Η συγκεκριμένη ευπάθεια, όμως, μπορεί να δώσει στον χρήστη πολύ περισσότερα δικαιώματα από όσα θα έπρεπε να διαθέτει.
Root δικαιώματα με λίγους χαρακτήρες
Σύμφωνα με το security advisory, το telnetd για τη σύνδεση καλεί το /usr/bin/login και περνά ως τελευταίο παράμετρο την τιμή της μεταβλητής περιβάλλοντος User, όπως την έλαβε από τον client.
Το “κόλπο” με το -f root
Αν ως τιμή σταλεί η συμβολοσειρά:
-f root
και επιπλέον δοθεί μία από τις παραμέτρους:
-aή--login
τότε πραγματοποιείται αυτόματη σύνδεση ως root, χωρίς πρόσθετη αυθεντικοποίηση.
Πιθανή αιτία: μη έλεγχος/καθαρισμός της μεταβλητής
Το σφάλμα φαίνεται να οφείλεται στο ότι το telnetd δεν ελέγχει και δεν “καθαρίζει” τη μεταβλητή περιβάλλοντος πριν τη μεταβιβάσει στο login.
Το ίδιο το login, με την παράμετρο -f, μπορεί να επιτρέψει παράκαμψη της κανονικής αυθεντικοποίησης.
Patch υπάρχει, αλλά προτείνεται απενεργοποίηση και μετάβαση σε SSH
Η ευπάθεια, σύμφωνα με τις πληροφορίες, εισήχθη από commit στις 19 Μαρτίου 2015. Η πρώτη ευάλωτη έκδοση του telnetd ήταν η 1.9.3 (12 Μαΐου 2015).
Αν και διατίθεται patch (ως δύο commits), η σύσταση παραμένει:
- “Κατά προτίμηση, μην τρέχετε καθόλου telnetd server.”
Τι να κάνετε αν το Telnet είναι “απαραίτητο”
Αν το telnetd απαιτείται για συγκεκριμένο λόγο, προτείνεται:
- περιορισμός πρόσβασης μόνο σε έμπιστα clients,
- και, όπου γίνεται, μετάβαση στο SSH λόγω κρυπτογράφησης και καλύτερης συνολικής ασφάλειας.
Πρακτικός οδηγός άμυνας για sysadmins και ομάδες IT
Η ύπαρξη patch δεν σημαίνει ότι το Telnet είναι «ΟΚ» για παραγωγή.
Το Telnet είναι μη κρυπτογραφημένο: ονόματα χρήστη, κωδικοί και εντολές μπορούν να υποκλαπούν σε επίπεδο δικτύου.
Έτσι, η σωστή αντιμετώπιση δεν είναι μόνο “patch”, αλλά μείωση επιφάνειας επίθεσης.
Έλεγχος αν το Telnet είναι ενεργό (γρήγορος έλεγχος)
Σε Linux
- Έλεγχος θύρας:
ss -tlnp | grep ':23'- ή
netstat -tlnp | grep ':23'
- Έλεγχος υπηρεσίας:
systemctl status telnet.socketsystemctl status telnet@.service(ανάλογα με διανομή/ρύθμιση)
Σε περιβάλλοντα με inetd/xinetd
Αναζητήστε ρυθμίσεις σε:
/etc/inetd.conf/etc/xinetd.d/
Άμεση μετρίαση κινδύνου (αν δεν μπορείτε να το κλείσετε σήμερα)
- Firewall κανόνες: επιτρέψτε το TCP/23 μόνο από συγκεκριμένες IP (π.χ. jump host ή management subnet).
- Network segmentation: βάλτε συσκευές/servers που απαιτούν Telnet σε απομονωμένο VLAN, χωρίς πρόσβαση από το Internet.
- Καταγραφή & ειδοποιήσεις: ενεργοποιήστε logging για συνδέσεις στο port 23 και alerts όταν εμφανίζονται νέες/ασυνήθιστες προσπάθειες.
Μετάβαση σε SSH με ασφαλείς ρυθμίσεις
Βασικές συστάσεις
- Χρησιμοποιήστε SSH keys αντί για passwords.
- Απενεργοποιήστε το root login μέσω SSH (
PermitRootLogin no). - Εξετάστε MFA (όπου υποστηρίζεται) ή bastion/jump server.
Γιατί “σβήσιμο” αντί “επιδιόρθωση”;
Ακόμη κι αν διορθωθεί το συγκεκριμένο bug, το Telnet παραμένει τεχνολογία με χαμηλή ασφάλεια από σχεδιασμό.
Η απενεργοποίηση μειώνει δραστικά τον κίνδυνο τόσο από μελλοντικά 0-days όσο και από απλές υποκλοπές στο δίκτυο.
