Οι ευπάθειες Meltdown και Spectre που επηρέασαν πολλούς σύγχρονους επεξεργαστές, συμπεριλαμβανομένων ορισμένων επεξεργαστών από Intel, AMD, System Z, Power και ARM ανάγκασαν τις διανομές να εφαρμόσουν διορθώσεις που όμως μείωσαν τις επιδόσεις των επεξεργαστών αυτών.

Ίσως έχετε ακούσει για τις ευπάθειες Meltdown και Spectre (βλέπε : Ελέγξτε αν ο υπολογιστής σας είναι ευάλωτος στα Meltdown και Spectre) που επηρέασαν τους επεξεργαστές από Intel, AMD, System Z, Power και ARM.

Ευτυχώς, οι προγραμματιστές του Linux Kernel έχουν κυκλοφορήσει ενημερωμένες εκδόσεις ασφαλείας για την αντιμετώπιση των προβλημάτων Meltdown / Specter. Παρόλο που οι ενημερώσεις ασφαλείας βοηθούν στη μείωση των τρωτών σημείων, έχουν επίσης επηρεάσει την απόδοση του συστήματος.

Εάν είστε βέβαιοι ότι τα συστήματά σας προστατεύονται καλά και θέλετε κάθε σπιθαμή επιδόσεων που μπορεί να δώσει ο επεξεργαστής σας τότε αυτός ο σύντομος οδηγός εξηγεί πώς να κάνετε το σύστημα Linux να λειτουργεί πιο γρήγορα σε επεξεργαστές Intel απενεργοποιώντας τους περιορισμούς Specter και Meltdown.

Advertisements

Προειδοποίηση: Μην εφαρμόσετε τις οδηγίες σε Server. Αυτό θα απενεργοποιήσει όλους τους μετριασμούς για Specter και Meltdown σε επεξεργαστές Intel και θα αφήσει τα συστήματά σας ανοιχτά σε όλους τους κινδύνους ασφαλείας αυτών των ευπαθειών.

Εάν θέλετε απλώς να έχετε τη μέγιστη απόδοση για τα παιχνίδια στο Steam σας, προσθέτοντας το παρακάτω στις παραμέτρους του πυρήνα σας, απο την μια θα σας αφήσει εκτεθειμένους στους κινδύνους ασφαλείας των επεξεργαστών, αλλά από την άλλη θα επαναφέρει στο μέγιστο της απόδοσης τον επεξεργαστή σας.

Απενεργοποίηση των μέτρων ασφαλείας

Οι νεότερες εκδόσεις πυρήνα Linux, διαθέτουν μια μοναδική παράμετρο που απενεργοποιεί τα μέτρα ασφαλείας, ενώ οι παλιότερες εκδόσεις πυρήνα χρειάζονται περισσότερες.

Πληροφορίες πυρήνα και επεξεργαστή

Ας δούμε τους μετριασμούς (mitigations) που έχουν εφαρμοστεί στο σύστημά μας με την παρακάτω εντολή:

lscpu | grep Vulnerability

εναλλακτικά τρέχετε:

grep -H '' /sys/devices/system/cpu/vulnerabilities/*

Τα παραπάνω θα σας εμφανίσουν κάτι σαν το παρακάτω:

Vulnerability Itlb multihit:     KVM: Mitigation: Split huge pages
Vulnerability L1tf:              Mitigation; PTE Inversion; VMX conditional cache flushes, SMT disabled
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT disabled
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling
Vulnerability Tsx async abort:   Not affected

Όπου γράφει Mitigation σημαίνει έχει εφαρμοστεί διόρθωση ασφαλείας.

Ας μάθουμε και κάποια πράγματα για τον πυρήνα μας με την παρακάτω εντολή:

hostnamectl

Με την hostnamectl, που είδαμε στο σχετικό οδηγό, μαθαίνουμε κάποια χρήσιμα πράγματα για το λειτουργικό μας. Εδώ μας ενδιαφέρει η έκδοση πυρήνα που γράφει στο Kernel Version.

  1. Αν η έκδοση είναι νεότερη από 5.1.13 (ή είστε στην σειρά 4.14.x, 4.19.x) τότε η μόνη παράμετρος που χρειάζεστε είναι το mitigations=off
  2. Αν έχετε παλιότερη έκδοση τότε χρειάζεστε τις παραμέτρους noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off nomeltdown tsx_async_abort=off kvm.nx_huge_pages=off mitigations=off

Σημειώστε αν ανήκετε στην ομάδα χρηστών 1 ή στην ομάδα 2.

Εφαρμογή απενεργοποίησης στον Grub

Θα χρειαστεί να επεξεργαστούμε το αρχείο παραμετροποίησης του GRUB. Ανοίγουμε το σχετικό αρχείο με το αγαπημένο μας Vim:

sudo vim /etc/default/grub

Πάτε στην γραμμή GRUB_CMDLINE_LINUX και ανάλογα με την ομάδα χρηστών που ήμαστε (το είπαμε πιο πάνω) προσθέτουμε την γραμμή

mitigations=off

ή

noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off nomeltdown tsx_async_abort=off kvm.nx_huge_pages=off mitigations=off

στην γραμμή GRUB_CMDLINE_LINUX

Αποθηκεύουμε το αρχείο και ενημερώνουμε το σύστημα για τις αλλαγές με τις παρακάτω εντολές:

Ubuntu/Mint/Debian:

sudo update-grub

Arch

sudo grub-mkconfig -o /boot/grub/grub.cfg

fedora

sudo grub-mkconfig -o /boot/grub2/grub.cfg

Έπειτα κάνουμε επανεκκίνηση το σύστημά μας.

Advertisements

Έλεγχος των ρυθμίσεων

Αφού κάναμε επανεκκίνηση, θα θέλουμε να δούμε αν όλα έχουν γίνει σωστά και η απενεργοποίηση ενεργοποιήθηκε. Τρέχουμε την παρακάτω εντολή:

cat /proc/cmdline

Λογικά θα σας εμφανίσει κάτι σαν το παρακάτω:

BOOT_IMAGE=/vmlinuz-linux-lts root=UUID=dcb7505d- rw mitigations=off loglevel=3 quiet

Αν λείπει κάποια γραμμή από τις παραμέτρους που βάλατε, μάλλον κάτι κάνατε λάθος.

Τέλος θα πρέπει η παρακάτω εντολή:

lscpu | grep Vulnerability

ή εναλλακτικά:

grep -H '' /sys/devices/system/cpu/vulnerabilities/*

Να μην περιλαμβάνουν την λέξη Mitigation

Επίλογος

Όσοι έχετε, SSD δίσκο πιθανόν να μην δείτε μεγάλη διαφορά στις επιδόσεις. Ίσως όμως όσοι τρέχετε εικονικές μηχανές ή κάνετε rendering (CPU based) ή compiling, να δείτε αισθητή διαφορά.

Σε VPS / Server ή σε linux container δεν θα πείραζα σε καμία περίπτωση τις μετριάσεις που έχουν γίνει στον kernel. Σε αυτά, αν έχετε πελάτες, αυτοί εκτελούν «μη αξιόπιστα» εκτελέσιμα / services /scripts, με αποτέλεσμα εκεί ένας κακόβουλος hacker εύκολα θα μπορούσε να αποκτήσει πρόσβαση σε άλλα VM ή Linux containers.

Όπως και να έχει, η απενεργοποίηση καλό είναι να γίνει μόνο στον προσωπικό σας υπολογιστή/λαπτοπ και όχι σε υπολογιστή εργασίας, πόσο μάλλον σε server. Στους προσωπικούς υπολογιστές, όπου συχνά λόγο των browser εκτελούνται javascript εφαρμογές, οι επιθέσεις «θα μπορούσαν» να εκτελεστούν μέσω javascript, αλλά οι σύγχρονοι (και ενημερωμένοι) browsers έχουν αφαιρέσει δυνατότητες όπως ακριβείς χρονοδιακόπτες (accurate timers) ενώ αρκετοί έχουν σαν μέγιστη ακρίβεια τα 0.2ms και μερικά 1ms και άλλα καθυστερούν παραπάνω. Με άλλα λόγια αυτές οι επιθέσεις βασίζονται σε χρονόμετρα υψηλής ακρίβειας και άρα χωρίς αυτά απλά δεν λειτουργούν. Επομένως, δεν θα ανησυχούσα για επιθέσεις που βασίζονται στο πρόγραμμα περιήγησης και οι οποίες εκμεταλλεύονται τα vulnerabilities τύπου Meltdown / Spectre .

Σας φάνηκε χρήσιμο;
Πείτε μας τη γνώμη σας για το σημερινό tip. Δείτε και τα υπόλοιπα Tips ή πείτε μας τα δικά σας tips στα σχόλια ή επικοινωνήστε μαζί μας.

Παραπομπές: