Ελεγχος επεξεργαστή για προβλήματα ασφάλειας και απενεργοποιηση mitigations

howto
kernel
advanced
#1

Η χρονιά των προβλημάτων

Αυτή την χρονιά έχουμε μάθει να ζούμε με τα σημαντικά προβλήματα που έχουν οι επεξεργαστές, κυρίως της Intel, λόγω την σχεδίασης τους. Διαβάζουμε πράγματα σαν το παρακάτω:

Τα προβλήματα αυτά αφορούν τον επεξεργαστή και όχι το λειτουργικό. Αλλά σε συνεργασία με την Intel η αντιμετώπιση είναι άμεση και έχουμε νέους πυρήνες και νέο microcode. Αλλά λόγω της φύσης του προβλήματος λίγα πράγματα μπορούν να γίνουν χωρίς να μειωθούν οι επιδόσεις του επεξεργαστή.

Τι προβλήματα έχει ο επεξεργαστής μου ;

Πρέπει να έχουμε τον τελευταίο πυρήνα να είμαστε σίγουροι πως ξέρει για τα τελευταία προβλήματα. Θα δούμε την λίστα των προβλημάτων στον κατάλογο /sys/devices/system/cpu/vulnerabilities/ και με ένα ls μπορούμε να δούμε για ποιες γνωρίζει ο πυρήνας

ls /sys/devices/system/cpu/vulnerabilities/

Για να ελέγξουμε για την ευπάθεια mds για παράδειγμα θα δώσουμε την εντολή

cat /sys/devices/system/cpu/vulnerabilities/mds

Θα δούμε κάτι από τα παρακάτω

 1. Not affected
 2. Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
 3. Mitigation: Clear CPU buffers; SMT vulnerable
 4. Mitigation: Clear CPU buffers; SMT disabled
 5. Mitigation: Clear CPU buffers; SMT Host state unknown

Στην πρώτη περίπτωση όλα καλά :grinning: ο επεξεργαστής δεν έχει το πρόβλημα. Στην δεύτερη περίπτωση υπάρχει πρόβλημα (Vulnerable). Ο πυρήνας έχει ενημερωθεί αλλά όχι ο microcode της CPU. Στις άλλες περιπτώσεις έχει εφαρμοστεί η διόρθωση (Mitigation). Αλλά μπορεί να υπάρχει ακόμα πρόβλημα στο SMT. Υπάρχουν και άλλες περιπτώσεις ποιο σπάνιες και η πλήρη λίστα μπορεί να βρεθεί εδώ.

Μπορούμε να έχουμε μια αναφορά για την κατάσταση όλων των προβλημάτων με την εντολή

tail -n +1 /sys/devices/system/cpu/vulnerabilities/*


Στην εικόνα είναι η κατάσταση του υπολογιστή που γράφω το άρθρο. Θα πρέπει να απενεργοποιήσω το SMT για πλήρη ασφάλεια. Η intel έδωσε κάποια στοιχεία για επεξεργαστές Xeon και δείχνει πως δεν υπάρχει “σημαντική” απώλεια απόδοσης, αλλά δεν υπάρχουν ακόμα πολλά στοιχεία για όλους τους επεξεργαστές. Στο επόμενο reboot θα το απενεργοποιήσω.

Απενεργοποίηση των mitigation

Πριν να ξεκαθαρίσω πως δεν θέλεις να το κάνεις αυτό. Να το ξαναπώ: δεν θέλεις να το κάνεις αυτό. Με άλλα λόγια, απλά μην το κάνεις. Αν το κάνεις βεβαιώσου πως ο υπολογιστής είναι σε ένα πλήρες ελεγχόμενο περιβάλλον, ιδανικά χωρίς σύνδεση στο δίκτυο. Αν σε ένα τέτοιο υπολογιστή δώσεις κωδικούς της τράπεζας σου, τότε κάνεις ένα χοντρό λάθος (Αν και μπορείς πάντα να μου στείλεις την IP του να σε βοηθήσω σε ένα εσωτερικό έλεγχο :imp:)

Οι τελευταίοι πυρήνες υποστηρίζουν απενεργοποίηση των mitigation. Αυτό το κάνεις με παραμέτρους πυρήνα, μέσω του grub. Θα πρέπει να δώσεις

mitigations=off

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

mitigations=mitigations=auto,nosmt

ή ακόμα να ρυθμίσεις συγκεκριμένα κάθε μια από αυτές. Για παράδειγμα δες την παράμετρο mds στην τεκμηρίωση των παραμέτρων του πυρήνα.

Η πλήρη λίστα των παραμέτρων του πυρήνα μπορεί να βρεθεί εδώ

https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html

2 Likes
MDS Σημαντικό πρόβλημα ασφάλειας σε επεξεργαστές Intel
MDS Πρώτες μετρήσεις μέτρησης πτώσης της απόδοσης
#2

δείτε και αυτό…

A shell script to tell if your system is vulnerable against the several "speculative execution" CVEs that were made public since 2018.

    CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
    CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
    CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
    CVE-2018-3640 [rogue system register read] aka 'Variant 3a'
    CVE-2018-3639 [speculative store bypass] aka 'Variant 4'
    CVE-2018-3615 [L1 terminal fault] aka 'Foreshadow (SGX)'
    CVE-2018-3620 [L1 terminal fault] aka 'Foreshadow-NG (OS)'
    CVE-2018-3646 [L1 terminal fault] aka 'Foreshadow-NG (VMM)'
    CVE-2018-12126 [microarchitectural store buffer data sampling (MSBDS)] aka 'Fallout'
    CVE-2018-12130 [microarchitectural fill buffer data sampling (MFBDS)] aka 'ZombieLoad'
    CVE-2018-12127 [microarchitectural load port data sampling (MLPDS)] aka 'RIDL'
    CVE-2019-11091 [microarchitectural data sampling uncacheable memory (MDSUM)] aka 'RIDL'

Supported operating systems:

    Linux (all versions, flavors and distros)
    BSD (FreeBSD, NetBSD, DragonFlyBSD)
1 Like