E't Ubuntu's sistem promptul pentru parola mea spoofable?

Uneori, Ubuntu afișează următoarea fereastră:

Această fereastră pot fi cauzate de unele procese de fundal care rulează, cum ar fi o actualizare automată, sau un proces care rapoarte de bug-uri pentru a Canonice care se manifestă în acest fel:

Deoarece acestea sunt procese de fundal, prima fereastra nu este afișată ca răspuns la o acțiune am făcut eu, într-o situație în care mă așteptam la sistemul de a-mi cere parola. Acest lucru înseamnă că:

  • Din perspectiva utilizatorului, nu există nici o garanție că solicitarea vine de la sistemul de operare; ar putea fi orice program rău intenționat, care a avut doar o perioadă limitată de permisiunea de a afișa o fereastră, și care, de fapt care ia determinat pentru parola, va avea acces nelimitat la întreaga mașină.

  • De fapt care ia determinat utilizatorul pentru o parola în mod regulat, sistemul învață utilizatorul care dă parola de sistem ori de câte ori unele aplicații solicită este un lucru perfect natural să facă.

Întrebările mele sunt:

  • Există vreun mecanism de siguranță în Linux, în general, sau Ubuntu special care previne orice aplicație afișează o casetă de dialog care arată identic cu sistemul pentru a-mi cere parola mea?

  • Cum ar trebui să, cum ar fi windows concepute pentru a crește siguranța utilizatorului? De ce nu pune în aplicare un sistem similar cu Windows' Ctrl+Alt+Del pe logon?

Comentarii la întrebare (1)
Soluția

Punctele tale sunt toate bune și corecte, dar înainte de a ne indigna despre asta, trebuie să ne reamintim cât de linux model de securitate funcționează și ce's proiectat pentru a proteja. Amintiți-vă că Linux model de securitate este conceput cu un sistem multi-user terminal-doar sau SSH server în minte. Windows este proiectat cu un end-user de lucru în minte (dar nu'am auzit că recenta generatie de Windows este mai mult terminal-friendly). În special, Linux convenția face o treabă mai bună de sandbox aplicații în utilizatori, în timp ce în Windows nimic important ruleaza ca Sistem, în timp ce Linux GUI (X Server) e de rahat la securitate, și Windows GUI are lucruri frumoase ca UAC-ul built-in. Practic, Linux este (și a fost întotdeauna) un server prima și de o stație de lucru de-al doilea, în timp ce Windows este invers.

Modele De Securitate

Cât de departe "OS" (de exemplu, kernel-ul) este în cauză, ai 7 tty console și orice număr de conexiuni SSH (aka "sesiuni de conectare") - doar așa se întâmplă că ubuntu nave cu script-uri pentru a auto-start GUI pe tty7sesiune, dar la kernel-l's doar o altă aplicație. Sesiunile de logare și conturile de utilizator sunt sandboxed destul de bine de la fiecare alte, dar Linux are o mentalitatea de securitate pe care nu't nevoie pentru a proteja un utilizator din ele-auto. În acest model de securitate, dacă contul este compromis de malware atunci's o cauză pierdută, dar totuși doriți să-l izoleze de alte conturi pentru a proteja sistemul ca un întreg. De exemplu, Linux aplicații au tendința de a crea un low-privilegii de utilizator caapachesau " ftp " pe care le conduc, ca atunci când nu au nevoie pentru a face rooty lucruri. Dacă un atacator reușește să preia controlul de o funcționareapacheproces, se poate muck alteapache` procese, dar va avea probleme de sărituri cu " ftp " procese. Rețineți că Windows are o abordare fundamental diferită aici, în mare parte prin convenție că toate lucrurile importante rula ca Sistem tot timpul. Un malware de servicii în Linux are mai puține posibilități de a face lucruri rele decât un proces de malware care rulează ca Sistem, deci Windows trebuie să meargă la eforturi suplimentare pentru a proteja pe cineva cu drepturi de admin de la "le-auto". GUI medii și un X Server care nu a fost conceput pentru securitate aruncă o cheie în acest model de securitate.

Gnome execută vs Windows UAC, și keyloggers

În Windows, atunci când un utilizator-procesul cereri privilegiilor, kernel-ul aruncă o protecție specială promptă a cărui memorie și tastatură / mouse-ul de autobuz este izolat de restul restul de mediul desktop. Se poate face acest lucru pentru GUI este construit-in pentru sistemul de OPERARE. În Linux, GUI (X server) este doar o altă aplicație, și, prin urmare, parola solicită aparțin procesul care le-au invocat, care rulează ca tine, de partajare de memorie permissions și o intrare de autobuz cu fiecare alte fereastră și proces care rulează ca tine. Rădăcina prompt poate't face fantezie UAC lucruri Ca de blocare a tastaturii pentru că acele fie nevoie să fie rădăcină deja, sau necesită o complet re-proiectarea X server (vezi Wayland de mai jos). Un catch-22, care în acest caz este un dezavantaj de separare GUI de la kernel. Dar, cel puțin, l's în conformitate cu Linux model de securitate. Dacă ar fi să revizuiască modelul de securitate pentru a combate acest lucru prin adăugarea sandbox între solicitările de parole și alte procese care rulează ca utilizatorul în aceeași GUI sesiune, am putea avea de a re-scrie foarte multe lucruri. Cel puțin, kernel-ul ar trebui să devină GUI conștient, astfel încât acesta este capabil de a crea solicitări (nu este valabil și astăzi). Alte du-te la exemplu este faptul că toate procesele într-un GUI sesiune partaja o tastatură de autobuz. Urmăriți-mă să scriu un keylogger și apoi apăsați câteva taste in un alt window:

➜  ~ xinput list  
⎡ Virtual core pointer                      id=2    [master pointer (3)]
⎜   ↳ Virtual core XTEST pointer            id=4    [slave  pointer  (2)]
⎜   ↳ Logitech K400 Plus                    id=9    [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad              id=13   [slave  pointer  (2)]
➜  ~ xinput test 9
key release 36 
key press   44 
hkey release 44 
key press   40 
ekey release 40 
key press   33 
lkey release 33 
key press   33 
lkey press   39 
okey release 33 
key release 39 
key press   66 
key press   31

Orice proces care se execută după cum puteți mirosi parola într-un alt proces's promptă sau terminal și apoi apel sudo pe sine (acest lucru rezultă direct din "nu este nevoie să te protejez de tine" stare de spirit), deci creșterea gradului de securitate a parolei solicită este inutil dacă nu vom schimba fundamental modelul de securitate și de a face un masiv re-scrie tot felul de lucruri. (e's de remarcat faptul că Gnome apare la cel puțin nisip tastatura de autobuz de pe ecranul de blocare și noi sesiuni de prin "Comutare Utilizatori" ca lucrurile scris acolo nu apar în sesiunea mea's keyboard autobuz)

Wayland

Wayland este un nou protocol care are ca scop să înlocuiască X11. Se blochează aplicațiile client, astfel încât acestea nu pot fura informații sau să afecteze nimic in afara de fereastra lor. Singurul mod în care clienții pot comunica unul cu altul în afara de exterior IPC este de a merge prin compozitorul care controlează tot de pe ei. Asta nu't rezolva problema de baza cu toate acestea, și pur și simplu schimburi nevoie de încredere ca să compozitorul.

Virtualizare și Containere

Dacă lucrezi cu tehnologii cloud, ai're, probabil, sărind în sus și în jos spunând "Docker este raspunsul!!". Într-adevăr, brownie puncte pentru tine. În timp ce Docker în sine nu este cu adevărat scopul de a spori securitatea (multumesc @SvenSlootweg), aceasta nu punct pentru utilizarea containerizarea și / sau de virtualizare ca un atacant care's compatibil cu actualul Linux arhitectura. Două importante distributii de linux care sunt construite cu inter-proces de izolare în minte: Qubes OS care ruleaza la nivel de utilizator aplicații în interiorul mai multe masini Virtuale separate în "domenii de securitate", cum ar fi locul de muncă, bancar, de navigare web. Android care se instaleaza si ruleaza fiecare aplicație ca o separat low-privilegiul de utilizator, astfel câștigă procesul la nivel de izolare și fișiere-sistem de izolare (fiecare aplicație este limitată la propriul home directory) între aplicații.

Linia de fund: Din perspectiva unui utilizator final, l'nu e rezonabil să ne așteptăm ca Linux-ul să se comporte la fel ca Windows, dar aceasta este una dintre acele cazuri în care aveți nevoie pentru a înțelege un pic despre cum fond al sistemului sistemul funcționează și de ce a fost proiectat în acest fel. Pur și simplu schimbarea punerea în aplicare a solicitărilor de parolă nu va realiza nimic, atât timp cât acesta este deținut de un proces deținute de tine. Pentru Linux pentru a obține aceleași securitate comportamente ca Windows în contextul unui singur utilizator GUI lucru ar necesita re-design al sistemului de OPERARE, asa ca's puțin probabil să se întâmple, dar astfel de lucruri Docker poate oferi o cale de urmat într-o mai mult Linux-modul nativ. În acest caz, diferența importantă este că Linux este conceput la nivel scăzut a fi un multi-server și vor face o decizie de a nu se proteja de un utilizator din ele-auto, în timp ce Windows este proiectat pentru a fi un singur utilizator de stație de lucru, astfel încât aveți nevoie pentru a avea inter-proces protectii într-o sesiune de conectare. L's, de asemenea, relevant faptul că în Windows GUI este parte a sistemului de OPERARE, în timp ce în Linux GUI este doar un alt nivel de utilizator de aplicare.

Comentarii (15)

există nici un mecanism de siguranță în Linux, în general, sau Ubuntu special care previne orice aplicație afișează o casetă de dialog , care pare identic cu sistemul's unul, să-mi ceri parola?

Răspuns rapid: Nr.

Din perspectiva utilizatorului, nu există nici o garanție că prompt vine de la sistemul de operare; ar putea fi rău intenționat program care a avut doar o perioadă limitată de permisiunea de a afișa o fereastră, și de solicită parola, va avea acces nelimitat la tot mașină.

Dacă un program rău intenționat pe computer, nu't contează ce program se afișează caseta de dialog. Dacă este program rău intenționat, ei bine, așa cum este descris în următoarea propoziție, nu't chiar trebuie să-ți arăt un dialog. Dacă acesta este un program de legit, program malitios poate "uita" fereastră și ce-ai're tastarea acolo, în X server medii (terminal este mai bine).

Soluție?

Dacă ai motive să crezi că un program este't de încredere, sandbox (VM sau lucruri mai puțin importante).

Altceva, nu cere parole. Acest dialog este confort pentru utilizatorii non-tehnici. Daca're în cauză pentru securitate, sau a unei organizații de administrare sau similare, nu's absoluetly nu nevoie pentru a afișa un GUI parola de interogare. Configurați permisiunile de utilizator non-root conturi în mod corespunzător (da sau nu, dar nu-ți cer), și nu utilizați un desktop ca root (din cauza asta, și pentru că este o ispită de a folosi rădăcină de mai multe ori decât este necesar).

De fapt care ia determinat utilizatorul pentru parola în mod regulat, sistemul învață utilizatorul care a dat parola de sistem ori de câte ori unele aplicații solicită pentru că este un lucru perfect natural să facă.

Așa cum este descris, doar don't le cere. Ca admin, "dvs." utilizatorii ar trebui să aibă clar definite permisiuni.

Și, despre actualizări auto ca organizație admin: Esti nebun :) Serios, don't lasa multe Ubuntu clientii actualizare randon lucruri la întâmplare ori. Cât despre imagini centrale, care sunt întreținute și testate de tine și apoi laminate; sau, în altă direcție lucruri ca Ansiblu? Complet independente de securitate, actualizări pot sparge lucruri. Ca's de ce.

Comentarii (9)

Da. Acest lucru este nesigur!

Eu personal întotdeauna Anula acel dialog. Nu pentru că ar putea fi false, ci pentru că ar putea fi adevărat.

Eu trebuie să le dau escaladat privilegii pentru "o aplicație" doar pentru că-l întreabă? Nu, nu, nu't cred.

Actualizări de sistem sunt bine, eu fac asta manual, dar ma enerveaza ca eroare de raportare de sistem necesită acest lucru. Bad design.

Comentarii (5)

Contrar a ceea ce simt, (moderne) Windows și Ubuntu modalități de manipulare niveluri de drepturi și privilegii altitudine sunt destul de similare. Motivul este, cu siguranță, că sistemele de operare sunt atât sistemele multi-utilizator cu similar de cazuri de utilizare care se confruntă cu probleme similare.

Ambele sisteme de operare restricționa ceea ce un utilizator obișnuit poate face (prin programe care rulează, desigur). Un utilizator poate distruge propriile date, dar în mod ideal, nu alte persoane's (excepția cazului în care au împărtășit-o), și în mod ideal, pot compromite sau afecta sistemul. În scopul de a citi și scrie date de sistem un program are nevoie de administrator (root) privilegiile pe ambele sisteme de operare, care, de regulă, numai programe de început de admin/root trebuie.

În scopul de a face atât de simplu, ambele sisteme de operare oferă implicit de utilizator cu posibilitatea de a rula singur programe cu "privilegii ridicate" prin sudo respectiv UAC. Atât sistemul de operare Gui foc un dialog, în scopul de a oferi utilizatorului o șansă de a preveni programe de rulare ca administrator/root. Ambele sisteme au, de asemenea, noțiunea de utilizatorii care nu sunt permise pentru a rula privilegiat programe la toate.

Ubuntu dialog cere o parola; Ferestrele de dialog UAC nu't. (Ai par să creadă că un program are nevoie de permisiuni speciale pentru a arăta că de dialog; nu este cazul. Programul este cere pentru ei cu dialogul. Dacă cineva falsuri dialog se obține (utilizator), parola, care este nici un câștig pentru un program care rulează deja ca acel utilizator.)

Linia de jos este că un program poate pretinde că are nevoie de privilegii ridicate pentru ceva util și foc la dialog, dar, odată ce aceasta le-a obținut, format la hard disk.1 Asta este valabil pentru ambele sisteme de operare. Pentru că sub Windows, de obicei, mai multe software-ul terț devine instalat șansă de a lovi un astfel de program este, probabil, mai mare decât pentru Ubuntu.

Ai menționat că în Windows UAC de dialog de obicei este rezultatul unei acțiuni de utilizator, de exemplu, pentru a instala un program, în timp ce Ubuntu incendii de dialog fără un motiv aparent. Un motiv la care mă pot gândi este că Windows actualizări de software sunt inițiate de OPERARE, astfel încât acestea să aibă privilegii ridicate deja. Poate Ubuntu cere înainte de a instala.

Ar fi într-adevăr frumos să avem mai multe informații decât "am nevoie de pașaport, cizme si geaca ta." nu am nici Ubuntu sistem la îndemână aici, dar vad ca o "Detalii" legenda pe partea stângă a casetei de dialog. Te-ai uitat ce se spune? (Desigur, un program poate falsifica orice text acolo, dar ați putea fi capabil de a verifica dacă presupusele program este într-adevăr de funcționare.)


1Care nu ar fi *că* teribil, în comparație cu, de fapt, suprascrierea datelor.
Comentarii (7)

Cel mai sigur mod de a asigurați-vă că parola e't a fost cercetat este de a utiliza SAK secvență: alt + sysrq-k. Acest lucru va ucide toate programele pe curent VT (inclusiv X11) și init va da un nou login prompt. Singura atacurile am'm conștienți de implica modificarea kernel keymap sau compromite init în sine, ambele din care au nevoie de rădăcină sau un acces mai bun deja.

Există diverse ușor-mai puțin completă moduri (XTerm are cale de acces X11's "exclusiv de intrare" opțiune), în funcție de cât de mult de sistemul dvs. de încredere, dar ... de ce ar trebui't ai fi capabil să aibă încredere în sistemul dumneavoastră?

Diferența majoră între Linux și Windows security modele este că sub Linux, te nici't doar descărca aleatoare executabile de pe Internet și le-a alerga. (Există unele eforturi pentru pachetul de încredere aplicații Linux într-un Android-cum ar fi pachetul de nisip, dar nimeni nu le foloseste.)

Comentarii (5)

Oribil, oribil lipsa de securitate. Când am văzut-proiectarea de grafice sudo mi-am îngăduit și a făcut sudo passwd root, urmat de apt-get remove sudo, apoi am enervat ubuntu IRC oameni buni de ce pledeaza pentru dezinstalarea sudo.

Și totuși înțeles, acest lucru este extrem de nesigur. A fost destul de ok pe terminal (cu atât mai mult atunci când bombele au fost mai slabe a fost relativ necunoscut și atacurile împotriva a n't foarte dezvoltat), dar este o evidentă weakpoint acum.

Voi începe mai degrabă un al doilea X exemplu ca root acum pentru mai puțin decât o dată pe an trebuie să oferi o grafică program de root. (Fac asta de pornire X :1 în mod direct nu prin rularea startx deci nimic, dar aplicația țintă se execută în rădăcină's X exemplu). Dacă ai nevoie de rădăcină de mai multe ori am sfătui apt-get install ssh " și " ssh -X root@localhost.

Comentarii (6)