<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Axel Jung &#187; sicherheit</title>
	<atom:link href="http://www.ajung.de/tag/sicherheit/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ajung.de</link>
	<description>Privater Blog von Axel Jung aus Wiesbaden</description>
	<lastBuildDate>Mon, 03 May 2010 19:12:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Menschliche Code Reviews verhindern Sicherheitslecks</title>
		<link>http://www.ajung.de/2008/12/09/menschliche-code-reviews-verhindern-sicherheitslecks/</link>
		<comments>http://www.ajung.de/2008/12/09/menschliche-code-reviews-verhindern-sicherheitslecks/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 17:20:04 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[sicherheit]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=421</guid>
		<description><![CDATA[In vielen großen Software Projekten wird mit Softwaremetriken, Unit Tests, Code Coverage Analysen und automatisierten Angriffs Tools für Qualität und Sicherheit gesorgt. Gegen diese Tools ist nichts zu sagen und der Einsatz ist oft unerlässlich aber leider wird oft eine menschlicher Code Review weggelassen. Diese sind aber wesentlich effektiver und bedürfen auch keiner Einarbeitungszeit. Optimalerweise [...]]]></description>
			<content:encoded><![CDATA[<p>In vielen großen Software Projekten wird mit</p>
<ul>
<li>Softwaremetriken,</li>
<li>Unit Tests,</li>
<li>Code Coverage Analysen</li>
<li>und <a href="http://www.ajung.de/2008/09/10/mit-scrawlr-und-webinspect-die-angreifbarkeit-der-seite-testen/">automatisierten Angriffs Tools</a></li>
</ul>
<p>für Qualität und Sicherheit gesorgt. Gegen diese Tools ist nichts zu sagen und der Einsatz ist oft unerlässlich aber leider wird oft eine menschlicher <strong>Code Review weggelassen</strong>. Diese sind aber wesentlich effektiver und bedürfen auch <strong>keiner Einarbeitungszeit</strong>. Optimalerweise prüft ein Software Architekt den Code nach der Entwicklung einer Phase. Oft würde es aber auch schon reichen wenn wenigstens ein Kollege den Code betrachtet.</p>
<p>Heute musste ich mal wieder feststellen welche gravierenden Sicherheitslücken man finden kann wenn man einfach mal den gesamten Code quer liest. Beim Coden hat man oft nicht den Blick für das Gesamte und ist auf die Problemlösung im Detail konzentriert. Dabei können dann Sicherheitslücken entstehen, die erst sichtbar werden, wenn man das Zusammenspiel aller Komponenten betrachtet.</p>
<p>Deshalb gilt für mich: <strong>Regelmäßige Code Reviews erhöhen die Sicherheit enorm.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2008/12/09/menschliche-code-reviews-verhindern-sicherheitslecks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mit Scrawlr und WebInspect die Angreifbarkeit der Seite testen</title>
		<link>http://www.ajung.de/2008/09/10/mit-scrawlr-und-webinspect-die-angreifbarkeit-der-seite-testen/</link>
		<comments>http://www.ajung.de/2008/09/10/mit-scrawlr-und-webinspect-die-angreifbarkeit-der-seite-testen/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 16:30:43 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[sicherheit]]></category>
		<category><![CDATA[webseiten]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=240</guid>
		<description><![CDATA[Die Firma HP stellt mit Scrawlr ein kostenloses Tool zum Prüfen der eigenen Seite auf SQL Injection Schwachstellen. Das Tool ist ein einfacher Crawler das sich durch die Seite crawlt und auf die gefundenen Seiten Angriffe ausprobiert. Es fügt der Seite keinen Schaden hinzu sondern zeigt nur Seiten an die verwundbar wären. Mit diesen Tool [...]]]></description>
			<content:encoded><![CDATA[<p>Die Firma HP stellt mit <a href="https://h30406.www3.hp.com/campaigns/2008/wwcampaign/1-57C4K/index.php?mcc=DNXA&amp;jumpid=in_r11374_us/en/large/tsg/w1_0908_scrawlr_redirect/mcc_DNXA">Scrawlr</a> ein kostenloses Tool zum Prüfen der eigenen Seite auf SQL Injection Schwachstellen. Das Tool ist ein einfacher Crawler das sich durch die Seite crawlt und auf die gefundenen Seiten Angriffe ausprobiert. Es fügt der Seite keinen Schaden hinzu sondern zeigt nur Seiten an die verwundbar wären.</p>
<p><img class="alignnone size-full wp-image-241" title="scrawl" src="http://www.ajung.de/wp-content/uploads/2008/09/scrawl.png" alt="" width="500" height="392" /></p>
<p>Mit diesen Tool kann man auch testen ob die eigene Anwendung einen potenziellen Angriff erkennt. Da auf meiner Seite die PHIDS installiert war, hat diese sofort Alarm geschlagen. Auch wenn keine Angriffsmöglichkeit gefunden wurde hat meine Seite den Zugriff auf die Seite nach kurzer Zeit für die IP gesperrt, da ein portenzieller Hacker wahrscheinlich erstmal die Seite auf Schwachstellen scannt.</p>
<p>Das Freeware Tool hat eine Begrenzung der URLs die gescannt werden (1500). Nach dem Ende des Scans bekommt man einen Bericht angezeigt.</p>
<p><img class="alignnone size-full wp-image-242" title="scrawl_2" src="http://www.ajung.de/wp-content/uploads/2008/09/scrawl_2.png" alt="" width="500" height="382" /></p>
<p>Die Freeware Version eignet sich aber trotzdem zum Testen des Verhaltens der eigenen Seite auf solche Angriffe. Laut eine <a href="http://www.heise.de/security/Studie-Fast-jede-Webanwendung-angreifbar--/news/meldung/115656">Studie</a> ist fast jede Webanwendung mit solchen Tools angreifbar.</p>
<p><a href="https://h30406.www3.hp.com/campaigns/2008/wwcampaign/1-57C4K/index.php?mcc=DNXA&amp;jumpid=in_r11374_us/en/large/tsg/w1_0908_scrawlr_redirect/mcc_DNXA">Scrawlr</a> soll eigentlich nur Geschmack auf die Software <a href="https://h10078.www1.hp.com/cda/hpms/display/main/hpms_content.jsp?zn=bto&amp;cp=1-11-201-200^9570_4000_100__">WebInspect </a>machen.</p>
<p>Diese kann man sich zwar als 15 Tage Demo herunterladen, aber man kann die nur mit einer bestimmten Seite verwenden und nicht mit der eigenen.</p>
<p>Spannend sieht es auf jedenfall aus:</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2008/09/scrawl_4.jpg"><img class="alignnone size-thumbnail wp-image-252" title="scrawl_4" src="http://www.ajung.de/wp-content/uploads/2008/09/scrawl_4-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>In der Demo Seite werden sehr viele Angriffsmöglichkeiten aufgezeigt, aber auch einfacherer Schwachstellen bei denen ein Angreifer zu viel Informationen über die Seite bekommt.</p>
<p>Dieses Tool prüft auch die Angreifbarkeit von <strong>Flash </strong>und <strong>Ajax </strong>Anwendungen und es kann auch eingeloggte User Simulieren. Diese stellen auch eine große Gefahr dar.</p>
<p>Es lassen sich verschiedenste Authentifizierungen einstellen.</p>
<p><img class="alignnone size-full wp-image-244" title="scrawl_3" src="http://www.ajung.de/wp-content/uploads/2008/09/scrawl_3.png" alt="" width="500" height="260" /></p>
<p>Interessant ist das Tool für größere Firmen auf jedenfall. Die Preise für die Software fangen bei 2500$ an.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2008/09/10/mit-scrawlr-und-webinspect-die-angreifbarkeit-der-seite-testen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Benutzer Daten sicher speichern oder warum MD5 unsicher ist.</title>
		<link>http://www.ajung.de/2008/08/21/benutzer-daten-sicher-speichern-oder-warum-md5-unsicher-ist/</link>
		<comments>http://www.ajung.de/2008/08/21/benutzer-daten-sicher-speichern-oder-warum-md5-unsicher-ist/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 16:00:09 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[sicherheit]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=116</guid>
		<description><![CDATA[In den letzten Tagen gab es viel Trubel um geklaute Benutzerdaten. Heutzutage sind nicht nur Hacker gefährlich, sondern auch die eigenen Mitarbeiter oder extra eingeschleuste Spione. Diese haben oft einen einfachen Zugriff auf die Datenbanken und können einen  Dump der Datenbank machen und die dann verkaufen. Deshalb sollte der Inhalt der Datenbanken möglichst verschlüsselt sein [...]]]></description>
			<content:encoded><![CDATA[<p>In den letzten Tagen gab es viel Trubel um geklaute Benutzerdaten. Heutzutage sind nicht nur Hacker gefährlich, sondern auch die eigenen Mitarbeiter oder extra eingeschleuste Spione. Diese haben oft einen einfachen Zugriff auf die Datenbanken und können einen  Dump der Datenbank machen und die dann verkaufen.</p>
<p>Deshalb sollte der Inhalt der Datenbanken möglichst verschlüsselt sein um die Nutzbarkeit eines solchen Dump zu verhindern.</p>
<h3>Passwörter verschlüsseln</h3>
<p>Passwörter sollten immer verschlüsselt in der Datenbank abgelegt sein. Leider geschieht das oft nur mit einer einfachen md5 Verschlüsselung.</p>
<pre><span style="color: #008000;">&lt;?php
$hash = md5($password);
?&gt;</span></pre>
<p>Für md5 gibt es unzählige Tools um diese wieder in Klartext umzuwandeln (Google: md5 reverse). Auch andere Verschlüsselungs Systeme helfen da nicht, wenn man das Verschlüsseln nicht komplizierter macht.</p>
<p>Zusätzlich zu dem Passwort sollte man noch den Login Namen in den Verschlüsselungs Mechanismus einbauen. Aber auch dass lässt sich mit ein wenig krimineller Energie schnell knacken.</p>
<pre><span style="color: #008000;">&lt;?php
$hash = md5($password.$login);
?&gt;</span></pre>
<p>Wenn man noch einen Anwendung spezifischen Schlüssel einbaut wird es sehr schwer das Passwort den Benutzers zu ermitteln.</p>
<pre><span style="color: #008000;">&lt;?php
$salt = 'jfhfg&amp;%55707865gGFds93kjl3ß()(73äü';
$hash = md5($salt.$password.$salt.$login.$salt);
?&gt;</span></pre>
<h3>Kreditkarten- und Bankdaten</h3>
<p>Kreditkartendaten sind das sensibelste eines Online Shops. Diese Daten sollte man nur speichern wenn man sicherstellen kann dass diese nicht geklaut werden können. Da jeder Benutzer weiß, dass Kreditkartendaten gerne geklaut werden, ist er auch nicht verärgert wenn er seine Daten immer wieder erneut eingeben muss.</p>
<p>Um die Daten dennoch sicher zu speichern gehe ich wie folgt vor:</p>
<p>Ich verschlüssele alle Daten mit einer Verschlüsselung die einen eindeutigen Schlüssel benötigt und wieder entschlüsselbar ist. Zu Beispiel <a href="http://de.wikipedia.org/wiki/Blowfish">Blowfish</a>.</p>
<p><strong>Wichtig</strong>: Der Schlüssel zum Ver- und Entschlüsseln ist dabei <strong>nicht </strong>in der Anwendung hinterlegt.  Den Schlüssel erzeuge ich bei dem Login den Benutzers anhand seiner Login Daten un speichere diesen dann in der Session.</p>
<pre><span style="color: #008000;">&lt;?php
$saltkredit = 'jfhfg&amp;%dd55707865gGFds93kjl3ßddd()(73äü';
$hashkredit = md5($salt.$password.$salt.$login);
$_SESSION['KREDITKARTEN_HASH'] = $hashkredit;
?&gt;

</span><span style="color: #008000;">&lt;?php
<code>$kreditkartendaten_sicher = crypt($str, CRYPT_BLOWFISH);</code>
$bf = &amp; Crypt_Blowfish::factory('cbc');
$iv = 'd55707865gGFd';
$key = $_SESSIO['KREDITKARTEN_HASH'];
$bf-&gt;setKey($key, $iv);
$encrypted = $bf-&gt;encrypt('Kreditkartennummer');
?&gt;</span></pre>
<p>Die Kreditkarten- und Bankdaten können somit nur während einer aktuellen Sitzung des Benutzers verwendet werden. Selbst der Shop Besitzer könnte mit den Daten nichts anfangen sofern auch das Passwort richtig verschlüsselt gespeichert worden ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2008/08/21/benutzer-daten-sicher-speichern-oder-warum-md5-unsicher-ist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP-Intrusion Detection System &#8211; PHPIDS</title>
		<link>http://www.ajung.de/2008/08/13/php-intrusion-detection-system-phpids/</link>
		<comments>http://www.ajung.de/2008/08/13/php-intrusion-detection-system-phpids/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 13:49:57 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[sicherheit]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=29</guid>
		<description><![CDATA[PHPIDS ist ein System zur Erkennung von Angriffen auf Webseiten. Es ist ein in PHP geschriebenes Werkzeug mit dem man eingehende Requests auf potenzielle Gefahren wie SQL-Injection, XSS und andere prüfen kann. Als Basis dient eine XML Datei mit Filtern die regelmäßig aktualisiert wird. Somit ist man auch für die neuen Ideen der Hacker gewappnet. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://php-ids.org/"><img class="alignright size-full wp-image-30" title="phpids_logo" src="http://www.ajung.de/wp-content/uploads/2008/08/phpids_logo.gif" alt="" width="320" height="66" /></a></p>
<p><a href="http://php-ids.org/">PHPIDS</a> ist ein System zur Erkennung von Angriffen auf Webseiten. Es ist ein in PHP geschriebenes Werkzeug mit dem man eingehende Requests auf potenzielle Gefahren wie SQL-Injection, XSS und andere prüfen kann.</p>
<p>Als Basis dient eine XML Datei mit Filtern die regelmäßig aktualisiert wird. Somit ist man auch für die neuen Ideen der Hacker gewappnet.</p>
<p>Das Tool lässt sich besonders einfach einsetzten wenn man das Design Pattern &#8220;<a href="http://java.sun.com/blueprints/patterns/InterceptingFilter.html">Filter</a>&#8221; einsetzt.</p>
<p>Die Dateien müssen einfach <a href="http://php-ids.org/">heruntergeladen</a> werden und in den <strong>include_path</strong> aufgenommen werden.</p>
<h3>Config.ini</h3>
<p>Als erstes muss man die Config.ini anpassen. Dort müssen die richtigen Pfade eingetragen werden und entschieden werden wie das Caching geschehen soll.</p>
<p>Zu Auswahl stehen:</p>
<ul>
<li>Datei</li>
<li>Datenbank</li>
<li>Memcache</li>
</ul>
<p>Wenn man das mitgelieferte Logging verwenden möchte, muss man hier auch Einstellungen vornehmen.<br />
Ich bevorzuge mein bestehendes Logging zu verwenden und einen Angriff über eine Exception zu signalisieren.</p>
<p>Hier kann man auch Felder definieren in den HTML vorkommen darf oder welche Werte nicht geprüft werden sollen.</p>
<pre>html[]  = feld_name_mit_html
exceptions[]    = feld_name_welches_nicht_geprüft_wird</pre>
<p>Da in dieser Datei wichtige Informationen für Hacker stehen, darf die Datei nicht über das Web sichtbar sein und sollte außerhalb des Webroots liegen.</p>
<h3>Filter Beispiel</h3>
<p>Hier ein Beispiel eines Filters der vor jeder Aktion auf der Seite ausgeführt.</p>
<pre>require_once 'IDS/Init.php';
class Filter_IDS implements Filter_Base{
    /**
     * @param    FrontControler_HttpRequest
     * @param    FrontControler_HttpResponse
     */
    public function execute(FrontControler_HttpRequest $oFrontControler_HttpRequest,
                          FrontControler_HttpResponse $oFrontControler_HttpResponse){
        $aRequest =  array(
            'GET' =&gt; $_GET,
            'POST' =&gt; $_POST,
            'COOKIE' =&gt; $_COOKIE
        );

        $oIDS_Init = IDS_Init::init(/pfad/zu/der/Config.ini);
        $oIDS_Monitor = new IDS_Monitor($aRequest, $oIDS_Init);
        $oIDS_Report = $oIDS_Monitor-&gt;run();
        if(!$oIDS_Report-&gt;isEmpty()){
            if($oIDS_Report-&gt;getImpact()&gt;4){
                    throw new InvalidAccesException('IDS Filter: '.$oIDS_Report);             
            }
        }
    }
}</pre>
<p>In diesen Fall wird erst ab einen Impact größer als 4 Alarm geschlagen. In diesen Fall wird eine InvalidAccessException geworfen. Diese wird zusammen mit der IP geloggt und wenn diese IP eine bestimmte Anzahl solcher Einträge hat, werden alle Anfragen von der IP für eine bestimmte Zeit gesperrt.</p>
<h3>Fazit</h3>
<p>Die Geschwindigkeit von <a href="http://php-ids.org/">PHPIDS</a> ist sehr gut und die Meldungen sind sehr aussagekräftig (siehe unten).</p>
<pre><img class="alignnone size-full wp-image-34" title="bug_php_ids" src="http://www.ajung.de/wp-content/uploads/2008/08/bug_php_ids.png" alt="" width="499" height="89" /></pre>
<p><strong><span style="color: #ff0000;">Wichtig: Die Filter schlagen oft unerwartet Alarm. Deshalb sollte man den Filter erstmal Testweise einbauen und nicht auf die &#8220;Angriffe&#8221; reagieren sondern die Werte erst mal Loggen da man sonst seine Benutzer verärgern könnte. </span></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2008/08/13/php-intrusion-detection-system-phpids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
