<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en"><title type="text">Wampiryczny blog</title><link rel="alternate" type="text/html" href="http://wampir.mroczna-zaloga.org/" /><subtitle type="html">Bezpieczeństwo aplikacji internetowych, jego budowanie i testowanie. Testy penetracyjne, incident response, analiza malware. I kilka innych tematów, jak to na blogu bywa.</subtitle><logo>http://static.xbow.pl/blog.png</logo><updated>1970-01-01T00:00:00+00:00</updated><generator>Serendipity 1.4.1 - http://www.s9y.org/</generator><admin:errorReportsTo xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:resource="mailto:pawel.golen@mroczna-zaloga.org" /><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><link rel="self" href="http://feeds.feedburner.com/wampir-mroczna-zaloga-org" type="application/atom+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/wampir-mroczna-zaloga-org" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fwampir-mroczna-zaloga-org" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><title type="text">ONI Cię śledzą!</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/w2ru0lH4TUc/759-oni-cie-sledza.html" /><category term="Różne" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-14T09:49:00-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/759-guid.html</id><content type="html">
    &lt;p&gt;Jakiś czas temu z pewnym zdziwieniem patrzyłem na ludzi, którzy mówili, że śledzą ich &lt;i&gt;Oni&lt;/i&gt;, okręcali głowy folią aluminiową, by &lt;i&gt;Oni&lt;/i&gt; nie mogli czytać ich myśli albo "wkładać myśli prosto do głowy". To, co kiedyś można było uznać za wytwór chorego umysłu cierpiącego na urojenia, dziś zaczyna być &lt;i&gt;przykrą&lt;/i&gt; rzeczywistością...&lt;/p&gt; &lt;p&gt;Kilka fragmentów z artykułu &lt;i&gt;Billboard z wysokim IQ&lt;/i&gt; (Newsweek 46/2009):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(...) skanery, w jakie wyposażono plakaty, wychwytują fale radiowe docierające do anteny każdego auta na drodze. (...) Jeśli jest to radio, którego słuchaczkami są np. młode dobrze zarabiające kobiety (...), na ekranie pojawi się reklama spa (...),&lt;/li&gt;
&lt;li&gt;(...) uczeni wyposażyli go w system analizy twarzy (...), który rejestruje ludzką mimikę (...) by przewidzieć, jak przechodzień reaguje na konkretną reklamę (...),&lt;/li&gt;
&lt;li&gt;(...) będzie w stanie z daleka ustalić, czy zbliża siędo niego kobieta, czy mężczyzna (...) zaproponuje reklamę perfum lub sportowego auta (...),&lt;/li&gt;
&lt;li&gt;(...) plakat będzie mógł wysłać komunikat dźwiękowy do wybranej osoby, tak by inni go nie słyszeli (...),&lt;/li&gt;
&lt;li&gt;(...) gdy sięgną po wózek - do jego odczepienia (...) używają specjalnej karty lojalnościowej, na której zapisana jest lista produktów kupowanych wcześniej. Układ elektroniczny wózka ją analizuje i wyświetla reklamy podobnych towarów (...),&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Podoba się Wam taka wizja świata? Mnie nie. Ale niestety - tak będzie. Wszystko po to, by &lt;i&gt;Oni&lt;/i&gt; sprzedawali coraz więcej nikomu niepotrzebnych produktów.&lt;/p&gt; 
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=w2ru0lH4TUc:NtyFi3K0Cig:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/w2ru0lH4TUc" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=759</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">13</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=759</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/759-oni-cie-sledza.html</feedburner:origLink></entry><entry><title type="text">OWASP Top10 2010 (RC1)</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/YPgSj9t9WWo/758-owasp-top10-2010-rc1.html" /><category term="WebApps" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-14T01:37:19-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/758-guid.html</id><content type="html">
    &lt;p&gt;Pojawiła się nowa wersja &lt;a href="http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project"&gt;OWASP Top10&lt;/a&gt;. Nie jest to jeszcze wersja ostateczna, ma status RC. Zmiany w stosunku do OWASP Top10 2007 są niewielkie (&lt;a href="http://www.owasp.org/index.php/File:OWASP_T10_-_2010_rc1.pdf"&gt;fragment PDF&lt;/a&gt;):&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;img src="http://static.xbow.pl/top10-2007-2010.png" alt=""  /&gt;
&lt;/div&gt;
&lt;p&gt;Warto zapoznać się z tym dokumentem.&lt;/p&gt;  
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=YPgSj9t9WWo:9_eOfaNQqKU:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/YPgSj9t9WWo" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=758</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=758</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/758-owasp-top10-2010-rc1.html</feedburner:origLink></entry><entry><title type="text">Kiedy powstał tamten post - odpowiedź</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/7wQnk5Q1bYw/757-kiedy-powstal-tamten-post-odpowiedz.html" /><category term="Forensic / Malware" /><category term="Różne" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-13T08:45:00-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/757-guid.html</id><content type="html">
    &lt;p&gt;Jakiś czas temu pisząc o &lt;a href="http://wampir.mroczna-zaloga.org/archives/676-identyfikatory-globalne-i-posrednie-ii.html"&gt;identyfikatorach globalnych i pośrednich&lt;/a&gt; zadałem pytanie całkiem niezwiązane z tematem:&lt;/p&gt;
&lt;blockquote&gt;
Pytanie dodatkowe nie związane z tematem: kiedy (prawdopodobnie) powstał ten post? Co za tym przemawia?
&lt;/blockquote&gt;
&lt;p&gt;Temat chyba nikogo nie zainteresował, &lt;a href="http://wampir.mroczna-zaloga.org/archives/478-plytka-raz-jeszcze-timestampy.html"&gt;nie każdy jest tak nienormalny jak ja&lt;/a&gt;, ale co tam, odpowiem sam sobie - może komuś się przyda.&lt;/p&gt;
&lt;p&gt;Wymieniony post &lt;a href="http://static.xbow.pl/local-global.png"&gt;zawiera ten obrazek&lt;/a&gt;. Przy odwołaniu do niego serwer zwraca następującą odpowiedź:&lt;/p&gt;
&lt;pre&gt;
HTTP/1.1 200 OK
Server: IdeaWebServer/v0.60
Date: Thu, 12 Nov 2009 21:33:10 GMT
Content-Type: image/png
Content-Length: 71467
Connection: Keep-Alive
Last-Modified: Wed, 05 Aug 2009 20:21:52 GMT
Expires: Fri, 13 Nov 2009 21:33:11 GMT
&lt;/pre&gt;
&lt;p&gt;Odpowiedź na zadane pytanie sugeruje nagłówek &lt;b&gt;Last-Modified&lt;/b&gt;.&lt;/p&gt;  
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=7wQnk5Q1bYw:kTgezJwV8dc:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/7wQnk5Q1bYw" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=757</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=757</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/757-kiedy-powstal-tamten-post-odpowiedz.html</feedburner:origLink></entry><entry><title type="text">Piramida potrzeb</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/SHvuK-RVFrQ/756-piramida-potrzeb.html" /><category term="Różne" /><category term="Security" /><category term="WebApps" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-12T08:19:00-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/756-guid.html</id><content type="html">
    &lt;p&gt;W psychologii istnieje pojęcie &lt;a href="http://pl.wikipedia.org/wiki/Hierarchia_potrzeb"&gt;piramidy (hierarchii) potrzeb&lt;/a&gt;. Potrzeby &lt;i&gt;wyższe&lt;/i&gt; aktywizują się dopiero po zaspokojeniu potrzeb niższych. Również w przypadku budowania aplikacji, (w)budowania bezpieczeństwa i jego testowania są rzeczy, które mają większy priorytet niż inne. Dopiero po ich realizacji można przejść "poziom wyżej".&lt;/p&gt; &lt;h1&gt;Aplikacja MUSI działać&lt;/h1&gt;
&lt;p&gt;Pierwszą &lt;b&gt;podstawową &lt;i&gt;potrzebą&lt;/i&gt; jest to, by aplikacja działała i realizowała swoje cele&lt;/b&gt;. Jak już kilka razy pisałem aplikacje &lt;i&gt;zwykle&lt;/i&gt; mają jakiś cel. Istnieje jakaś potrzeba, podejmowana jest więc decyzja o wdrożeniu lub stworzeniu aplikacji, która potrzebę (potrzeby) będzie zaspokajać/realizować. Sam proces definiowania wymagań odnośnie aplikacji, modyfikowania ich w trakcie jej tworzenia/wdrożenia i konfrontacja koncepcji z projektem a projektu z rzeczywistością może być... zaskakująca, co zresztą doskonale pokazuje znany(?) obrazek:&lt;/p&gt;
&lt;div style="text-align: center"&gt;
&lt;img src="http://static.xbow.pl/project2.jpg" alt=""  /&gt;
&lt;/div&gt;
&lt;p&gt;Osiągnięcie stanu, w którym aplikacja działa i realizuje swoje pierwotnie zdefiniowane zadania (a przynajmniej pewien "wystarczający" ich podzbiór) ma znaczenie priorytetowe. To zadanie otrzymuje większość dostępnych zasobów i &lt;i&gt;zagładza&lt;/i&gt; (od &lt;a href="http://pl.wikipedia.org/wiki/Zag%C5%82odzenie_procesu"&gt;zagłodzenia procesu&lt;/a&gt;) pozostałe zadania, które tak krytyczne nie są, a przynajmniej nie wydają się być.&lt;/p&gt;

&lt;p&gt;Czym to objawia się w praktyce? Ciekawym zajęciem może być obserwacja zmian zachodzących w harmonogramach projektów. Można często zaobserwować wydłużanie się etapu tworzenia kodu i jednocześnie skracanie czasu poświęcanego na testy (weryfikację poprawności działania) stworzonego i wdrożonego systemu. Skracanie, ponieważ data produkcyjnego uruchomienia systemu jest "święta" i nie może zostać w żaden sposób przesunięta.&lt;/p&gt;

&lt;p&gt;Poza skróceniem czasu przeznaczonego na testy, skraca się również czas zarezerwowany na poprawę znalezionych błędów. W wielu przypadkach przyjmowane jest optymistyczne założenie, że takich błędów nie będzie. W efekcie tego założenia zakończenie testów zbiega się z udostępnieniem produkcyjnym systemu i czasu na wprowadzenie poprawek po prostu nie ma.&lt;/p&gt;

&lt;p&gt;Choć skrócenie czasu przeznaczonego na testy, poprawki i ich weryfikację jest zjawiskiem niekorzystnym, to zdecydowanie gorsze efekty ma to, co dzieje się po stronie "produkcji". Działanie pod presją czasu często prowadzi do tego, że tworzony kod jest niskiej jakości (w szczególności - nie jest bezpieczny). Powód jest prosty - dążenie do osiągnięcia sytuacji, w której spełnione są wymagania funkcjonalne. Wszystko to, co nie jest niezbędne, odkładane jest "na potem". Rezygnuje się z niektórych &lt;i&gt;dobrych praktyk&lt;/i&gt;, tylko po to, by zdążyć na czas. I później w kodzie można znaleźć takie fragmenty:&lt;/p&gt;
&lt;pre&gt;
$stm = $db-&amp;gt;prepare('SELECT * FROM tabela WHERE a=:p_a AND b=:p_b AND c='.$c);
$stm-&amp;gt;bindParam(':p_a', $a, PDO::PARAM_INT);
$stm-&amp;gt;bindParam(':p_b', $b, PDO::PARAM_STR, 32);
&lt;/pre&gt;
&lt;p&gt;...i jak łatwo się domyślić w $c zapewne będzie SQLi... Dodatkowym rezultatem tego typu praktyk będą prawdopodobnie duże niespójności w aplikacji, przez co wyciąganie ogólnych wniosków będzie niemożliwe, co z kolei spowolni proces testów.&lt;/p&gt;

&lt;h1&gt;A jak to wygląda po stronie testów?&lt;/h1&gt;

&lt;p&gt;Jak to przekłada się na testowanie bezpieczeństwa? Tu też widzę pewną hierarchię potrzeb (i &lt;i&gt;zadań&lt;/i&gt;)... Pewne warunki muszą być spełnione po to, by można było nie tylko rozpocząć testy, ale by również testy były efektywne. Testy, które zostaną przeprowadzone, również układają się w pewne logiczne następstwo. Najpierw rzeczy podstawowe, w dużym stopniu uniwersalne. Dopiero później rzeczy specyficzne dla konkretnej aplikacji.&lt;/p&gt;

&lt;h2&gt;Aplikacja musi działać (a przynajmniej badana funkcja)&lt;/h2&gt;
&lt;p&gt;Po pierwsze &lt;b&gt;trzeba sprawdzić, czy aplikacja działa&lt;/b&gt;. Trudno testować jest funkcję, która nie jest jeszcze zaimplementowana lub działa w sposób błędny. Sensowność testowania funkcji, która ulegnie istotnym zmianom (bo nie przeszła testów funkcjonalnych czy akceptacyjnych) jest wątpliwa. Owszem, wykazanie &lt;i&gt;błędów&lt;/i&gt; bezpieczeństwa &lt;i&gt;jest&lt;/i&gt; przydatne, bo w trakcie modyfikacji można je jednocześnie usunąć, to stwierdzenie, że błędów nie ma jest praktycznie bezwartościowe - błędy mogą zostać wprowadzone w trakcie koniecznych modyfikacji.&lt;/p&gt;

&lt;p&gt;Sprawdzenie czy aplikacja działa nie oznacza oczywiście przeprowadzenie przed testami bezpieczeństwa testów funkcjonalnych. Chodzi tu o zweryfikowanie czy dana funkcja była już testowana i czy jest "przyjęta". Jeśli tak - można ją testować. Co w przypadku, gdy dana funkcja jest niegotowa? Można wykonać szybki rekonesans po to, by wychwycić "grube" błędy. Trzeba jednak pamiętać, że do tego fragmentu aplikacji trzeba będzie wrócić, gdy będzie gotowy.&lt;/p&gt;

&lt;p&gt;I jeszcze jedno. Do listy sposobów &lt;a href="http://pentester.jogger.pl/2009/04/22/jak-wkurzyc-pentestera/"&gt;jak wkurzyć pentestera&lt;/a&gt; dodałbym trzy, dość istotne punkty:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Niech aplikacja działa niestabilnie&lt;/b&gt;. Wykonanie dwa razy tej samej operacji pod rząd daje różne rezultaty. I niech pojawiają się losowo błędy 500. Nie zapomnij o nieregularnych i absolutnie niezapowiedzianych aktualizacjach aplikacji, oczywiście bez żadnego logu zmian.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Niech aplikacja działa wolno&lt;/b&gt;. Przecież to &lt;i&gt;tylko&lt;/i&gt; dwie minuty czekania na odpowiedź serwera. I nie, nie da się tego poprawić, bo akurat teraz są wykonywane również testy wydajnościowe.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Połącz dwa powyższe punkty w jedno&lt;/b&gt;. Niech pentester poczeka sobie dwie minuty na odpowiedź serwera tylko po to, by dowiedzieć się, że wystąpił błąd. Tym razem. Bo przy drugiej próbie niech wszystko działa poprawnie. I nie zapomnij umilić czasu oczekiwania jakąś hipnotyzującą animacją!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Zbyt długi czas, w którym aplikacja zgłoszona do testów "nie działa" (lub działa tak, jakby nie mogła) jest o tyle niebezpieczny, że tego &lt;b&gt;straconego czasu &lt;i&gt;zwykle&lt;/i&gt; nie można odzyskać&lt;/b&gt;. Można z dużym prawdopodobieństwem zakładać, że priorytetem będzie utrzymanie wcześniej podanego terminu produkcyjnego udostępnienia systemu. Jeśli z przewidzianych 20 dni roboczych zniknie nagle 5 (lub więcej), zaczyna brakować czasu. I nie, nie uda się go odzyskać "pracując dłużej", bo testerzy to też (tylko) ludzie i mają swoje granice wytrzymałości. A testy bezpieczeństwa to (często) monotonna, metodyczna praca wymagająca skupienia.&lt;/p&gt;

&lt;h2&gt;Sprawdzenie podstawowych rzeczy&lt;/h2&gt;

&lt;p&gt;Jeśli aplikacja działa, w drugiej kolejności &lt;b&gt;warto poszukać błędów w architekturze&lt;/b&gt; (przykład: &lt;a href="http://wampir.mroczna-zaloga.org/archives/689-znajdz-blad-projektowy-wykorzystanie-ajax-czesc-i.html"&gt;Znajdź błąd projektowy: wykorzystanie AJAX (część I)&lt;/a&gt;)&lt;b&gt; oraz typowych błędów w implementacji&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Ten etap niestety wciąż zajmuje za dużo czasu. I, również niestety, często jest bardzo &lt;i&gt;owocny&lt;/i&gt;. Co zrobić, gdy okaże się, że aplikacja została zaprojektowana błędnie a błąd jest tak poważny, że w zasadzie należy aplikację napisać od nowa? Co zrobić, gdy okaże się, że typowe błędy w implementacji popełniane są nagminnie i potrzebna jest bardzo duża ilość poprawek? Przypominam, że czas przeznaczony na testy został skrócony do minimum i nie został przewidziany czas na poprawki...&lt;/p&gt;

&lt;p&gt;Współczuję kierownikom projektów, którzy znajdują się w sytuacji opisanej wyżej. Jakie możliwości działania mają? Obawiam się, że nie mają wielkiego pola manewru... Osobiście uważam, że prawdopodobieństwo wystąpienia takich sytuacji trzeba minimalizować poprzez zmianę cyklu procesu tworzenia oprogramowania (jeśli oprogramowanie wytwarzane jest "własnymi siłami") lub &lt;b&gt;wymaganie odpowiedniego procesu tworzenia oprogramowania u dostawców&lt;/b&gt;.&lt;/p&gt;

&lt;h2&gt;I coś więcej niż podstawy...&lt;/h2&gt;

&lt;p&gt;Trzecim aspektem, któremu obecnie niestety nie poświęca się wystarczająco dużo uwagi jest &lt;b&gt;poszukiwanie błędów w logice biznesowej aplikacji&lt;/b&gt; oraz to, &lt;a href="http://blog.codeninja.pl/2009/11/threat-modeling-in-end.html"&gt;o czym pisał ostatnio Przemek&lt;/a&gt;, czyli &lt;b&gt;testy wynikające ze scenariuszy ataków&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Niestety, z tym &lt;i&gt;czymś więcej&lt;/i&gt; pojawia się pewien problem. A nawet kilka problemów. Warto zadać sobie pytanie, czy i w jakim zakresie można przystąpić do badania tego &lt;i&gt;czegoś więcej&lt;/i&gt;, jeśli aplikacja nie została zbadana (dokładnie) pod kątem podstawowych problemów. Albo inaczej - czy można pominąć testy podstawowe i przejść bezpośrednio do badania logiki biznesowej oraz sprawdzenia możliwości określonych (wcześniej, na przykład tak: &lt;a href="http://www.owasp.org/index.php/Agile_Software_Development:_Don%27t_Forget_EVIL_User_Stories"&gt;Don't Forget EVIL User Stories&lt;/a&gt;) celów intruza? Jak zwykle odpowiedź będzie zależała od konkretnego przypadku. &lt;a href="http://wampir.mroczna-zaloga.org/archives/736-szukania-sqli-i-xssow-mam-juz-dosc.html"&gt;Testowania pewnych rzeczy mam już dość&lt;/a&gt;, ale obawiam się, że do czasu, gdy te &lt;i&gt;podstawowe&lt;/i&gt; rzeczy będą uwzględniane w procesie tworzenia aplikacji, wciąż to &lt;i&gt;coś więcej&lt;/i&gt; będzie odkładane na później, bo te &lt;i&gt;podstawowe&lt;/i&gt; rzeczy zajmują zbyt wiele zasobów. Tak jak w piramidzie potrzeb...&lt;/p&gt;

&lt;p&gt;No dobrze, nie jest aż tak źle. W rzeczywistości w trakcie testów przychodzi również czas na to &lt;i&gt;coś więcej&lt;/i&gt;, ale prawdą jest to, że kwestie związane z podstawowymi zagadnieniami zajmują zbyt dużo czasu. Nie można przejść &lt;i&gt;dalej&lt;/i&gt;, bo wciąż ilość &lt;i&gt;podstawowych&lt;/i&gt; błędów jest duża. Jest lepiej niż kiedyś, ale ciągle w procesie tworzenia aplikacji czegoś brak.&lt;/p&gt; 
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=SHvuK-RVFrQ:caBE02qv-dE:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/SHvuK-RVFrQ" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=756</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=756</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/756-piramida-potrzeb.html</feedburner:origLink></entry><entry><title type="text">Święta są ZŁE!</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/1-EbEi_mBRI/755-swieta-sa-zle.html" /><category term="Marudzenie" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-10T06:38:33-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/755-guid.html</id><content type="html">
    &lt;p&gt;&lt;a href="http://wampir.mroczna-zaloga.org/archives/462-swietofobia.html"&gt;Nie lubię świąt&lt;/a&gt;. Radosne święto przypadające 1 listopada mamy już za sobą, skończyły się sprzedawać świeczki, więc pora na... Tak! Choinki, mikołaje, głupie czerwone czapki z pomponem, zestawy bombek szklanych (jedyne 24,95 PLN za 16 sztuk!) i inne świąteczne barachło.&lt;/p&gt;
 &lt;p&gt;Co mnie tak naszła świąteczna, radosna atmosfera? Raz na jakiś czas trzeba wybrać papierowy spam ze skrzynki. Jak myślicie, co w nim znalazłem? Skoro ja muszę cierpieć, to cierpcie razem ze mną :P&lt;/p&gt;

&lt;p&gt;Pierwsza gazetka reklamowa (sklepu pierwszego), na pierwszej stronie mogę przeczytać, że &lt;i&gt;zbliżają się święta...&lt;/i&gt;. Przypominam. Jest 10 listopada. Przyznam się, że musiałem sięgnąć do kalendarza (by się upewnić). Tak, rzeczone święta występują w dniach 25 i 26 grudnia wraz z 24 grudnia w roli "dnia przed". No ale przecież to już tak blisko! Na okładce mogę obejrzeć mikołaja, bombkę, skarpety przy kominku (zaiste bardzo polska tradycja), choinkę, prezenty, szczęśliwą metroseksualną rodzinkę pod choinką w głupich czerwonych czapkach, prezenty pod choinką i coś w rodzaju "wigilijnego" stołu. Zawartości środka opisywać mi się nawet nie chce.&lt;/p&gt;

&lt;p&gt;Druga gazetka (sklepu drugiego), ponownie bombki, choinki, stroiki, świeczki, światełka, (...). I przy okazji informacje o dostępnych opcjach kredytowania, bo przecież wszystkie te produkty są absolutnie niezbędne do życia i szczęścia, a jak wygląda zawartość portfela dość sporej części społeczeństwa, chyba wiadomo. Ale w sam raz zakupy świąteczne się spłaci do marca/kwietnia tak by na kolejne święta można się było znów radośnie zadłużyć.&lt;/p&gt; 

&lt;p&gt;Kolejna gazetka (ponownie sklepu drugiego) wywiera na mnie presję, abym się &lt;i&gt;gotował do świat&lt;/i&gt;. A wała!&lt;/p&gt;

&lt;p&gt;Autorom tych i wszystkich przyszłych "świątecznotematycznych" gazetek mam do powiedzenia tylko tyle: oddalcie się ode mnie w podskokach, tanecznym krokiem na lekko ugiętych nogach. Szybko. Zanim się zrobię agresywny.&lt;/p&gt;

&lt;p&gt;Ups. Za późno.&lt;/p&gt;

&lt;div style="text-align: center"&gt;
&lt;img src="http://static.xbow.pl/wkurzajace-swieta.jpg" alt=""  /&gt;
&lt;/div&gt;

&lt;p&gt;Zwykle swoje destrukcyjne zapędy wykorzystuję w trakcie testów aplikacji, tym razem zrobiłem wyjątek :)&lt;/p&gt; 
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=1-EbEi_mBRI:J7raetFWXkM:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/1-EbEi_mBRI" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=755</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=755</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/755-swieta-sa-zle.html</feedburner:origLink></entry><entry><title type="text">Mój kubeczek to ile filiżanek?</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/kkxAIxZ0vyw/754-moj-kubeczek-to-ile-filizanek.html" /><category term="Różne" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-09T22:56:19-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/754-guid.html</id><content type="html">
    &lt;p&gt;&lt;a href="http://wiadomosci.onet.pl/2075190,69,herbata_jest_dobra_na_wszystko,item.html"&gt;Herbata jest dobra na wszystko&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
(...)
Optymalna dzienna dawka kofeiny dla osoby dorosłej to 400 miligramów, czyli tyle, ile znajduje się w 8 filiżankach herbaty lub 4 kubkach kawy.
(...)
&lt;/blockquote&gt;
&lt;p&gt;No dobrze, to na dzień dobry przyjmuję 320 miligramów kofeiny (patrz: &lt;a href="http://wampir.mroczna-zaloga.org/archives/663-green-it.html"&gt;Green IT&lt;/a&gt;). W jednej filiżance herbaty znajduje się 50 miligramów (a tak przynajmniej wychodzi mi z prostego dzielenia). Czyli mogę wypić jeszcze 1,5 filiżanki herbaty. Super. Tylko ile filiżanek zawiera &lt;a href="http://wampir.mroczna-zaloga.org/archives/625-robienie-sobie-herbaty-to-nie-jest-proste-zadanie.html"&gt;mój kubeczek&lt;/a&gt;?&lt;/p&gt;  
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=kkxAIxZ0vyw:jddNTEjo6l0:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/kkxAIxZ0vyw" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=754</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=754</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/754-moj-kubeczek-to-ile-filizanek.html</feedburner:origLink></entry><entry><title type="text">Bootcamp XVII: hint I</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/cJiiqQBM0Rc/753-bootcamp-xvii-hint-i.html" /><category term="WebApps" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-09T22:34:57-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/753-guid.html</id><content type="html">
    &lt;p&gt;Moje &lt;a href="http://wampir.mroczna-zaloga.org/archives/752-bootcamp-xvii-wyzwanie-ii.html"&gt;drugie wyzwanie&lt;/a&gt; doczekało się pierwszej prawidłowej odpowiedzi. Tak naprawdę, to odpowiedź pojawiła się już 8 listopada, ale Sławek przesłał ją bezpośrednio do mnie, by nie psuć innym zabawy. Przygotował nawet skrypt, który w rozwiązaniu zadania pomaga, a który udostępnię za jakiś czas.&lt;/p&gt;
&lt;p&gt;A teraz obiecany hint: tym razem przykład demonstruje w praktyce &lt;a href="http://cwe.mitre.org/data/definitions/642.html"&gt;CWE-642: External Control of Critical State Data&lt;/a&gt;.&lt;/p&gt;  
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=cJiiqQBM0Rc:PBSiGxR0wpw:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/cJiiqQBM0Rc" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=753</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=753</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/753-bootcamp-xvii-hint-i.html</feedburner:origLink></entry><entry><title type="text">Bootcamp XVII: wyzwanie II</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/c_Tfoygyu-c/752-bootcamp-xvii-wyzwanie-ii.html" /><category term="WebApps" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-07T11:09:30-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/752-guid.html</id><content type="html">
    &lt;p&gt;Pod adresem &lt;a href="http://bootcamp.threats.pl/lesson17/"&gt;http://bootcamp.threats.pl/lesson17/&lt;/a&gt; znajduje się kolejny przygotowany przeze mnie &lt;a href="http://threats.pl/bezpieczenstwo-aplikacji-internetowych"&gt;w ramach bootcamp&lt;/a&gt; przykład. Tym razem jest to pewnego rodzaju wyzwanie.&lt;/p&gt; &lt;p&gt;Jest to prosty przykład aplikacji, która pozwala na logowanie użytkowników i, w zależności od uprawnień użytkownika (guest/user/admin), udostępnia użytkownikowi różne funkcje (formatki).&lt;/p&gt;

&lt;p&gt;Przedmiotem wyzwania jest:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;podglądnięcie danych innego użytkownika (formatka &lt;li&gt;Dane użytkownika&lt;/i&gt;),&lt;/li&gt;
&lt;li&gt;eskalacja uprawnień,&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dodatkowo znaleźć można:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XSS,&lt;/li&gt;
&lt;li&gt;brak kontroli dostępu do funkcji (tu - formatek),&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dane użytkownika z uprawnieniami gościa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;login: guest,&lt;/li&gt;
&lt;li&gt;hasło: CicKiCinMirkakew,&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Przyznam się, że nie do końca testowałem ten przykład, ale powinien działać i powinien robić to, co założyłem :)&lt;/p&gt;
&lt;p&gt;Powodzenia!&lt;/p&gt; 
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=c_Tfoygyu-c:u89DT_yj7ak:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/c_Tfoygyu-c" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=752</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=752</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/752-bootcamp-xvii-wyzwanie-ii.html</feedburner:origLink></entry><entry><title type="text">Nie ma to jak sprawdzone chińskie wzorce</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/_yF0Uy0TqQE/751-nie-ma-to-jak-sprawdzone-chinskie-wzorce.html" /><category term="Różne" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-06T07:19:00-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/751-guid.html</id><content type="html">
    &lt;p&gt;Nic tak nie cieszy jak dobre informacje z rana: &lt;a href="http://biznes.gazetaprawna.pl/artykuly/368235,koniec_internetowej_wolnosci_w_polsce.html"&gt;Koniec internetowej wolności w Polsce&lt;/a&gt;. Nie chodzi mi o ten konkretny przypadek, obejście ewentualnych ograniczeń nie będzie zbyt trudne, ale o trend, kierunek, w którym zmierza nasz "wolny świat".&lt;/p&gt; &lt;p&gt;Ludzie ciągle wierzą w bzdurne stwierdzenie "im więcej wolności, tym mniej bezpieczeństwa". Pojawiają się coraz to nowe pomysły "drobnych" ograniczeń wolności (lub/i prywatności), bo tak "będzie bezpieczniej". Co gorsza znajdują one poparcie w "społeczeństwie", bo temu "społeczeństwu" (przynajmniej znacznej jego części) jest tak wygodniej, wolą gdy ktoś myśli i podejmuje decyzje za nich.&lt;/p&gt;
&lt;p&gt;Proponuję przeczytać artykuł &lt;i&gt;Przeciw Prohibicji&lt;/i&gt; (Newsweek 45/2009), którego autorem jest &lt;a href="http://pl.wikipedia.org/wiki/Marcin_Kr%C3%B3l"&gt;Marcin Król&lt;/a&gt;, a z którego pozwolę sobie zacytować jedno zdanie:&lt;/p&gt;
&lt;blockquote&gt;
Zapewne obywateli, którzy lubią rządy silnej ręki, zawsze będzie więcej niż radykalnych zwolenników wolności, gdyż zawsze więcej jest ludzi tchórzliwych niż odważnych.
&lt;/blockquote&gt;
&lt;p&gt;Wyjątkowo trafne stwierdzenie.&lt;/p&gt; 
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=_yF0Uy0TqQE:3jX8pUViq_Y:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/_yF0Uy0TqQE" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=751</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=751</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/751-nie-ma-to-jak-sprawdzone-chinskie-wzorce.html</feedburner:origLink></entry><entry><title type="text">Jak można przegapić DOM based XSS</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/PmTpCmsS4-0/750-jak-mozna-przegapic-dom-based-xss.html" /><category term="WebApps" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-05T12:09:22-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/750-guid.html</id><content type="html">
    &lt;p&gt;Jakiś czas temu na blogu &lt;a href="http://www.securityninja.co.uk/blog"&gt;Security Ninja&lt;/a&gt; pojawił się wpis &lt;a href="http://www.securityninja.co.uk/can-you-find-the-vulnerabilities"&gt;Can you find the vulnerabilities?&lt;/a&gt;, teraz dostępne są rozwiązania zadań: &lt;a href="http://www.securityninja.co.uk/can-you-find-the-vulnerabilites-part-two"&gt;Can you find the vulnerabilites? Part Two&lt;/a&gt;. Zadania są stosunkowo proste, ale jeśli ktoś jeszcze tego nie robił, proponuję spróbować się chwilę nad nimi zastanowić. Ja natomiast chciałem zwrócić uwagę na jeden konkretny przykład.&lt;/p&gt; &lt;p&gt;Fragment kodu, o którym mowa to:&lt;/p&gt;
&lt;pre&gt;
var pos=document.URL.indexOf(”name=”)+5;
document.write(document.URL.substring(pos,document.URL.length));
&lt;/pre&gt;
&lt;p&gt;Istnieje duża szansa, że w "tradycyjnych" testach z wykorzystaniem &lt;i&gt;local proxy&lt;/i&gt; (np. &lt;a href="http://www.fiddler2.com/fiddler2/"&gt;Fiddler&lt;/a&gt;) podatność ta nie zostałaby wykryta. Przypominam, że testy takie polegają na modyfikowaniu parametrów przekazywanych do aplikacji i obserwowaniu tego, co aplikacja zwraca.&lt;/p&gt;

&lt;p&gt;Dlaczego przypadek ten mógłby zostać pominięty? Dlatego, że aplikacja dla dowolnie różnych wartości parametru &lt;i&gt;name&lt;/i&gt; może zwracać dokładnie taką samą treść. Skrypt natomiast pobierze wartość parametru z... no właśnie, skąd?&lt;/p&gt;

&lt;p&gt;W przypadku wykorzystania &lt;i&gt;local proxy&lt;/i&gt; żądanie wysyłane do serwera jest przechwytywane przez wykorzystane narzędzie, modyfikowane, a następnie wysyłane do serwera. Serwer widzi zmodyfikowane żądanie, przeglądarka generująca żądanie natomiast nic nie wie o wprowadzonych modyfikacjach. W tym przypadku parametr &lt;i&gt;name&lt;/i&gt; jest przekazywany w GET, czyli jest częścią adresu URL. Skrypt osadzony na zwracanej stronie odwołuje się (w uproszczeniu) do przeglądarki, odczytuje adres URL i pobiera z niego &lt;b&gt;oryginalną&lt;/b&gt; wartość parametru &lt;i&gt;name&lt;/i&gt;. Nawet jeśli za pomocą &lt;i&gt;proxy&lt;/i&gt; wartość parametru &lt;i&gt;name&lt;/i&gt; zmieniliśmy, przykładowo, z &lt;i&gt;Albercik&lt;/i&gt; na &lt;i&gt;&amp;lt;script&amp;gt;alert(/XSS/);&amp;lt;/script&amp;gt;&lt;/i&gt; to ten skrypt z przykładu nic o tym nie wie, wykorzysta oryginalną wartość parametru i wypisze jak gdyby nigdy nic Albercik.&lt;/p&gt;

&lt;p&gt;Przykład ten pokazuje, że czasami warto popatrzeć również w kod skryptów działających po stronie klienta. Nie zawsze jest to łatwe, czasami ilość kodu JavaScript dołączanego do strony (aplikacji) jest naprawdę duża, czyli może nie wystarczyć czasu, a w dodatku kod jest "kompresowany", przez co kompletnie nieczytelny (w takich przypadkach korzystam zwykle z &lt;a href="http://malzilla.sourceforge.net/"&gt;Malzilli&lt;/a&gt;,  Fiddler ma z kolei plugin JavaScript Formatter, ale z niego nie korzystam)...&lt;/p&gt;

&lt;p&gt;Tu jedno pytanie/temat do dyskusji - mając do dyspozycji ograniczony czas na czym (i dlaczego właśnie na tym) skupilibyście się? Na części "serwerowej" aplikacji, czy może na skryptach działających po stronie klienta, w przeglądarce?&lt;/p&gt; 
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=PmTpCmsS4-0:LEnF3_U8P9Q:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/PmTpCmsS4-0" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=750</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=750</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/750-jak-mozna-przegapic-dom-based-xss.html</feedburner:origLink></entry><entry><title type="text">Jankomuzykantyzm</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/sUPX1wS98Bo/749-jankomuzykantyzm.html" /><category term="Różne" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-04T09:46:00-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/749-guid.html</id><content type="html">
    &lt;p&gt;&lt;i&gt;Był sobie uzdolniony muzycznie, ale chorowity chłopiec. Bardzo chciał sobie pograć na skrzypkach, a te znajdowały się w dworze. Zakrada się więc chłopak i... łapią go, posądzają o kradzież (...)&lt;/i&gt;. Wiadomo jak to wszystko się skończyło. Później na lekcjach, przynajmniej za dawnych czasów, były rozważania co zrobiliby "państwo", gdyby wrócili wcześniej, jak to zaopiekowali się Jankiem i jaki wspaniały byłby z niego skrzypek.&lt;/p&gt; &lt;p&gt;Wczoraj zakończyła się sprawa o odszkodowanie dla rodziców zastrzelonego przez Policję motocyklisty. Miał chłopak pecha, znalazł się w nieodpowiednim czasie w nieodpowiednim miejscu, &lt;i&gt;ale&lt;/i&gt; przede wszystkim usiłował uciec przed Policją i nie zatrzymał się do kontroli. Sąd uznał, że odszkodowanie się nie należy.&lt;/p&gt;

&lt;p&gt;Kilka dni temu &lt;i&gt;hakerzy&lt;/i&gt; (&lt;a href="http://ars.userfriendly.org/cartoons/?id=20080917"&gt;haker vs. cracker&lt;/a&gt;) włamali się na stronę UW, uczelnia sprawę zgłosiła prokuraturze. Podobnie jak w przypadku innych tego typu spraw, tak i tym razem rozległy się głosy typu: &lt;i&gt;Wsadzajmy do więzienia ludzi za to że pokazują błędy w systemach komputerowych. Brak słów...&lt;/i&gt; albo &lt;i&gt; (...), Uniwersytet zamiast składać doniesienie do prokuratury, powinien być wdzięczny hakerom, że pokazali jego władzom wadliwość zabezpieczeń&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;I w tym właśnie momencie wkracza &lt;i&gt;jankomuzykantyzm&lt;/i&gt;. Bo przecież to tacy zdolni młodzi(?) ludzie, a tu zły świat się na nich tak uwziął... Zamiast wdzięczności, kłody pod nogi... Główne argumenty "obrońców" są zwykle mniej więcej takie:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;włamują się tylko po to, by pokazać, że można,&lt;/li&gt;
&lt;li&gt;robią to w celach edukacyjnych,&lt;/li&gt;
&lt;li&gt;nikomu nie dzieje się krzywda,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Warto zastanowić się, czy rzeczywiście nikomu nie dzieje się krzywda. Utrata wizerunku, utrata zaufania (potencjalnych) klientów, koszty poniesione na odtworzenie działania aplikacji. &lt;b&gt;Zdecydowanie nie jest to "nic"&lt;/b&gt;, więc twierdzenie, że "nikomu nie dzieje się krzywda" jest oderwane od rzeczywistości. Wcale się nie dziwię, że "uszczęśliwieni" niechcianą usługą wcale nie są nią zachwyceni i decydują się na złożenie wniosku o ściganie przestępstwa, do czego mają pełne prawo. Z dostępnych informacji dotyczących zdarzenia wynika, że przestępstwo prawdopodobnie zostało popełnione, ale decyzja w tej sprawie należy do prokuratury i sądu. Można również dyskutować, &lt;a href="http://prawo.vagla.pl/node/8154"&gt;czy można ominąć zabezpieczenia, których nie ma&lt;/a&gt;, ale to zupełnie inna kwestia. &lt;/p&gt;

&lt;p&gt;Pokazanie, że aplikacja jest podatna wcale nie musi zawierać w sobie umieszczania "charakterystycznych wpisów" oraz informowania mediów o całej sprawie. Podejrzewam, że uczelnia zareagowałaby inaczej, gdyby została o problemie poinformowana w nieco bardziej cywilizowany sposób. Pewności w tym względzie mieć jednak nie można, więc we własnym interesie lepiej &lt;i&gt;trochę&lt;/i&gt; uważać, bo konsekwencje takiej "edukacji" mogą być dość nieprzyjemne. Może nie w tak gwałtowny sposób jak, przykładowo, domowe zabawy "edukacyjne" z niewybuchami, ale jednak uciążliwe.&lt;/p&gt;

&lt;p&gt;"Edukować się" można na wiele sposobów, poczynając od wykorzystania aplikacji typu &lt;a href="http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project"&gt;OWASP WebGoat&lt;/a&gt;, różnych &lt;i&gt;hackme&lt;/i&gt; (tu wspomnę o moim &lt;a href="http://threats.pl/bezpieczenstwo-aplikacji-internetowych"&gt;przewodniku po podstawach bezpieczeństwa aplikacji internetowych&lt;/a&gt;), a na testowaniu dostępnych aplikacji (co za problem zainstalować sobie WordPress, Drupal, Xyz, FooShmu, ... albo skorzystać z &lt;a href="http://www.bonsai-sec.com/blog/index.php/moth-vulnerable-vmware-image/"&gt;moth&lt;/a&gt;) kończąc.&lt;/p&gt;

&lt;p&gt;W &lt;a href="http://pl.wikipedia.org/wiki/Kodeks_karny"&gt;kodeksie karnym&lt;/a&gt; istnieją (między innymi) dwa artykuły: 267 i 268, o których warto pamiętać. W obu przypadkach ściganie &lt;b&gt;przestępstwa&lt;/b&gt; następuje w wyniku wniosku pokrzywdzonego. Trzeba po prostu przyjąć do wiadomości, że "pokazywanie wadliwości zabezpieczeń" bez wiedzy i zgody zainteresowanego (właściciela) może skończyć się ograniczeniem wolności do lat dwóch/trzech/(...), w zależności od tego, pod jakie paragrafy zostanie to ostatecznie podciągnięte. Do tego można jeszcze dodać ewentualne problemy z zatrudnieniem tam, gdzie wymagane jest zaświadczenie o niekaralności, przynajmniej do czasu &lt;a href="http://pl.wikipedia.org/wiki/Zatarcie_skazania"&gt;zatarcia skazania&lt;/a&gt;. Trzeba znać &lt;i&gt;potencjalne&lt;/i&gt; konsekwencje swoich czynów. Nie ważne czy jest to ucieczka przed Policją (pechowo w czasie obławy), czy "tylko" &lt;i&gt;edukacyjne włamanie&lt;/i&gt; na serwer, które, zgodnie z obowiązującym prawem, jest przestępstwem.&lt;/p&gt;

&lt;p&gt;A jeśli ktoś dysponuje zbyt dużą ilością wolnego czasu i bardzo chce pokazać, że można, to proszę bardzo, ma okazję: &lt;a href="http://ha.ckers.org/blog/20091103/live-labs-web-sandbox/"&gt;Live Labs Web Sandbox&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Na zakończenie spojrzenie z nieco innej strony - nie można zakładać, że jakiekolwiek przepisy powstrzymają "prawdziwych" włamywaczy, w związku z czym aplikacje i systemy powinny być bezpieczne. Przynajmniej tak bezpieczne, by potencjalni intruzi znaleźli sobie inne, łatwiejsze obiekty ataku.&lt;/p&gt; 
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=sUPX1wS98Bo:W7ox3vJ-gIg:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/sUPX1wS98Bo" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=749</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=749</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/749-jankomuzykantyzm.html</feedburner:origLink></entry><entry><title type="text">Konkurs 2.0</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/jTLe7UIalJg/748-konkurs-20.html" /><category term="Różne" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-03T22:24:18-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/748-guid.html</id><content type="html">
    &lt;p&gt;Z okazji pierwszego w tym roku Confidence odbył się konkurs &lt;a href="http://2009.confidence.org.pl/konkurs"&gt;CONFidence Security Evangelist&lt;/a&gt;. Wygląda na to, że z okazji &lt;a href="http://200902.confidence.org.pl/"&gt;kolejnej edycji Confidence&lt;/a&gt; jest również &lt;a href="http://200902.confidence.org.pl/konkurs"&gt;kolejna edycja konkursu&lt;/a&gt;.&lt;/p&gt;  
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=jTLe7UIalJg:TqIbLL-Sz9Y:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/jTLe7UIalJg" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=748</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=748</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/748-konkurs-20.html</feedburner:origLink></entry><entry><title type="text">Bootcamp XVI: jeszcze jedno zadanie</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/yZWfhNtp9w4/747-bootcamp-xvi-jeszcze-jedno-zadanie.html" /><category term="WebApps" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-02T22:27:54-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/747-guid.html</id><content type="html">
    &lt;p&gt;Tak sobie pomyślałem, że &lt;a href="http://wampir.mroczna-zaloga.org/archives/746-bootcamp-xvi-rozwiazanie.html"&gt;(prawie) rozwiązany wczoraj przykład&lt;/a&gt; można wykorzystać jeszcze do jednego zadania: korzystając z istniejącego w przykładzie XSS osadzić skrypt z innej strony. Przydatny może być &lt;a href="http://ha.ckers.org/xss.html"&gt;XSS Cheat Sheet&lt;/a&gt;.&lt;/p&gt;  
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=yZWfhNtp9w4:KOMyJV2b8lc:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/yZWfhNtp9w4" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=747</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=747</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/747-bootcamp-xvi-jeszcze-jedno-zadanie.html</feedburner:origLink></entry><entry><title type="text">Bootcamp XVI: rozwiązanie</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/wEPmQe7U51c/746-bootcamp-xvi-rozwiazanie.html" /><category term="WebApps" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-02T11:06:00-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/746-guid.html</id><content type="html">
    &lt;p&gt;&lt;a href="http://radekk.blip.pl/"&gt;Radekk&lt;/a&gt; jest pierwszą osobą, która rozwiązała najnowsze &lt;a href="http://wampir.mroczna-zaloga.org/archives/743-bootcamp-xvi-co-z-tego-ze-tak-nie-mozna-nazwac-pliku.html"&gt;zadanie na bootcamp&lt;/a&gt;. Przy okazji dołączył do bardzo nielicznego grona osób, które poradziły sobie z &lt;a href="http://wampir.mroczna-zaloga.org/archives/606-bootcamp-viii-wyzwanie.html"&gt;wyzwaniem&lt;/a&gt; (swoją drogą zapraszam, &lt;a href="http://threats.pl/bezpieczenstwo-aplikacji-internetowych/wyzwanie"&gt;dostępnych jest kilka wskazówek&lt;/a&gt;). Tym razem również nie podam dokładnego opisu rozwiązania, zarówno XSS (w ramach inspiracji: &lt;a href="http://pentester.jogger.pl/2009/10/29/js-ninja/"&gt;JS Ninja&lt;/a&gt;) jak i SQLi (jeśli ktoś potrzebuje pomocy: &lt;a href="http://threats.pl/bezpieczenstwo-aplikacji-internetowych/blind-sql-injection"&gt;Lekcja 7: (blind) SQL injection&lt;/a&gt;) nie są wyjątkowo interesujące. W przykładzie tym ważne jest coś innego...&lt;/p&gt; &lt;p&gt;Podałem trzy podpowiedzi do zadania:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;skąd serwer "wie", jak nazywa się przekazywany plik,&lt;/li&gt;
&lt;li&gt;"co z tego, że tak nie można nazwać pliku?",&lt;/li&gt;
&lt;li&gt;&lt;i&gt;trust boundary,&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Na pierwsze pytanie łatwo odpowiedzieć patrząc na wysyłane przez przeglądarkę żądanie:&lt;/p&gt;
&lt;div style="text-align: center"&gt;
&lt;img src="http://static.xbow.pl/filename.png" alt=""  /&gt;
&lt;/div&gt;
&lt;p&gt;Nazwa (czasami również cała ścieżka) przekazywanego pliku zawarta jest w atrybucie &lt;i&gt;filename&lt;/i&gt;, który ustawiany jest przez przeglądarkę na podstawie nazwy (ścieżki) wskazanego pliku. Praktycznie każdy system plików narzuca pewne &lt;a href="http://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words"&gt;ograniczenia odnośnie nazwy pliku&lt;/a&gt;, a i system operacyjny nie jest tu bez znaczenia. Ogólnie rzecz biorąc &lt;b&gt;nazwa pliku nie może być dowolna&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Dwie kolejne podpowiedzi łączą się w zasadzie w jeden scenariusz: &lt;b&gt;wartość atrybutu &lt;i&gt;filename&lt;/i&gt; w żądaniu wysyłanym przez przeglądarkę może zostać dowolnie zmodyfikowana przez atakującego&lt;/b&gt;. Nowej nazwy pliku prawie nie dotyczą żadne z ograniczeń, które "wymusza" system operacyjny czy system plików. Innymi słowy jeśli ktoś oczekuje, że nazwa pliku nie będzie zawierała znaków typu &amp;lt; czy &amp;gt; tylko dlatego, że nie można utworzyć pliku o takiej nazwie, to jest w błędzie.&lt;/p&gt;

&lt;p&gt;Przy okazji warto zauważyć, że w analogiczny sposób w jaki można zmienić "nazwę pliku", można zmienić również jego "typ". Typ (w sensie typu MIME) pliku przekazywany jest w atrybucie &lt;i&gt;Content-Type&lt;/i&gt; i, podobnie jak &lt;i&gt;filename&lt;/i&gt;, może zostać dowolnie zmodyfikowany przez atakującego. A co z tego wynika, łatwo można się domyślić.&lt;/p&gt;

&lt;p&gt;Na zakończenie przypomnę jeszcze raz o wpisie &lt;a href="http://blogs.securiteam.com/index.php/archives/1268"&gt;File upload security recommendations&lt;/a&gt;. Warto zapoznać się z tymi zaleceniami i je stosować.&lt;/p&gt; 
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=wEPmQe7U51c:FWmvbx3b5MM:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/wEPmQe7U51c" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=746</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=746</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/746-bootcamp-xvi-rozwiazanie.html</feedburner:origLink></entry><entry><title type="text">Dziwny zbieg okoliczności</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/wampir-mroczna-zaloga-org/~3/BSyWDTY4Upc/745-dziwny-zbieg-okolicznosci.html" /><category term="Różne" /><author><name>Paweł Goleń</name><email>pawel.golen@mroczna-zaloga.org</email></author><updated>2009-11-02T03:09:51-08:00</updated><id>http://wampir.mroczna-zaloga.org/archives/745-guid.html</id><content type="html">
    &lt;p&gt;Dziś można przeczytać, że &lt;a href="http://praca.wp.pl/kat,18453,title,Polak-w-pracy-wynosi-sprzet-kradnie-towar-oszukuje,wid,11649099,wiadomosc.html"&gt;Polak w pracy - wynosi sprzęt, kradnie towar, oszukuje...&lt;/a&gt; I w sumie nie dziwi mnie to, ale zastanawiam się jaki związek ma opublikowanie wspominanego raportu przez firmę &lt;i&gt;Euler Hermes&lt;/i&gt; z lekko irytującymi reklamami &lt;i&gt;ubezpieczenia ryzyka sprzeniewierzenia&lt;/i&gt; oferowanego przez wspomnianą firmę. Budzi się we mnie "drobna niewiara" w wyniki badania, jeśli firma będąca jego autorem jest równocześnie żywotnie zainteresowana sprzedażą swoich produktów, których to sprzedaż będzie tym wyższa, im bardziej mroczne wizje będą kreślone...&lt;/p&gt;  
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?a=BSyWDTY4Upc:Qa38fxhN0nI:P56D0hcxPXw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wampir-mroczna-zaloga-org?d=P56D0hcxPXw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wampir-mroczna-zaloga-org/~4/BSyWDTY4Upc" height="1" width="1"/&gt;</content><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/wfwcomment.php?cid=745</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://wampir.mroczna-zaloga.org/rss.php?version=2.0&amp;type=comments&amp;cid=745</wfw:commentRss><feedburner:origLink>http://wampir.mroczna-zaloga.org/archives/745-dziwny-zbieg-okolicznosci.html</feedburner:origLink></entry></feed>
