Meltdown i Spectre – Bez panike!!!

Mediji, koji prate desavanja na IT sceni su pocetkom 2018. godine, objavili vest o Meltdown i Spectre.
Sta su Meltdown i Spectre?
Ukratko, da ne ulazim previse u detalje, to su “exploiti” za kritican bezbednosni propust u savremenim procesorima. Koliko vidim iz tekstova, najvise su pogodjeni Intel procesori, takodje i neki ARM procesori. Najmanje se u celoj prici pominju AMD procesori. S obzirom da je to hardverski bezbednosni propust u samom procesoru, pogodjeni su svi operativni sistemi, koji korsite procesore koji imaju taj bezbednosni propust: Windows, Mac, Linux, iOS, Android itd… Prostim recnikom, da bi obicni ljudi to razumeli, ti bezbednosni propusti omogucavaju programima, da “kradu” podatke koji se trenutno obradjuju. Normalnom programu, nije dozvoljeno da cita podatke drugog programa, ali maliciozni program, koristeci Meltdown i/ili Spectre exploite, moze da pristupi tim podacima. Konkretno, moze da cita memoriju Kernela i drugih programa, kojima normalan program nema pristup i na taj nacin moze da se dodje do sifara i drugih osetljivih informacija.
Detaljnije informacije mozete procitati na vikipediji:
https://en.wikipedia.org/wiki/Spectre_(security_vulnerability)
https://en.wikipedia.org/wiki/Meltdown_(security_vulnerability)

Inace, citajuci tekstove, video sam da je to bezbednosni propust, koji potencijalno postoji na Intel procesorima jos od 1995. godine, iskljucujuci Itanium procesore i Atom procesore proizvedene pre 2013 (Atom procesor u mom MSI U100 netbook-u je stariji, ali sam sve zakrpio za svaki slucaj).

U nastavku teksta cu Vam opisati kako da zakrpite Linux Mint 18.3, koga, uzgred budi receno ja koristim.

Treba zakrpiti nekoliko stvari, ja sam se rukovodio tekstom sa Linux Mint bloga, ali cu Vam napisati jos jednu stvar, koja tamo nije pomenuta, a meni je bila jako korisna, jer sam naleteo na problem na jednom od kompjutera sa Atom procesorom, ali krenimo redom.

Kao prvo, napravite rezervne kopije, nikad se ne zna, sta moze krenuti naopako, pogotovo, sto morate promeniti Kernel.
Zatim, pre nego sto promenite Kernel… Ovo ne pise na Linux Mint blogu, ja sam imao problem na MSI U100 Netbook-u sa Atom procesorom i Intel integrisanom grafikom. Posle updatea kernela, vise od trecine ekrana nisam mogao da vidim, bilo je zabagovano, samo sam oko jedne cetvrtine ekrana mogao da vidim sa desne strane.
Ako ranije niste instalirali, instalirajte Grub Customizer:
U terminalu kucajte:
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt update
sudo apt install grub-customizer

Pokrenite ga i kliknite na karticu General Settings, tu proverite da li je Grub meni vidljiv prilikom podizanja sistema. Ako Vam je Linux Mint jedini operativni sistem, najverovatnije, da se Grub meni ne vidi prilikom podizanja sistema, zato ukljucite opciju: show menu. I postavite da se vidi na primer 3 sekunde. To ce Vam biti dovoljno da, u slucaju da imate problema sa novim kernelom, podignete sistem u stariji kernel i da popravite stvari. Sacuvajte izmene i nadogradite Kernel. Elem, posto i posle vise pokusaja Kernel 4.13.0-26 nije radio kako treba, instalirao sam Kernel 4.4.0-109 na taj netbook i sa tim kernelom je sve bilo u redu. Inace i kernel 4.4.0-109 ima zakrpu protiv Meltdown i Spectre. U pitanju je 32 bitni Linux Mint 18.3.

Na ostalim kompjuterima nisam imao problema sa 64 bitnim Linux Mint 18.3 i Kernelom 4.13.0-26, sve je radilo kako treba.

Verzije kernela koje su zakrpljene protiv Meltdown i Spectre su:
– 3.13 series (Linux Mint 17 LTS): patched in 3.13.0-139
– 3.16 series (LMDE): patched in 3.16.51-3+deb8u1
– 4.4 series (Linux Mint 17 HWE and Linux Mint 18 LTS): patched in 4.4.0-108
– 4.13 series (Linux Mint 18 HWE): patched in 4.13.0-25

Ono sta jos treba da se zakrpi je NVidia drajver, ako imate NVidia graficku karticu sa vlasnickim drajverima. Verzija drajvera, koja ima zakrpu za Meltdown i Spectre je: 384.111.

Zatim treba zakrpiti web pregledace. Da i njih… Zato sto je moguce uz pomoc Java skripte iskoristiti Meltdown i Spectre exploite, mada, ako je Kernel nadogradjen, onda zlonamerne Java skripte ne mogu nista da urade, ali bolje je sve zakrpiti…

Firefox 57.0.4 je zakrpljen. Mozete ga updateovati, ako to vec niste uradili iz Update Managera.
Google Chrome i Chromium: U adresnoj liniji kucajte: chrome://flags, potrazite Strict site isolation kliknite na Enable da bi ste ukljucili opciju i restartujte Chrome ili Chromium.
Opera: takodje updateujte na poslednju verziju i u adresnu liniju kucajte:
opera://flags/?search=enable-site-per-process kliknite na Enable da bi ste ukljucili opciju i restartujte Operu.

Intel Microcode: Zakrpljena verzija je 3.20180108.0. Trebalo bi i ovo da se upadeuje iz update managera. Proverite verziju klikom na Menu -> Control Center -> Driver Manager i aktivirajte ga, ako nije aktiviran.

E, sad za kraj, ove softverske zakrpe imaju i svoju cenu, a to je pad performansi na kompjuterima. Takodje, citajuci tekstove, neki tvrde da pad moze da bude od nekoliko procenata, pa do 30%. Odmah sam to i proverio, pa sam sproveo mali test, koji sam radio na Asus K52J laptopu. Testove sam radio sa starim Kernelom 4.10.0-42 i sa novim Kernelom 4.13.0-26. Testove sam radio iz Firefoxa da bih testirao pad performansi Firefoxa, drugi test sam radio programom Sysbench 0.4.12.

Prvi test je brzina Firefox-a.

Test je Kraken sa ove adrese: https://krakenbenchmark.mozilla.org/

Kernel: 4.13.0-26-generic 64 bit
Mozilla Firefox 57.0.4 (64-bit)
Ovde sam uradio 3 testa i izracunao prosek: 2307.4ms

————————————————————–

Kernel: 4.10.0-42-generic
Mozilla Firefox 57.0.4 (64-bit)
Ovde sam uradio 3 testa i izracunao prosek: 2203.9ms

Kao sto vidite, evidentan je mali pad performansi Firefoxa.

————————————————————–

Sada slede rezultati Sysbench testa. Tu sam sproveo test procesora i test memorije

Kernel: 4.13.0-26-generic 64 bit:

sysbench –test=cpu run

Test execution summary:
total time: 12.8440s
total number of events: 10000
total time taken by event execution: 12.8429
per-request statistics:
min: 1.27ms
avg: 1.28ms
max: 3.55ms
approx. 95 percentile: 1.33ms

Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 12.8429/0.00

sysbench –test=memory run

Test execution summary:
total time: 52.4861s
total number of events: 104857600
total time taken by event execution: 44.2260
per-request statistics:
min: 0.00ms
avg: 0.00ms
max: 0.09ms
approx. 95 percentile: 0.00ms

Threads fairness:
events (avg/stddev): 104857600.0000/0.00
execution time (avg/stddev): 44.2260/0.00

————————————————————–

Kernel: 4.10.0-42-generic 64 bit:
Sysbench 0.4.12

sysbench –test=cpu run

Test execution summary:
total time: 12.8330s
total number of events: 10000
total time taken by event execution: 12.8319
per-request statistics:
min: 1.27ms
avg: 1.28ms
max: 3.25ms
approx. 95 percentile: 1.32ms

Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 12.8319/0.00

sysbench –test=memory run

Test execution summary:
total time: 51.9284s
total number of events: 104857600
total time taken by event execution: 43.8580
per-request statistics:
min: 0.00ms
avg: 0.00ms
max: 0.11ms
approx. 95 percentile: 0.00ms

Threads fairness:
events (avg/stddev): 104857600.0000/0.00
execution time (avg/stddev): 43.8580/0.00

I ovde je prisutan mali pad performansi.

————————————————————–

Na svim ovim testovima je evidentan pad performansi, ali po mom skromnom misljenju, pad performansi je zanemarljiv. Barem na ovim generickim testovima.