<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<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>Security &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/category/security-2/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Tue, 03 Mar 2026 11:28:41 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>Security &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[Full Disclosure - This Bluetooth tag is leaking your personal data]]></title>
		<link>https://shkspr.mobi/blog/2016/11/full-disclosure-tintag/</link>
					<comments>https://shkspr.mobi/blog/2016/11/full-disclosure-tintag/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 17 Nov 2016 12:05:28 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[tintag]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=23575</guid>

					<description><![CDATA[If you have a TingTag, your location is being broadcast without encryption!  Earlier this year I purchased and reviewed the TinTag.  I&#039;ve spent the last month trying to get hold of the company to report a serious privacy problem with their Android app.  I&#039;ve not received an adequate response, so I&#039;m publishing this post to let affected users know about the issue.  The TinTag is a BLE tracker. …]]></description>
										<content:encoded><![CDATA[<p>If you have a TingTag, your location is being broadcast <em>without</em> encryption!</p>

<p>Earlier this year I <a href="https://shkspr.mobi/blog/2016/06/tintag-unboxing-and-review/">purchased and reviewed the TinTag</a>.  I've spent the last month trying to get hold of the company to report a <em>serious</em> privacy problem with their Android app.  I've not received an adequate response, so I'm publishing this post to let affected users know about the issue.</p>

<p>The TinTag is a BLE tracker.  It's designed to attach to your keys or bag.  An app on your phone can send a message to the tag, which causes it to light up and make a noise.  Handy if you've lost your keys and you're within Bluetooth range.</p>

<p>But what if you drop your keys while out jogging - how will you find them again?  These tags are too small and under-powered to run a GPS chip.  Instead, the app does the heavy lifting.  Every time the app detects the beacon, it records <em>the phone's</em> location and uses that as the "last known location".</p>

<p>And if you've lost your phone as well? No worries! The TinTag app uploads your precise location to its web server.</p>

<p>Completely unencrypted!</p>

<p><em>*sigh*</em></p>

<p>Let's fire up our trusty MITM app and see what the Android TinTag app is broadcasting to the world.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/10/TinTag-Unencrypted-Communications-fs8.png" alt="tintag unencrypted communications" width="1440" height="891" class="aligncenter size-full wp-image-23576">

<p>First off, all data is sent in the clear to Heroku.</p>

<p>TinTag are sending...</p>

<ul>
<li>The street address of the user.</li>
<li>The MAC address of the TinTag.</li>
<li>The precise latitude and longitude of the user.</li>
<li>The tag's ID.</li>
<li>A unique user ID.</li>
</ul>

<p>Of these, the most obvious concern is the exact location of the user.  They aren't encrypted in transit - what's the betting that they're encrypted on the server?</p>

<p>Given that <a href="https://play.google.com/store/apps/details?id=com.tin.tag">TinTag haven't updated their Android app</a> since the beginning of the year, do you think they've updated their server's software recently?</p>

<p><strong>If TinTag's servers are attacked - someone could get your <em>entire</em> location history.</strong></p>

<p>In part, I must say that I blame Heroku for some of these problems.  They could make their domains SSL enabled by default - but they don't.  Unfortunately, even if Heroku switched on SSL for all their users - that wouldn't help TinTag.  Digging into the app's code, this is what we find...</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/11/TinTag-Trust-Everyone-fs8.png" alt="Decompiled code showing TinTag trusting all HTTPS connections" width="834" height="434" class="aligncenter size-full wp-image-23579">

<p>My Java is a little rusty - but I'm reasonably sure that code is a "<a href="http://stackoverflow.com/a/5297100/1127699">radically insecure</a>" way to accept all HTTPS connections <strong>even if they are not valid!</strong></p>

<p>The sad thing is, the TinTag is a great piece of hardware. It has a nifty wireless recharger, has brigher lights and a louder speaker than any other BLE token I've found.  The software is so desperately insecure with <em>your</em> privacy that owners should stop using it immediately.</p>

<hr>

<p>Timeline</p>

<ul>
<li>17 October - repeated attempts to contact the company via their website.</li>
<li>26 October - contacted the CEO via LinkedIn.</li>
<li>01 November - response from CEO promising to look in to it.</li>
<li>No further contact from TingTag despite trying to contact them.</li>
<li>17 November - publication.</li>
</ul>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=23575&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/11/full-disclosure-tintag/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Should you open your WiFi during a disaster?]]></title>
		<link>https://shkspr.mobi/blog/2016/08/should-you-open-your-wifi-during-a-disaster/</link>
					<comments>https://shkspr.mobi/blog/2016/08/should-you-open-your-wifi-during-a-disaster/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 24 Aug 2016 15:44:18 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wifi]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=23271</guid>

					<description><![CDATA[There has been a terrible natural disaster in Italy.  A huge quake has broken a city.  Rescue teams race to the scene to try to save lives and stabilise the situation.  During the rescue efforts, the Italian Red Cross sends this tweet:  Croce Rossa Italiana@crocerossa#Terremoto, per favorire comunicazioni e operazioni di soccorso vi invitiamo a togliere la password della rete wi-fi…]]></description>
										<content:encoded><![CDATA[<p>There has been a <a href="https://en.wikinews.org/wiki/Major_magnitude_6.3_earthquake_strikes_central_Italy">terrible natural disaster in Italy</a>.  A huge quake has broken a city.  Rescue teams race to the scene to try to save lives and stabilise the situation.</p>

<p>During the rescue efforts, the Italian Red Cross sends this tweet:</p>

<blockquote class="social-embed" id="social-embed-768387275654885376" lang="it" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/crocerossa" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRhgBAABXRUJQVlA4IAwBAABwBwCdASowADAAPrVWoU6nJKKiI4sA4BaJQBmOa/23/pgB2oD6y4dInFqDc1uOIwrae7O5AVRe0LCGaixpXiRnTddsAAD++qALouxxqTsCJNIzix2buhZsWHA0Dvi67unllSwSWDTcMb0JkLfEbhgF5rqeeTB+bSpWlWFq2YyMIclGLzp2JKayzTd3C15fqF/lnNbIbbHW9sz5I+MXCOsv0obMp2zMOQBmba2FdiPXybw0/4HF+mhB8Xe1Ejx6Gp2uQNfwMiENa7aXFOZtZJh6/YqYxrrY9q86Voj25c/FA8XdwGlcIMtcFfLMbovNXpQe2IRXiimCMBw6WO8pk/yJDKH+niyJLuP3UAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Croce Rossa Italiana</p>@crocerossa</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><a href="https://twitter.com/hashtag/Terremoto">#Terremoto</a>, per favorire comunicazioni e operazioni di soccorso vi invitiamo a togliere la password della rete wi-fi <a href="https://x.com/crocerossa/status/768387275654885376/photo/1">pic.x.com/U9baz8F7WG</a><div class="social-embed-media-grid"><a href="https://pbs.twimg.com/media/CqncEzkWgAAVK3B.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="" src="data:image/webp;base64,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"></a></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/crocerossa/status/768387275654885376"><span aria-label="1424 likes" class="social-embed-meta">❤️ 1,424</span><span aria-label="32 replies" class="social-embed-meta">💬 32</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2016-08-24T09:59:37.000Z" itemprop="datePublished">09:59 - Wed 24 August 2016</time></a></footer></blockquote>

<p>It says "To facilitate communications and rescue operations we invite you to remove the password of the wi-fi network".</p>

<p>Should you do this?</p>

<p>No.</p>

<p>Let me be clear.</p>

<p>No no no no no no no!</p>

<p>I sound like a curmudgeonly killjoy.  I sound heartless.  I sound nasty.  I hate that.  But this is incredibly dangerous advice.  Both to citizens and rescuers.</p>

<p>In disasters there are always criminals looking to take advantage of the good-natured.  I'm not saying the the Red Cross are criminals - I'm saying that they're creating an environment which makes it very easy for for criminality to flourish.</p>

<h2 id="why-is-this-a-bad-idea"><a href="https://shkspr.mobi/blog/2016/08/should-you-open-your-wifi-during-a-disaster/#why-is-this-a-bad-idea">Why Is This A Bad Idea?</a></h2>

<p>Imagine if they said "please hand any spare cash over to people dressed as firefighters" or "give your telephone to anyone in a red jacket" or "we need blood supplies - please invite in anyone who knocks on your door".  You'd be crazy to follow that advice.  It's similar for unprotecting your WiFi.</p>

<p>What could a malicious user do while connected to your network?  They could, potentially...</p>

<ul>
<li>Send illegal communications using your IP address.</li>
<li>Download illegal material.</li>
<li>Break in to all the computers on your network.</li>
<li>Control any Internet connected devices and/or hack them.</li>
<li>Monitor all of your communications traffic.</li>
</ul>

<p>But, suppose you did open your WiFi. And suppose <em>you</em> were malicious.  When a Red Cross worker - or anyone else - connected to your WiFi, you could...</p>

<ul>
<li>Monitor <em>their</em> communications.</li>
<li>Redirect them to malicious websites.</li>
<li>Attempt to hack their computers.</li>
</ul>

<p>I would hope that every emergency worker <em>immediately</em> fires up a VPN before transmitting sensitive data - but I bet you that they don't.</p>

<h2 id="what-should-i-do"><a href="https://shkspr.mobi/blog/2016/08/should-you-open-your-wifi-during-a-disaster/#what-should-i-do">What Should I Do?</a></h2>

<p>Assuming that your Internet connection is still up, there are three sensible things to do.</p>

<ol>
<li><a href="https://shkspr.mobi/blog/2014/04/virgin-media-just-gave-all-of-their-customers-plausible-deniability%e2%80%8e/">Set up a guest network</a>. Most modern equipment will allow you to do this.  It will give <em>you</em> protection from most hackers using your network.  It doesn't protect you against illegal usage of your connection, nor does it protect people who connect to it.</li>
<li>Disconnect every single piece of equipment from your network first - including WiFi devices.  Once the disaster has passed, reset your router and set everything up again.  That may sound paranoid, but it is the only way to be sure nothing evil is lurking on there.</li>
<li>Let your friends and family know you are safe, and then switch your phone to aeroplane mode. Stop clogging up the airwaves and give the rescuers priority.</li>
</ol>

<h2 id="arent-you-a-little-paranoid"><a href="https://shkspr.mobi/blog/2016/08/should-you-open-your-wifi-during-a-disaster/#arent-you-a-little-paranoid">Aren't You A Little Paranoid?</a></h2>

<p>Perhaps.  Are there really gangs of criminal hackers rushing to disaster zones in order to exploit people? Probably not.</p>

<p>Does a little Italian village contain enough uber-hackers to break in to the Red Cross and cause havoc? Again, doubtful.</p>

<p>It is human nature to help out people in distress.  It's the most natural thing in the world to offer comfort, food, and shelter to those who have lost everything.</p>

<p>But we have to stop training people to think that security is merely an inconvenience. That security can be disposed of during times of crisis when it is needed most. We have to provide tools which will let people help in an emergency but not leave themselves vulnerable.</p>

<p>In the meantime, may I please encourage you to donate to <a href="http://www.tsfi.org/en">Télécoms Sans Frontière</a> - they do an incredible job providing emergency communications infrastructure in disaster zones.</p>

<hr>

<p>You can <a href="http://www.wired.co.uk/article/italian-red-cross-earthquake-wifi-password">read my further thoughts in Wired</a>.  There is <a href="http://www.bbc.co.uk/news/technology-37186290">a dissenting view from Dr Joss Wright on the BBC</a></p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=23271&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/08/should-you-open-your-wifi-during-a-disaster/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How *not* to do a password change page]]></title>
		<link>https://shkspr.mobi/blog/2016/07/how-not-to-do-a-password-change-page/</link>
					<comments>https://shkspr.mobi/blog/2016/07/how-not-to-do-a-password-change-page/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 10 Jul 2016 09:34:26 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[idiots]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=23044</guid>

					<description><![CDATA[We&#039;ve all been faced with this screen, right?  You haven&#039;t logged in to a website for a while, so it prompts you to change your password.    sigh Annoying but probably necessary.  The problem was, every time I tried to change my password, it told me that my old password was invalid.  The one that I&#039;d just used to log in.  I use the incredible LastPass Password Manager - so I knew I wasn&#039;t typing…]]></description>
										<content:encoded><![CDATA[<p>We've all been faced with this screen, right?  You haven't logged in to a website for a while, so it prompts you to change your password.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/07/Screenshot-of-A-Change-Password-field.-It-lists-various-restrictions-but-nothing-about-a-maximum-length.png" alt="Screenshot of A Change Password field. It lists various restrictions - but nothing about a maximum length" width="790" height="511" class="aligncenter size-full wp-image-23050">

<p><em>sigh</em> Annoying but probably necessary.</p>

<p>The problem was, every time I tried to change my password, it told me that my <em>old</em> password was invalid.  The one that I'd just used to log in.  I use the <a href="https://lastpass.com/">incredible LastPass Password Manager</a> - so I knew I wasn't typing it incorrectly.</p>

<p>It took a few tries, but I finally figured out what was going wrong.  When I'd set up the account, LastPass had generated a secure 32 character password.  But the "old password" field had artificially restricted passwords to a maximum of 20 characters.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/07/Screenshot-of-HTML-source-code-showing-that-the-input-maxlength-is-set-to-20-fs8.png" alt="Screenshot of HTML source code showing that the input maxlength is set to 20-fs8" width="542" height="121" class="aligncenter size-full wp-image-23046">

<p>Well, that's easy enough to change! Crack open Firefox's Inspect Element tool, change the <code>maxlength</code> value, and submit again.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/07/Screenshot-of-A-Change-Password-field.-An-error-message-says-ensure-this-value-has-at-most-20-characters-it-has-32-fs8.png" alt="Screenshot of A Change Password field. An error message says ensure this value has at most 20 characters it has 32)-fs8" width="661" height="139" class="aligncenter size-full wp-image-23049">

<p>What <em>utter</em> cockwombles.</p>

<p>Can you see any mention of a maximum length in the password rules? Minimum, sure, but no max.</p>

<p>Naturally, this 20 character restriction isn't enforced on the login page.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/07/Screenshot-of-HTML-source-showing-now-password-length-restrictions-on-login-fs8.png" alt="Screenshot of HTML source showing now password length restrictions on login-fs8" width="514" height="434" class="aligncenter size-full wp-image-23045">

<p>Take a bow, "Willis Towers Watson", your web developers are actively making the world a worse place.  I'd ring you up to complain, but naturally you're closed on a Sunday.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=23044&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/07/how-not-to-do-a-password-change-page/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[PayPal doesn't care about 2FA security]]></title>
		<link>https://shkspr.mobi/blog/2016/06/paypal-doesnt-care-about-security/</link>
					<comments>https://shkspr.mobi/blog/2016/06/paypal-doesnt-care-about-security/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 22 Jun 2016 11:14:25 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[2fa]]></category>
		<category><![CDATA[paypal]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=22984</guid>

					<description><![CDATA[Remember when PayPal was a cool new company dedicated to radically improving online payments? Seems like it was ages ago.  Now PayPal is little better than then bloated banks it sought to overthrow.  Arcane bureaucracy, impenetrable fees, and a lamentable approach to security.  I was minded recently to switch on 2-Factor-Authentication (2FA) for all my accounts.  Whenever I want to log in, I give …]]></description>
										<content:encoded><![CDATA[<p>Remember when PayPal was a cool new company dedicated to radically improving online payments? Seems like it was ages ago.  Now PayPal is little better than then bloated banks it sought to overthrow.  Arcane bureaucracy, impenetrable fees, and a lamentable approach to security.</p>

<p>I was minded recently to switch on 2-Factor-Authentication (2FA) for all my accounts.  Whenever I want to log in, I give my username and password - then I receive a text message which can only be used once.</p>

<p>Searching for <a href="https://www.paypal.com/selfhelp/search?q=2fa&amp;helpSearchButton=Search">2FA on PayPal</a> doesn't return any results - nor does <a href="https://www.paypal.com/selfhelp/search?q=sms&amp;helpSearchButton=Search">searching for SMS</a>.  <em>*sigh*</em> Ah! Wait! They call it "Security Key" - <a href="https://www.paypal.com/selfhelp/paypalsearch?q=security+key">perhaps if I search for that</a>… Nope. Nothing.</p>

<p>With <a href="https://web.archive.org/web/20170130040150/https://www.turnon2fa.com/tutorials/how-to-turn-on-2fa-for-paypal/">help from a third-party site</a>, I found out how to turn it on.  Minus five points for Hufflepuff there.</p>

<p>Now, when I try to log in via the web, PayPal will send me a text message - a welcome measure of security!
<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/06/Receive-a-Text-from-PayPal-fs8.png" alt="Receive a Text from PayPal" width="443" height="360" class="aligncenter size-full wp-image-22986"></p>

<p>Unless, of course, I try logging in via the <em>mobile</em> web.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/06/PayPal-doesnt-accept-2FA-.png" alt="PayPal doesn't accept 2FA-" width="1024" height="720" class="aligncenter size-full wp-image-22985">
What band of chuckle-fucks thought that this was an acceptable solution?  There's no technological reason not to have this page trigger an SMS - indeed <em>some</em> other mobile pages are quite happy to let me use 2FA.</p>

<p>I switched my mobile browser into desktop mode and was able to complete the transaction.  What a farce.</p>

<p>PayPal is now a twisted nest of technologies - some of which can never be updated for fear of bringing the whole crumbling edifice crashing to the ground.  If PayPal really cared about your security then they'd make switching on and using 2FA as easy as possible. Instead, they've done the bare minimum to tick a box in the product feature list and not bothered to test it thoroughly.</p>

<p>There is currently no way to report security issues like this to PayPal - their page at <a href="https://www.paypal.com/webapps/mpp/security/reporting-security-issues">https://www.paypal.com/webapps/mpp/security/reporting-security-issues</a> has been broken for months.</p>

<p>I eventually found an email address for them and, after some toing-and-froing, I got this response:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/06/PayPal-2FA-Security-Response-.png" alt="If a customer has setup 2FA and it will not work they are directed to use the desktop version for their own protection. This is not a security issue.   We take pride in keeping PayPal the safer place for online payment.   Thanks, PayPal Bug Bounty Team" width="452" height="268" class="aligncenter size-full wp-image-22992">

<p>PayPal needs to make the usability of its security a priority. At the moment, it is failing.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=22984&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/06/paypal-doesnt-care-about-security/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Disclosed - Lifx Security Issue]]></title>
		<link>https://shkspr.mobi/blog/2016/05/disclosed-lifx-security-issue/</link>
					<comments>https://shkspr.mobi/blog/2016/05/disclosed-lifx-security-issue/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 12 May 2016 11:33:42 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[lifx]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=22800</guid>

					<description><![CDATA[I love my Lifx Bulbs.  They&#039;re a quick and easy way to retrofit Internet connected goodies into a smart-home.  One of the best things about them is their open API.  Sure, you can use IFTTT if you want something easy - but us 1337 hax0rs want an API and Lifx provides it.  The API is pretty secure - good use of OAuth and tokens to make sure whatever you&#039;re building is resistant to infiltration.  I…]]></description>
										<content:encoded><![CDATA[<p>I love my Lifx Bulbs.  They're a quick and easy way to retrofit Internet connected goodies into a smart-home.</p>

<p>One of the best things about them is their open API.  Sure, you can use IFTTT if you want something easy - but us 1337 hax0rs want an API and Lifx provides it.</p>

<p>The API is pretty secure - good use of OAuth and tokens to make sure whatever you're building is resistant to infiltration.  I mean, imagine if someone hacked your lightbulbs and ... err... switched off the light while you were reading. That'd be <em>dreadful!</em></p>

<p>As I was wandering through <a href="https://api.developer.lifx.com/docs/authentication">the developer documentation</a>, I noticed that there was a prominent login form.  The pages were <strong>not</strong> served over HTTPS, and the form was similarly submitting to an insecure page.  Typing in "https" before the URL showed a mismatched certificate error.</p>

<p>Not a great user experience - and a good way for customers to have their passwords intercepted.</p>

<h3 id="24th-april-2016"><a href="https://shkspr.mobi/blog/2016/05/disclosed-lifx-security-issue/#24th-april-2016">24th April 2016</a></h3>

<p>I took a quick note of my findings and used Lifx's contact form to alert them.</p>

<blockquote><p>The URLs http://api.developer.lifx.com/ and http://lan.developer.lifx.com/ ask developers for their email address and password.</p><br>

<p>The site is NOT served over httpS. If a user tries to manually force it to https, they get a mismatched certificate error.</p><br>

<p>If a developer is on an insecure connection, this could cause their credentials to leak.</p><br>

<p>Can I strongly urge you to fix the certificates on the site and to reset the passwords of any user who has been affected.</p></blockquote>

<h3 id="27th-april"><a href="https://shkspr.mobi/blog/2016/05/disclosed-lifx-security-issue/#27th-april">27th April</a></h3>

<p>I received this very positive note back from one of their engineers.</p>

<blockquote><p>Thank you for reporting this issue to us. At LIFX we take our users and developers security extremely seriously. Here we clearly dropped the ball, and we need to be better.</p><br>

<p>Today I obtained certificates, sent them to our provider and set the documentation sites to enforce SSL. Finally I also changed most links to link to the SSL version of the site by default. We will be internally discussing how to best inform anyone affected.</p><br>

<p>Again thank you for your time finding and reporting this vulnerability to us. Your efforts have made us all more secure.</p></blockquote>

<p>That's a pretty good response time for a company - especially given the timezone differences.</p>

<h3 id="conclusions"><a href="https://shkspr.mobi/blog/2016/05/disclosed-lifx-security-issue/#conclusions">Conclusions</a></h3>

<p>I checked, and the sites are now securely behind https.</p>

<p>It appears that the "log in" form is actually to log in to the <a href="http://readme.io/">ReadMe.IO</a> documentation service.  I would expect that most developers would see "Log In" and use their Lifx credentials.  This means that ReadMe.IO (who I'm sure are honourable people) may inadvertently be receiving usernames and passwords for an entirely different service.</p>

<p>If you've previously clicked that Log In button, it would be sensible to reset your password and revoke and OAuth tokens you may have generated.</p>

<p>If you run a website, think hard about which login prompts you display - and whether tired developers are likely to make mistakes.</p>

<h3 id="bounty"><a href="https://shkspr.mobi/blog/2016/05/disclosed-lifx-security-issue/#bounty">Bounty!</a></h3>

<p>I obviously wasn't expecting a million dollar payout - but was pleasantly surprised to receive a clutch of new bulbs as a thank you gift.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/04/Lifx-Bug-Bounty.jpg" alt="Lifx Bug Bounty - 6 brand new bulbs" width="768" height="539" class="aligncenter size-full wp-image-22832">
Anyway, here's me casting a spell on one of my bulbs.</p>

<blockquote class="social-embed" id="social-embed-638785670002163712" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><blockquote class="social-embed" id="social-embed-638643392935763968" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">That think where you have a kickarse idea only to find some beat you to it by FOUR DAYS! <a href="https://twitter.com/KelvZhan/status/637221730336002048">x.com/kelvzhan/statu…</a><blockquote class="social-embed" id="social-embed-637221730336002048" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/KelvZhan" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRtwCAABXRUJQVlA4INACAADwDACdASowADAAPrVMn0unJCKhpy2w4BaJZgCxHrzPivM9OgOTyf1T3l+IzMFlQONnKavdvn9X/m40hmEM933K4Ydo94gBV5D3nz0FY0ivQiW8Proe53vD7AV0wpu39HexzHgn/v1SMEveTHOn2zHgAP78Dj4fGGSX6/tJP68aRNQ/CURKDMkkxhbyl26/zon96fuNapphE/toQeIKFcy4l6wIR+gC1uhMuK9ZR92ATrnllySaqSH6a9epmRq6KKgaVgGTyVI46wLL/SmVVzu0gkOjc2ywPMMeUr3uFGd7VfCjCRCO6hyWlD3Arcc30sLA9lvtSS/9sezscXd8JYBd4t/HFhC/pI56NEAr4UFAr52hdKyycSwFGboDHkdi9twuanC9gOHXxKHLTGmPcSKwetaEq5V4ftLJcd6aFZUldExnB0sSXyChPnp7vUyoySua2PxoLOcx74ejcb0LM5orqkSd1figtYOWS1Px6oH3VV1Vj+tcyCzXkribN0DFJzmWH4K/wPe52UQJIdABD8o7AaMrtfzP3MMP+vaTbNrWxTBKztjijxeephaz9GTYIoe0zNYQkHFyBYbvdXKYmL2q1K3ffYs5fJVI7+/8/0xZYJKUtU73S0wHpyRxX17nEON+gICinmMPJIrV2UdGf9KUucoKuQYIfJ2LynwWpoFAHCP02Ii3RhuOktrVhVv9eb/3COlk4zUSBd4o+H/c80dHbwTyU0bU+W5xxw2KyfpqFpLJJ1i2iKGbGy9LzCWt79SdgdqSQ2SewuZLYn5LhZp0MUx7+GDMUUTvxsTVpoUKCqV2w27ZlVyttw2BU2fpjoSwYSj78jfuL1J1tQSsmp54Lg847WQZA3Q0L+hQXdPGRouYbFxRryrplnqGHqZch7+7moltXT5gb47N1huXwsdwCt7CdP2cMj0acfb8djiS2wNva0UVflexVO4GOm/BoAA=" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Kelvin Zhang</p>@KelvZhan</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">First working implementation of voice controlled <a href="https://twitter.com/LIFX">@LIFX</a> lights using Python Jasper + lifx-cli <a href="https://twitter.com/smarthall">@smarthall</a> <a href="https://twitter.com/KelvZhan/status/637221730336002048/video/1">pic.x.com/lkfpjo7onz</a><div class="social-embed-media-grid"><video class="social-embed-video" controls="" src="https://video.twimg.com/ext_tw_video/637221621577740288/pu/vid/1280x720/miNZGi0Pwz3nAoso.mp4" poster="data:image/webp;base64,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" width="550"></video></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/KelvZhan/status/637221730336002048"><span aria-label="6 likes" class="social-embed-meta">❤️ 6</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="3 reposts" class="social-embed-meta">🔁 3</span><time datetime="2015-08-28T11:14:34.000Z" itemprop="datePublished">11:14 - Fri 28 August 2015</time></a></footer></blockquote></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/638643392935763968"><span aria-label="0 likes" class="social-embed-meta">❤️ 0</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2015-09-01T09:23:44.000Z" itemprop="datePublished">09:23 - Tue 01 September 2015</time></a></footer></blockquote><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/638643392935763968">Replying to @edent</a></small>Woo! Using the WebKit Speech Recognition API I can now control my Lifx bulbs like Harry Potter :-) <a href="https://twitter.com/edent/status/638785670002163712/video/1">pic.x.com/ykphwepthy</a><div class="social-embed-media-grid"><video class="social-embed-video" controls="" src="https://video.twimg.com/ext_tw_video/638785659675770881/pu/vid/360x640/1rW7rfim87-cbKeD.mp4" poster="data:image/webp;base64,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" width="550"></video></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/638785670002163712"><span aria-label="8 likes" class="social-embed-meta">❤️ 8</span><span aria-label="1 replies" class="social-embed-meta">💬 1</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2015-09-01T18:49:06.000Z" itemprop="datePublished">18:49 - Tue 01 September 2015</time></a></footer></blockquote>

<p><a href="https://github.com/edent/Harry-Potter-Lifx">Read more on my GitHub repo</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=22800&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/05/disclosed-lifx-security-issue/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://video.twimg.com/ext_tw_video/637221621577740288/pu/vid/1280x720/miNZGi0Pwz3nAoso.mp4" length="5592985" type="video/mp4" />
<enclosure url="https://video.twimg.com/ext_tw_video/638785659675770881/pu/vid/360x640/1rW7rfim87-cbKeD.mp4" length="544647" type="video/mp4" />

			</item>
		<item>
		<title><![CDATA[Designing a Home Network for Hostile Devices]]></title>
		<link>https://shkspr.mobi/blog/2016/03/designing-a-home-network-for-hostile-devices/</link>
					<comments>https://shkspr.mobi/blog/2016/03/designing-a-home-network-for-hostile-devices/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 26 Mar 2016 09:01:01 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[networks]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=22641</guid>

					<description><![CDATA[I&#039;ve written before about just how many Internet connected gadgets I have. I&#039;ve also blogged about my dodgy WiFi lightswitches which send data back to China. Every IoT device you put in your home brings a certain level of risk to the other devices in your network.  For example, my Smart TV and my Lifx don&#039;t require a password to access.  Any device on my network can control them.  That&#039;s…]]></description>
										<content:encoded><![CDATA[<p>I've written before about just <a href="https://shkspr.mobi/blog/2015/08/128-wifi-devices-ought-to-be-enough-for-anyone/">how many Internet connected gadgets I have</a>.<br>
I've also blogged about my <a href="https://shkspr.mobi/blog/2016/03/the-absolute-horror-of-wifi-light-switches/">dodgy WiFi lightswitches which send data back to China</a>.<br>
Every IoT device you put in your home brings a certain level of risk to the other devices in your network.</p>

<p>For example, my Smart TV and my Lifx don't require a password to access.  Any device on my network can control them.  That's <em>extremely</em> convenient - but it's a <strong>security nightmare</strong>.</p>

<p>Consider, for a moment, my WiFi Smoke Alarm.  It periodically connects to the Internet to check for software updates.  What if a hacker uploads fake firmware which scans for local devices and abuses them?  Or opens up a tunnel into my network for criminals to access?</p>

<p>We're all one software update away from being infiltrated.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/03/Internet-of-Traitors-.png" alt="Internet of Traitors-" width="400" height="326" class="aligncenter size-full wp-image-22648">

<p>How should a suitably paranoid person design their home network?</p>

<h2 id="all-together-now"><a href="https://shkspr.mobi/blog/2016/03/designing-a-home-network-for-hostile-devices/#all-together-now">All Together Now!</a></h2>

<p>The naïve design is just to shove everything on one network.</p>

<p>Without a doubt this is the easiest to configure - just tell each device the WiFi password - but it's the most dangerous.  Any device can talk to any other device.  If your SmartTV receives a commercial for a DELICIOUS MILLER LITE™ BEER OF CHAMPIONS® it might connect to your smart fridge (no password - because who needs security on a domestic appliance) and order you an unwanted beer.</p>

<p>Or the Taiwanese company which made your lightbulb might get sold to a company who have no ethical qualms about exploring your NAS to see what sort of "exotic" material you have on there.  Then encrypting and ransoming it back to you.</p>

<h2 id="blind-segregation"><a href="https://shkspr.mobi/blog/2016/03/designing-a-home-network-for-hostile-devices/#blind-segregation">Blind Segregation</a></h2>

<p>The router supplied by my ISP allows me to set up two isolated networks.  I currently have a <a href="https://shkspr.mobi/blog/2014/04/virgin-media-just-gave-all-of-their-customers-plausible-deniability%e2%80%8e/">guest network which is open to anyone who visits</a> (although that, in itself, <a href="http://www.troyhunt.com/2015/12/no-you-cant-join-my-wifi-network.html">may not be a wise idea</a>).</p>

<p>So I <em>could</em> put my untrusted devices on a separate network to the devices I have a reasonably high degree of trust.</p>

<p>This makes accessing those devices less convenient - and it still means my Smart Toaster can turn off my Security Cameras.</p>

<h2 id="complete-separation"><a href="https://shkspr.mobi/blog/2016/03/designing-a-home-network-for-hostile-devices/#complete-separation">Complete Separation</a></h2>

<p>Suppose I set up a separate subnet for each device? 192.168.0.* for trusted devices, 192.168.1.* for all the security cameras. 192.168.2.* for all the Samsung kitchen appliances. And so on and so forth.</p>

<p>A chore to set up, but this has a superficial charm.  Until I come to do anything.  I <em>want</em> my phone's app to be able to control my games console.  I want my TV to be able to read media off my local server.</p>

<p>Of course, that assumes that a regular ISP supplied router can do that. Hint - it probably can't.</p>

<h2 id="complex-firewalls"><a href="https://shkspr.mobi/blog/2016/03/designing-a-home-network-for-hostile-devices/#complex-firewalls">Complex Firewalls</a></h2>

<p>Ok, so now we move <em>way</em> beyond what a domestic router can normally do and into professional grade stuff.  Forgive me if my use of terminology isn't 100%.</p>

<p>Each device added to the network needs to be part of an access control list.  The firewall determines if any two devices are allowed to communicate with each other.  For example:</p>

<ul>
<li>My tablet and laptop should be able to connect to <em>everything</em>.</li>
<li>My Kindle should only have access to the Internet. </li>
<li>My fridge and freezer can talk to each other - but nothing else. </li>
<li>My solar panels can talk to my solar battery - but only on port 80.</li>
</ul>

<p>What an absolute <strong>nightmare</strong> to set up.  I'm not even sure what sort of router I'd need to buy in order to make something like that possible.  How easy would it be to misconfigure?  One errant mouse click and my Sonos speaker can unlock my front door when it plays a specifically crafted MP3...</p>

<h2 id="how-to-build-this"><a href="https://shkspr.mobi/blog/2016/03/designing-a-home-network-for-hostile-devices/#how-to-build-this">How to build this?</a></h2>

<p>I pride myself on being relatively tech savy.  I've got around 40 Internet connected devices around the house - only some of which are under my direct control.</p>

<p>I've asked this question on the <a href="https://security.stackexchange.com/questions/118483/how-to-design-a-home-network-for-iot-devices/">Security StackExchange</a> - but I'd be grateful for any wisdom from you, dear reader. Are there any products that you can suggest?</p>

<p>Or, do I just give in gracefully? Stick strong passwords on everything which can be protected, and hope that none of me devices become part of the Internet of Traitors?</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=22641&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/03/designing-a-home-network-for-hostile-devices/feed/</wfw:commentRss>
			<slash:comments>16</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Minimum Viable XSS]]></title>
		<link>https://shkspr.mobi/blog/2016/03/minimum-viable-xss/</link>
					<comments>https://shkspr.mobi/blog/2016/03/minimum-viable-xss/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 08 Mar 2016 11:57:57 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[xss]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=22229</guid>

					<description><![CDATA[Update! I now have an XSS which is only 18 characters!  Here&#039;s a fun little game for all the family!  What is the minimum number of characters required to perform a successful XSS attack?  Let&#039;s take an entirely theoretical example - suppose we have a site which echos back user input without sanitising it.  So a search for &#34; &#60;em&#62;&#34; turns the whole page italic.  ahem  A hacker might think, &#34;Hurrah! …]]></description>
										<content:encoded><![CDATA[<p><ins datetime="2021-11-04T16:02:29+00:00">Update! I now have <a href="https://shkspr.mobi/blog/2020/08/buying-a-single-character-domain-and-3-character-fqdn-for-15/#xss">an XSS which is only 18 characters</a>!</ins></p>

<p>Here's a fun little game for all the family!  What is the <em>minimum</em> number of characters required to perform a successful XSS attack?</p>

<p>Let's take an entirely theoretical example - suppose we have a site which echos back user input without sanitising it.  So a search for " <code>&lt;em&gt;</code>" turns the whole page italic.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/12/ashmolean-em-fs8.png" alt="ashmolean em-fs8" width="1024" height="576" class="aligncenter size-full wp-image-22251">
<em>ahem</em></p>

<p>A hacker might think, "Hurrah! Now I can directly inject JavaScript into the page. MWAHAHAHA!"</p>

<p>But wait, young grasshopper, for there is a fly in the ointment.  What if the developer of the site saw fit to restrict the number of characters echoed back to a mere 20? (Note, this limitation isn't set by a <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input?redirectlocale=en-US&amp;redirectslug=HTML%2FElement%2FInput"><code>maxlength</code></a> attribute, but rather a server-side limitation.)
<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/12/Ashmolean-20-chars-fs8.png" alt="Ashmolean 20 chars-fs8" width="1024" height="418" class="aligncenter size-full wp-image-22252">
Is that enough for mischief?</p>

<p>20 characters of JavaScript gets us
<code>&lt;script&gt;alert(1);&lt;/s</code></p>

<p>That's not even enough to make an annoying pop-up!</p>

<p>How about an iFrame? Load up something dastardly!
<code>&lt;iframe src="http://</code></p>

<p>Hmmm... We can use protocol-relative addresses to save us from having to use "http:"
<code>&lt;iframe src=//bit.ly</code>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/01/asmolean-iframe-broken-fs8.png" alt="asmolean iframe broken-fs8" width="1024" height="576" class="aligncenter size-full wp-image-22253">
Normally, that wouldn't be enough to do anything with.</p>

<p>Suppose we control a really short domain name like <code>t.co</code>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/01/ashmolean-iframe-work-fs8.png" alt="ashmolean iframe work-fs8" width="1024" height="576" class="aligncenter size-full wp-image-22254"></p>

<p>Aha! Success. Just about.  There are an extremely limited number of 4 character domains available - so this is an incredibly unlikely attack vector.</p>

<p>Perhaps we can load a script from an external resource?</p>

<p><code>&lt;script src=//ab.cd&gt;</code></p>

<p>Ooof! Again, just about possible if we control a <em>minuscule</em> domain.</p>

<p>If we can send a malicious payload to the user, perhaps via an image, could that work?</p>

<p>The maximum we can use is something like
<code>&lt;img src=//a.bc/123&gt;</code>.</p>

<p>So, if we contained a short domain, and were able to host (or redirect to) a malicious file, there's a <strong>slim</strong> chance of success.</p>

<p>A few people have <a href="http://www.highseverity.com/2011/06/xss-in-confined-spaces.html">attempted to find what the Minimum Viable XSS is</a>.  The general consensus is that <a href="https://www.davidsopas.com/tiny-xss-exploitation/">it would take more than 20 characters</a>.</p>

<p>I hope that I have demonstrated two things.</p>

<ol>
<li>If you have the resources to own a short domain, it is <em>just about</em> possible to craft an XSS in 20 characters.</li>
<li>Reducing the number of characters your site echos back is <strong>not</strong> a sensible way to filter out attacks!</li>
</ol>

<p>Here endeth the lesson.</p>

<hr>

<h3 id="responsible-disclosure"><a href="https://shkspr.mobi/blog/2016/03/minimum-viable-xss/#responsible-disclosure">Responsible Disclosure</a></h3>

<p>I contacted the Ashmolean in January regarding this flaw. It was fixed in early March.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=22229&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/03/minimum-viable-xss/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[BMW are sending their software updates unencrypted]]></title>
		<link>https://shkspr.mobi/blog/2016/02/bmw-are-sending-their-software-updates-unencrypted/</link>
					<comments>https://shkspr.mobi/blog/2016/02/bmw-are-sending-their-software-updates-unencrypted/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 25 Feb 2016 08:19:48 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[bmw]]></category>
		<category><![CDATA[car]]></category>
		<category><![CDATA[i3]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=21999</guid>

					<description><![CDATA[The BMW i3 is an amazing electric car - let down by very shoddy software.  That&#039;s a huge problem - software runs our lives and, if it is defective, it can ruin us.  We used to have separate categories of device: washing machines, VCRs, phones, cars, but now we just have computers in different cases. For example, modern cars are computers we put our bodies in and Boeing 747s are flying Solaris…]]></description>
										<content:encoded><![CDATA[<p>The <a href="https://shkspr.mobi/blog/2015/09/i3-electric-car-review/">BMW i3 is an amazing electric car</a> - let down by <a href="https://shkspr.mobi/blog/2015/06/bmw-i3s-web-browser/">very shoddy software</a>.  That's a <em>huge</em> problem - software runs our lives and, if it is defective, it can ruin us.</p>

<blockquote><p>We used to have separate categories of device: washing machines, VCRs, phones, cars, but now we just have computers in different cases. For example, <strong>modern cars are computers we put our bodies in</strong> and Boeing 747s are flying Solaris boxes, whereas hearing aids and pacemakers are computers we put in our body.

</p><p><cite><a href="http://boingboing.net/2012/08/23/civilwar.html">The Coming Civil War over General Purpose Computing - Cory Doctorow</a></cite> Emphasis added.
</p></blockquote>

<p>The i3 has numerous software defects.  Despite having a capable 3G modem, all major software updates <em>have</em> to be performed by an authorised dealer.  That means booking your car in and waiting for a day or two for the update to take place.</p>

<p>So, that's the <em>major</em> software updates, what about the minor ones?  It turns out that the entertainment system can be updated by anyone with a USB stick and access to your vehicle.</p>

<blockquote><p>The BMW Group allows part of the vehicle software to be updated, to enable compatibility of the latest tested Bluetooth or USB devices in the vehicle. This offer is available for selected vehicles manufactured after March 2010.

</p><p>You can perform this software update yourself. To do so, all you need is a standard USB memory stick with sufficient memory capacity.

</p><p><cite><a href="https://web.archive.org/web/20160226122251/http://www.bmw.com/com/en/owners/connected_drive_services/mobile_devices/bluetooth_software_update.html">BMW Connected Drive - Software Updates</a></cite>
</p></blockquote>

<p>The website doesn't use SSL.  I mean, <em>everything</em> is unencrypted <strong>including the software download!</strong></p>

<p>The user enters their Vehicle Identification number, it is sent across to an unencrypted API.</p>

<pre><code class="language-_">http://www.bmw.com/_common/shared/owners/bluetooth/jsp/serviceV2.jsp
   ?op=getVINData
   &amp;requestType=bluetooth
   &amp;language=en
   &amp;vin=1234567
   &amp;domain=kisu-check
</code></pre>

<p>The user is asked to agree to a "usage right agreement" - but it's not necessary; the software is available to anyone without requiring authentication.</p>

<p>For example, the i3's software is available at</p>

<ul><li><a href="https://web.archive.org/web/20160310052859/https://www.bmw.com/_common/shared/owners/bluetooth/bin/UPD07012.bin">http://www.bmw.com/_common/shared/owners/bluetooth/bin/UPD07012.bin</a></li></ul>

<p>No need to guess a VIN or agree to any terms.  Just click and download.</p>

<p>A look through the <a href="http://x3.xbimmers.com/forums/showthread.php?t=1128882">various BMW forums</a> shows that software updates for different cars all <a href="https://web.archive.org/web/20250000000000*/http://www.bmw.com/_common/shared/owners/bluetooth/bin/UPD05062.bin">follow</a> a <a href="https://web.archive.org/web/20250000000000*/http://www.bmw.com/_common/shared/owners/bluetooth/bin/UPD05021.bin">similar</a> <a href="https://web.archive.org/web/20250000000000*/http://www.bmw.com/_common/shared/owners/bluetooth/bin/UPD05073.bin">pattern</a>.</p>

<h2 id="why-is-this-a-bad-thing"><a href="https://shkspr.mobi/blog/2016/02/bmw-are-sending-their-software-updates-unencrypted/#why-is-this-a-bad-thing">Why Is This A Bad Thing™?</a></h2>

<p>Because the software download goes via http rather than http<strong>s</strong>, it is theoretically possible for an attacker to modify the file before it gets to you.</p>

<p>One would hope that the firmware is cryptographically signed so that it cannot be maliciously modified - but <a href="http://www.bbc.co.uk/news/technology-31093065">given BMW's fairly poor record on securing their cars</a> (<a href="http://www.heise.de/newsticker/meldung/BMW-ConnectedDrive-gehackt-2533601.html">original in German</a>), it's not guaranteed.</p>

<p>OK, what's the <em>worst</em> that could happen with a phony software update for a glorified car radio?</p>

<p>My friend <a href="https://web.archive.org/web/20160304041241/https://blog.lookout.com/blog/2015/08/07/hacking-a-tesla/">Marc Rogers successfully hacked the Tesla Model S</a> in part using the car's infotainment system.  It turns out that entertainment systems often talk to the rest of the car via a <a href="https://en.wikipedia.org/wiki/CAN_bus">CAN bus</a>.  If the car isn't fully secured, it is theoretically possible that a rogue internal component would be able to endanger the car and its passengers.</p>

<p>There's a secondary issue - car manufacturers are training people to stick untrusted USB sticks into their cars.</p>

<p>When FIAT had to update the software on 1.4 million cars, they <a href="https://web.archive.org/web/20160505083842/https://www.cars.com/articles/chrysler-recalls-14-million-cars-over-hacking-1420680918042/">opted to send USB sticks in the post to affected drivers</a>.</p>

<blockquote class="social-embed" id="social-embed-640091400705601536" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">Oh, a *secure* USB.<br>There's no way that could be malicious… <br><a href="https://twitter.com/hashtag/antipattern">#antipattern</a> <a href="https://twitter.com/edent/status/640091400705601536/photo/1">pic.x.com/kqhtw51zq6</a><div class="social-embed-media-grid"><a href="https://pbs.twimg.com/media/COIPvCSU8AAyNPK.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="" src="data:image/webp;base64,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"></a></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/640091400705601536"><span aria-label="10 likes" class="social-embed-meta">❤️ 10</span><span aria-label="1 replies" class="social-embed-meta">💬 1</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2015-09-05T09:17:36.000Z" itemprop="datePublished">09:17 - Sat 05 September 2015</time></a></footer></blockquote>

<p>If you receive a USB stick in the post, how can you be sure that it doesn't contain malicious software?</p>

<p>Hopefully, the car should reject any unauthorised tampering - but we all know that security measures can be bypassed by sufficiently motivated adversaries.</p>

<h2 id="decoding-the-firmware"><a href="https://shkspr.mobi/blog/2016/02/bmw-are-sending-their-software-updates-unencrypted/#decoding-the-firmware">Decoding The Firmware</a></h2>

<p>Alas, dear reader, here is where I must confess my ignorance.  Decompiling firmware is <em>way</em> outside my area of expertise.  If anyone with greater skills can investigate further, I'd be grateful.</p>

<p>Firstly, a quick run of <code>binwalk</code> gives us:</p>

<pre>POSIX tar archive (GNU), owner user name: "01E40_110_005_010.xml"</pre>

<p>Renaming the .bin to .tar allows us to extract the 7 firmware files and an XML file.</p>

<p>Within the XML, we find:
<code>&lt;SWIP digalg="sha256" signalg="sha256withRSA" version="0.3.6" ...</code>
Which would indicate that the software is self-signed and <em>probably</em> secure against forgery.</p>

<p>Each of the firmware files contains a file called "bungstabelle.sgbm" which appears to be another cryptographic signature.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/11/BMW-Firmware-fs8.png" alt="BMW Firmware-fs8" width="439" height="874" class="aligncenter size-full wp-image-22002"></p>

<p>Judging from the files, it would appear that the infotainment system is made by <a href="http://www.magnetimarelli.com">Magneti Marelli</a> with components by <a href="http://windriver.com/">Wind River</a>, <a href="http://www.autosar.org/">AutoSAR</a>, and Nvidia Tegra.  Looking at the copious mentions of <code>systemd</code> and <code>freedesktop</code> it's a Linux system!</p>

<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-21999-2" width="620" height="349" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2015/11/Its-a-Unix-system-short-SpLRTAGa6bU.mp4?_=2"><source type="video/webm" src="https://shkspr.mobi/blog/wp-content/uploads/2015/11/Its-a-Unix-system-short-SpLRTAGa6bU.webm?_=2"><a href="https://shkspr.mobi/blog/wp-content/uploads/2015/11/Its-a-Unix-system-short-SpLRTAGa6bU.mp4">https://shkspr.mobi/blog/wp-content/uploads/2015/11/Its-a-Unix-system-short-SpLRTAGa6bU.mp4</a></video></div><p></p>

<p>Hmmm... I wonder if they're respecting the GPL...?</p>

<p>The firmware isn't encrypted - so anyone can read the code and comments - but it does appear to be signed which makes it unlikely that a user could accidentally install corrupted software.</p>

<p>The <a href="https://www.iamthecavalry.org/domains/automotive/5star/">Five Star Automotive Cyber Safety Program</a> suggests to manufacturers that:</p>

<blockquote><p>While updating is a necessary capability, an insecure update design could facilitate adversaries or trigger accidents. Authenticity and quality verification preserves the integrity of the updates and leads to a safer mechanism that can prevent digital tampering or unexpected failures.</p></blockquote>

<p>From my limited understanding of the way the firmware is designed, it should be robust enough to prevent malicious users from infecting it with anything nasty.</p>

<p>However, given <a href="http://www.pcworld.com/article/2878437/bmw-cars-found-vulnerable-in-connected-drive-hack.html">BMW's troubled history with HTTPS</a>, I think it would be sensible for them to ensure <strong>all</strong> their software was delivered securely.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=21999&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/02/bmw-are-sending-their-software-updates-unencrypted/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2015/11/Its-a-Unix-system-short-SpLRTAGa6bU.webm" length="25911" type="video/webm" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2015/11/Its-a-Unix-system-short-SpLRTAGa6bU.mp4" length="464651" type="video/mp4" />

			</item>
		<item>
		<title><![CDATA[Responsible Disclosure - XSS Flaw at LetsSaveMoney.com]]></title>
		<link>https://shkspr.mobi/blog/2015/11/responsible-disclosure-xss-flaw-at-letssavemoney-com/</link>
					<comments>https://shkspr.mobi/blog/2015/11/responsible-disclosure-xss-flaw-at-letssavemoney-com/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 29 Nov 2015 12:25:44 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[xss]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=21740</guid>

					<description><![CDATA[Another day, another bug!  LetsSaveMoney.com is a &#34;money saving&#34; site. It offers discounts on a wide range of products and services, and is financed through affiliate marketing. Links removed, because the site has disappeared.  My Trade Union, Prospect, has just launched a white-labelled &#34;Members&#039; Rewards&#34; based on LetsSaveMoney - that&#039;s how I came across this bug.  It&#039;s a depressingly familiar…]]></description>
										<content:encoded><![CDATA[<p>Another day, another bug!</p>

<p><a href="https://web.archive.org/web/20151104072810/https://letssavemoney.com">LetsSaveMoney.com</a> is a "money saving" site. It offers discounts on a wide range of products and services, and is financed through affiliate marketing.
<ins datetime="2018-12-05T10:18:59+00:00">Links removed, because the site has disappeared.</ins></p>

<p>My Trade Union, <a href="http://www.prospect.org.uk/">Prospect</a>, has just launched a white-labelled "Members' Rewards" based on LetsSaveMoney - that's how I came across this bug.</p>

<p>It's a depressingly familiar story - do a search which includes some HTML and watch it being echoed back to the user.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/10/Lets-Save-Money-XSS-fs8.png" alt="Lets Save Money XSS" width="870" height="605" class="aligncenter size-full wp-image-21741">

<p>Once you can get a page to load an external resource, it's game over for security.  An attacker can load up JavaScript, prompt the user for their password, display unauthorised images, etc.</p>

<p>I <a href="https://www.openbugbounty.org/reports/97000/">posted a report on XSSposed </a> and alerted LetsSaveMoney via their "Contact Us" form.</p>

<p>Impressively, I received an email back a few minutes later.  I provided the details over email and the site was fixed an hour later!</p>

<p>That's an excellent response time.</p>

<p>If you run a website, familiarise yourself with <a href="https://wiki.owasp.org/images/f/f8/OWASP_Top_10_-_2013.pdf">OWASP's Top 10 Web Vulnerabilities</a>.  If you're a worker in a high-tech industry, you should consider <a href="https://www.prospect.org.uk/join">joining Prospect as your Trade Union</a>.</p>

<h2 id="bounty"><a href="https://shkspr.mobi/blog/2015/11/responsible-disclosure-xss-flaw-at-letssavemoney-com/#bounty">Bounty</a></h2>

<p>While I neither asked for, nor expected, a reward - I was delighted to receive an Xmas gift hamper as a token of their appreciation.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/11/Bug-Bounty-Hamper.jpeg" alt="Bug Bounty Hamper" width="600" height="800" class="aligncenter size-full wp-image-21812">
Hurrah!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=21740&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2015/11/responsible-disclosure-xss-flaw-at-letssavemoney-com/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[PGP Encrypt Twitter DMs with Keybase]]></title>
		<link>https://shkspr.mobi/blog/2015/09/pgp-encrypt-twitter-dms-with-keybase/</link>
					<comments>https://shkspr.mobi/blog/2015/09/pgp-encrypt-twitter-dms-with-keybase/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 04 Sep 2015 10:51:25 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[pgp]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[twitter]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=21363</guid>

					<description><![CDATA[This is a quick tutorial on how to encrypt your Twitter messages using PGP with the help of Keybase.io.  I read an article yesterday which seemed to imply that Twitter was mangling PGP encrypted messages (albeit unintentionally).  There is a minor bug in Twitter&#039;s web interface - but PGP seems to work perfectly in apps. So, I want to demonstrate how it can be done successfully.  I&#039;ve written this …]]></description>
										<content:encoded><![CDATA[<p>This is a quick tutorial on how to encrypt your Twitter messages using PGP with the help of <a href="https://Keybase.io">Keybase.io</a>.</p>

<p>I <a href="https://www.vice.com/en/article/how-to-encrypt-your-twitter-dms/">read an article yesterday which seemed to imply that Twitter was mangling PGP encrypted messages</a> (albeit <a href="https://web.archive.org/web/20200924204727/https://twitter.com/runasand/status/632225743880237056">unintentionally</a>).</p>

<p>There is a minor bug in Twitter's <strong>web</strong> interface - but PGP seems to work perfectly in apps. So, I want to demonstrate how it can be done successfully.</p>

<p>I've written this article with a non-technical audience in mind - feel free to point out any areas where I can make my explanations more simple.</p>

<h2 id="get-my-public-key"><a href="https://shkspr.mobi/blog/2015/09/pgp-encrypt-twitter-dms-with-keybase/#get-my-public-key">Get My Public Key</a></h2>

<p>Suppose you want to send me a message - but you are worried about the contents being seen by someone else.  If you encrypt the message to me, only I will be able to read it.  In order to encrypt, you need to know my <em>Public Key</em>.  This is a digital lock which only I can open.</p>

<p>The website <a href="https://Keybase.io">Keybase.io</a> contains a list of people's public keys.  You can visit <a href="https://Keybase.io/edent">Keybase.io/edent</a> to see mine.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/09/edent-keybase-fs8.png" alt="edent keybase-fs8" width="874" height="770" class="aligncenter size-full wp-image-21365">

<h2 id="encrypt-the-message"><a href="https://shkspr.mobi/blog/2015/09/pgp-encrypt-twitter-dms-with-keybase/#encrypt-the-message">Encrypt The Message</a></h2>

<p>Keybase gives you the option of encrypting a message to me.  Just type what you want to send and hit the "Encrypt" button.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/09/edent-encrypt-keybase-fs8.png" alt="edent encrypt keybase-fs8" width="874" height="707" class="aligncenter size-full wp-image-21367"></p>

<p>Hey presto!  A big blob of text which can only be decrypted by me.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/09/edent-keybase-encrypted-text-fs8.png" alt="edent keybase encrypted text-fs8" width="874" height="770" class="aligncenter size-full wp-image-21366">

<h2 id="send-the-message"><a href="https://shkspr.mobi/blog/2015/09/pgp-encrypt-twitter-dms-with-keybase/#send-the-message">Send The Message</a></h2>

<p>It's as simple as copying the entire block of encrypted text and pasting it into a Twitter Direct Message.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/09/edent-Twitter-pgp-fs8.png" alt="edent Twitter pgp-fs8" width="874" height="770" class="aligncenter size-full wp-image-21364"></p>

<p>Ok! Stop! There is a <em>minor</em> problem here.  In order for PGP encrypted messages to work, it is important that they are not altered in <strong>any</strong> way.  A rogue space, or missed character, will render the message completed undecipherable.</p>

<p>Some Twitter clients will "helpfully" remove line breaks.  A proper PGP message should look like this:</p>

<pre>-----BEGIN PGP MESSAGE-----
Version: Keybase OpenPGP v2.0.43
Comment: https://keybase.io/crypto

wcFMAz8xGBvPCGIHAQ//aaPuyglRhwo0hzeVuyDC8pgIGyS7f5oyp99wMRsIh8G0
i6kuo9+dPVNJ+gGLC2B5eMuoYE0Bjv/2YfBkxaJ6HTacniUEgD9x7OxNnQY2PCyi
</pre>

<p>Not like this:</p>

<pre>-----BEGIN PGP MESSAGE----- Version: Keybase OpenPGP v2.0.43 Comment: https://keybase.io/crypto  wcFMAz8xGBvPCGIHAQ//aaPuyglRhwo0hzeVuyDC8pgIGyS7f5oyp99wMRsIh8G0 i6kuo9+dPVNJ+gGLC2B5eMuoYE0Bjv/2YfBkxaJ6HTacniUEgD9x7OxNnQY2PCyi</pre>

<p>The Twitter website preserve newlines when you send a message - make sure that your app also does so.</p>

<h2 id="a-word-about-message-length"><a href="https://shkspr.mobi/blog/2015/09/pgp-encrypt-twitter-dms-with-keybase/#a-word-about-message-length">A Word About Message Length</a></h2>

<p>Twitter touts DMs as being "unlimited" - in reality, there's a limit of 10,000 characters.  PGP is a relatively efficient way of encrypting text so, depending on your message, you can fit around 9,000 plain text characters into a 10,000 character encrypted message.</p>

<p>In addition, <a href="https://support.twitter.com/articles/15364#">you may only send up to 1,000 Direct Messages per day</a>.</p>

<p>So, no DMing Harry Potter length novels!</p>

<h2 id="decrypting"><a href="https://shkspr.mobi/blog/2015/09/pgp-encrypt-twitter-dms-with-keybase/#decrypting">Decrypting</a></h2>

<p>Ok, this is where it gets a bit more technical.</p>

<p>It should be fairly easy to decrypt a message that you have been sent - but it will depend on your Twitter client.</p>

<p>When copying from a browser, it is possible that newlines will not be preserved - this may cause your decryption app to think that the message is corrupted.</p>

<p>This <em>is</em> a bug with Twitter's web and mobile-web sites.  I've reported it to them.  I think they should be encoding \n as <code>&lt;br/&gt;</code> to facilitate copying and pasting.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/09/Twitter-PGP-no-linebreaks-fs8.png" alt="Twitter PGP no linebreaks-fs8" width="665" height="537" class="aligncenter size-full wp-image-21371"></p>

<p>I've found that copying from apps (on Android) preserves all the line breaks and keeps the formatting intact.</p>

<p><img src="https://shkspr.mobi/blog/wp-content/uploads/2015/09/OpenKeyChain-fs8.png" alt="OpenKeyChain-fs8" width="480" height="773" class="alignleft size-full wp-image-21374">On Android, I use <a href="https://www.openkeychain.org/">OpenKeyChain</a>.  I copy the message from my Twitter client and OpenKeyChain can decrypt directly from my phone's clipboard.</p>

<p>You can also use Keybase to host your private key and decrypt messages in the browser. <a href="https://github.com/keybase/keybase-issues/issues/160">This is at your own risk</a>.</p>

<p>That's really all there is to it.  I've successfully exchanged encrypted messages with several people.  The only problems have occurred when trying to copy the message from the Twitter web interface - when using apps everything has been fine.</p>

<p>Obviously, this isn't a fully automated solution (yet!) it would be great if Keybase allowed users to send encrypted DMs directly from its site - or if apps could start offering this natively.</p>

<p><a href="https://web.archive.org/web/20200915130113/https://gist.github.com/colinmahns/e3c38c5eae6c4bf6441d">Colin Mahns has written an excellent tutorial</a> for how to integrate OTR (a different encryption protocol) into messaging apps which can work with Twitter.</p>

<p>But, for now, if you want to encrypt a message to me, you can successfully do so using nothing other than a web-browser and a Twitter account.</p>

<p>Have fun!</p>

<hr style="clear:both;">

<p><ins datetime="2015-11-25T12:08:29+00:00">Update!</ins>
It's possible to send encrypted DMs directly from a website or the command line.</p>

<p>Using <a href="https://dev.twitter.com/web/intents">Twitter Web Intents</a> it's possible to send a Direct Message.  If your message starts <code>D edent</code> it will be converted into a DM to me.</p>

<p>So, if we URL Encode the message we want to send:</p>

<pre>https://twitter.com/intent/tweet?text=D%20edent%20testing</pre>

<p>We can pre-populate the compose window with the DM.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/09/Long-DM-PGP-fs8.png" alt="Long DM PGP-fs8" width="840" height="362" class="aligncenter size-full wp-image-22039">

<p>It <em>looks</em> like the message is too long - but the "Tweet" button works and it will be sent to the user:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/09/Long-DM-PGP-Inbox-fs8.png" alt="Long DM PGP Inbox-fs8" width="789" height="231" class="aligncenter size-full wp-image-22038">

<p>Hopefully Twitter will one day make it slightly easier - but for now, at least it works!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=21363&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2015/09/pgp-encrypt-twitter-dms-with-keybase/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Web Based OAuth Is A Security Nightmare For Apps]]></title>
		<link>https://shkspr.mobi/blog/2015/05/web-based-oauth-is-a-security-nightmare-for-apps/</link>
					<comments>https://shkspr.mobi/blog/2015/05/web-based-oauth-is-a-security-nightmare-for-apps/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 27 May 2015 10:52:16 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=21073</guid>

					<description><![CDATA[Twitter have just released Periscope for Android.  I&#039;ll do a full review of it later (tl;dr it&#039;s Qik with worse resolution) - but for now, I want to focus on the sign up process.  You can only sign in with Twitter.  That&#039;s fine, it&#039;s a Twitter product.  So I pressed the sign-in button and this is the screen I saw.    Is that the Twitter mobile website embedded into the app or is it a phishing…]]></description>
										<content:encoded><![CDATA[<p>Twitter have just released <a href="https://www.pcmag.com/reviews/twitter-periscope-for-android">Periscope for Android</a>.  I'll do a full review of it later (tl;dr it's Qik with worse resolution) - but for now, I want to focus on the sign up process.</p>

<p>You can only sign in with Twitter.  That's fine, it's a Twitter product.  So I pressed the sign-in button and this is the screen I saw.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/05/Periscope-Twitter-Sign-In-fs8.png" alt="Periscope Twitter Sign In-fs8" width="400" height="783" class="aligncenter size-full wp-image-21074">

<p>Is that the Twitter mobile website embedded into the app or is it a phishing page? <strong>I've no way of knowing!</strong></p>

<p>I can't see the URL bar - for all I know, this could be an elaborate forgery.  I have to completely trust that this product is <em>actually</em> provided by Twitter.  In Periscope's case, it probably is.  But this is teaching users a dangerous anti-pattern that the web community has tried <em>so</em> hard to eradicate.  And, no, 2FA doesn't really help us here.</p>

<p>Let's take a step back and look at what the problem is.</p>

<p>In the bad old days, if you downloaded a 3rd party app (for Twitter, Facebook, email, etc) the app would ask you for your username and password.  This is <strong>dangerous</strong>.  You have no idea what the app is doing with your password.  Is it saving it? Selling it to criminals? Silently changing all your settings?  Who knows!</p>

<p>So, we introduce a more secure way of doing things, at the cost of a little more complexity.</p>

<h2 id="oauth"><a href="https://shkspr.mobi/blog/2015/05/web-based-oauth-is-a-security-nightmare-for-apps/#oauth">OAuth</a></h2>

<p>Here's how OAuth works (from a user's point of view - there's a lot more stuff going on in the background!)</p>

<ol>
    <li>Click "Log in with Twitter" (or whichever service)</li>
    <li>Get taken to Twitter's website.</li>
    <li>Login (if you're not already).</li>
    <li>Get redirected back to the app
<ol>
    <li>Ideally the redirect automatically logs you in.</li>
    <li>In some circumstances Twitter gives you a PIN and says "Type this in to the app"</li>
</ol></li>
</ol>

<p>With OAuth you <strong>never</strong> need to give up your password to a random app.</p>

<p>It can be slightly cumbersome - especially if you have to remember a 4 digit PIN to complete the login.  But I'm strongly in favour of educating users not to give out their passwords willy-nilly.</p>

<p>In Periscope's case, the user has to trust that the app hasn't just ripped-off the Twitter website.  There's absolutely no way to verify that it is a genuine and secure login page.</p>

<p>Even if you have 2-Factor Authentication (where Twitter texts you a login code) you're not safe.  Why? Because if the app is intercepting your username and password, it can <em>also</em> intercept your 2FA code.  Sure, it can only use it for a minute or so (<a href="https://shkspr.mobi/blog/2013/09/facebook-2fa-security-flaw-disclosed/">with some restrictions</a>) - but that's enough time to completely take over your account.</p>

<p>As software developers, we <strong>have</strong> to stop encouraging this <a href="http://c2.com/cgi/wiki?AntiPattern">anti-pattern</a>.  Periscope is teaching users that it's OK to type their password into any box which <em>looks</em> like it's authentic.</p>

<h2 id="some-solutions"><a href="https://shkspr.mobi/blog/2015/05/web-based-oauth-is-a-security-nightmare-for-apps/#some-solutions">Some Solutions</a></h2>

<p>Any solution has to make a user leave the untrusted app and use a trusted service.  Sorry, that's just how it is.  You can't delegate your trust to an unknown entity.</p>

<p>Here are a few possible solutions - with varying degrees of complexity for the user and programmer.</p>

<ul>
    <li>Standard web-based OAuth.  Take the user to the web where they can check the URL, validate the certificate, see if they're already logged in, etc.</li>
    <li>SMS based OAuth. Type in your username (only!) to the app, receive an SMS with a one-time PIN/Password.  It's the equivalent of "Click here to verify your email address."</li>
    <li>Message based OAuth.  Type in your username (only!) to the app. Receive a Twitter DM with a one-time PIN/Password.  Retrieve the message using your trusted Twitter app or website.</li>
    <li>Use <a href="https://web.archive.org/web/20150527165523/https://get.fabric.io/digits">Twitter Digits</a> - only works if the phone number associated with the account is the phone being used.</li>
</ul>

<p>Look, all of these have a minor impact on how easy it is for a user to sign in.  Guess what - so does asking for a password.  If we wanted to make sign in nice and easy, we'd just say "Enter your username" and trust that no-one will abuse the system.</p>

<p>We must secure our users and help them to stay secure in the future.  Periscope's login model is a retrograde step for user security.</p>

<h2 id="update"><a href="https://shkspr.mobi/blog/2015/05/web-based-oauth-is-a-security-nightmare-for-apps/#update">Update!</a></h2>

<p>Here's a video showing the same problem in imgur's new Android app.</p>

<iframe title="Web Based OAuth and imgur for Android" width="620" height="349" src="https://www.youtube.com/embed/VTCFdi4zxgI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=21073&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2015/05/web-based-oauth-is-a-security-nightmare-for-apps/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Don't Use Bit.ly To Advertise Your PGP Key]]></title>
		<link>https://shkspr.mobi/blog/2015/03/dont-use-bit-ly-to-advertise-your-pgp-key/</link>
					<comments>https://shkspr.mobi/blog/2015/03/dont-use-bit-ly-to-advertise-your-pgp-key/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 25 Mar 2015 11:45:14 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[guardian]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[pgp]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=20761</guid>

					<description><![CDATA[I had dinner with the outgoing editor of The Guardian the other night. Clever chap, sure he&#039;ll go far in life.  The Guardian is very hot on security.  Many of their writers have PGP keys which they publicly advertise.  In theory, that&#039;s great (complaints about PGP notwithstanding) - but the reality shows just how tricky it is to act in a security conscious manner.  Have a look at Alan&#039;s Twitter…]]></description>
										<content:encoded><![CDATA[<p>I had dinner with the outgoing editor of The Guardian the other night. Clever chap, sure he'll go far in life.</p>

<p>The Guardian is very hot on security.  Many of their writers have PGP keys which they publicly advertise.  In theory, that's great (<a href="https://moxie.org/2015/02/24/gpg-and-me.html">complaints about PGP notwithstanding</a>) - but the reality shows just how tricky it is to act in a security conscious manner.</p>

<p>Have a look at Alan's Twitter profile.</p>

<p><a href="https://twitter.com/arusbridger"><img src="https://shkspr.mobi/blog/wp-content/uploads/2015/03/arusbridger-Twitter-Profile-fs8.png" alt="arusbridger Twitter Profile-fs8" width="360" height="585" class="aligncenter size-full wp-image-20762"></a></p>

<p>In the bio, we see a link -  <a href="http://bit.ly/1g4S9WR">http://bit.ly/1g4S9WR</a> which points to <a href="http://static.guim.co.uk/ni/1393869928289/Public-Key.asc">http://static.guim.co.uk/ni/1393869928289/Public-Key.asc</a>.</p>

<p>Let's take a look at a few reasons why this is sub-optimal.</p>

<h2 id="control"><a href="https://shkspr.mobi/blog/2015/03/dont-use-bit-ly-to-advertise-your-pgp-key/#control">Control</a></h2>

<p>Who controls bit.ly?  Not Alan.  Not the Guardian.  How easy would it be for a rogue employee to subtly redirect that URL elsewhere?</p>

<p>Gone are the days of <a href="http://www.pcmag.com/article2/0,2817,2370354,00.asp">Libya exercising its control on the .ly space</a> (you <em>did</em> know that's what .ly stood for, right?)  But that doesn't mean you should trust a third party with directing people to sensitive information!</p>

<p>Bit.ly isn't accessible over HTTPS.  A sufficiently determined attacker can see who is accessing the page - and possibly redirect the URL to a different site.</p>

<h2 id="information-leakage"><a href="https://shkspr.mobi/blog/2015/03/dont-use-bit-ly-to-advertise-your-pgp-key/#information-leakage">Information Leakage</a></h2>

<p>Most bit.ly links allow you to append a "+" to the URL to see a page of statistics.  I've <a href="https://shkspr.mobi/blog/2011/12/bit-ly-considered-unsafe-for-qr-codes/" title="Bit.ly Considered Unsafe (for QR Codes)">written</a> about this <a href="https://shkspr.mobi/blog/2013/04/inferring-facebooks-mobile-use-via-bit-ly/">several</a> <a href="https://shkspr.mobi/blog/2011/01/metros-use-of-qr-codes/">times</a>.</p>

<p>Off we go to <a href="http://bit.ly/1g4S9WR+">http://bit.ly/1g4S9WR+</a>
<a href="http://bit.ly/1g4S9WR+"><img src="https://shkspr.mobi/blog/wp-content/uploads/2015/03/arusbridger-bitly-stats-fs8.png" alt="arusbridger bitly stats-fs8" width="1024" height="1402" class="aligncenter size-full wp-image-20763"></a></p>

<p>We can see when a cluster of people have visited the URL and what country they're in.  Is this leaking the identity of a journalistic source? Not directly - but it could help narrow down the target.</p>

<h2 id="homographic-disambiguation"><a href="https://shkspr.mobi/blog/2015/03/dont-use-bit-ly-to-advertise-your-pgp-key/#homographic-disambiguation">Homographic Disambiguation</a></h2>

<p>Bit.ly allows you to create your own custom URLs.  <a href="https://shkspr.mobi/blog/2011/04/dear-nokia/" title="Dear Nokia...">Useful for pulling pranks</a> - and <em>extremely</em> useful for redirecting people.</p>

<p>So, if someone hacked the Twitter account and replaced <a href="http://bit.ly/1g4S9WR">http://bit.ly/1g4S9WR</a> with <a href="http://bit.ly/Ig4S9WR">http://bit.ly/Ig4S9WR</a> - how long would it be before someone noticed?  The latter example uses an upper-case i rather than the numeral 1 - and points to <em>my</em> PGP key.</p>

<h2 id="final-destination"><a href="https://shkspr.mobi/blog/2015/03/dont-use-bit-ly-to-advertise-your-pgp-key/#final-destination">Final Destination</a></h2>

<p>But, let's assume that no-one has monkeyed with the shortlink.  We end up at <code><a href="http://static.guim.co.uk/ni/1393869928289/Public-Key.asc">http://static.guim.co.uk/ni/1393869928289/Public-Key.asc</a></code>.</p>

<p>What is "guim.co.uk"?  I <em>guess</em> it's a server used by the GUardian to serve IMages - but it doesn't quite carry the same trust as seeing the public key on TheGuardian.com</p>

<p>guim also suffers from security issues.  It's not served over HTTPS - which means that it's possible to see who is accessing the page and, crucially, a man-in-the-middle could alter its contents.</p>

<h2 id="putting-it-all-together"><a href="https://shkspr.mobi/blog/2015/03/dont-use-bit-ly-to-advertise-your-pgp-key/#putting-it-all-together">Putting it all together</a></h2>

<p>By exploiting one or all of these weaknesses, a malicious attacker could create quite a convincing forgery.</p>

<p>If a random Bit.ly link took you to GUlM.CO.UK (a lower case L) and served you a PGP key for alan@guardian-email.co.uk (not the real address) - would you be convinced that it was a legitimate key for the correct user?</p>

<h2 id="fixing-it"><a href="https://shkspr.mobi/blog/2015/03/dont-use-bit-ly-to-advertise-your-pgp-key/#fixing-it">Fixing It</a></h2>

<p>This is a pretty simple fix.</p>

<ul>
    <li>Use a direct link...</li>
    <li>...to a trustworth site...</li>
    <li>...served over HTTPS...</li>
    <li>...</li>
    <li>That's it!</li>
</ul>

<p>Security is, sadly, too hard for most people.  I wrote about <a href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/" title="The Usability of Anti-Apartheid Encryption">how freedom fighters in South Africa were unable to maintain security due to human weaknesses</a> - nothing much has changed in the intervening years.</p>

<p>I've shared these tips directly with The Guardian's security people, and they are in the process of changing to a more robust system.</p>

<p>I've been reading "<a href="http://www.amazon.co.uk/s/?_encoding=UTF8&amp;camp=1634&amp;creative=19450&amp;field-keywords=think%20like%20a%20freak&amp;linkCode=ur2&amp;sprefix=think%20like%20a%20fr%2Caps%2C252&amp;tag=shkspr-21&amp;url=search-alias%3Daps&amp;linkId=SIEJV6JFQJA7JDBU">Think Like A Freak</a>" by the authors of Freakonomics.  In it, the authors ask us to start thinking more like maverick economists.  It's a fine way to increase your cognative ability and get a fresh perspective on the world.</p>

<p>I'd like to ask you to <strong>think like a hacker</strong>.  Find every weakness in the chain and work to eliminate it.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=20761&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2015/03/dont-use-bit-ly-to-advertise-your-pgp-key/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[The Usability of Anti-Apartheid Encryption]]></title>
		<link>https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/</link>
					<comments>https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 03 Mar 2015 11:47:28 +0000</pubDate>
				<category><![CDATA[politics]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[encryption]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=20688</guid>

					<description><![CDATA[(An adaptation of my earlier blog post on the same topic.)  This is a case study focusing on the usability of  encryption systems as used by political dissidents in Apartheid era South Africa.  Background - South Africa  Between 1948 and 1994, the nation of South Africa was ruled by an ethnically white minority. They set in place a system of government – known as Apartheid - which suppressed, b…]]></description>
										<content:encoded><![CDATA[<p>(An adaptation of <a href="https://shkspr.mobi/blog/2014/01/the-hardest-problem-in-encryption-usability/">my earlier blog post on the same topic</a><a class="sdendnoteanc" name="sdendnote1anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote1sym"><sup>1</sup></a>.)</p>

<p>This is a case study focusing on the usability of  encryption systems as used by political dissidents in Apartheid era South Africa.</p>

<h2 id="background-south-africa"><a href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#background-south-africa">Background - South Africa</a></h2>

<p>Between 1948 and 1994, the nation of South Africa was ruled by an ethnically white minority. They set in place a system of government – known as Apartheid - which suppressed, brutalised and discriminated against other races.</p>

<p>The African National Congress (ANC) was <a href="http://www.anc.org.za/show.php?id=206">formed in the early 20th Century</a><a class="sdendnoteanc" name="sdendnote2anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote2sym"><sup>2</sup></a> with the explicit aim of bringing "all Africans together as one people to defend their rights and freedoms."
In 1960, it was outlawed by the ruling National Party<a class="sdendnoteanc" name="sdendnote3anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote3sym"><sup>3</sup></a> and was subsequently branded a terrorist organisation by many nations<a class="sdendnoteanc" name="sdendnote4anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote4sym"><sup>4</sup></a>.</p>

<p>Activists working for and on behalf of the ANC were placed under intense scrutiny by the National Party and its allies. In order to safeguard their communications, the ANC needed to develop, deploy and successfully use digital encryption.</p>

<p>The primary source of this information comes from the ANC's monthly journal "Mayibuye". In 1995 they published a series of articles on their encryption efforts, collated in a single article: "<a href="http://www.anc.org.za/show.php?id=4693">Talking To Vula</a>"<a class="sdendnoteanc" name="sdendnote5anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote5sym"><sup>5</sup></a></p>

<h2 id="lines-of-communication"><a href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#lines-of-communication">Lines of Communication</a></h2>

<p>With the ANC's leadership under extreme surveillance by a technologically superior aggressor, communications between the leadership and members were subject to interception and disruption.</p>

<blockquote><p>Poor communications had determined the shape of our struggle. It was because our fighters and cadres could not communicate with their leaders and between themselves that the underground never developed and People's War never became a reality.
"Talking To Vula"</p></blockquote>

<p>The ANC's typical method of encrypting communications in the late 1970s was by the manual use of One Time Pads (OTPs).</p>

<p>While OTPs represent a theoretically uncrackable encryption, they have two fundamental flaws :</p>

<ul>
<li> It is difficult to distribute an OTP; it wasn't until the late 1970s that key-exchange over a public channel was solved using the <a href="http://www-ee.stanford.edu/~hellman/publications/24.pdf">Diffie-Hellman Key Exchange</a><a class="sdendnoteanc" name="sdendnote6anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote6sym"><sup>6</sup></a>.</li>
<li> OTPs often suffer from unrecoverable errors introduced by flaws common in manual transcriptions<a class="sdendnoteanc" name="sdendnote7anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote7sym"><sup>7</sup></a>.</li>
</ul>

<p>Activists had to manually encipher messages - a tedious and error prone process - and then manually transcribe and decipher the messages they received.</p>

<p>The lack of digital communications required that messages be physically distributed. This increased the latency of communication to the speed of international postal services.</p>

<blockquote><p>It was always the same pattern: comrades would go back home feeling enthusiastic and begin by sending a series of messages. They soon came to realise that it was a futile activity as it took so much effort to say so very little and the responses, as few and far between as they were, contained little encouragement and advice.
</p><p>"Talking To Vula"</p></blockquote>

<p>These activists were fighting to free their country from the yoke of a repressive and racist government. Yet they found the long-winded process of protecting their communications <strong>just too hard</strong>.</p>

<p>Security <em>is</em> usability.</p>

<h2 id="operation-vula"><a href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#operation-vula">Operation Vula</a></h2>

<p>The growth of the Personal Computer industry in the 1980s made digital computing increasingly affordable. The ANC's technical committee began to research digital encryption and communication over the telephone network using modems. This was known as "Operation Vula"<a class="sdendnoteanc" name="sdendnote8anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote8sym"><sup>8</sup></a>.</p>

<p>Modern cryptographic science frowns on the sort of self-created encryption algorithms used by Operation Vula; such algorithms often contain subtle weaknesses of which their creators are unaware<a class="sdendnoteanc" name="sdendnote9anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote9sym"><sup>9</sup></a> <a class="sdendnoteanc" name="sdendnote10anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote10sym"><sup>10</sup></a>.  However, developing bespoke encryption systems was a common occurrence in the 1980s – mostly due to the United States Government forbidding the export of encryption software<a class="sdendnoteanc" name="sdendnote11anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote11sym"><sup>11</sup></a>. This meant that strong, audited encryption was not widely available to the public.</p>

<p>The introduction of computer-based encrypting revolutionised the revolutionaries so that with little effort it was suddenly possible to communicate over vast distances with (apparently) total security. Messages could be long and complex, and the latency of response times were reduced.</p>

<p>This home-made encryption flourished for several years before <a href="https://www.nelsonmandela.org/omalley/index.php/site/q/03lv03445/04lv03996/05lv04002/06lv04003.htm">it came crashing down</a><a class="sdendnoteanc" name="sdendnote12anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote12sym"><sup>12</sup></a>.</p>

<p>It failed not because of <em>technolog</em><em>ical</em> weakness - but because of <em>human</em> weakness.</p>

<h2 id="usability"><a href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#usability">Usability</a></h2>

<p>Maintaining secrecy is <strong>hard</strong>. Attaching computers to modems and loading secret codes is still a lot easier than the mind-numbing process of hand powered encryption; but it is an extra burden.</p>

<p>Individuals were careless. They knew that organising against the government could result in torture or death. Despite that, it was hard to act with 100% vigilance.</p>

<blockquote><p>The details of Vula that the regime released to the press revealed that indeed a number of important documents had fallen into their hands. It became clearer by the day that the comrades in Durban had violated all the rules of security that we had so assiduously tried to impress upon them. Data files of confidential information were kept "in clear" on disk and keywords and key books must have been easily obtainable. The minutes of an entire underground conference were quoted by police as evidence of the plot to overthrow the government.
</p><p>"Talking To Vula"</p></blockquote>

<p>These communications were not between "hacktivists" doing it for "teh lulz", lovers exchanging sexts or business people protecting their Intellectual Property. It was between freedom fighters working against a sadistic and murderous government. Failing to maintain security would not just end with their families being tortured - it could mean the disruption of an entire political movement.</p>

<p>And yet that threat still <em>was not enough</em> to keep people acting in a security-conscious manner.
"Talking to Vula" concludes with the lessons the ANC learned from running their encryption programme:</p>

<blockquote><p>Without first-class communications you cannot carry out a successful underground operation.
"Talking To Vula"</p></blockquote>

<p>"First class" does not just refer to the technology powering the system, but also the <strong>usability of the security</strong>.</p>

<h2 id="barriers"><a href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#barriers">Barriers</a></h2>

<p>We know that commonly used encryption programs often have fundamental flaws (such as the recent POODLE<a class="sdendnoteanc" name="sdendnote13anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote13sym"><sup>13</sup></a> and HeartBleed<a class="sdendnoteanc" name="sdendnote14anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote14sym"><sup>14</sup></a> vulnerabilities),  that state-based agencies have deliberately weakened encryption standards<a class="sdendnoteanc" name="sdendnote15anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote15sym"><sup>15</sup></a> and that there are theoretical attacks on cryptography using quantum computing<em><a class="sdendnoteanc" name="sdendnote16anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote16sym"><sup>16</sup></a></em>.</p>

<p>Let us assume for now that via some combination of Vernam ciphers<a class="sdendnoteanc" name="sdendnote17anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote17sym"><sup>17</sup></a> and Perfect Forward Secrecy<a class="sdendnoteanc" name="sdendnote18anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote18sym"><sup>18</sup></a> it is possible to create an encryption scheme which, if used correctly, can withstand sustained attack from determined adversaries.
 The correct use of encryption relies on, at a minimum, the following behaviours :</p>

<ul> <li> Users understanding why encryption is necessary. </li>
 <li> A provably secure way for users to generate encryption keys. </li>
 <li> Securely storing the encryption keys. </li>
 <li> Exchanging keys. </li>
 <li> Validating that the keys are trusted by the recipient. </li>
 <li> Correct enciphering of messages. </li>
 <li> Correct deciphering of messages.</li>
 <li> Validating the provenance of messages. </li>
 <li> Securely storing or destroying messages. </li>
 <li> Updating behaviours and technologies in the light of emergent threats. </li>
 </ul>

<p>If <em>any</em> of these behaviours are weak, the <em>entire</em> encryption scheme becomes vulnerable.</p>

<h2 id="the-challenge"><a href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#the-challenge">The Challenge</a></h2>

<p>Is it possible to create a system that simultaneously satisfies the conditions of desirability (the understanding of its necessity) and usability (the inability to use incorrectly)?</p>

<p>Modern systems like GPG and Keybase.io have improved on the usability of older encryption systems – but they still require the user to act in an almost perfect manner.</p>

<p>A recent high profile case illustrates that, despite the improvement of these systems, intelligent and committed users still make basic mistakes :</p>

<blockquote>
    <p><a href="http://www.telegraph.co.uk/news/uknews/crime/10276460/David-Miranda-was-carrying-password-for-secret-files-on-piece-of-paper.html">David Miranda was carrying password for secret files on piece of paper</a>
    </p><p>A journalist’s partner who was detained carrying thousands of British intelligence documents through Heathrow airport was also holding the password to an encrypted file written on a piece of paper, the government has disclosed.

</p><p>Daily Telegraph. 2013-08-30</p></blockquote>

<p>This careless attitude was present 23 years earlier, during Vula :</p>

<blockquote><p>[Ghebuza's] assistant was in the habit of moving around with Ghebuza's program and "key" disks as well as his data files. This was against all the rules though we had always suspected that some of the comrades were less than meticulous about observing them.

</p><p>"Talking To Vula"</p></blockquote>

<p>Users will seemingly do almost anything to bypass security in the name of convenience<a class="sdendnoteanc" name="sdendnote19anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote19sym"><sup>19</sup></a> <a class="sdendnoteanc" name="sdendnote20anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote20sym"><sup>20</sup></a>.  From writing down passwords<a class="sdendnoteanc" name="sdendnote21anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote21sym"><sup>21</sup></a> <a class="sdendnoteanc" name="sdendnote22anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote22sym"><sup>22</sup></a> to pointing a webcam at a VPN token<a class="sdendnoteanc" name="sdendnote23anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote23sym"><sup>23</sup></a>, these behaviours completely negate any of the protection provided.</p>

<p>Users are left with, at best, <strong>a placebo security measure</strong>.</p>

<p>A comprehensive encryption programme has to account for the fallibility of human nature.</p>

<h2 id="ubiquity-transparency"><a href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#ubiquity-transparency">Ubiquity &amp; Transparency</a></h2>

<p>Usability of encryption relies on two essential factors: Ubiquity and Transparency.</p>

<p>Until the release of the <a href="http://codebutler.com/firesheep/">Fire</a><a href="http://codebutler.com/firesheep/">s</a><a href="http://codebutler.com/firesheep/">heep software</a><a class="sdendnoteanc" name="sdendnote24anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote24sym"><sup>24</sup></a> it was assumed that websites only had to protect the login portion of their services with HTTPS.  Firesheep showed how every interaction with the site could leak login information to an observer.</p>

<p>The only way to guarantee the security of users was to ensure that <em>every single</em> interaction with the site was secured.  Ubiquitous security became a necessity.</p>

<p>Similarly, it used to be common that in order to securely access a site like Facebook or Twitter, a user had to remember to enter the URL with the "http<strong>s</strong>://" protocol, or they had to manually set an option to enable security.</p>

<p>By having the website <em>insist</em> on using HTTPS and enforcing it for all users at all times, they removed the need for the user to have to constantly check their security settings.  This mode of operation means that encryption technology does not get in the way of the user's normal use of the site.  Users do not have to undertake manual actions to enable encryption.</p>

<p>An excellent example of this can be found in <a href="https://shkspr.mobi/blog/2014/08/secure-the-police/">my research into British Police websites</a><a class="sdendnoteanc" name="sdendnote25anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote25sym"><sup>25</sup></a>.  Several forces run online crime reporting tools, enabling victims to send in details electronically.</p>

<p>Despite the obvious legal and moral need to protect such sensitive information, I discovered that 18 of the forces did not provide any website security. Six of the sites had encryption available but did <strong>not</strong> force visitors to use it.  This meant that users of the site would have to manually manipulate the URL to select a secure method of communication.</p>

<h2 id="conclusions"><a href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#conclusions">Conclusions</a></h2>

<p>Even minor transgressions in the correct use of security can offer an adversary the opportunity to penetrate a user's defences. Users have to continually protect themselves against an unending onslaught of criminals and state-backed hostiles.</p>

<blockquote><p>"Remember we only have to be lucky once. You will have to be lucky always."
</p><p>Anonymous IRA Spokesman<a class="sdendnoteanc" name="sdendnote26anc" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote26sym"><sup>26</sup></a> referring to the 1984 Brighton hotel bombing.</p></blockquote>

<p>In order to make encryption practical and to extend the benefits of secure communication to as many people as possible, we have to find ways of making users as "lucky" as possible.</p>

<p>The challenge for future security systems is to protect users from their own fallibility whilst being as unobtrusive as possible.</p>

<hr>

<div id="sdendnote1"><a class="sdendnotesym" name="sdendnote1sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote1anc">1</a>Eden, T "<a href="https://shkspr.mobi/blog/2014/01/the-hardest-problem-in-encryption-usability/"><em>The Hardest Problem In Encryption? Usability.</em></a>" (2014) Retrieved 30 December 2014.
</div>

<div id="sdendnote2"><a class="sdendnotesym" name="sdendnote2sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote2anc">2</a> <a href="http://www.anc.org.za/show.php?id=206">A brief history of the ANC</a> Retrieved 30 December 2014.
</div>

<div id="sdendnote3"><a class="sdendnotesym" name="sdendnote3sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote3anc">3</a> <a href="http://en.wikisource.org/wiki/Unlawful_Organizations_Act,_1960">The Unlawful Organizations Act</a> (No. 34 of 1960) enacted by the Parliament of South Africa.
</div>

<div id="sdendnote4"><a class="sdendnotesym" name="sdendnote4sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote4anc">4</a> <a href="http://worldnews.nbcnews.com/_news/2014/10/06/26287260-us-government-considered-nelson-mandela-a-terrorist-until-2008">US government considered Nelson Mandela a terrorist until 2008 – NBC News</a> – 7 December 2013.
</div>

<div id="sdendnote5"><a class="sdendnotesym" name="sdendnote5sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote5anc">5</a> Jenkin, T "<a href="http://www.anc.org.za/show.php?id=4693">The Story of the Secret Underground Communications Network of Operation Vula</a>&lt;"
</div>

<div id="sdendnote6"><a class="sdendnotesym" name="sdendnote6sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote6anc">6</a> Diffie, W. &amp; Hellman, M. "<a href="http://www-ee.stanford.edu/~hellman/publications/24.pdf"><em>New Directions in Cryptography</em></a>" IEEE Transactions On Information Theory, Vol. It-22, No. 6, November 1976 .
</div>

<div id="sdendnote7"><a class="sdendnotesym" name="sdendnote7sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote7anc">7</a> Wahi, Monika M. et al. "<a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2409998/">Reducing Errors from the Electronic Transcription of Data Collected on Paper Forms: A Research Data Case Study.</a>" Journal of the American Medical Informatics Association : JAMIA 15.3 (2008): 386–389. PMC. Web. 14 Dec. 2014.
</div>

<div id="sdendnote8"><a class="sdendnotesym" name="sdendnote8sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote8anc">8</a> <a href="https://www.nelsonmandela.org/omalley/index.php/site/q/03lv03445/04lv03996/05lv04012/06lv04014.htm">"Documentary On Operation Vula" BBC Interviews: December 2002</a> Retrieved 30 December 2014.
</div>

<div id="sdendnote9"><a class="sdendnotesym" name="sdendnote9sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote9anc">9</a> <a href="https://www.schneier.com/blog/archives/2011/04/schneiers_law.html">"Schneier's Law" - Bruce Schneier</a> (2011) Retrieved 30 December 2014.
</div>

<div id="sdendnote10"><a class="sdendnotesym" name="sdendnote10sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote10anc">10</a> Zimmermann, P "<a href="ftp://ftp.pgpi.org/pub/pgp/7.0/docs/english/IntroToCrypto.pdf">Introduction to Cryptography</a>" Page 54
</div>

<div id="sdendnote11"><a class="sdendnotesym" name="sdendnote11sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote11anc">11</a> Roberts, E. <a href="http://cs.stanford.edu/people/eroberts/cs181/projects/export-controls/pastlaws.html">"Reevaluating Us Technology Export Controls" - Stanford University (1999)</a> Retrieved 30 December 2014.
</div>

<div id="sdendnote12"><a class="sdendnotesym" name="sdendnote12sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote12anc">12</a>  <a href="https://www.nelsonmandela.org/omalley/index.php/site/q/03lv03445/04lv03996/05lv04002/06lv04003.htm">US State Department cables on Vula unravelling</a> Retrieved 30 December 2014.
</div>

<div id="sdendnote13"><a class="sdendnotesym" name="sdendnote13sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote13anc">13</a> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3566">CVE-2014-3566</a> Retrieved 30 December 2014.
</div>

<div id="sdendnote14"><a class="sdendnotesym" name="sdendnote14sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote14anc">14</a> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160">CVE-2014-0160</a> Retrieved 30 December 2014.
</div>

<div id="sdendnote15"><a class="sdendnotesym" name="sdendnote15sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote15anc">15</a> Hales, TC <em><a href="http://www.ams.org/notices/201402/rnoti-p190.pdf">The NSA Back Door to NIST</a> </em>Notices of the AMS Volume 61, Number 2. (2014)
</div>

<div id="sdendnote16"><a class="sdendnotesym" name="sdendnote16sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote16anc">16</a> Shor, PW <a href="http://arxiv.org/abs/quant-ph/9508027">"<em>Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer" </em></a>SIAM Journal on Computing (1997) 26:5, 1484-1509
</div>

<div id="sdendnote17"><a class="sdendnotesym" name="sdendnote17sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote17anc">17</a> Kahn, D (1996). <a href="http://www.amazon.co.uk/gp/product/B006W45D6Y/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B006W45D6Y&amp;linkCode=as2&amp;tag=shkspr-21&amp;linkId=ARO36V7EF3VL3VTS"><em>The Codebreakers</em></a>. Macmillan. pp. 397–8. ISBN 0-684-83130-9
</div>

<div id="sdendnote18"><a class="sdendnotesym" name="sdendnote18sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote18anc">18</a> David P. Jablon. 1996. "<a href="http://doi.acm.org/10.1145/242896.242897">Strong password-only authenticated key exchange.</a>" SIGCOMM Comput. Commun. Rev. 26, 5 (October 1996), 5-26. DOI=10.1145/242896.242897
</div>

<div id="sdendnote19"><a class="sdendnotesym" name="sdendnote19sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote19anc">19</a> Gait, Jason. "<a href="http://dl.acm.org/citation.cfm?id=775403&amp;dl=ACM&amp;coll=DL&amp;CFID=482995037&amp;CFTOKEN=94524980">Easy entry: the password encryption problem.</a>" ACM SIGOPS Operating Systems Review 12.3 (1978): 54-60.
</div>

<div id="sdendnote20"><a class="sdendnotesym" name="sdendnote20sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote20anc">20</a> Adams, Anne, and Martina Angela Sasse. <a href="http://dl.acm.org/citation.cfm?id=322806">"Users are not the enemy."</a> Communications of the ACM 42.12 (1999): 40-46.
</div>

<div id="sdendnote21"><a class="sdendnotesym" name="sdendnote21sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote21anc">21</a> Zviran, Moshe, and William J. Haga. <a href="http://www.jstor.org/discover/10.2307/40398409?sid=21105989295713&amp;uid=3738032&amp;uid=2129&amp;uid=70&amp;uid=2&amp;uid=4">"Password security: an empirical study."</a> Journal of Management Information Systems (1999): 161-185.
</div>

<div id="sdendnote22"><a class="sdendnotesym" name="sdendnote22sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote22anc">22</a> Nielsen , J. <a href="http://www.nngroup.com/articles/security-and-human-factors/">"Security &amp; Human Factors"</a> Retrieved 20 December 2014 (2000)
</div>

<div id="sdendnote23"><a class="sdendnotesym" name="sdendnote23sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote23anc">23</a> <a href="https://web.archive.org/web/20041116161829/http://fob.webhop.net/">FobCam</a> Retrieved December 30, 2014.
</div>

<div id="sdendnote24"><a class="sdendnotesym" name="sdendnote24sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote24anc">24</a> Butler, E. <a href="http://codebutler.com/firesheep/?c=1">"Firesheep – codebutler"</a>  Retrieved December 30, 2014.
</div>

<div id="sdendnote25"><a class="sdendnotesym" name="sdendnote25sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote25anc">25</a> Eden, T <a href="https://shkspr.mobi/blog/2014/08/secure-the-police/">"<em>Secure The Police</em>"</a> Retrieved December 30, 2014
</div>

<div id="sdendnote26"><a class="sdendnotesym" name="sdendnote26sym" href="https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/#sdendnote26anc">26</a> Taylor, Peter (2001). <a href="http://www.amazon.co.uk/gp/product/074755806X/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=074755806X&amp;linkCode=as2&amp;tag=shkspr-21&amp;linkId=ORFLHI6JR632SBSW">"<em>Brits: The War Against the IRA</em>."</a> Bloomsbury Publishing. p. 265. ISBN 0-7475-5806-X
</div>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=20688&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2015/03/the-usability-of-anti-apartheid-encryption/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Facebook Mangles Unicode URLs]]></title>
		<link>https://shkspr.mobi/blog/2015/02/facebook-mangles-unicode-urls/</link>
					<comments>https://shkspr.mobi/blog/2015/02/facebook-mangles-unicode-urls/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 27 Feb 2015 12:45:54 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[url]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=20643</guid>

					<description><![CDATA[2025 Update - Bitly removed the ability to create emoji links, so some of these links are now dead.  Facebook rewrite URLs with Unicode in the path - this is not best practice and could be dangerous.  It is possible to create a URL like http://bit.ly/😀 - the Unicode characters are valid in the path.  The URL Encoded representation is :  bit.ly/%F0%9F%98%80  Facebook mangles these URLs in such a wa…]]></description>
										<content:encoded><![CDATA[<p><ins datetime="2025-02-27T10:23:46+00:00">2025 Update - Bitly removed the ability to create emoji links, so some of these links are now dead.</ins></p>

<p>Facebook rewrite URLs with Unicode in the path - this is not best practice and could be dangerous.</p>

<p>It is possible to create a URL like <a href="http://bit.ly/😀">http://bit.ly/😀</a> - the Unicode characters are valid in the path.</p>

<p>The URL Encoded representation is :</p>

<pre>bit.ly/%F0%9F%98%80</pre>

<p>Facebook mangles these URLs in such a way that it <em>might</em> be possible to redirect a user to a malicious site.</p>

<p>Here's what's happening.  When Facebook sees the "😀" character in text, it rewrites it to the "󾰀" character (&amp;#1043456;).  That's a "<a href="http://unicodelookup.com/#%F3%BE%B0%80/1">private use character</a>".  This means Facebook can replace the user's computer's default smiley with a Facebook supplied image or font glyph - if it wants.</p>

<p>In normal text - such as "I passed my exams 😀" - changing the smiley is doesn't present a problem, but Facebook also <strong>replaces the text in a URL!</strong></p>

<p>So, the URL :</p>

<pre>bit.ly/%F0%9F%98%80%F0%9F%98%80</pre>

<p>Will point to a <a href="http://bit.ly/😀😀">Facebook security page</a>.</p>

<p>Facebook changes the URL to :</p>

<pre>bit.ly/%F3%BE%B0%80%F3%BE%B0%80</pre>

<p>Which points elsewhere - <a href="http://bit.ly/%F3%BE%B0%80%F3%BE%B0%80">bit.ly/󾰀󾰀</a>.</p>

<p>I performed a couple of quick experiments.  It is <em>sometimes</em> possible to post a link which displays a preview of a "good" site, but when clicked on leads to a bad site.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2015/02/rickroll-fs8.png" alt="rickroll-fs8" width="521" height="690" class="aligncenter size-full wp-image-20648">

<p>The chances of this being used as a successful attack vector are slim.  Tricking the user into clicking on a link which subsequently steals their password is made marginally easier if the link and link preview don't match - but I'm sure there are easier ways of deceiving the user.</p>

<p>The real issue here is that Facebook is altering the text that you write - and that can have unexpected consequences.</p>

<p>We live in a non-ASCII world now.  A URL like <a href="https://莎士比亚.org/%E5%A5%A5%E7%91%9F%E7%BD%97">https://莎士比亚.org/奥瑟罗</a> is <em>perfectly valid</em>.  Facebook - and other sites - should <strong>not</strong> be confused by non-Latin characters.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=20643&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2015/02/facebook-mangles-unicode-urls/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Disclosed - Minor Bugs in Keybase.io]]></title>
		<link>https://shkspr.mobi/blog/2014/12/disclosed-minor-bug-in-keybase-io/</link>
					<comments>https://shkspr.mobi/blog/2014/12/disclosed-minor-bug-in-keybase-io/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 11 Dec 2014 11:45:10 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=20194</guid>

					<description><![CDATA[(These bugs were responsibly disclosed on 7th December 2014, and were reported fixed on 9th December 2014. I sought &#38; received permission to make these findings public.)  I love the idea of Keybase.io.  It&#039;s a site which takes a lot of the hard work out of encryption.  I&#039;ve discovered (and responsibly disclosed) a minor vulnerability with their web service.  It doesn&#039;t lead to anyone&#039;s details…]]></description>
										<content:encoded><![CDATA[<p>(These bugs were responsibly disclosed on 7th December 2014, and were reported fixed on 9th December 2014. I sought &amp; received permission to make these findings public.)</p>

<p>I <em>love</em> the idea of <a href="https://Keybase.io">Keybase.io</a>.  It's a site which takes a lot of the hard work out of encryption.</p>

<p>I've discovered (and responsibly disclosed) a minor vulnerability with their web service.  It doesn't lead to anyone's details being exposed, or point to an underlying flaw with their services - it's just a slight lack of professionalism which could have some unintended consequences.</p>

<h2 id="default-errors"><a href="https://shkspr.mobi/blog/2014/12/disclosed-minor-bug-in-keybase-io/#default-errors">Default Errors</a></h2>

<p>It's a <em>really</em> good idea to make sure that your default error pages don't leak any information about your infrastructure.  An adversary who knows that you're one or two patches behind may find it easier to target an exploit towards you.</p>

<p>Keybase expects a certain format of URL.  If you want to see my page, visit <a href="https://keybase.io/edent">keybase.io/edent</a>.  Presumably, the server looks up the string "edent" in a database.  If it doesn't find a match, it <a href="https://keybase.io/asdfdsfdghhregdvx">displays an error page</a>.  Suppose, however, that we send it some non-text content?  What happens then?</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/12/Keybase-nginx-bug-fs8.png" alt="Keybase nginx bug" width="386" height="169" class="aligncenter size-full wp-image-20195">

<p>By sending the string "%." we've caused the server to go and have a little bit of a lie down.  In the meantime, it "helpfully" tells the world that it's running nginx 1.6.1.</p>

<p>Apparently, that version of the software has a <a href="http://nginx.org/en/security_advisories.html">SSL session reuse vulnerability</a>. Ooops!</p>

<p>If we pass it a similar string "%" we get this returned to us.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/12/keybase-layout-bug-fs8.png" alt="keybase layout bug-fs8" width="1065" height="980" class="aligncenter size-full wp-image-20196"></p>

<p>This is problematic for a number of reasons.</p>

<ul>
    <li>We now know the username of the running app. It was probably guessable anyway, but it's nice to be sure!</li>
    <li>The layout of directory tree is now obvious.</li>
    <li>A fairly comprehensive list of the software used is available.</li>
    <li>By looking at those line numbers, we can probably determine the software version and see if any have known bugs or exploits.</li>
</ul>

<p>The Keybase.io team <a href="https://github.com/strongloop/express/issues/2464">raised this problem with their software stack provider</a>.</p>

<p>These are not exactly show-stopping bugs; an adversary would already need to have compromised the server to make the most use out of them.  And, in all honestly, a sufficiently determined attacker could probably ascertain your software stack.  But there's no need to make it <em>easy</em> for them!</p>

<p>On a product level - these error pages just look horrible.  You don't want your users accidentally getting a page full of tech gibberish.  Log the error somewhere and present a nice, clean, brand-aware "Whoops!" page.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=20194&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2014/12/disclosed-minor-bug-in-keybase-io/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Minor Reddit Security Bug Fixed]]></title>
		<link>https://shkspr.mobi/blog/2014/12/minor-reddit-security-bug-fixed/</link>
					<comments>https://shkspr.mobi/blog/2014/12/minor-reddit-security-bug-fixed/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 02 Dec 2014 12:11:46 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[reddit]]></category>
		<category><![CDATA[ssl]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=20114</guid>

					<description><![CDATA[I&#039;m the sort of hip cat who frequents Internet Bulletin Boards. Recently I found myself needing to verify the email address associated with my Reddit account.  The email I received from Reddit was charmingly lo-fi and eschewed those bourgeois capital letters.    Notice the (teensy tiny) flaw?  Yup, it&#039;s using vanilla &#34;http&#34; rather than the super secure &#34;https&#34;.  Earlier this year, Reddit switched …]]></description>
										<content:encoded><![CDATA[<p>I'm the sort of hip cat who frequents Internet Bulletin Boards. Recently I found myself needing to verify the email address associated with my Reddit account.</p>

<p>The email I received from Reddit was charmingly lo-fi and eschewed those bourgeois capital letters.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/11/Reddit-Email-Verification-fs8.png" alt="Reddit Email Verification" width="600" height="242" class="aligncenter size-full wp-image-20115">

<p>Notice the (teensy tiny) flaw?  Yup, it's using vanilla "http" rather than the super secure "https".</p>

<p>Earlier this year, <a href="https://web.archive.org/web/20141028032945/http://www.redditblog.com/2014/09/hell-its-about-time-reddit-now-supports.html">Reddit switched on SSL for their entire site</a>.  Somewhat annoyingly though, they do not <em>force</em> SSL for the site.  If you want to ensure all your sessions are encrypted, you have to <a href="https://ssl.reddit.com/prefs/security">manually set it up in your preferences</a>.</p>

<p>I find that a little disappointing. I know that there is a cost associated with 100% SSL coverage on a major site like Reddit, but surely <em>because</em> of the site's popularity they should mandate it?</p>

<p>Anyway, I reported this minor problem to the <a href="https://www.reddit.com/r/Bugs">security email address listed on their bugs page</a>.  A few minutes later, they replied.</p>

<blockquote><p>Thanks for the report! While I don't believe there's any vulnerability introduced if we leak the verification token here (being that the intended recipient must have wanted to verify it if they clicked it, and tokens are tied to both the email and account,) I've got a fix for this that should go out this week.</p></blockquote>

<p>A day or two later and <a href="https://github.com/reddit/reddit/commit/9f1f5a29fa5ded19f6a5ab0a42fa9841d1e72460">it was fixed</a>.</p>

<p>I'm trying <strong>really</strong> hard to come up with a malicious use for a MITM attack on this.  There's not much.</p>

<p>The "dest" parameter doesn't appear to be hackable. It won't point to any site other than Reddit.  So you can't redirect the user to a malicious site.  What you <em>can</em> do is redirect to any Reddit post or page.  Perhaps sending someone to a particularly disgusting post could be <em>legally disadvantageous</em>?</p>

<p>Of course, a malicious actor on the network could sniff the user's login credentials if the user hadn't noticed the lack of HTTPS.</p>

<p>So, there we are. A minor bug, swiftly fixed - and a general reminder that when you switch on HTTPS, make sure <em>all</em> of your communications with your users are updated to reflect that fact.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=20114&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2014/12/minor-reddit-security-bug-fixed/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[The Homograph Strikes Back - Another IDN Attack With Strikethroughs - Android]]></title>
		<link>https://shkspr.mobi/blog/2014/11/the-homograph-strikes-back-another-idn-attack-with-strikethroughs-android/</link>
					<comments>https://shkspr.mobi/blog/2014/11/the-homograph-strikes-back-another-idn-attack-with-strikethroughs-android/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 21 Nov 2014 08:05:30 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[homograph]]></category>
		<category><![CDATA[idn]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=10832</guid>

					<description><![CDATA[Responsible Disclosure  This flaw was reported to both Google and Opera on 23rd October 2014.  Background  International Domain Names are great! They open the web up to the whole world and allow me to own a domain like 莎士比亚.org.  But they are a constant battleground in the fight for security.  Homograph attacks are when someone uses two letters or symbols which look the same, to fool a user into v…]]></description>
										<content:encoded><![CDATA[<h2 id="responsible-disclosure"><a href="https://shkspr.mobi/blog/2014/11/the-homograph-strikes-back-another-idn-attack-with-strikethroughs-android/#responsible-disclosure">Responsible Disclosure</a></h2>

<p>This flaw was reported to both Google and Opera on 23rd October 2014.</p>

<h2 id="background"><a href="https://shkspr.mobi/blog/2014/11/the-homograph-strikes-back-another-idn-attack-with-strikethroughs-android/#background">Background</a></h2>

<p>International Domain Names are great! They open the web up to the whole world and allow me to own a domain like <a href="https://莎士比亚.org/" title="莎士比亚.org/">莎士比亚.org</a>.</p>

<p>But they are a constant battleground in the fight for security.</p>

<p>Homograph attacks are when someone uses two letters or symbols which look the same, to fool a user into visiting the wrong web address.  For example TW1TTER.com has the number 1 rather than the letter i.  Most fonts are reasonably good at helping users disambiguate between similar characters - but it's not always possible.</p>

<h2 id="the-homograph-strikes-back"><a href="https://shkspr.mobi/blog/2014/11/the-homograph-strikes-back-another-idn-attack-with-strikethroughs-android/#the-homograph-strikes-back">The Homograph Strikes Back</a></h2>

<p>Unicode allows for "Combining Characters". This allows us to easily add an accent to an existing character. The two characters should display as one.  Well, that's the theory.</p>

<p>If we combine the letter "g" with &nbsp;&nbsp;  ̶ (<a href="http://www.fileformat.info/info/unicode/char/336/index.htm">Combining long stroke overlay</a>) we get "g̶" (it should display as "<strike>g</strike>" on your screen).
On certain Android phones, and on the Opera browser for Android, it does <strong>not</strong>.  It just shows up as "g".</p>

<p>Here's an example of the attack.</p>

<ul>
    <li>A malicious user registers the domain name "g̶o̶o̶g̶l̶e̶.com" (In Punycode it looks like xn--google-37dbbbbb.com)</li>
    <li>They send a plain text email / Tweet / or some other communication telling people to visit g̶o̶o̶g̶l̶e̶.com</li>
    <li>The Android phone displays the link as "google.com"</li>
    <li>The user clicks - and is taken to a page which illegitimately asks for her Google credentials.</li>
</ul>

<h2 id="impact"><a href="https://shkspr.mobi/blog/2014/11/the-homograph-strikes-back-another-idn-attack-with-strikethroughs-android/#impact">Impact</a></h2>

<p>This appears to be a problem with the Android Operating System.  Although Google's Chrome isn't affected, other system apps like Gmail <em>are</em> - as are any 3rd party apps which rely on Android's text rendering.  This appears to be why Opera is vulnerable but Firefox is not.</p>

<p>I've tested this on Android 4.4.4 - the latest public release of Android.  I assume older versions are vulnerable as well.</p>

<p>Here's Google's latest "Gmail" app being sent the plain text <code>Testing http://g̶o̶o̶g̶l̶e̶.com</code>.</p>

<p>Long pressing on the link displays correctly.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/11/Homograph-font-attack-in-Gmail-fs8.png" alt="Homograph font attack in Gmail" width="512" height="838" class="aligncenter size-full wp-image-20005">

<p>As you can see above - the user sees a link that appears to go to "google.com" even though it goes to an alternate address.</p>

<p>The same issue also affects the new "Inbox" app, as well as default Android apps like Calendar, Messaging, Hangouts, etc.  It also affects most of the apps which attempt to render plain text using Android's default libraries.</p>

<p>I wondered what was causing this issue.  I believe it is a problem with the default "Roboto" font used by Google.  If I switch the system to use an alternative font, the system renders the text very differently.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/11/Alternate-font-showing-missing-characters-fs8.png" alt="Alternate font showing missing characters" width="512" height="526" class="aligncenter size-full wp-image-20006">

<p>In this case, using <a href="https://github.com/adobe-fonts/source-sans">Source Sans Pro</a>, the strike-through is rendered as an unknown character rather than silently failing.</p>

<p>We can prove this by looking at the Roboto font from Android 4.4 via FontForge - the <a href="http://www.fileformat.info/info/unicode/char/336/index.htm">Strike Through Character</a> is missing.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/11/Roboto-Font-Missing-Character-fs8.png" alt="Roboto Font Missing Character" width="628" height="424" class="aligncenter size-full wp-image-20011">

<p>When we take a look at the Roboto font from the Android 5.0 release - we can see that the problem has been fixed.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/11/New-Roboto-Font-fs8.png" alt="New Roboto Font" width="624" height="359" class="aligncenter size-full wp-image-20010">

<p>This means that the GMail app and all other system apps correctly render the text.  Here is the same email on Android Lollipop.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/11/Lollipop-Font-fs8.png" alt="Lollipop Font" width="512" height="352" class="aligncenter size-full wp-image-20009"></p>

<h2 id="google"><a href="https://shkspr.mobi/blog/2014/11/the-homograph-strikes-back-another-idn-attack-with-strikethroughs-android/#google">Google</a></h2>

<p>I disclosed this to Google on 23rd October. Their (very prompt) reply was:</p>

<blockquote><p>unfortunately Android apps do not fall in scope for the vulnerability reward program (apart from Google Wallet, see http://www.google.com/about/appsecurity/reward-program/index.html), but I will pass this information along internally. Thanks!</p></blockquote>

<p>Personally, I consider this to be a deficiency with the underlying Android OS.  The default font which is bundled with modern Android phones is defective.  This couldn't be described as a fundamental flaw, but it does highlight the problem of relying on accurate text rendering.</p>

<p>I mentioned the source of the issue to Google. To their credit, they quickly  replied with:</p>

<blockquote><p>... it seems like there was an issue in the Android KitKat (and earlier) releases that can cause some text to be rendered without the strikethrough, but it's been fixed in Lollipop.
</p><p>...Because it appears that this issue is already fixed in the upcoming release and it's not high severity enough to backport to earlier releases, we're going to close this ticket out. If you think we missed something, please let us know.
</p><p>Nice work isolating the issue to the Roboto font. I have no problem with you writing a blog post about this issue.</p></blockquote>

<h2 id="opera"><a href="https://shkspr.mobi/blog/2014/11/the-homograph-strikes-back-another-idn-attack-with-strikethroughs-android/#opera">Opera</a></h2>

<p>Initially, I believed this to be a bug solely in the Opera browser and so I reported this to them.  I noticed that when viewing a link on Twitter, it displayed as "hunger.com" rather than "h̶u̶n̶g̶e̶r̶.com".</p>

<p><a href="https://twitter.com/edent/status/525216539877064704"><img src="https://shkspr.mobi/blog/wp-content/uploads/2014/11/Opera-IDN-Homograph.jpg" alt="Opera IDN Homograph" width="600" height="438" class="aligncenter size-full wp-image-19827"></a></p>

<p>Their (fairly sensible) reply was - "not a security bug"</p>

<blockquote><p>We have looked further into the issue, and have determined that it is not an exploitable security issue.
</p><p>Basically, Opera on Android will not render it correctly in a web page. That is a bug, but web pages can already display whatever confusing content they want anyway - they could just as easily use this:
</p><p></p><pre>&lt;a href="http://evil.com/"&gt;http://good.com/&lt;/a&gt;</pre>
<p>This is not something a browser can prevent - a page could just as easily use an image of text instead. This has always been required by the relevant HTML/CSS specifications.
</p><p>...
</p><p>So, we will look into fixing the display of strikethroughs within a web page, but that will be fixed as a regular bug, not an exploitable security issue.</p></blockquote>

<h2 id="where-next"><a href="https://shkspr.mobi/blog/2014/11/the-homograph-strikes-back-another-idn-attack-with-strikethroughs-android/#where-next">Where Next?</a></h2>

<p>It's hard to call this a true exploit - it would require the user to ignore the URL bar in their browser - although if a malicious web page were to force itself into full screen mode, the user wouldn't stand a chance.</p>

<p>Given that <a href="https://tools.ietf.org/html/rfc3492">Punycode has been around for over a decade</a>, and that the &nbsp;&nbsp;  ̶  character has been in Unicode since 1993, it is more than a little disappointing that Google took so long to include it in their text rendering engine.</p>

<p>In the seminal paper "<a href="https://gabrilovich.com/publications/papers/homograph_full.pdf">The Homograph Attack</a>" by Evgeniy Gabrilovich and Alex Gontmakher - the authors concentrated on how browsers should work to fight against these attacks:</p>

<blockquote><p>More practically, the browser can highlight international letters present in domain names with a distinct color, although many users may find this technique overly intrusive. A more user-friendly browser may only highlight truly suspicious names, such as ones that mix letters within a single word.
</p><p>For additional security, the browser can use a map of identical letters to search for collisions between the requested domain and similarly written registered ones</p></blockquote>

<p>In today's interconnected app-driven world, <strong>every single program</strong> which can display a URL <em>must</em> ensure that the user is not misled into clicking on a fraudulent link.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=10832&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2014/11/the-homograph-strikes-back-another-idn-attack-with-strikethroughs-android/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Private Eye - Not As Clever As They Think They Are]]></title>
		<link>https://shkspr.mobi/blog/2014/11/private-eye-not-as-clever-as-they-think-they-are/</link>
					<comments>https://shkspr.mobi/blog/2014/11/private-eye-not-as-clever-as-they-think-they-are/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 02 Nov 2014 09:01:51 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[xss]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=10157</guid>

					<description><![CDATA[Private Eye is the only &#34;Dead Tree&#34; publication I buy.  I think its satire misses the mark more often than not - but its investigative journalism and general muck-raking are second to none.  The Eye has reluctantly been drawn into the digital age.  It has a piss-poor website run by the sort of &#34;tired and emotional&#34; gnomes who struggle with concepts like sanitising user input.  EXCLUSIVE  Push…]]></description>
										<content:encoded><![CDATA[<p>Private Eye is the only "Dead Tree" publication I buy.  I think its satire misses the mark more often than not - but its investigative journalism and general muck-raking are second to none.</p>

<p>The Eye has reluctantly been drawn into the digital age.  It has a piss-poor website run by the sort of "tired and emotional" gnomes who struggle with concepts like sanitising user input.</p>

<h2 id="exclusive"><a href="https://shkspr.mobi/blog/2014/11/private-eye-not-as-clever-as-they-think-they-are/#exclusive">EXCLUSIVE</a></h2>

<p>Push this button to see the Eye's new owner...</p>

<form action="http://private-eye.co.uk/search.php" method="post" name="form1" id="form1" target="_blank">
    <input name="search" type="hidden" class="search" id="search" value="<h1>Meet Our New Owner!</h1><img src=https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Rupert_Murdoch_-_WEF_Davos_2007.jpg/160px-Rupert_Murdoch_-_WEF_Davos_2007.jpg style=float:left;margin-right:1em />Private Eye is delighted to announce that it has been aquired by News Corp.<br />New proprietor Rupert Murdoch said <blockquote>This is a great day for British Journalism.  With the Eye`s fearless reputation and News Corps` financial prowess, we can give worldwide exposure to the light of truth and justice.</blockquote><br />Effective immediately, editor Ian Hislop will be replaced by Piers Morgan.<hr style=margin-bottom:22em; />">
        <button>The New Eye - Revealed!</button>
</form>

<hr>

<p><br>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/03/Private-Eye-fs8.png" alt="Private Eye demonstrating XSS" width="722" height="568" class="aligncenter size-full wp-image-10164"></p>

<p>If that's a decent website, then I'm a banana!</p>

<p><strong>Note:</strong> After much persuasion, Private Eye fixed this problem by... errr... Turning off their search functionality <em>completely!</em></p>

<p>Private Eye spends a lot of time criticising the people working within the Internet Industries.  Perhaps they should spend less time examining the mote in others' eyes - and rather more time on the branch in their own?</p>

<p>I did call Lord Gnome's offices several months ago to report the error.  The flack who took my call was a "jolly hockey-sticks" type who struggled to turn on her computer and navigate to her employer's website.  I've not mentioned her by name - because I'm not a total bastard - but given Ian Hislop's apparent distaste for employing women, there's only a small pool from which to choose.</p>

<p>Ian - perhaps the reason your website is so atrocious is that you piss all over the sort of people who could actually help you.  You've run exposés on public- and private-sector websites being vulnerable, so why don't you stop being such a hypocrite and fix your own site?</p>

<hr>

<p>This flaw was responsibly disclosed to Private Eye and their <a href="http://www.2tier.co.uk/">web team</a> in March 2014.  I discussed it with them again in early September to highlight the flaw.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=10157&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2014/11/private-eye-not-as-clever-as-they-think-they-are/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Privacy and Security Flaw with CAB]]></title>
		<link>https://shkspr.mobi/blog/2014/10/privacy-and-security-flaw-with-cab/</link>
					<comments>https://shkspr.mobi/blog/2014/10/privacy-and-security-flaw-with-cab/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 24 Oct 2014 13:19:48 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[xss]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=10825</guid>

					<description><![CDATA[The Citizens&#039; Advice Bureaux have just released a real-time view of what people are searching for on its site. It&#039;s heartbreaking.  Tom Loosemore@tomskitomskiInteresting new digital stuff emerging from @CitizensAdvice display-screen.cab-alpha.org.uk &#60;-- uncomfortable, messy, visceral reality @mikedixonCAB❤️ 8💬 3🔁 010:03 - Tue 21 October 2014  who supplies my electricity why do some children become…]]></description>
										<content:encoded><![CDATA[<p>The Citizens' Advice Bureaux have just released a real-time view of what people are searching for on its site. It's heartbreaking.</p>

<blockquote class="social-embed" id="social-embed-524501234099953664" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/tomskitomski" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRhQCAABXRUJQVlA4IAgCAACwCwCdASowADAAPrVInkonJCKhrjgMyOAWiWkAFGX9dd5fkMAzGL3PoUFLjNEmt3fkWzU3umMs5KqT4le+GFKeNUv6PTW7nv4LpB6yPPbavWr41OllNOIGSv3OiDK9CihmXNJhs5gA/rIyQR3CikdX/6EXL3yWf6bxVRk16Bf90CSlRV2jaZmTHwrMcaS2Vgp3G3zxPhvT+NJlN1o4BTxB0ewEB0HDbMR2t6z9xn8FvTjJxB7oL1ely6/okQSynAwafh1jNEMbg0uVLCYBcigrm2WLnBpsVYszFqIR4zkB1wcILOUaLggNP93XhPXTQ4IGUMQIWcFj1Avv9WOBRk1MBrVrUCW/Bmv4ejcVvFjun+tNOlrf9/L7lvKW1s3hYXh6Y7Iyt5zOUehLk6OQV/9fkO+7rYQujC0en5zPbr0iPt3x/lfFjYONA10kV/ZmP6aBB9nfdG3xQJvVUKu98L6lCmQDfaZiQm9ppDsM9t0xL+KPxilb+OeeDHghJnhyJF1D+DGyhzeIN9HccGL8ukXHE9208l9I4DTa2yCIXFR2vcoOQyUhnpKMFbesEuVYxVxwTgr4yFxT4K+T79dcQzcr1lekBh0hd/45xC8yXA75cp9suO64Ii+pfkvgAj5qr2rQgysQepZIPoC4gGjNm3XOajktFnuvfnlr1q9v8Js2Lc5GIMAaQAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Tom Loosemore</p>@tomskitomski</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">Interesting new digital stuff emerging from <a href="https://twitter.com/CitizensAdvice">@CitizensAdvice</a> <a href="http://display-screen.cab-alpha.org.uk/">display-screen.cab-alpha.org.uk</a> &lt;-- uncomfortable, messy, visceral reality @mikedixonCAB</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/tomskitomski/status/524501234099953664"><span aria-label="8 likes" class="social-embed-meta">❤️ 8</span><span aria-label="3 replies" class="social-embed-meta">💬 3</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2014-10-21T10:03:33.000Z" itemprop="datePublished">10:03 - Tue 21 October 2014</time></a></footer></blockquote>

<blockquote><p>who supplies my electricity<br>
why do some children become looked after<br>
will i get back pay on pip</p></blockquote>

<blockquote class="social-embed" id="social-embed-524505825906130944" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><blockquote class="social-embed" id="social-embed-524503436705161216" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">Just saw "What is the punishment in the UK if you steal a person's life savings"<br><a href="http://display-screen.cab-alpha.org.uk/">display-screen.cab-alpha.org.uk</a></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/524503436705161216"><span aria-label="0 likes" class="social-embed-meta">❤️ 0</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2014-10-21T10:12:18.000Z" itemprop="datePublished">10:12 - Tue 21 October 2014</time></a></footer></blockquote><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/jtemperton" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRrgBAABXRUJQVlA4IKwBAAAQCgCdASowADAAPrVIn0unI6KhrjgJmOAWiWUAwoexOaXTKq7y0nJaRTHWS5EaCk91jsjkgh1pQc44arzK4NhHKJtgacWXZl9mEdCUz6Xi3+rtiH/mvOrM2AD++zx1ag6EhIOf4rd0L3F47SGjZjHEWQ776EdicikpZ7JYed1eyM+6iJEyNgwqaiduPvkuiP6dV4jtSHaKtb5hsAma8QxTwBbaG/ypV3Lnx+xVGCntpGEwQ4WEoTzKPLFKsPpuj/2B2m09g/T0Py+/yv/ToB/EblJSEia2+WIfL1xnOqlwFBEl5USb5vDxIAPs/1XUBoOLTGjBr48WdsMHuG7KyB/ROWCg4+CQolrMHje8/hOUpKvgwXzpvbQoVjTUlFCrl522A5Da1Noz0rg6YgzpzhVwoQPebdAstOoqoEeHrsifomX0JoCXx4SjtQvAJPb+aCjXXZJp0eAEuFnpF1Ri9VjiUKYvcO89hbnRBI9SoAquwV8dzAJh4XDvuq0x93LudzVL1IQAYxkRhpN31qRAV7gqolywj6mKFoLKdCPTMqr47lto/3G3O1G4kWYAAA==" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">James Temperton</p>@jtemperton</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/524503436705161216">Replying to @edent</a></small><a href="https://twitter.com/edent">@edent</a> Searches are like a series of tragic micro-stories. "hidden camera in the workplace", "when can i claim income support im pregnant"</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/jtemperton/status/524505825906130944"><span aria-label="0 likes" class="social-embed-meta">❤️ 0</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2014-10-21T10:21:48.000Z" itemprop="datePublished">10:21 - Tue 21 October 2014</time></a></footer></blockquote>

<p>It was, sadly, deeply insecure.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/10/CAB-XSS-Example-fs8.png" alt="CAB XSS Example-fs8" width="720" height="334" class="aligncenter size-large wp-image-10881">

<p>It's falling foul of one of the most basic security flaws. It blindly echoes a user's input without checking or sanitising it.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/10/CAB-XSS-Search-fs8.png" alt="CAB XSS Search-fs8" width="1024" height="677" class="aligncenter size-full wp-image-10880">

<p>There's another potential flaw here. Privacy. Hopefully no one is dumb enough to type in their full name, address, or National Insurance number.</p>

<p><a href="http://www.michaelzimmer.org/2006/08/07/aol-proudly-releases-massive-amounts-of-private-data/">We've know for years that it's possible to reconstruct Personally Identifiable Information from "anonymous" searches</a>.</p>

<p>Can a malicious user look at the searches and identify you? How specific is your issue?</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/10/boyfriend-fs8.png" alt="boyfriend-fs8" width="429" height="131" class="aligncenter size-full wp-image-10883">

<p>Ask yourself this - how comfortable would you be with <em>every single search</em> you make being projected onto the side of a building?</p>

<hr>

<p>A few minutes after reporting this, <a href="https://twitter.com/philgyford/status/524511079825940480">the security flaw was fixed</a>.</p><p></p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=10825&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2014/10/privacy-and-security-flaw-with-cab/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Another GOV.UK XSS Flaw]]></title>
		<link>https://shkspr.mobi/blog/2014/09/another-gov-uk-xss-flaw/</link>
					<comments>https://shkspr.mobi/blog/2014/09/another-gov-uk-xss-flaw/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 10 Sep 2014 11:36:52 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[police]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Unsecured State]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=10820</guid>

					<description><![CDATA[Her Majesty’s Inspectorate of Constabulary (HMIC) are the police who police the police.  As the Police policers you&#039;d expect their website to be copper-bottomed.  That they would detect anything amiss when inspecting their thin blue links. Mind you, some web developers are a law unto themselves.  Yeah, yeah, these puns are unbearable.  Fine. Whatever.  Amusing photo by kind permission of the i…]]></description>
										<content:encoded><![CDATA[<p>Her Majesty’s Inspectorate of Constabulary (HMIC) are the police who police the police.</p>

<p>As the Police policers you'd expect their website to be <em>copper</em>-bottomed.  That they would <em>detect</em> anything amiss when <em>inspecting</em> their <em>thin blue links</em>. Mind you, some web developers are a <em>law</em> unto themselves.</p>

<p>Yeah, yeah, these puns are un<em>bear</em>able.</p>

<p>Fine. Whatever.</p>

<p></p><div id="attachment_10821" style="width: 988px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-10821" src="https://shkspr.mobi/blog/wp-content/uploads/2014/09/HMIC-XSS-fs8.png" alt="Amusing Photo by kind permission of the inimitable Paul Clark." width="978" height="794" class="size-full wp-image-10821"><p id="caption-attachment-10821" class="wp-caption-text">Amusing <a href="https://flickr.com/photos/paul_clarke/15021219351/in/set-72157646811932492">photo</a> by kind permission of the inimitable <a href="http://paulclarke.com/">Paul Clarke</a>.</p></div><p></p>

<p>As I was responsibly disclosing the flaw, the <a href="https://web.archive.org/web/20140908033843/http://www.justiceinspectorates.gov.uk/hmic/">HMIC team were busy moving to a shiny new website</a> which is mercifully free of the problem.</p>

<p>If you're running a website - especially a Government one - please take the time to <a href="https://www.owasp.org/index.php/Top_10_2013-Top_10">understand the risks involved</a>.</p>

<p>It only remains for me to ask the eternal question: <i lang="la">quis custodiet ipsos custodes custos telam</i>?</p>

<p>Evenin' all.</p>

<hr>

<p>Read more about "<a href="//shkspr.mobi/blog/tag/unsecured-state/">The Unsecured State</a>", a series of blog posts examining security mishaps of UK Government websites.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=10820&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2014/09/another-gov-uk-xss-flaw/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
