<?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>BEKK Open &#187; TLS</title>
	<atom:link href="http://open.bekk.no/tag/tls/feed/" rel="self" type="application/rss+xml" />
	<link>http://open.bekk.no</link>
	<description>Et innblikk i hva som skjer i BEKK</description>
	<lastBuildDate>Tue, 16 Apr 2013 14:08:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>OWASP Top 10 for JavaScript &#8211; A9: Insufficient Transport Layer Protection</title>
		<link>http://open.bekk.no/owasp-top-10-for-javascript-a9-insufficient-transport-layer-protection/</link>
		<comments>http://open.bekk.no/owasp-top-10-for-javascript-a9-insufficient-transport-layer-protection/#comments</comments>
		<pubDate>Thu, 18 Oct 2012 06:03:30 +0000</pubDate>
		<dc:creator>Erlend Oftedal</dc:creator>
				<category><![CDATA[Sikkerhet]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[owasp]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[TLS]]></category>
		<category><![CDATA[top 10]]></category>

		<guid isPermaLink="false">http://open.bekk.no/?p=9462</guid>
		<description><![CDATA[The 9th item on the OWASP Top 10 is <a href="https://www.owasp.org/index.php/Top_10_2010-A9">A9 - Insufficient Transport Layer Protection</a>. This is mostly a browser to server and server to server issue.]]></description>
			<content:encoded><![CDATA[<p>The 9th item on the OWASP Top 10 is <a href="https://www.owasp.org/index.php/Top_10_2010-A9">A9 &#8211; Insufficient Transport Layer Protection</a>. This is mostly a browser to server and server to server issue.</p>
<p>This is the risk rating from OWASP:
</p>
<table style="font-size: 90%;margin: 1em;border: 1px solid #DDD">
<tbody>
<tr style="background-color: #4F81Bd;color: #FFFFFF">
<th width="16.5%"> Threat Agents</th>
<th width="16.5%"> Attack Vectors</th>
<th colspan="2" width="33%"> Security Weakness</th>
<th width="16.5%"> Technical Impacts</th>
<th width="16.5%"> Business Impacts</th>
</tr>
<tr>
<td style="background-color: #D9D9D9;color: #000000"> ______</td>
<td style="background-color: #FFFF00;color: #000000"><b>Exploitability<br />DIFFICULT</b></td>
<td style="background-color: #FFB200;color: #000000"><b>Prevalence<br />COMMON</b></td>
<td style="background-color: #FF0000;color: #000000"><b>Detectability<br />EASY</b></td>
<td style="background-color: #FFB200;color: #000000"><b>Impact<br />MODERATE</b></td>
<td style="background-color: #D9D9D9;color: #000000">______</td>
</tr>
<tr valign="top">
<td style="text-align: left;border: 2px solid #FFFFFF">Consider anyone who can monitor the network traffic of your users. If the application is on the internet, who knows how your users access it. Don&#8217;t forget back end connections.</td>
<td style="text-align: left;border: 2px solid #FFFFFF">Monitoring users&#8217; network traffic can be difficult, but is sometimes easy. The primary difficulty lies in monitoring the proper network&#8217;s traffic while users are accessing the vulnerable site.</td>
<td colspan="2" style="text-align: left;border: 2px solid #FFFFFF">Applications frequently do not protect network traffic. They may use SSL/TLS during authentication, but not elsewhere, exposing data and session IDs to interception. Expired or improperly configured certificates may also be used.</p>
<p>Detecting basic flaws is easy. Just observe the site&#8217;s network traffic. More subtle flaws require inspecting the design of the application and the server configuration.</td>
<td style="text-align: left;border: 2px solid #FFFFFF">Such flaws expose individual users&#8217; data and can lead to account theft. If an admin account was compromised, the entire site could be exposed. Poor SSL setup can also facilitate phishing and MITM attacks.</td>
<td style="text-align: left;border: 2px solid #FFFFFF">Consider the business value of the data exposed on the communications channel in terms of its confidentiality and integrity needs, and the need to authenticate both participants.</td>
</tr>
</tbody>
</table>
<p>There isn&#8217;t all that much special about javascript driven web applications when it comes to Transport Layer Protection. Basically there are tree things to remember:
</p>
<ul>
<li>Use TLS/SSL for private data</li>
<li>Set the Secure flag on important cookies (like the session cookie)</li>
<li>Don&#8217;t mix content loaded over HTTP with content from HTTPS</li>
<li>Harden your SSL/TLS config</li>
</ul>
<h3>Use TLS/SSL for private data</h3>
<p>Whenever you are handling private data that needs protection, you should employ SSL or TLS. Ideally you should use SSL/TLS not only between your server and the browser, but also between the server and any backend services. The idea is to prevent disclosure or changes to data at an unauthorized network hops.</p>
<h3>Set the Secure flag on important cookies</h3>
<p>Any cookie used for authentication (like session cookies) need to be protected from disclosure over unsecured links. By setting the Secure flag in the Set-Cookie header when delivering the cookie over HTTPS, the server instructs the browser not to send the cookie when making insecure HTTP-requests. This will make sure the application does not accidentally disclose the cookie.</p>
<h3>Don&#8217;t mix HTTP content with HTTPS</h3>
<p>Mixing content delivered over HTTP with HTTPS can quickly lead to demise. This is especially true if the requests in question are delivering HTML, javascript or objects (flash etc.). Consider an application that loads some javascript over HTTP and then later moves to HTTPS. If the javascript delivered over HTTP is kept in the browser also after the application has moved to HTTPS, and attacker could inject or alter the javascript, to later affect the script running in the more secure context. Tools like <a href="http://www.thoughtcrime.org/software/sslstrip/">SSLStrip</a> also demonstrate why login forms etc. should not be delivered over HTTP even if the action URI is on HTTPS. The action URI can simply be altered in flight, and thus the post goes to HTTP or is redirected to a completely different location.</p>
<h3>Harden your SSL/TLS config</h3>
<p>Default installations of SSL/TLS are often quite insecure. They support low security key lengths and also support insecure renegotiation etc., making them vulnerable to key cracking, BEAST or other Man-in-the-middle attacks. A good tool for checking your SSL/TLS configuration is <a href="https://www.ssllabs.com/">https://www.ssllabs.com/</a> from Qualys. This tool will only work for endpoints available directly on the internet, so you may also want to look at <a href="http://sourceforge.net/projects/sslscan/">SSLScan</a> for internal endpoints.</p>
<h3>Resources</h3>
<ul>
<li><a href="https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet">OWASP Transport Layer Protection Cheat Sheet</a></li>
<li><a href="https://www.ssllabs.com/">https://www.ssllabs.com/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://open.bekk.no/owasp-top-10-for-javascript-a9-insufficient-transport-layer-protection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usikret kommunikasjon</title>
		<link>http://open.bekk.no/usikret-kommunikasjon/</link>
		<comments>http://open.bekk.no/usikret-kommunikasjon/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 20:49:31 +0000</pubDate>
		<dc:creator>Ståle Pettersen</dc:creator>
				<category><![CDATA[Sikkerhet]]></category>
		<category><![CDATA[Teknologi]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[TLS]]></category>

		<guid isPermaLink="false">http://open.bekk.no/?p=5038</guid>
		<description><![CDATA[OWASP Top 10 prosjektet har rangert usikret kommunikasjon som nummer 9 basert på risiko. Svakheten innebærer at konfidensialitet og integritet av informasjon ikke er tilstrekkelig ivaretatt mellom server og klient.]]></description>
			<content:encoded><![CDATA[<p><a rel="external" href="http://www.owasp.org/index.php/Top_10_2010-Main">OWASP Top 10</a>-prosjektet har rangert usikret kommunikasjon (“Insufficient transport layer protection”) som nummer 9 basert på risiko. Svakheten innebærer at konfidensialitet og integritet av informasjon ikke er tilstrekkelig ivaretatt mellom server og klient.</p>
<h2>Hva er usikret kommunikasjon?</h2>
<p>Usikret kommunikasjon er når sensitiv informasjon blir transportert over en usikret kommunikasjonskanal. HTTP og JDBC er protokoller som transporterer data usikret. HTTP eksponeres som regel til sluttbruker over internett, og JDBC eksponeres internt mellom applikasjonsserver og databaseserver. Dersom en angriper lytter på den usikre kommunikasjonen mellom server og klient kan sensitiv informasjon som kredittkortnummer, helseinformasjon, passord, autentisering- eller sesjonsinformasjon leses av angriperen. Selv om sensitiv informasjon sendes sikkert med TLS i et vanlige bruksmønster, er det viktig å garantere at det aldri blir sendt over HTTP. En må derfor tilse at for eksempel innloggingssiden kun er tilgjenglig over TLS, og ikke på HTTP. I tillegg finnes det usikre ciphers i eldre versjoner av TLS og SSL som gjør kommunikasjonen usikret.</p>
<h2>Hvordan utnyttes usikret kommunikasjon?</h2>
<p>En utnytter usikret kommunikasjon ved å lytte til trafikken som går mellom klient og server. Et eksempel; dersom en ansatt i firma X befinner seg på en konferanse og er pålogget et åpent trådløst nettverk, er sensitiv informasjon som sendes over HTTP tilgjengelig for alle innenfor rekkevidden til nettverket. Det er utvikler og drifter av nettstedet sitt ansvar å påse at ingen sensitiv informasjon kan leses i en slik kontekst.</p>
<p><strong>Usikret kommunikasjon av brukernavn og passord</strong> oppstår dersom innloggingssiden er tilgjenglig på HTTP og HTTPS. Da er det bruker som har ansvar for å velge den siden som ivaretar sikker kommunikasjon. En angriper kan lure brukeren til HTTP-innloggingssiden, og dermed lese brukernavn og passord når brukeren logger seg inn. Det er dårlig sikkerhetspraksis å ha innloggingsskjemaet på HTTP, selv om skjemaet sendes over TLS. Brukeren har ingen visuell garanti for at informasjonen blir sendt over TLS. En har heller ingen garanti for integriteten til innlogginssiden, og med integritet menes forsikring om at nettsiden er umodifisert. Dette åpner for at en angriper kan endre innloggingsskjemaet til å sende informasjonen over HTTP (<a rel="external" href="http://www.thoughtcrime.org/software/sslstrip/">SSLstrip</a> er et gratis verktøy som automatiserer akkurat slike angrep).</p>
<p>Sider som krever at brukeren er logget inn med gyldig sesjonsinformasjon må kun være tilgjengelig på TLS. Dersom slike sider er tilgjengelig på HTTP er det <strong>usikret kommunikasjon av sesjonsinformasjon</strong> som gjør at en angriper vil kunne stjele informasjonen ved å lytte på det trådløse nettverket og dermed logge inn som andre brukere.</p>
<p>Det er også usikret kommunikasjon dersom det brukes <strong>svak kryptering- eller integritetalgortime</strong>. Det er viktig å påse at det ikke brukes algoritmer med kjente svakheter, som for eksempel SSLv2.</p>
<h2>Hvordan unngå usikret kommunikasjon?</h2>
<p>Det er viktig at all sensitiv informasjon sendes over sikre kommunikasjonskanaler. I nettsider bør følgende prinsipper implementeres for å unngå usikret kommunikasjon.</p>
<h3>Innloggingside kun tilgjengelig over TLS</h3>
<p>Dette gjør at en angriper ikke kan manipulere innloggingsider. TLS garanterer integritet, gitt at siden ikke inneholder andre sikkerhetsfeil som <a rel="external" href="http://open.bekk.no/cross-site-scripting/">XSS</a> eller <a rel="external" href="https://www.owasp.org/index.php/Web_Parameter_Tampering">parameter tukling (&#8220;Parameter tampering&#8221;)</a>.</p>
<h3>Sesjonsinformasjon sendes kun over TLS</h3>
<p>Det anbefales at sesjonscookie har secure-flagget satt. Dette gjør at nettleseren aldri sender sesjonscookie over HTTP.</p>
<h4>Eksempel</h4>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Set<span style="color: #339933;">-</span>Cookie<span style="color: #339933;">:</span> sesjon<span style="color: #339933;">=&lt;</span>random<span style="color: #339933;">&gt;</span> Path<span style="color: #339933;">=/</span>accounts<span style="color: #339933;">;</span> Expires<span style="color: #339933;">=&lt;</span>dato<span style="color: #339933;">&gt;</span> HttpOnly<span style="color: #339933;">;</span> Secure</pre></div></div>

<p>Når en bruker skriver inn http://bank.com/sikker/ i nettleseren sin, mottar nettleseren en &#8220;HTTP redirect&#8221; som videresender brukeren til HTTPS. Denne videresendingen skjer over HTTP, og en angriper kan derfor manipulere dette. For å redusere risikoen for slik angrep kan en bruke HTTP headeren <a rel="external" href="http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security">Strict-Transport-Security</a>. Dette forteller nettleseren at den alltid skal bruke HTTPS for et domene i en gitt tidsperiode. Typisk blir tidsperioden satt til en måned, noe som vil redusere muligheten for angrep betraktelig. Headeren er støttet av Chrome og Firefox 4.</p>
<h4>Eksempel</h4>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Strict<span style="color: #339933;">-</span>Transport<span style="color: #339933;">-</span><span style="color: #003399;">Security</span><span style="color: #339933;">:</span> max<span style="color: #339933;">-</span>age<span style="color: #339933;">=</span><span style="color: #cc66cc;">2600000</span> <span style="color: #339933;">;</span> includeSubDomains</pre></div></div>

<h3>Sider som krever innlogging bør kun være tilgjenglig over TLS</h3>
<p>Sider som krever autentisering bør kun være tilgjenglig over TLS, inkludert bilder, CSS og Javascript-filer. Det kan være tilfeller der det er ønskelig at mindre sensitiv informasjon skal vises på sider som ikke blir sendt over TLS. I disse situasjonene anbefales det at det settes to sesjonscookies ved innlogging, en med secure-flagg for de sensitive sidene, og en uten secure-flagg for de mindre sensitive sidene (f.eks viser <a rel="external" href="http://linkedin.com">LinkedIn</a> brukernavnet du er innlogget som på HTTP sider). For alle sensitive handlinger må da sesjonscookien, som har secure-flagget satt, kreves.</p>
<h3>Bruk kun sikre algoritmer i TLS konfigurasjonen</h3>
<p>En del servere har fortsatt usikre kryptering- og integritetsalgoritmer skrudd på som standardinnstilling. Dette bør fjernes fra lastbalanserere, webservere, applikasjonsservere og rammeverk. De fleste nettlesere aksepterer ikke usikre ciphers og protokoller, som SSLv2, men en del eldre rammeverk og applikasjonsservere har usikre algoritmer i standardinnstillingene som en må være påpasselig med å fjerne. Qualys har laget  gratisverktøyet &#8220;<a rel="external" href="https://www.ssllabs.com/ssldb/index.html">SSL Server test</a>&#8221; som analyserer SSL konfigurasjonen til en server og påpeker eventuelle svakheter i oppsettet.</p>
<h3>Gyldig sertifikat</h3>
<p>Verifiser gyldigheten til sertifikatet og hvem som har signert dette. Sørg for at signerer er en tiltrodd tredjepart. Dette er spesielt viktig i systemer der advarsler om ugyldig sertifikat kun blir skrevet til logger, f.eks mellom applikasjonsserver og databaseserver.</p>
<h2>Les mer</h2>
<ul>
<li> <a rel="external" href="https://www.owasp.org/index.php/Top_10_2010-A9">OWASP Top 10 2010 &#8211; A9 Insufficient Transport Layer Protection</a></li>
<li> <a rel="external" href="http://www.thoughtcrime.org/software/sslstrip/">SSLstrip</a></li>
<li> <a rel="external" href="http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security">Strict-Transport-Security</a></li>
<li> <a rel="external" href="https://www.ssllabs.com/ssldb/index.html">SSL labs &#8211; SSL Server test</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://open.bekk.no/usikret-kommunikasjon/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
