Scopo di questo post e di una serie che faro è quello di presentare in generale le problematiche legate alla sicurezza del browsing web. Sebbene si farà spesso riferimento alle tecnologie Cisco IronPort, quanto descritto va bene come guida generale per affrontare il problema almeno nella sua forma elementare. Cercherò di tenere il linguaggio ad un livello da non addetti ai lavori ed userò, laddove possibile, il maggior grado di semplificazione per rendere la lettura fruibile anche a chi non ha competenze specifiche in ambito sicurezza.
Ovviamente qualsiasi contributo o suggerimento sarà ben accetto.
Cosa vuol dire fare web browsing
Iniziamo innanzi tutto a capire di cosa parliamo. Il problema nasce dalla legittima esigenza di un utente di andare a visitare un sito attraverso un browser.
Iniziamo quindi a cercare di capire cosa succede quando digitiamo su il nostro browser un indirizzo web (o URL).
supponiamo di aprire explorer e digitare: www.google.com
vediamo cosa succede in realtà vedendo la figura sottostante (per l’analisi del traffico uso HTTP watch basic):
digitando www.google.com la prima cosa che viene fatta è la traduzione di questo indirizzo in un relativo IP tramite il servizio DNS. Il vostro computer quindi raggiunge la sorgente indicata tramite una operazione GET (dammi)
Il server cui ci si sta connettendo risponde in questo caso con una indicazione di redirect HTTP che è di fatto una indicazione al browser di fare una nuova GET verso il sito www.google.it
Viene quindi indicato al browser di effettuare una ulteriore GET con dei parametri ….
00:00:00.000 Google
+ 0.000 0.398 1027 408 GET 302 Redirect to http://www.google.it/ http://www.google.com/
+ 0.398 0.087 1045 3656 GET 200 text/html; charset=UTF-8 http://www.google.it/
+ 0.571 0.087 880 136 GET 204 text/html; charset=UTF-8 http://www.google.it/gen_204?atyp=i&ghp=fbg
0.658 2952 4200 3 requests
00:00:00.655 Google
+ 0.000 0.003 0 0 GET (Cache) text/javascript; charset=UTF-8
+ 0.009 0.068 979 215 GET 204 text/html http://www.google.it/csi?v=3&s=webhp&action=&srt=571&tran=15&ei=7dEnSv7XOo2PsAa4xqHgBQ&e=17259,17315,18169,19772,20572&rt=prt.22,ol.67,xjs.111
+ 0.017 0.060 875 125 GET 204 text/html http://clients1.google.it/generate_204
0.078 1854 340 3 requests
La richiesta di una URL ha quindi scatenato una serie di operazioni in background. questa condizione è una condizione standard, nonostante gli utenti abbiano l’impressione di caricare una pagina su di un “server” quello che avviene in realtà è decisamente più complicato, una richiesta di una URL scatena una serie di operazioni complesse che porta alla definizione della pagina.
Proviamo a fare la stessa attività con www.youtube.com e vediamo cosa succede:
00:09:36.322 YouTube – Broadcast Yourself.
+ 0.000 3.335 575 14422 GET 200 text/html; charset=utf-8 http://www.youtube.com/
+ 1.246 1.078 418 12974 GET 200 text/css
+ 1.246 0.772 416 1112 GET 200 application/x-javascript http://s.ytimg.com/yt/js/csi_squished-vfl95971.js
+ 1.246 1.077 404 482 GET 404 text/html
+ 2.349 0.987 423 29997 GET 200 application/x-javascript
+ 3.374 0.463 411 14621 GET 200 application/x-javascript
+ 3.862 0.163 409 5451 GET 200 text/css http://s.ytimg.com/yt/css/iyt-vfl97456.css
+ 4.035 0.465 413 10445 GET 200 image/png
+ 4.044 0.450 408 337 GET 200 image/gif http://s.ytimg.com/yt/img/pixel-vfl73.gif
+ 4.045 0.731 426 746 GET 200 image/gif http://s.ytimg.com/yt/img/icn_loading_animated-vfl24663.gif
+ 4.045 1.698 413 1944 GET 200 image/jpeg
+ 4.046 4.487 413 3915 GET 200 image/jpeg http://i4.ytimg.com/vi/Cgz5BELaYW0/default.jpg
+ 4.047 1.389 413 1899 GET 200 image/jpeg http://i4.ytimg.com/vi/sLbHicGdXvw/default.jpg
+ 4.047 1.207 413 2321 GET 200 image/jpeg http://i2.ytimg.com/vi/uYGcDOJCf7Q/default.jpg
+ 4.048 2.306 415 16508 GET 200 image/jpeg
+ 4.049 1.200 413 3884 GET 200 image/jpeg http://i4.ytimg.com/vi/C-qrEGG9kSo/default.jpg
+ 4.049 1.615 413 3925 GET 200 image/jpeg
+ 4.050 2.953 413 3847 GET 200 image/jpeg
+ 4.050 1.524 413 3888 GET 200 image/jpeg http://i2.ytimg.com/vi/qzcayb9KEis/default.jpg
+ 4.051 1.283 413 4561 GET 200 image/jpeg http://i2.ytimg.com/vi/1lVS22y4uoU/default.jpg
+ 4.051 1.893 413 4512 GET 200 image/jpeg http://i4.ytimg.com/vi/GgDl-VwkswA/default.jpg
+ 4.051 0.887 413 2391 GET 200 image/jpeg http://i1.ytimg.com/vi/L9JG1NWSGIM/default.jpg
+ 4.100 4.106 600 11624 GET 200 application/x-javascript
+ 4.110 0.665 417 7948 GET 200 image/png http://s.ytimg.com/yt/img/iyt_iconset-vfl94059.png
+ 8.214 0.025 0 0 GET (Cache) application/x-javascript
+ 8.304 0.370 398 267 GET 200 image/gif
+ 8.342 0.726 477 13947 GET 200 application/x-shockwave-flash
+ 8.617 0.040 0 0 GET (Cache) application/x-javascript
+ 8.693 0.281 599 262 GET 200 application/x-javascript
+ 8.992 0.140 432 1279 GET 200 image/gif http://s.ytimg.com/yt/img/whats_new/icon_whatsnew_hd-vfl76116.gif
+ 8.995 0.566 599 262 GET 200 application/x-javascript
+ 9.103 4.440 507 128666 GET 200 application/x-shockwave-flash
13.543 13290 308437 32 requests
00:09:45.953 1.177 351 616 GET 200 image/x-icon http://s.ytimg.com/yt/favicon-vfl86270.ico
00:09:45.971 YouTube – Broadcast Yourself.
+ 0.000 0.994 460 215 GET 204 text/html http://csi.gstatic.com/csi?v=2&s=youtube&action=index&srt=1232&rt=ol.8453&e=900030&ad=n4061ad
+ 4.039 0.264 480 4306 GET 200 application/x-shockwave-flash
+ 4.040 0.365 573 525 GET 200 application/xml
+ 4.040 0.181 401 617 GET 200 text/xml
+ 4.240 1.543 510 41041 GET 200 image/jpeg
+ 4.422 0.508 636 2651 GET 200 text/plain
+ 4.422 0.757 695 1611 GET 200 application/x-www-form-urlencoded http://www.youtube.com/get_video_info?video_id=A3bYmg9tYwA&el=adunit&ps=yva&width=300&height=225
+ 5.214 0.452 397 393 GET 200 text/xml; charset=UTF-8
+ 5.707 0.192 485 3027 GET 200 image/jpeg
+ 9.209 0.198 604 150 GET 200 image/gif ;
+ 19.193 0.151 604 150 GET 200 image/gif ;
+ 49.191 0.279 604 150 GET 200 image/gif ;
+ 1:59.189 0.281 604 150 GET 200 image/gif ;
+ 3:59.188 0.232 605 150 GET 200 image/gif ;
239.421 7658 55136 14 requests
come si vede il risultato è decisamente più complesso ed articolato.
Diventa interessante notare che alle 32 + 14 GET request generate sono associati indirizzi URL diversi che fanno riferimento tanto ad oggetti statici (immagini o testo) quanto ad applicazioni eo configurazioniapplicazioni XML.
Questo è da considerarsi un comportamento generale. Una pagina web è composta da una serie di n elementi che provengono da x fonti differenti. Alcuni di questi elementi sono semplicemente statici o descrittivi (TXT, HTML, Molti formati Grafici) altri sono invece componenti attive che sono in grado di interagire col sistema chiamante (il browser ed il sistema operativo ospitante) e modificarlo in funzione delle esigenze specifiche della applicazione.
L’esempio più banale di questo comportamento sono i cookie, piccoli file di testo che contengono informazioni inerenti la sessione di navigazione dell’utente per permettere al web service chiamato (intendo con web service in generale una applicazione su internet) di tenere contro della transazione. Chiunque abbia fatto acquisti online ha avuto esperienza di cookie, se provate a vedere nel vostro pc o mac ne troverete molti.
Se faccio click sul pulsante accedi ottengo questa cosa simpatica:
00:00:00.000 Google
+ 0.000 0.398 1027 408 GET 302 Redirect to http://www.google.it/ http://www.google.com/
+ 0.398 0.087 1045 3656 GET 200 text/html; charset=UTF-8 http://www.google.it/
+ 0.571 0.087 880 136 GET 204 text/html; charset=UTF-8 http://www.google.it/gen_204?atyp=i&ghp=fbg
0.658 2952 4200 3 requests
00:00:00.655 Google
+ 0.000 0.003 0 0 GET (Cache) text/javascript; charset=UTF-8
+ 0.009 0.068 979 215 GET 204 text/html http://www.google.it/csi?v=3&s=webhp&action=&srt=571&tran=15&ei=7dEnSv7XOo2PsAa4xqHgBQ&e=17259,17315,18169,19772,20572&rt=prt.22,ol.67,xjs.111
+ 0.017 0.060 875 125 GET 204 text/html http://clients1.google.it/generate_204
0.078 1854 340 3 requests
00:09:11.986 Utube.com® – Universal Tube & Rollform Equipment
+ 0.000 1.060 573 4646 GET 200 text/html; charset=UTF-8 http://www.utube.com/
+ 1.087 0.250 455 2404 GET 200 text/css
+ 1.087 0.539 448 1243 GET 200 text/css
+ 1.088 0.504 845 4858 GET 200 text/javascript; charset=utf-8 http://www.google.com/jsapi
+ 1.140 0.843 451 4534 GET 200 application/x-javascript
+ 1.141 0.889 440 5376 GET 200 application/x-javascript http://www.utube.com/__utm.js
+ 1.646 1.037 428 16256 GET 200 application/x-javascript; charset=UTF-8 http://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js
+ 2.769 0.262 828 379 GET 200 image/gif http://www.utube.com/__utm.gif?utmwv=6.1&utmn=1488585013&utmsr=1280×800&utmsc=32-bit&utmul=en-us&utmje=1&utmjv=1.3&utmfl=10.0&utmcn=1&utmdt=Utube.com%AE%20-%20Universal%20Tube%20%26%20Rollform%20Equipment&utmhn=www.utube.com&utmr=-&utmp=/
+ 2.770 0.835 437 1007 GET 302 Redirect to http://as.casalemedia.com/s?s=94367&u=utube.com&f=1&id=3769786688.260856&C=1 http://as.casalemedia.com/s?s=94367&u=utube.com&f=1&id=3769786688.260856
+ 3.630 0.403 500 1180 GET 200 text/javascript http://as.casalemedia.com/s?s=94367&u=utube.com&f=1&id=3769786688.260856&C=1
+ 4.054 0.950 509 4585 GET 200 * http://ad.103092804.com/st?ad_type=pop&ad_size=0x0&site=200962§ion_code=KM-casale-hp-pop&banned_pop_types=28&pop_times=1&pop_frequency=86400
+ 5.095 0.441 457 439 GET 302 Redirect to http://ad.103092804.com/imp?Z=0x0&y=28&S=KM-casale-hp-pop&i=200962&_salt=3766899443&B=10&r=1
+ 5.536 0.643 712 7021 GET 200 application/x-javascript
+ 6.251 0.669 729 7013 GET 200 image/gif
+ 6.255 3.437 737 35052 GET 200 image/jpeg
+ 6.255 0.850 737 3458 GET 200 image/gif
+ 6.256 0.784 733 1219 GET 200 image/gif
+ 6.256 5.209 740 1511 GET 200 image/png
+ 6.256 1.337 738 4105 GET 200 image/jpeg
+ 6.257 5.309 744 3733 GET 200 image/jpeg
+ 6.257 1.100 740 4815 GET 200 image/jpeg
+ 6.258 7.139 741 3920 GET 200 image/jpeg
+ 6.258 4.943 741 4909 GET 200 image/jpeg
+ 6.258 4.863 735 2804 GET 200 image/png
+ 6.258 13.232 747 4528 GET 200 image/jpeg
+ 6.259 3.893 740 4649 GET 200 image/jpeg
+ 6.259 6.252 745 4702 GET 200 image/jpeg
+ 6.259 4.408 741 3750 GET 200 image/jpeg
+ 6.260 4.978 738 5669 GET 200 image/jpeg
+ 6.263 1.088 1048 596 GET 200 text/html; charset=UTF-8
+ 6.264 5.701 740 3731 GET 200 image/jpeg
+ 6.268 1.253 1089 632 GET 200 text/html; charset=UTF-8
+ 6.270 5.372 744 405 GET 200 image/gif
+ 6.271 8.624 741 3688 GET 200 image/jpeg
+ 6.272 6.600 742 5378 GET 200 image/jpeg
+ 6.272 7.889 744 4183 GET 200 image/jpeg
+ 6.272 6.959 740 5390 GET 200 image/jpeg
+ 6.273 7.473 748 5017 GET 200 image/jpeg
+ 6.273 7.958 742 4208 GET 200 image/jpeg
+ 6.274 8.888 739 6201 GET 200 image/jpeg
+ 6.274 9.546 741 4659 GET 200 image/jpeg
+ 6.274 8.621 739 3006 GET 200 image/jpeg
+ 6.275 8.954 747 3940 GET 200 image/jpeg
+ 6.275 9.617 740 4471 GET 200 image/jpeg
+ 6.276 12.854 743 6812 GET 200 image/jpeg
+ 6.276 12.266 739 6425 GET 200 image/jpeg
+ 6.277 9.795 734 6194 GET 200 image/jpeg
+ 6.277 9.883 735 5718 GET 200 image/jpeg
+ 6.277 12.094 744 4671 GET 200 image/jpeg
+ 6.278 17.363 742 26794 GET 200 image/jpeg
+ 6.278 3.577 408 20437 GET 200 text/javascript http://cetrk.com/pages/scripts/0002/3108.js
+ 6.279 1.315 1034 594 GET 200 text/html; charset=UTF-8
+ 6.285 1.547 1050 595 GET 200 text/html; charset=UTF-8
+ 6.292 1.607 1048 596 GET 200 text/html; charset=UTF-8
+ 6.297 1.759 943 880 GET 200 text/html; charset=UTF-8
+ 6.302 1.901 1064 609 GET 200 text/html; charset=UTF-8
+ 6.307 1.899 1091 632 GET 200 text/html; charset=UTF-8
+ 6.312 2.951 1048 596 GET 200 text/html; charset=UTF-8
+ 6.313 10.468 736 508 GET 200 image/gif
+ 6.396 19.174 810 129360 GET 200 application/x-shockwave-flash
+ 7.432 4.385 771 2368 GET 200 text/html
+ 7.561 1.520 849 4789 GET 200 * http://ad.103092804.com/st?ad_type=iframe&ad_size=468×60&site=200962§ion_code=INSERT_SECTION_CODE_HERE
+ 7.621 2.429 747 3996 GET 200 text/html; charset=UTF-8
+ 7.863 4.276 774 2340 GET 200 text/html
+ 7.930 2.949 771 2376 GET 200 text/html
+ 8.164 5.219 487 915 GET 200 application/x-javascript
+ 8.263 2.154 802 4747 GET 200 *
+ 8.268 1.241 852 4792 GET 200 * http://ad.103092804.com/st?ad_type=iframe&ad_size=300×250&site=200962§ion_code=INSERT_SECTION_CODE_HERE
+ 9.117 0.476 775 672 GET 302 Redirect to http://ad.103092804.com/imp?Z=468×60&S=INSERT_SECTION_CODE_HERE&i=200962&_salt=3730536574&B=10&u=http%3A%2F%2Fwww.utube.com%2Fjsiframe.php%3FcURL%3Dhttp%253A%252F%252Fad.103092804.com%252Fst%253Fad_type%253Diframe%2526ad_size%253D468x60%2526site%253D200962%2526section_code%253DINSERT_SECTION_CODE_HERE%26w%3D468%26h%3D60&r=0
+ 9.296 1.036 771 2396 GET 200 text/html
+ 9.554 0.489 779 675 GET 302 Redirect to http://ad.103092804.com/imp?Z=300×250&S=INSERT_SECTION_CODE_HERE&i=200962&_salt=1320192736&B=10&u=http%3A%2F%2Fwww.utube.com%2Fjsiframe.php%3FcURL%3Dhttp%253A%252F%252Fad.103092804.com%252Fst%253Fad_type%253Diframe%2526ad_size%253D300x250%2526site%253D200962%2526section_code%253DINSERT_SECTION_CODE_HERE%26w%3D300%26h%3D250&r=0
+ 9.594 0.776 1030 1489 GET 200 application/x-javascript
+ 9.910 0.084 0 0 GET (Cache) text/javascript http://www.google-analytics.com/ga.js
+ 10.035 0.897 823 328 GET 200 image/gif http://www.google-analytics.com/__utm.gif?utmwv=4.3&utmn=2077650753&utmhn=www.utube.com&utmcs=utf-8&utmsr=1280×800&utmsc=32-bit&utmul=en-us&utmje=1&utmfl=10.0%20r22&utmdt=Utube.com%C2%AE%20-%20Universal%20Tube%20%26%20Rollform%20Equipment&utmhid=1528209297&utmr=-&utmp=/&utmac=UA-7831773-1&utmcc=__utma%3D197241067.1488585013.1244124185.1244124185.1244124185.1%3B%2B__utmz%3D197241067.1244124185.1.1.utmccn%3D(direct)%7Cutmcsr%3D(direct)%7Cutmcmd%3D(none)%3B
+ 10.044 10.202 1034 1388 GET 200 application/x-javascript
+ 10.135 7.355 484 1500 GET 200 image/jpeg
+ 10.136 7.005 488 681 GET 200 image/gif
+ 10.276 12.999 476 723 GET 200 image/png
+ 10.337 2.104 463 390 GET 200 application/x-javascript
+ 10.385 1.977 530 3679 GET 200 image/gif
+ 10.386 2.055 516 410 GET 302 Redirect to http://ad.yieldmanager.com/pixel?id=57011&t=2&cmxid=2108.111095XMC
+ 10.498 0.640 710 617 GET 302 Redirect to
+ 10.561 8.393 752 1812 GET 200 image/gif
+ 10.562 8.671 753 1808 GET 200 image/gif
+ 11.139 4.430 1016 2093 GET 200 application/x-javascript
+ 12.446 7.276 831 398 GET 200 image/gif http://ad.yieldmanager.com/pixel?id=57011&t=2&cmxid=2108.111095XMC
+ 12.473 0.303 497 2984 GET 200 application/x-shockwave-flash
+ 12.487 0.568 513 3085 GET 200 application/x-shockwave-flash
+ 12.502 0.642 496 2987 GET 200 application/x-shockwave-flash
+ 12.516 20.999 0 0 GET (Aborted) *
+ 13.424 0.810 969 859 GET 200 text/html; charset=UTF-8
+ 14.258 1.465 414 505 GET 200 text/html http://i.azjmp.com/2Wtx7?azauxurl=45657
+ 14.266 5.874 464 55720 GET 200 application/x-shockwave-flash
+ 15.575 6.385 944 30716 GET 200 application/x-shockwave-flash
+ 16.650 0.401 887 295 GET 200 image/gif
+ 20.266 1.006 541 9980 GET 200 image/gif
+ 21.967 0.002 0 0 GET (Cache) application/x-shockwave-flash
33.516 68371 571204 97 requests
00:09:36.322 YouTube – Broadcast Yourself.
+ 0.000 3.335 575 14422 GET 200 text/html; charset=utf-8 http://www.youtube.com/
+ 1.246 1.078 418 12974 GET 200 text/css
+ 1.246 0.772 416 1112 GET 200 application/x-javascript http://s.ytimg.com/yt/js/csi_squished-vfl95971.js
+ 1.246 1.077 404 482 GET 404 text/html
+ 2.349 0.987 423 29997 GET 200 application/x-javascript
+ 3.374 0.463 411 14621 GET 200 application/x-javascript
+ 3.862 0.163 409 5451 GET 200 text/css http://s.ytimg.com/yt/css/iyt-vfl97456.css
+ 4.035 0.465 413 10445 GET 200 image/png
+ 4.044 0.450 408 337 GET 200 image/gif http://s.ytimg.com/yt/img/pixel-vfl73.gif
+ 4.045 0.731 426 746 GET 200 image/gif http://s.ytimg.com/yt/img/icn_loading_animated-vfl24663.gif
+ 4.045 1.698 413 1944 GET 200 image/jpeg
+ 4.046 4.487 413 3915 GET 200 image/jpeg http://i4.ytimg.com/vi/Cgz5BELaYW0/default.jpg
+ 4.047 1.389 413 1899 GET 200 image/jpeg http://i4.ytimg.com/vi/sLbHicGdXvw/default.jpg
+ 4.047 1.207 413 2321 GET 200 image/jpeg http://i2.ytimg.com/vi/uYGcDOJCf7Q/default.jpg
+ 4.048 2.306 415 16508 GET 200 image/jpeg
+ 4.049 1.200 413 3884 GET 200 image/jpeg http://i4.ytimg.com/vi/C-qrEGG9kSo/default.jpg
+ 4.049 1.615 413 3925 GET 200 image/jpeg
+ 4.050 2.953 413 3847 GET 200 image/jpeg
+ 4.050 1.524 413 3888 GET 200 image/jpeg http://i2.ytimg.com/vi/qzcayb9KEis/default.jpg
+ 4.051 1.283 413 4561 GET 200 image/jpeg http://i2.ytimg.com/vi/1lVS22y4uoU/default.jpg
+ 4.051 1.893 413 4512 GET 200 image/jpeg http://i4.ytimg.com/vi/GgDl-VwkswA/default.jpg
+ 4.051 0.887 413 2391 GET 200 image/jpeg http://i1.ytimg.com/vi/L9JG1NWSGIM/default.jpg
+ 4.100 4.106 600 11624 GET 200 application/x-javascript
+ 4.110 0.665 417 7948 GET 200 image/png http://s.ytimg.com/yt/img/iyt_iconset-vfl94059.png
+ 8.214 0.025 0 0 GET (Cache) application/x-javascript
+ 8.304 0.370 398 267 GET 200 image/gif
+ 8.342 0.726 477 13947 GET 200 application/x-shockwave-flash
+ 8.617 0.040 0 0 GET (Cache) application/x-javascript
+ 8.693 0.281 599 262 GET 200 application/x-javascript
+ 8.992 0.140 432 1279 GET 200 image/gif http://s.ytimg.com/yt/img/whats_new/icon_whatsnew_hd-vfl76116.gif
+ 8.995 0.566 599 262 GET 200 application/x-javascript
+ 9.103 4.440 507 128666 GET 200 application/x-shockwave-flash
13.543 13290 308437 32 requests
00:09:45.953 1.177 351 616 GET 200 image/x-icon http://s.ytimg.com/yt/favicon-vfl86270.ico
00:09:45.971 YouTube – Broadcast Yourself.
+ 0.000 0.994 460 215 GET 204 text/html http://csi.gstatic.com/csi?v=2&s=youtube&action=index&srt=1232&rt=ol.8453&e=900030&ad=n4061ad
+ 4.039 0.264 480 4306 GET 200 application/x-shockwave-flash
+ 4.040 0.365 573 525 GET 200 application/xml
+ 4.040 0.181 401 617 GET 200 text/xml
+ 4.240 1.543 510 41041 GET 200 image/jpeg
+ 4.422 0.508 636 2651 GET 200 text/plain
+ 4.422 0.757 695 1611 GET 200 application/x-www-form-urlencoded http://www.youtube.com/get_video_info?video_id=A3bYmg9tYwA&el=adunit&ps=yva&width=300&height=225
+ 5.214 0.452 397 393 GET 200 text/xml; charset=UTF-8
+ 5.707 0.192 485 3027 GET 200 image/jpeg
+ 9.209 0.198 604 150 GET 200 image/gif ;
+ 19.193 0.151 604 150 GET 200 image/gif ;
+ 49.191 0.279 604 150 GET 200 image/gif ;
+ 1:59.189 0.281 604 150 GET 200 image/gif ;
+ 3:59.188 0.232 605 150 GET 200 image/gif ;
239.421 7658 55136 14 requests
00:26:39.551 YouTube – Broadcast Yourself.
+ 0.000 0.272 794 533 GET 303 Redirect to https://www.google.com/accounts/ServiceLogin?service=youtube&hl=it_IT&passive=true<mpl=sso&uilel=3&continue=http%3A//www.youtube.com/signup%3Fhl%3Dit_IT%26warned%3D%26nomobiletemp%3D1%26next%3D/
+ 0.272 0.317 1546 1512 GET 200 text/html; charset=UTF-8 https://www.google.com/accounts/ServiceLogin?service=youtube&hl=it_IT&passive=true<mpl=sso&uilel=3&continue=http%3A//www.youtube.com/signup%3Fhl%3Dit_IT%26warned%3D%26nomobiletemp%3D1%26next%3D/
0.590 2340 2045 2 requests
00:26:40.346 YouTube – YouTube di Aierano
+ 0.000 0.297 1029 773 GET 303 Redirect to http://www.youtube.com/ http://www.youtube.com/signup?hl=it_IT&warned=&nomobiletemp=1&next=/&pli=1&auth=DQAAAJoAAAB0xzjZw765EV31gBzhIK7thG2PQaPHCfA55gcULyo6UF75yoOzFq59OxUj75SpSvE0Tfv6q44HmyO2S2d5DOs32cGqEbr0SgOuHlOfKH6Y__gGoOgIg5Tz7-GMtY6XqV9i2Y1s_kyDrYxh2v0DiLWXaa5p65GiTo6wkr_zrV7TmxgytsN5g2YBwa-ytzPglTmC3RX39aPh7RtJMpFuyOCF
+ 0.347 2.341 973 14384 GET 200 text/html; charset=utf-8 http://www.youtube.com/
+ 0.766 0.008 0 0 GET (Cache) text/css
+ 0.775 0.001 0 0 GET (Cache) application/x-javascript http://s.ytimg.com/yt/js/csi_squished-vfl95971.js
+ 0.777 0.001 0 0 GET (Cache) application/x-javascript
+ 0.780 0.001 0 0 GET (Cache) application/x-javascript
+ 0.782 0.003 0 0 GET (Cache) text/css http://s.ytimg.com/yt/css/iyt-vfl97456.css
+ 0.965 0.013 0 0 GET (Cache) image/png
+ 0.996 0.003 0 0 GET (Cache) image/png http://s.ytimg.com/yt/img/iyt_iconset-vfl94059.png
+ 1.227 0.775 660 11639 GET 200 application/x-javascript
+ 2.022 0.001 0 0 GET (Cache) application/x-javascript
+ 2.100 0.003 0 0 GET (Cache) application/x-shockwave-flash
+ 2.265 0.001 0 0 GET (Cache) application/x-javascript
+ 2.458 0.002 0 0 GET (Cache) application/x-shockwave-flash
+ 2.565 0.001 0 0 GET (Cache) application/x-shockwave-flash
+ 2.568 0.001 0 0 GET (Cache) application/xml
+ 2.571 0.001 0 0 GET (Cache) text/plain
+ 2.592 0.329 1182 1610 GET 200 application/x-www-form-urlencoded http://www.youtube.com/get_video_info?video_id=A3bYmg9tYwA&el=adunit&ps=yva&width=300&height=225
+ 2.593 0.001 0 0 GET (Cache) text/xml
+ 2.599 0.002 0 0 GET (Cache) image/jpeg
+ 2.723 0.163 661 262 GET 200 application/x-javascript
+ 2.918 0.174 659 262 GET 200 application/x-javascript
+ 2.976 0.000 0 0 GET (Cache) text/xml; charset=UTF-8
+ 3.009 0.001 0 0 GET (Cache) image/jpeg
3.092 5164 28930 24 requests
00:26:43.543 YouTube – YouTube di Aierano
+ 0.000 0.158 457 215 GET 204 text/html http://csi.gstatic.com/csi?v=2&s=youtube&action=iyt&srt=790&rt=ol.2409&e=900030&ad=n4061ad
+ 9.239 0.132 604 150 GET 200 image/gif ;
+ 19.236 0.151 604 150 GET 200 image/gif ;
+ 49.246 0.138 604 150 GET 200 image/gif ;
+ 1:59.244 0.177 604 150 GET 200 image/gif ;
119.421 2873 815 5 requests
La maggior parte delle chiamate invoca del codice Java, si noti che non ho dovuto immettere fisicamente username e password in quanto un cookie lo ha fatto per me.
La situazione che si crea quando si effettua una richiesta di browsing internet è quindi la seguente:
- un utente richiede una pagina
- il sistema converte la richiesta in una GET
- il server che riceve la richiesta scatena una serie di transazioni che possono comportare:
- il download ed esecuzione di codice,
- il reindirizzamento ad altro server
- l’uso di protocolli diversi dall’HTTP come Java o XML e via dicendo
- l’interazione col computer con scambio di informazioni, ad esempio lettura di dati del computer
- l’interazione col computer con la alterazione di dati, come ad esempio la scrittura di file in diverse aree.
- Il client esegue il codice passato dal server e quindi a sua volta può effettuare transazioni che sono dipendenti dal suo status.
Risulta chiaro quindi che la navigazione Web non si riduce alla semplice visita di una pagina statica su di un server con hyperlink ma risulta essere la composizione di molte più cose come esemplifica la figura sotto.
L’origine di queste sorgenti può risiedere su macchine geograficamente molto distanti, e la attribuzione delle origini delle varie fonti può essere determinata dallo scambio di informazioni tra il richiedente (il browser) ed il server cui fa riferimento la prima URL richiesta.
Negli esempi precedenti, ad esempio, il reindirizzamento verso www.google.it è legato al fatto che il mio browser ha comunicato al server il fatto che il mio preferred language è l’italiano.
A quali rischi ci si espone
Abbiamo capito che il browsing è una attività complessa e dinamica, cerchiamo di capire quali sono i rischi a cui si va incontro durante questa attività.
le sorgenti
La prima osservazione di security che viene in mente è legata al fatto che le sorgenti che compongono la pagina sono molteplici. Pur ammettendo che ci si possa fidare del primo indirizzamento (quello che tendiamo a chiamare” il sito web”), risulta evidente che magiori sono le sorgenti interessate alla transazione maggiore è il rischio legato alla attività di browsing. Il “gestore” della pagina che visitiamo dovrebbe essere in grado di garantire la sicurezza di tutte le sorgenti in oggetto.
Per altro va tenuto presente che parte delle transazioni generate non dipende dal “server” ma sono generate dal client attraverso, ad esempio, helper object (per capirci, le barre tipo quelle di yahoo egoogle ad esempio).
Il fatto che il gestore possa garantire tutte le sorgenti è plausibile solo nel caso che le gestisca “direttamente”, qualsiasi sorgente, concedetemi il termine improprio ma efficace, in sub-appalto risulta, per forza di cose, potenzialmente rischiosa in quanto non sotto il diretto controllo del gestore della pagina.
Questo rischio comprende la natura dei contenuti della pagina stessa, visibili o invisibili che siano, ed il tipo di attività e comunicazione connessi al browsing.
Il DNS
Un altro problema è legato al fatto che un elevato numero di richieste comporta un elevato numero di richieste ai DNS per ottenere risposta. Il DNS diventa quindi un elemento di rischio in quanto deve riolvere oggetti “on the fly” utilizzando sempre piu spesso query iterative per ricercare la “zona” cui si fa rifemento per l’oggetto medesimo. senza entrare nel dettaglio del funzionamento dei DNS, fuori da questo breve inserto, risulta evidente che se il DNS viene alterato potrebbe rispondere ad alcune richieste in maniera scorretta (pensate al DNS Poisonong) .
Gli Oggetti
Provenendo da fonti disparate (e quindi di per se ad alto rischio) gli oggetti che compongono la pagina possono essere a loro volta oggetti di securizzazione. Il caso piu banale è la presenza di un oggetto come una gif animata o un eseguibile contente un virus , ma esistono centinaia di combinazioni potenzialmente pericolose.
Le Transazioni
Assunto come assodato che la attività di browsing non comporta una semplice interpretazione statica di un oggetto definito da un Meta-linguaggio come era in origine l’HTTP, ma una serie complessa di interazioni e transazioni lato client e lato server(s) viene lecito chiedersi, in termini di sicurezza, quante e quali di queste transazioni siano pericolose. Il problema è in realtà molto più complesso di quello che sembra:
- quali sono le transazioni lecite?
- quali sono le modifiche che io ritengo sicure sul mio sistema a fronte delle mie policy di gestione di sicurezza?
- quali sono i minimi diritti amministrativi che devo concedere alla macchina per poter eseguire le transazioni che io considero lecite?
- …
Il Trasferimento di informazioni
parte, se volete, delle transazioni ma più generalmente accettato come punto a se stante, vi è poi il problema del tipo di datiinformazioni che considero lecito in ingresso ed uscita.
Questo argomento ha inerenze tanto amministrative (produttività, etica interna aziendale) sia legali, e viene generalmente indicato come AUP(Accettable User Policy).
Possiamo dividere il problema in diverse aree:
Compliance sui contenuti: si tratta di definire quali contenuti siano leciti o meno in relazione al browsing. La liceità è una conseguenza diretta di 2 fattori:
- la compliancy inerente i contenuti considerati inadattiindecorosi
- il potenziale di rischio di infezione legato al browsing di siti
per quello che concerne il primo fattore la soluzione tipicamente in uso è la categorizzazione dei siti in funzione del loro contenuto comunicativo. Vengono cosi identificati i siti contenenti contenuti pornografici, quelli che parlano di viaggi, quelli medici, quelli giornalistici etc etc e scartati quelli non conformi alle regole aziendali.
analogamente si fa una valutazione sul secondo fattore. Purtroppo è luogo comune fare considerazioni ti tipo errato sul livello di pericolosità di un sito in funzione della sua categorizzazione contenutistica, ad esempio statisticamente i siti porno sono più sicuri di quelli delle piccole amministrazioni pubbliche, anche se luogo comune vuole che sia vero il contrario.
Vi sono due considerazioni da fare sulla categorizzazione:
in primo luogo i limiti intrinseci della categorizzazione sono legati al fatto che, oggi come oggi, gran parte dei contenuti sono dinamici e quindi è virtualmente non prevedibile a priori il reale contenuto di una pagina;
vi è poi un problema di categorizzazione per tutti quei siti che sono in qualche maniera non accessibili, ad esempio molti siti a pagamento o a registrazione e cosi via.
Compliancy sui downloadupload
In questo caso si tratta di decidere quali oggetti sono consentiti in termini di tipo e dimensione. Le considerazioni legate a questo tipo traggono origine sia da problematiche di sicurezza in senso stretto (rischio di trasferimento di dati sensibili o rischio di download di agenti infettivi), che da considerazioni di utilizzo delle risorse in uso (banda passante utilizzata, carico di lavoro di processori ed unità coinvolte nei trasferimenti di file).
Del resto se il download di grossi oggetti comportasse il collasso della struttura di navigazione il risultato non sarebbe molto diverso da un Denial of Service (DoS o Ddos).
Compliancy su protocolli e servizi
La navigazione web comporta, abbiamo visto prima gli esempi, lo scatenarsi di azioni diverse e l’uso di protocolli che passano via HTTP, applicazioni e servizi molteplici. In una ottica di sicurezza diventa importante definire quali di queste istanze sono lecite se associate al browsing.
Il fatto che un protocollo passi via HTTP significa semplicemente che l’HTTP diventa una sorta di VPN che consente il passaggio di cose altrimenti bloccate normalmente.
Parlando di protocolli inerenti il web browsing va dedicato un occhio particolare al protocollo HTTPS questo, infatti, consente il trasferimento di quanto visto sopra in una VPN criptata. Il limite del protocollo HTTPS, in questo senso, è che non è dipendente dai contenuti trasferiti ma si limita a trasferire i contenuti, quali che essi siano, in maniera “sicura”. consideriamo ancora una volta il problema di security citato al primo punto ed inerente al rischio associato alla molteplicità delle sorgenti, in questa ottica HTTPS non offre nessun layer di sicurezza ulteriore, al contrario supponendo che una delle sorgenti sia “malevola” HTTPS ne consentirebbe il trasferimento fino all’utente finale senza che sia possibile fare una operazione di analisi se non a posteriori.
Nei prossimi Post andremo un po’ più nel dettaglio di quali sono i rischi pratici, perché ci sono questi rischi e come è fatta internet.
Ci occuperemo quindi di come gestire questi rischi, minimizzandoli, utilizzando meccanismi di mitigazione del danno o di trasferimento del rischio, insomma i classici strumenti della security.
Ogni feedback è ben accetto
ciao
A