<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Paul Moore]]></title><description><![CDATA[Information Security Consultant, Researcher & Founder of Privacy Protocol]]></description><link>https://paul.reviews/</link><image><url>https://paul.reviews/favicon.png</url><title>Paul Moore</title><link>https://paul.reviews/</link></image><generator>Ghost 4.48</generator><lastBuildDate>Mon, 13 Apr 2026 09:08:25 GMT</lastBuildDate><atom:link href="https://paul.reviews/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[The shocking state of ZPos: Order takeaway & pay what you like.]]></title><description><![CDATA[<p>In July 2020, I ordered a takeaway from <a href="https://www.napolispizza.co.uk/">Napolis Pizza</a>.</p><p>Like many firms across the UK, they use <a href="https://www.zpos.co.uk/">ZPos</a> for their websites and electronic point of sale. &#xA0;A snazzy website, simple &amp; easy to use ordering and minimal processing fees (compared to others in this space), it seems like</p>]]></description><link>https://paul.reviews/the-shocking-state-of-zpos-order-takeaway-pay-what-you-like/</link><guid isPermaLink="false">6852ac74cad34592aca1994c</guid><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Thu, 19 Jun 2025 07:01:15 GMT</pubDate><media:content url="https://paul.reviews/content/images/2025/06/logo.png" medium="image"/><content:encoded><![CDATA[<img src="https://paul.reviews/content/images/2025/06/logo.png" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like."><p>In July 2020, I ordered a takeaway from <a href="https://www.napolispizza.co.uk/">Napolis Pizza</a>.</p><p>Like many firms across the UK, they use <a href="https://www.zpos.co.uk/">ZPos</a> for their websites and electronic point of sale. &#xA0;A snazzy website, simple &amp; easy to use ordering and minimal processing fees (compared to others in this space), it seems like a great deal for businesses and consumers alike.</p><p>However, it quickly became clear that far from the &quot;<a href="https://www.zpos.co.uk/services/online-payment-gateway">super secure</a>&quot; service they promote, it&apos;s an absolute mess which only places their client - and subsequently you &amp; I - at considerable risk.</p><p>Let&apos;s dive in.</p><h3 id="pay-what-you-like">Pay what you like!</h3><p>In an act of sheer lunacy, ZPos sites allow the user to choose their own prices!</p><p>Simply edit the HTML, alter the price to whatever you like and place your order.</p><p>Here&apos;s the video showing how it&apos;s done.</p><figure class="kg-card kg-image-card"><a href="https://www.youtube.com/shorts/X6vkrNBceRY"><img src="https://paul.reviews/content/images/2025/06/modifyprice-image-3.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="885" height="1313" srcset="https://paul.reviews/content/images/size/w600/2025/06/modifyprice-image-3.png 600w, https://paul.reviews/content/images/2025/06/modifyprice-image-3.png 885w" sizes="(min-width: 720px) 720px"></a></figure><p>But, being able to modify the price doesn&apos;t necessarily mean it&apos;ll go through...</p><figure class="kg-card kg-image-card"><a href="https://www.youtube.com/watch?v=N3BLNiMBBDQ"><img src="https://paul.reviews/content/images/2025/06/cheaporder-image.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="824" height="1184" srcset="https://paul.reviews/content/images/size/w600/2025/06/cheaporder-image.png 600w, https://paul.reviews/content/images/2025/06/cheaporder-image.png 824w" sizes="(min-width: 720px) 720px"></a></figure><p>Well, it worked. &#xA0;Order processed... now to collect it. &#xA0;Will they notice?</p><p>Napolis is a busy place with great food, so I didn&apos;t expect anyone to spot the dodgy order.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2025/06/IMG_20250614_193150939.jpg" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="2000" height="1506" srcset="https://paul.reviews/content/images/size/w600/2025/06/IMG_20250614_193150939.jpg 600w, https://paul.reviews/content/images/size/w1000/2025/06/IMG_20250614_193150939.jpg 1000w, https://paul.reviews/content/images/size/w1600/2025/06/IMG_20250614_193150939.jpg 1600w, https://paul.reviews/content/images/size/w2400/2025/06/IMG_20250614_193150939.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p>Sure enough, the food was ready &amp; waiting with not a hint of a problem.</p><p>If I were dishonest, I could have easily walked out having paid half the actual price - but after 5 years and numerous attempts to raise it with ZPos, I&apos;d had enough and decided to tell their client directly. &#xA0;After all, Napolis is a small local business and every penny matters.</p><p>They were clearly stunned to realise what had happened and despite offering full payment, they simply thanked me &amp; escalated it with ZPos. &#xA0;ZPos promised to call me back the following day. More on that later.</p><p>5 years, many thousands of orders and any of them could have been altered without the shop&apos;s knowledge. &#xA0;It stands to reason ZPos didn&apos;t know either... just how lax is their quality assurance process?</p><p>I can excuse the idiotic design - bad developers are a blight on the industry. &#xA0;I can even excuse the odd security flaw.</p><p>What I can&apos;t excuse however, is virtually every flaw in the book whilst purportedly being a &quot;super secure&quot;, security-conscious service.</p><h3 id="the-tofu-attack">The ToFu Attack</h3><p>I <a href="https://paul.reviews/tofu-attack-your-registration-flow-is-a-breach-waiting-to-happen/">wrote about this </a>back in 2021.</p><p>In short, a ToFu - or &quot;trust on first use&quot; attack is possible when a website accepts registrations from unverified email addresses.</p><p>The risk isn&apos;t obvious, at first. &#xA0;Think of it like the web-based equivalent of a supply chain attack; the ability to embed malicious payloads into an account and leverage any existing (or future!) vulnerabilities.</p><p>This works because:<br>a) Most sites don&apos;t send confirmation emails after registration<br>b) Even if they do, the victim hasn&apos;t registered and assumes it&apos;s spam - ignoring it.</p><p>The attacker simply registers with the victim&apos;s email address, a random password and buries the malicious payload. &#xA0;If/when the victim comes to order, the site will report an existing account and offer to reset the password. &#xA0;Once they do, the payload is executed and the damage is done.</p><p>It might seem far fetched - but I carried out this attack on Dropbox Passwords... copying the victim&apos;s &quot;recovery phrase&quot; which doesn&apos;t (or rather didn&apos;t) change when the password reset. &#xA0;Every password, payment card, website URL - everything fell into my lap moments later.</p><p>Don&apos;t trust, verify.</p><h3 id="reflected-stored-xss">Reflected &amp; stored XSS</h3><p>It appears ZPos has never heard of output encoding - as virtually every field is susceptible to an XSS attacks.</p><p>XSS or Cross-Site Scripting attacks allow an attacker to execute code in your browser; effectively taking control of the entire session and altering how the site works/looks.</p><p>During checkout, ZPos cheekily suggests your details are safe.</p><p>In reality, they&apos;ve gone to greater lengths to place a meaningless trust mark than actually secure the service.</p><p>Here, I embed code which alters that trust mark to make it more accurate.</p><figure class="kg-card kg-image-card"><a href="https://www.youtube.com/shorts/yX2Cd1XqCoY"><img src="https://paul.reviews/content/images/2025/06/xss-image.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="1328" height="1379" srcset="https://paul.reviews/content/images/size/w600/2025/06/xss-image.png 600w, https://paul.reviews/content/images/size/w1000/2025/06/xss-image.png 1000w, https://paul.reviews/content/images/2025/06/xss-image.png 1328w" sizes="(min-width: 720px) 720px"></a></figure><p>If this were a real attack, nothing would change visually... the attacker would slurp your data (including full payment card/CVV) and allow the order to proceed as normal.</p><p>I must remind you, it&apos;s been this way for 5 years.</p><p>If you&apos;ve seen strange activity on your card after purchasing from any ZPos powered website, there&apos;s a chance you&apos;ve been the victim of identity theft due to ZPos&apos; poor security posture.</p><h3 id="csrfcross-site-request-forgery">CSRF - Cross Site Request Forgery</h3><p>A CSRF attack allows an attacker to remotely execute commands, completely without your knowledge.</p><p>Here, I change the user&apos;s password from a completely different website.</p><figure class="kg-card kg-image-card"><a href="https://youtu.be/QDUZ6ks6zPU"><img src="https://paul.reviews/content/images/2025/06/csrf-image.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="1476" height="1460" srcset="https://paul.reviews/content/images/size/w600/2025/06/csrf-image.png 600w, https://paul.reviews/content/images/size/w1000/2025/06/csrf-image.png 1000w, https://paul.reviews/content/images/2025/06/csrf-image.png 1476w" sizes="(min-width: 720px) 720px"></a></figure><p>First, I changed the password field type to text - so you can see the information I&apos;ve entered. &#xA0;As you know, passwords are normally hidden with ***** to preserve privacy.</p><p>Then, I login with my actual password, which works as expected. &#xA0;Then, visiting another website, the attacker changes the user&apos;s password.</p><p><strong>Note:</strong> In this demo, the exploit is <strong>intentionally </strong>obvious to explain how it works. &#xA0;In reality, this would happen silently &amp; invisibly to the user. &#xA0;No user action required - just browsing the web as usual. &#xA0;This is identical to the <a href="https://paul.reviews/identity-theft-payment-fraud-thats-asda-price/">ASDA/Walmart attack</a> from 2014.</p><p>When the user next tries to login, the password has been changed.</p><p>Like the ToFu attack earlier, the attacker is now able to login as the user - grabbing personal information, order history, telephone numbers, addresses and crucially, embedding a malicious payload to later grab the customer&apos;s payment info.</p><p>Again, all of this is transparent to the victim. &#xA0;You won&apos;t know the site has been manipulated - neither will ZPos - but I can guarantee, your payment details will either be used or sold shortly thereafter.</p><p>If it&apos;s days/weeks later, would you put two and two together? Probably not.</p><h3 id="set-your-own-discounts">Set your own discounts!</h3><p>In many ways, this is similar to setting your own pricing - but instead, setting your own &quot;points&quot; limit. &#xA0;This way, the price remains the same to the affected company and it simply appears the customer has valid points to use.</p><p>They&apos;re unlikely to spot the order anyway, as I mentioned earlier - but now with accurate prices, it&apos;s almost certain to fly under the radar.</p><h3 id="no-security-headers-literally-none">No security headers, literally none.</h3><p>This is one of the most basic (but most useful) security steps they could take, but don&apos;t.</p><p>No security policies, no reporting, no frame limitations... basically, anything goes.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2025/06/securityheaders.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="1233" height="1039" srcset="https://paul.reviews/content/images/size/w600/2025/06/securityheaders.png 600w, https://paul.reviews/content/images/size/w1000/2025/06/securityheaders.png 1000w, https://paul.reviews/content/images/2025/06/securityheaders.png 1233w" sizes="(min-width: 720px) 720px"></figure><h3 id="outdated-dependencies">Outdated Dependencies</h3><p>Fixing bugs &amp; applying security fixes should be an integral part of any business.</p><p>Sadly, ZPos is so antiquated, their entire ecosystem looks to be hanging by a thread. &#xA0;Their caller ID uses Visual Basic 6 - which went &quot;end of life&quot; in 2008! &#xA0;Not inherently insecure, but certainly legacy and decidedly crusty.</p><h3 id="passwords-are-reset-to-6-random-numbers">Passwords are reset to 6 &quot;random&quot; numbers</h3><p>Even if you picked a reasonably safe &amp; secure password, an attacker can reset it to 6 random numbers.</p><p>So, if our attacker (or rather their PC) can count to 1 million, <strong>every </strong>account is accessible in just a few minutes.</p><p>Another idiotic design choice.</p><h3 id="passwords-emailed-to-the-user">Passwords emailed to the user</h3><p>If the user subsequently changes their &quot;reset&quot; password (the above 6 digit number), ZPos used to email the entire password in plain text. &#xA0;Thankfully, they now redact all but the first &amp; last character.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2025/06/password-redacted.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="796" height="155" srcset="https://paul.reviews/content/images/size/w600/2025/06/password-redacted.png 600w, https://paul.reviews/content/images/2025/06/password-redacted.png 796w" sizes="(min-width: 720px) 720px"></figure><p>This is not only unnecessary, but significantly weakens the password.</p><p>If we compare this email with another password reset, can you spot the problem?</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2025/06/password-redacted2.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="800" height="151" srcset="https://paul.reviews/content/images/size/w600/2025/06/password-redacted2.png 600w, https://paul.reviews/content/images/2025/06/password-redacted2.png 800w" sizes="(min-width: 720px) 720px"></figure><p>Not only is the length of the password leaked, but an attacker knows the first &amp; last character.</p><h3 id="responsible-disclosure">Responsible disclosure</h3><p>I contacted ZPos the day it started, way back in 2020.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2025/06/firsttweet.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="590" height="190"></figure><p>After 5 days, I sent an email too... which they clearly received.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2025/06/zpos-email.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="877" height="1006" srcset="https://paul.reviews/content/images/size/w600/2025/06/zpos-email.png 600w, https://paul.reviews/content/images/2025/06/zpos-email.png 877w" sizes="(min-width: 720px) 720px"></figure><p>Again, no reply whatsoever.</p><p>4 years later, I tried again.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2025/06/tweet4years.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="588" height="157"></figure><p>Still no response. &#xA0;2 emails, 1 contact form submission (and auto reply) and several tweets, they clearly weren&apos;t interested.</p><p>Another year goes by, so I tried again.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2025/06/tweet5years.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="586" height="353"></figure><p>At this point, it&apos;s clearly not a priority... which prompted my disclosure to their client, Napolis Pizza.</p><p>As you heard earlier, they promised to call back the following day. &#xA0;Willing to give them another chance to come good, I waited...</p><p>24hrs later, having had no phone call, I notified Napolis of my intention to publish and report to the ICO - my patience had finally expired.</p><p>Napolis then contacted ZPos again. &#xA0;At which point, I received an email...</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2025/06/zpos-reply1.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="1411" height="1091" srcset="https://paul.reviews/content/images/size/w600/2025/06/zpos-reply1.png 600w, https://paul.reviews/content/images/size/w1000/2025/06/zpos-reply1.png 1000w, https://paul.reviews/content/images/2025/06/zpos-reply1.png 1411w" sizes="(min-width: 720px) 720px"></figure><p>Research projects take <strong>considerable </strong>time &amp; effort - extending well beyond the initial findings. &#xA0;The ultimate goal is (and always is) to protect the end user - people like you and me - that use these sites daily and assume they&apos;re safe. &#xA0;The fastest route to resolution is nearly always contacting the firm directly.</p><p>If a company has shown willing to engage, I&apos;ll invest whatever time is necessary to assist. &#xA0;If they appear apathetic, the next logical step is to notify the public directly.</p><p>I replied...</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2025/06/lastemail.png" class="kg-image" alt="The shocking state of ZPos: Order takeaway &amp; pay what you like." loading="lazy" width="1537" height="1770" srcset="https://paul.reviews/content/images/size/w600/2025/06/lastemail.png 600w, https://paul.reviews/content/images/size/w1000/2025/06/lastemail.png 1000w, https://paul.reviews/content/images/2025/06/lastemail.png 1537w" sizes="(min-width: 720px) 720px"></figure><p>By this point, I&apos;ve already written this article and proofed it (cue someone spotting a typo I&apos;ve missed), so the thought of spending yet more time to explain the situation is demoralizing... especially when they&apos;ve only got in touch after their customer complained - twice.</p><p>To add insult to injury, they gave the typical &quot;we take it seriously&quot; nonsense... and say they want to address these issues &quot;quickly and thoroughly&quot;. &#xA0;I&apos;m not sure 5 years constitutes &quot;quickly&quot;, but disclosure is rarely a quick &amp; simple process... so against my better judgement, I agreed to a call.</p><p>That was last night. &#xA0;It&apos;s now 4PM the following day - no reply, no call and the sites are still live.</p><h3 id="final-thoughts">Final thoughts:</h3><p>ZPos is remarkably similar to <a href="https://paul.reviews/tiffin-tom-fish-chips-and-a-side-of-identity-theft/">TiffinTom </a>- another EPOS firm which had little regard for the user&apos;s security/privacy. &#xA0;Unlike ZPos, they at least replied - but disputed everything despite quietly trying to fix it. &#xA0;They closed shortly after.</p><p>I hope the same isn&apos;t true for ZPos - they have staff, families, mortgages etc. &#xA0;But, so do we. &#xA0;Having your identity stolen is a brutal &amp; humbling experience; the impact from which is often felt for many years. &#xA0;Ask any <a href="https://paul.reviews/value-security-avoid-talktalk/">TalkTalk </a>victim.</p><p>Some may place blame with Napolis here - and whilst they could have paid to have it audited, how many small firms are in a position to do that? &#xA0;Instead, they understandably outsource &amp; trust a supposed leader in this industry... and I can&apos;t find fault in that. &#xA0;Napolis were not only quick to respond, but actively chased ZPos when their concerns weren&apos;t actioned.</p><p>As I mentioned to Napolis&apos; Director, these things happen. &#xA0;What matters is how you respond. &#xA0;Some go quiet, others go legal (ignoring the Streisand Effect entirely) and if they ignore valid concerns for long enough, some go under. &#xA0;That said, it&apos;s entirely possible to recover by putting policies and procedures in place to not only prevent future vulnerabilities, but engage with people trying improve your platform.</p><p>If you&apos;re affected, as a client of ZPos or customer of one of their clients, get in touch.</p>]]></content:encoded></item><item><title><![CDATA[Tiffin Tom: Fish, chips and a side of identity theft]]></title><description><![CDATA[Apart from leaking everything, there's been "no breech".

Avoid Tiffin Tom.]]></description><link>https://paul.reviews/tiffin-tom-fish-chips-and-a-side-of-identity-theft/</link><guid isPermaLink="false">64a03b81544e27055e25e2ae</guid><category><![CDATA[tiffintom]]></category><category><![CDATA[data]]></category><category><![CDATA[aes256]]></category><category><![CDATA[authentication]]></category><category><![CDATA[breach]]></category><category><![CDATA[credit card]]></category><category><![CDATA[cross site request forgery]]></category><category><![CDATA[hacking]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Sat, 01 Jul 2023 17:44:03 GMT</pubDate><media:content url="https://paul.reviews/content/images/2023/07/1.png" medium="image"/><content:encoded><![CDATA[<img src="https://paul.reviews/content/images/2023/07/1.png" alt="Tiffin Tom: Fish, chips and a side of identity theft"><p>Fish &amp; chips?</p><p>Such an innocuous phrase which should have led to an evening in front of the TV with the better half. &#xA0;Instead, a nightmare ensued; endlessly contacting several local eateries to alert them to a very serious problem.</p><p>Tiffin Tom is a &quot;Just Eat&quot; style, online food ordering service with hundreds of local businesses. &#xA0;Just enter your postcode and a world of artery-clogging yet convenient food awaits.</p><p>Unfortunately, it&apos;s also a sure-fire way to have your identity &amp; payment information stolen - very, very quickly indeed.</p><p>After Googling my local Parkhill Fish Bar, <a href="https://parkhillfishbar.co.uk/">https://parkhillfishbar.co.uk/</a> appears as the first result. &#xA0;I began adding items to my basket before the site asks me to register.<br><br><strong>Note:</strong> As Parkhill Fish Bar took immediate action and requested the site be taken down on the day I notified them, the images used throughout this article will show another company, Major Curry Affair, who I also notified. &#xA0;Their site remains live.</p><h2 id="pandoras-box">Pandora&apos;s Box</h2><p>Before you order, the site makes a database lookup to get the takeaway&apos;s details; opening hours, minimum order values, service area etc.</p><p>It returns data like this:</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://paul.reviews/content/images/2023/07/image-2.png" class="kg-image" alt="Tiffin Tom: Fish, chips and a side of identity theft" loading="lazy" width="672" height="401" srcset="https://paul.reviews/content/images/size/w600/2023/07/image-2.png 600w, https://paul.reviews/content/images/2023/07/image-2.png 672w"></figure><p>Nothing wrong so far... until you scroll down.</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://paul.reviews/content/images/2023/07/image-1.png" class="kg-image" alt="Tiffin Tom: Fish, chips and a side of identity theft" loading="lazy" width="842" height="1422" srcset="https://paul.reviews/content/images/size/w600/2023/07/image-1.png 600w, https://paul.reviews/content/images/2023/07/image-1.png 842w"></figure><p>Let me make sense of that for you...</p><p>I asked to register. &#xA0;Instead, Tiffin Tom gave me full, unfettered access to their Google, Firebase, Facebook, Twitter, MailChimp, Text Magic, Click Send, Pusher, Email, PayPal &amp; Stripe payment accounts!</p><p>You&apos;d be forgiven for thinking, they&apos;re obviously fake, outdated or canaries, right?</p><p>A quick call to Stripe&apos;s API confirms... I&apos;m their latest customer.</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://paul.reviews/content/images/2023/07/image-3.png" class="kg-image" alt="Tiffin Tom: Fish, chips and a side of identity theft" loading="lazy" width="323" height="456"></figure><p>Sure enough, every single credential is live, working and leaking every single piece of customer information.</p><p>Full names, addresses, email addresses, phone numbers, order history, payment information including card data... literally everything you hand over is visible to the public.</p><h2 id="ignorance-is-bliss">Ignorance is bliss.</h2><p>It&apos;s been a while since I&apos;ve seen an application do something so blatantly stupid &amp; dangerous - not since Police CyberAlarm in fact, when they returned user passwords in plain text.</p><p>At this point, I obviously didn&apos;t place an order and immediately visited Parkhill. &#xA0;Parkhill&apos;s our local and whilst we don&apos;t visit often, it&apos;s always our go-to place for fish &amp; chips, so I already knew Baljinder, the owner.</p><p>Once I&apos;d outlined the issue to Bal, he promptly called Jamal Ahmed, the &quot;Director&quot; of Tiffin Tom Ltd.<br><br><strong>Note:</strong> I&apos;ve put Director in quotes, for reasons I&apos;ll explain shortly.</p><p>Bal explained &amp; relayed the information to Jamal, but we eventually ended up on speakerphone, during which I explained the entire system was exposed, Stripe keys were breached and everything should be taken offline immediately. &#xA0;His immediate response was &quot;we&apos;ve not been breached&quot;, a line he continues to repeat to every business I&apos;ve notified.</p><p>However, he promised to take Parkhill offline and remove their data. &#xA0;I also agreed to email &amp; call the following day with more concrete information.</p><h2 id="the-fix">The &quot;fix&quot;</h2><p>The following day, I started pulling the rest of the service apart. &#xA0;However, during a mandatory due diligence period, I noticed something odd at Companies House.</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://paul.reviews/content/images/2023/07/image-5.png" class="kg-image" alt="Tiffin Tom: Fish, chips and a side of identity theft" loading="lazy" width="1273" height="1575" srcset="https://paul.reviews/content/images/size/w600/2023/07/image-5.png 600w, https://paul.reviews/content/images/size/w1000/2023/07/image-5.png 1000w, https://paul.reviews/content/images/2023/07/image-5.png 1273w"></figure><p>What?! No Directors whatsoever?</p><p>Jamal resigned in July 2022 - meaning the company has been &quot;trading&quot; illegally ever since. &#xA0;It&apos;s probably why Companies House have tried to strike off the company - that and a lack of accounts/confirmation statement, but someone&apos;s lodged an objection, so the company remains active with no leadership.</p><h3 id="curve-ball">Curve ball</h3><p>This is a situation I&apos;ve never faced before.</p><p>Normally, I&apos;d hand over all the supporting evidence to the company and let them resolve it. &#xA0;Now however, I can&apos;t - legally at least - because Jamal is no longer the Director he purports to be.</p><p>A quick call to the ICO and they too are equally stumped; asking me to forward a complaint but with no guarantee of any action because of the unique circumstances.</p><p>One thing was for sure however... the businesses using Tiffin Tom were still liable for sizeable fines, something I&apos;m trying to avoid.</p><p>Anyway, I digress... let&apos;s move on to the &quot;fix&quot;.</p><p>Despite claiming (and continuing to claim) there has been no breach, Jamal did admit he&apos;d &quot;found a few things&quot; which his developers were fixing.</p><p>A few days later, the database call which prompted this mess changed significantly.</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://paul.reviews/content/images/2023/07/image-6.png" class="kg-image" alt="Tiffin Tom: Fish, chips and a side of identity theft" loading="lazy" width="1453" height="1450" srcset="https://paul.reviews/content/images/size/w600/2023/07/image-6.png 600w, https://paul.reviews/content/images/size/w1000/2023/07/image-6.png 1000w, https://paul.reviews/content/images/2023/07/image-6.png 1453w"></figure><p>They&apos;ve clearly found and discussed the problem (keep in mind, I didn&apos;t tell them where it was) - but their &quot;solution&quot; is equally as pathetic as the site itself.</p><p>Instead of returning the critically-sensitive details in plain text, they&apos;ve encrypted it. &#xA0;However, the astute amongst you will have already surmised... if the site is decrypting the results to populate forms/javascript, the encryption key must be accessible in the DOM.</p><p>Sure enough...</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://paul.reviews/content/images/2023/07/image-7.png" class="kg-image" alt="Tiffin Tom: Fish, chips and a side of identity theft" loading="lazy" width="550" height="423"></figure><p>Decrypting the data is as simple as Googling &quot;aes decrypt&quot;</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://paul.reviews/content/images/2023/07/image-8.png" class="kg-image" alt="Tiffin Tom: Fish, chips and a side of identity theft" loading="lazy" width="1326" height="1626" srcset="https://paul.reviews/content/images/size/w600/2023/07/image-8.png 600w, https://paul.reviews/content/images/size/w1000/2023/07/image-8.png 1000w, https://paul.reviews/content/images/2023/07/image-8.png 1326w"></figure><p>Sigh.</p><p>OK, they tried... but not particularly hard. &#xA0;They didn&apos;t even change the exposed secret keys! &#xA0;They&apos;ve just encrypted the existing, leaked keys - then told customers there&apos;s been no breach!</p><p>I rarely get angry, but this piss-poor effort continues to place 21,000 customers at immediate, demonstrable risk and instead of holding their hands up, apologizing and making a reasonably-competent effort to fix it... they&apos;ve lied &amp; covered it up.</p><p>Now, Jamal told Parkhill that his site was offline (confirmed) and his data had been removed. &#xA0;That however, is a lie too.</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://paul.reviews/content/images/2023/07/image-9.png" class="kg-image" alt="Tiffin Tom: Fish, chips and a side of identity theft" loading="lazy" width="1442" height="1006" srcset="https://paul.reviews/content/images/size/w600/2023/07/image-9.png 600w, https://paul.reviews/content/images/size/w1000/2023/07/image-9.png 1000w, https://paul.reviews/content/images/2023/07/image-9.png 1442w"></figure><p>Instead of doing what was legally required, Tiffin Tom have simply hidden Parkhill from search results.</p><p>All the PII &amp; payment data - which places Parkhill and countless other businesses at risk of huge fines - <strong>still</strong> remains in the database.</p><h2 id="tip-of-the-iceberg">Tip of the iceberg</h2><p>Believe me when I tell you, this is merely the tip of the iceberg.</p><p>The site is festooned with the most rudimentary of security flaws; stored XSS, CSRF, iDOR, broken authentication, session hijacking - it&apos;s a perfect little CTF competition masquerading as a business.</p><p>Did I mention, they offer debit cards &amp; payment machines too?</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://paul.reviews/content/images/2023/07/image-10.png" class="kg-image" alt="Tiffin Tom: Fish, chips and a side of identity theft" loading="lazy" width="875" height="385" srcset="https://paul.reviews/content/images/size/w600/2023/07/image-10.png 600w, https://paul.reviews/content/images/2023/07/image-10.png 875w"></figure><h2 id="more-denials">More denials...</h2><p>After finishing my research, I notified Bal @ Parkhill of the further findings, prompting him to contact Jamal again.</p><p>His response, as of the 28th June 2023.</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://paul.reviews/content/images/2023/07/image_20230701182052.jpg" class="kg-image" alt="Tiffin Tom: Fish, chips and a side of identity theft" loading="lazy" width="955" height="2048" srcset="https://paul.reviews/content/images/size/w600/2023/07/image_20230701182052.jpg 600w, https://paul.reviews/content/images/2023/07/image_20230701182052.jpg 955w"></figure><h2 id="summary">Summary</h2><p>I&apos;ve researched some pretty egregious sites in the past but this one... it takes some beating.</p><p>If you value your business, your customer&apos;s data or simply want to avoid a colossal fine from the Information Commissioner&apos;s Office, avoid Tiffin Tom/Ubsidi/Nibs Solutions at all costs.</p><p>Ya know the worst part? After explaining all this, my chips were cold. Oh, the humanity.</p><h3 id="faqs">FAQs</h3><p>1) &#xA0;I run a business and have a Tiffin Tom account. What should I do?<br>a) &#xA0;Notify Tiffin Tom Ltd immediately and request the full &amp; immediate deletion of every record associated with your business, but <em>not</em> before requesting a copy of all logs - as you&apos;ll likely need them for any ICO investigation. &#xA0;Technically, there&apos;s nobody steering the ship - even legal action won&apos;t help, but you may get results.</p><p>2) What if Tiffin Tom doesn&apos;t respond, or refute this?<br>a) &#xA0;Legally, there&apos;s nobody to respond. &#xA0;Jamal had been very receptive, but clearly doesn&apos;t understand the risk of running a Ltd company in breach of CA 2006.</p><p>3) &#xA0;I&apos;ve placed an order with a takeaway, am I affected?<br>a) &#xA0;If they use Tiffin Tom, almost certainly. &#xA0;Look for &quot;copyrights tiffintom&quot; in the footer. &#xA0;If you&apos;re concerned your details may have been exposed, please contact me privately. &#xA0;In any event, your payment details should be considered compromised and you should cancel your cards.</p>]]></content:encoded></item><item><title><![CDATA[Police CyberAlarm: Abysmal security, yet again.]]></title><description><![CDATA[3 attempts, 3 complete failures.  Incredibly, cyberAlarm is now even worse than before.]]></description><link>https://paul.reviews/police-cyberalarm-abysmal-security-yet-again/</link><guid isPermaLink="false">6251663e33e32e0f420ff6d0</guid><category><![CDATA[security]]></category><category><![CDATA[cyberalarm]]></category><category><![CDATA[police]]></category><category><![CDATA[default passwords]]></category><category><![CDATA[sha256]]></category><category><![CDATA[xss]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Tue, 19 Apr 2022 06:06:42 GMT</pubDate><media:content url="https://paul.reviews/content/images/2022/04/small-4.png" medium="image"/><content:encoded><![CDATA[<img src="https://paul.reviews/content/images/2022/04/small-4.png" alt="Police CyberAlarm: Abysmal security, yet again."><p>18 months ago, I reviewed two versions of Police CyberAlarm; their <a href="https://paul.reviews/cyberalarm-an-independent-security-review-and-why-you-should-avoid-it/">pre-release &quot;development tool&quot;</a> and a <a href="https://paul.reviews/cyberalarm-testing-the-production-version-and-why-you-should-avoid-it/">production variant</a>.</p><p>After many hours of reviewing some of the worst code I&apos;d seen in quite a while, I reached two conclusions.</p><p>1) cyberAlarm is woefully insecure<br>2) Pervade, the developer responsible, were incompetent</p><p>If you&apos;ve followed this saga, you may recall I responsibly disclosed everything to the NPCC and Pervade. &#xA0;However, their responses were both defensive &amp; dismissive; to the extent of telling the public I&apos;d reviewed the wrong product entirely and my claims were &quot;completely untrue&quot;</p><p>Until recently, that was the official line to anyone who raised my initial review during webinars/support calls.</p><p>Thankfully, that ends today.</p><p>Over the last 18 months, I&apos;ve received a steady stream of emails/DMs from users/EDUs/firms, many of whom were rightly concerned about what they&apos;d read.</p><p>In February, a network admin from a local School reached out, asking me to audit cyberAlarm again. &#xA0;Unfortunately, time &amp; COVID had other ideas... forcing us to wait until March 16th before we could exchange files/details.</p><h2 id="march-16th-3-15pm">March 16th 3.15PM</h2><p>I received the files and fired up the virtual machine.</p><p>Once again, the files are Ioncube encoded to &quot;hide&quot; the contents - which took all of an hour to reverse. &#xA0;I began looking through the decoded files, instantly spotting several critical flaws.</p><p>Over the next couple of hours, I created a list of serious issues which Pervade, Prism Infosec &amp; Arcanum Cyber Security have supposedly missed.</p><p>Let&apos;s dive in.</p><h2 id="insecure-passwords">Insecure Passwords</h2><p>You may recall that I notified NPCC/Pervade back in 2020 that SHA256 wasn&apos;t secure or appropriate for password storage.</p><p>So, 18 months later... is it any better?</p><p>Well, locally stored passwords are still hashed with unsalted SHA256... but incredibly, Pervade have actually made it worse.</p><p>A logic flaw in &quot;index.php&quot; means passwords are actually sent to <strong>AND RETURNED FROM</strong> the central API in plain text! &#xA0;This isn&apos;t an API running on the data collector either - it&apos;s centrally operated at <a href="https://collectors.cyberalarm.police.uk/OPVIEW/API">https://collectors.cyberalarm.police.uk/OPVIEW/API</a></p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2022/04/passwordRaw-1.png" class="kg-image" alt="Police CyberAlarm: Abysmal security, yet again." loading="lazy" width="403" height="185"></figure><p>Above is a <strong>response </strong>from an API call to fetch a user&apos;s details. &#xA0;You&apos;re not obliged to set a password on the data collector, but even if you do, an attacker can simply request it from the API.</p><h2 id="insecure-session-tokens">Insecure Session Tokens</h2><p>Before a cyberAlarm data collector carries out any request, it checks to see if a session variable exists... called &quot;token&quot;.</p><p>If it doesn&apos;t exist, it creates one and attaches it to the user&apos;s session. &#xA0;Here&apos;s the snippet of code responsible...</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2022/04/sessiontoken1.png" class="kg-image" alt="Police CyberAlarm: Abysmal security, yet again." loading="lazy"></figure><p>The token is created using two PHP functions.</p><p>1) &#xA0;&quot;time&quot; returns the number of seconds since the Unix Epoch (Jan 1 1970)<br>2) &quot;rand&quot; returns a <em>random </em>number between &amp; including 1000 and 9999</p><p>Spotted the problem yet?</p><p>Any attacker can remotely control the box if they know the current time and can count to 9,000! Must. Not. Insert. Meme.</p><p>https://datacollectorIP/?token=16478839932011<br>https://datacollectorIP/?token=16478839932012<br>https://datacollectorIP/?token=16478839932013<br>https://datacollectorIP/?token=16478839932014</p><p>&#x2026; and so on. &#xA0;As with password brute force attacks, we rarely need to search the entire space for the correct token. &#xA0;In reality, we often see a successful response after just 50% or 4,500 requests. &#xA0;To a local endpoint, this takes around 2.5 seconds to complete.</p><p>The logic which checks the token&apos;s validity looks like so...</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2022/04/sessiontoken2.png" class="kg-image" alt="Police CyberAlarm: Abysmal security, yet again." loading="lazy"></figure><p>So if the token doesn&apos;t exist or doesn&apos;t match, &quot;exit&quot; the PHP application immediately. &#xA0;Don&apos;t worry about writing it to a log or limiting further requests... just abort and let the attacker try again. Sigh.</p><p>In short, cyberAlarm can withstand an attack for a maximum of <strong>5 seconds</strong>.</p><p>But who&apos;s got 5 seconds to XSRF a data collector, I hear you cry? &#xA0;Ain&apos;t nobody got time for that.</p><p>Let&apos;s just ask the API to do it instead!</p><h2 id="unauthenticated-api">Unauthenticated API</h2><p>You read that right.</p><p>The central API has no authentication whatsoever!</p><p>Want a customer&apos;s records? Sure.</p><p>Make a GET request with the data collector&apos;s ID and it just hands it over.</p><!--kg-card-begin: markdown--><p><a href="https://paul.reviews/content/images/2022/04/api-rawdata-1.gif"><img src="https://paul.reviews/content/images/2022/04/api-rawdata-1.gif" alt="Police CyberAlarm: Abysmal security, yet again." loading="lazy"></a></p>
<!--kg-card-end: markdown--><p>Names, email addresses, the aforementioned plain-text password, telephone numbers, timestamps, which IPs they scan, how often they&apos;re scanned... basically everything you&apos;ve entered into the data collector.</p><p>But that&apos;s a GET request... what if we POST with the same JSON? &#xA0;Surely we can&apos;t update a record without authentication?!</p><p>Of course we can! &#xA0;Give it the data collector&apos;s ID (it&apos;s the primary key, for those who understand databases) and the central API updates the record.</p><p>To make matters worse, these changes are then sent to the data collector (including the password!).</p><p>So, what can we do with such limitless access?</p><p>1) <strong>Redirect monthly vulnerability reports to the attacker</strong><br>An attacker can now set the &quot;reportingEmail&quot; address, so if cyberAlarm does detect a 0 day, the attacker is the first to know.<br><br>2) <strong>Set someone else&apos;s scan IP!</strong><br>An attacker can also manipulate which IPs are scanned for vulns. &#xA0;That&apos;ll make for an awkward discussion when an NPCC/Pervade server starts scanning another gov&apos;t agency ;)</p><p>What&apos;s stopping an attacker from entering your competitors IP instead? &#xA0;NPCC/Pervade will almost certainly breach the Computer Misuse Act by actively testing for 0 days without consent of the owner... and the data collector&apos;s admin isn&apos;t the owner.<br><br>3) <strong>Download any/all reports</strong><br>Somewhat unsurprisingly at this point, it&apos;s also possible to download any PDF report for any data collector, without authentication.</p><p>What better way to increase your risk significantly than to hand your attackers a list of vulnerabilities!</p><h2 id="no-xsrf-protection">No XSRF protection</h2><p>Echoing my 2020 article, cyberAlarm still has no adequate XSRF protection... allowing an attacker to remotely breach/control any CA installation.</p><p>Of course, nobody is likely to bother with this <em>slightly </em>more difficult attack while the API is so willing to comply... but after 18 months, I hoped it&apos;d be safer now.</p><h2 id="passwords-aren-t-timing-safe">Passwords aren&apos;t timing safe</h2><p>At this point, any hopes of a safe &amp; secure authentication scheme are long gone.</p><p>However, if you&apos;re going to compare two password hashes, it&apos;s vital to compare them using a timing-sensitive comparison.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2022/04/passwordtiming.png" class="kg-image" alt="Police CyberAlarm: Abysmal security, yet again." loading="lazy"></figure><p>Rookie mistake #3,251,901.</p><p>As Pervade use a direct string comparison, it&apos;s possible to leverage the metadata of a failure (here, the time it takes to fail) to work your way closer to the real credential. &#xA0;PHP created &quot;hash_equals&quot; for a reason.</p><h2 id="broken-crypto-again-">Broken crypto, AGAIN!</h2><p>Here&apos;s a code snippet showing how Pervade &quot;encrypt&quot; your data.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2022/04/encrypt.png" class="kg-image" alt="Police CyberAlarm: Abysmal security, yet again." loading="lazy"></figure><p>If you understand cryptography, you&apos;re likely shaking your head in disbelief right now.</p><p>You see, Pervade&apos;s limited grasp of security/cryptography throughout the entire app leads us to an inevitable issue here. &#xA0;The use of AES-256-CBC isn&apos;t an issue in itself; it&apos;s entirely possible to deploy CBC safely &amp; effectively.</p><p>Unfortunately, Pervade has made a complete hash of it.</p><p>After you&apos;ve encrypted your super sensitive message, it&apos;s <strong>absolutely imperative</strong> to add an HMAC or Hash-based Message Authentication Code. &#xA0;The HMAC allows the recipient (the central collector, in this context) to verify the authenticity of the message, as it&apos;s possible to manipulate ciphertext whilst in transit. &#xA0;This is a well-known/understood attack called CBC bit flipping. &#xA0;Without it, you <strong>can&apos;t</strong> rely on the authenticity of the data and as such, it should be discarded.</p><p>It&apos;s 2022. &#xA0;It&apos;s reasonable to expect Pervade to have use a modern AEAD cipher; something which supports authenticity checks natively... but for whatever reason (lack of knowledge, perhaps?), they&apos;ve tried to roll their own crypto; breaking the cardinal rule of cryptography.</p><p>There are only two possible outcomes here. Broken... and very broken. &#xA0;Guess which category Pervade&apos;s code falls into? ;)</p><h3 id="rolled-their-own-they-ve-used-php-functions-">Rolled their own? They&apos;ve used PHP functions!</h3><p>At first glance, you might think that&apos;s a reasonable counter-argument... but let me explain why it&apos;s not.</p><p>There are countless crypto libraries out there... many peer-reviewed &amp; trusted. &#xA0;Pervade may have used the same underlying functions, but they&apos;ve done so in a way which falls right into the hands of an attacker.</p><p>The devil is in the detail.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2022/04/iv.png" class="kg-image" alt="Police CyberAlarm: Abysmal security, yet again." loading="lazy"></figure><p>This line sets the initialisation vector - a crucial step in the encryption process.</p><p>There are two functions, one nested.</p><p>1) openssl_cipher_iv_length<br>2) openssl_random_pseudo_bytes</p><p>#1 returns the length (in bytes) for the given cipher, <strong>or false</strong><br>#2 returns random bytes of the given length, <strong>or false</strong></p><p>I emphasise &quot;or false&quot; because it&apos;s equally vital to ensure the data is as you expect. &#xA0;Whilst #1 can fatally fail (resulting in a crash here), #2 can fail with a warning (which are turned off) but PHP still encrypts the value... with the $iv as false.</p><p>What happens when the $iv is false? &#xA0;Every single record is encrypted using a static key and no IV! Great!</p><h2 id="introducing-owasp-the-open-web-application-security-project">Introducing OWASP - The Open Web Application Security Project</h2><p>Web developers often build applications mindful of the OWASP Top 10 - a list of common vulnerabilities collected from multiple sources.</p><p>For 2021, the top 10 looked like this...</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2022/04/owasp-top10-list-2021-debricked-100-768x256.jpg" class="kg-image" alt="Police CyberAlarm: Abysmal security, yet again." loading="lazy"></figure><p>Keep in mind the scale of the cyberAlarm&apos;s data collector.</p><p>It&apos;s a single HTML form &quot;protected&quot; by a login page, with a spec-driven data collector bolted on. &#xA0;It&apos;s about as simple as it gets. &#xA0;Almost incredibly, Pervade has managed a solid 9/10 categories - and a straight 10 if we include flaws from 18 months ago.</p><p>In my view, there are only two ways to describe such an app. &#xA0;Woefully insecure... or a CTF competition. &#xA0;Seriously, this would make a great capture the flag application for rookies looking to cut their teeth. &#xA0;I make that distinction for a reason; these really are rookie-level issues made by a firm I can demonstrate are devoid of a clue.</p><h2 id="speaking-of-ctfs">Speaking of CTFs</h2><p>It&apos;s all well &amp; good endlessly parroting that Pervade are clueless, but that&apos;s an opinion based on their code. &#xA0;So, I set out to prove myself wrong. &#xA0;I joined their Cyber Wales CTF Cluster webinar, hosted by John &amp; Jason of Pervade.</p><p>This webinar from April 2021 is intended to teach viewers how to defeat XSS attacks. &#xA0;Unfortunately, it&apos;s one of the most tortuous &amp; mind-numbingly misinformed webinars I&apos;ve ever witnessed.</p><p>It&apos;s an hour and 15 minutes long but it really is hand-bitingly awful to watch; demonstrating a total lack of understanding of XSS and various other bits.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/rXhtuZYfn44?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><p>Don&apos;t have an hour? &#xA0;Let me break it down for you.<br><br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=779s">12:59</a> - John (Director at Pervade, &quot;joking&quot; that he&apos;d alter a pen test report so basic flaws like this wouldn&apos;t appear - many a true word....)<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=850s">14:10</a> - Lacks basic understanding of IFRAMEs. &#xA0;Tries to load sites on the wrong protocol &amp; sites which expressly prohibit framing with CSP (bbc, google etc).<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=1800s">30:00</a> - Literally clueless. &#xA0;Seems to think javascript won&apos;t execute after a page has loaded, so &quot;no dynamic stuff&quot;.<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=1860s">31:00</a> - Seems to think this XSS attack is happening &quot;server side&quot; and because it is, we can now &quot;insert code which does something&quot;<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=1884s">31:24</a> - This isn&apos;t being &quot;executed&quot; by the server, what is he talking about?<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=1923s">32:03</a> - Genuinely believes a client-side language is being executed on the server. &#xA0;Is PHP node now?<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=2005s">33:25</a> - Just throw &quot;htmlspecialchars&quot; at everything - job done. &#xA0;Forget quotes, forget context - but at least he&apos;s doing it on output.<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=2047s">34:07</a> - Immediately renders the fix useless by running it against the inputs, not the output. &#xA0;<strong>This demonstrates a fundamental lack of understanding.</strong><br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=2073s">34:33</a> - Oh good lord, they&apos;re using the same technique for SQL injection mitigation! </p><h3 id="advanced-but-equally-stupid-ineffective-bits">ADVANCED (BUT EQUALLY STUPID/INEFFECTIVE) BITS</h3><p><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=2115s">35:15</a> - Using regex (preg_match) to find &quot;the bad characters&quot;. &#xA0;Bad characters in what context? &#xA0;Again, missing the point entirely.<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=2290s">38:10</a> - &quot;Sanitize our inputs so it can&apos;t do anything dangerous to us&quot; - Sigh<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=2312s">38:32</a> - &quot;We can also replace the bad characters&quot; - This guy is the Director of Pervade, a &quot;professional&quot; company which provides apps for the Police, NHS etc. &#xA0;Think about that for a moment.<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=2415s">40:15</a> - Demonstrating a &quot;stored XSS&quot; attack - with fails aplenty.<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=2820s">47:00</a> - &quot;You can do that on any page on the planet. &#xA0;There&apos;s actually no way for me to stop you doing that&quot; (referring to inline XSS). &#xA0;Again, fundamental lack of understanding of basic security controls. &#xA0;A CSP (Content Security Policy) header is literally designed to protect against attacks like this, but it&apos;s the same CSP he couldn&apos;t figure out whilst trying to embed an IFRAME earlier.<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=2935s">48:55</a> - Genuinely seems to think he has to alter his code syntax to allow different inputs.<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=3208s">53:28</a> - Me asking him to demonstrate how to protect against XSS in his own code - he REMOVES THE BAD CHARACTERS! Writes software for Police/NHS remember! <br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=3373s">56:13</a> - &quot;To secure it, once again, it&apos;s one word - same as SQL injection&quot; - Christ above. &#xA0;I give up.<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=3930s">1:05:30</a> - I ask him to explain how an application which requires characters which allow XSS, can protect against it. &#xA0;He goes on to explain nested ifs, database calls etc. &#xA0;An IF statement for every possible input - seems scalable!<br><a href="https://www.youtube.com/watch?v=rXhtuZYfn44&amp;t=4190s">1:09:50</a> - A glimmer of hope - &quot;You can actually do this on the other side&quot; - Referencing output encoding, which is actually how it should have been done an hour ago.</p><p>This video (along with several others) is definitive proof, straight from the horses mouth, that Pervade fundamentally do not understand secure coding practices. &#xA0;The issues I&apos;ve identified here aren&apos;t mistakes - they&apos;re the result of a gov&apos;t funded team completely out of their depth.</p><p>Remember, these guys run the Cyber Essentials platform... oh, the irony.</p><h2 id="responsible-disclosure">Responsible Disclosure</h2><p>After the 2020 debacle, I&apos;d hopefully be forgiven for simply publishing these issues without speaking with NPCC. &#xA0;After all, my disclosures were discarded as a &quot;waste of public money&quot; and I was accused of operating in bad faith.</p><p>However, the goal of disclosures like these is to protect the public - not to put them at direct, demonstrable &amp; increased risk. &#xA0;That, combined with the severity of the vulnerabilities, left me with little choice but to notify the NPCC again.</p><p>However, here&apos;s how the story takes an interesting &amp; positive turn.</p><h2 id="march-18th-1-40pm">March 18th 1:40PM</h2><p>After briefly speaking with Ian Hickling on his mobile earlier in the day, he escalated the matter to Phillip Donnelly, Cyber and Darkweb Technical and Capabilities Lead @ NPCC.</p><p>I&apos;d spoken to Ian &amp; Phil back in 2020 and both were polite &amp; helpful, but communications quickly turned sour when Pervade pushed back with lies &amp; misleading statements... leading NPCC to believe my claims were untrue.</p><p>I requested a video call with Phil that day and to my surprise, he agreed.</p><p>Later that day, Phil and I spent a good hour on a Teams call - during which I explained every issue and demonstrated each attack, live, via screen sharing. &#xA0;No room for movement or disagreement this time; every attack worked exactly as described. &#xA0;By the end of the call, it was clear I could control any data collector and the API. &#xA0;I advised that CA be taken offline immediately, as the risk to the public was/is very high. &#xA0;Whilst Phil didn&apos;t agree/disagree on the call, he later emailed to advise that parts of the API were taken offline and members were notified as such. &#xA0;In reality, NPCC mitigated several risks within 1hr of our initial call - simply by taking parts of the API offline. &#xA0;Say what you will, that&apos;s impressive.</p><p>Let me clarify a few things, before I go any further.</p><p>Phil&apos;s approach both initially and during conversations even now is <strong>absolutely spot on</strong>. &#xA0;His candid &amp; measured response makes disclosure much easier.</p><p>It has always been my belief that NPCC have been &amp; continue to be misled - even hoodwinked. &#xA0;Whilst their response to my 2020 review wasn&apos;t great, I can <em>somewhat </em>understand &amp; justify it given the information coming from the other side.</p><p>Mindful of our previous discussions and how several vulns disappeared despite &quot;never existing in the first place&quot;, I took a different approach this time.</p><p>Before contacting NPCC, I&apos;d already been in touch with various media outlets &amp; several other security testers, all of which have independently verified these findings. &#xA0;They may be running the story shortly too.</p><h3 id="what-next">What next?</h3><p>Over the coming days, Phil/NPCC realised these issues needed further investigation and clearly weren&apos;t willing to trust Pervade or the existing security firms. &#xA0;Instead, they sought the assistance of another independent security auditing firm.</p><p>I won&apos;t name them just yet (possibly not at all), but I have <strong>absolutely no doubt</strong> in their abilities to highlight not only the above, but far more. &#xA0;Their report is a paid engagement however, so I&apos;d certainly expect better results when compared to my freebie to an EDU.</p><p>An email from Phil later requested another video call, this time with the external testing company.</p><h2 id="march-25th-10am">March 25th 10AM</h2><p>I join a call with Phil &amp; &lt;redacted&gt; from the external security company.</p><p>Once again, we go through each &amp; every issue - demonstrating them with proof-of-concept files and providing screenshots showing payloads which were working, prior to the API going partially offline.</p><p>I have something of a reputation for telling it like it is; some appreciate it, others (perhaps rightly) see it as slightly unprofessional. &#xA0;The external company on the other hand... took notes, asked questions and remained professional throughout, refraining from comment until their own research was over. &#xA0;So far as I&apos;m aware, their investigation is still ongoing and cyberAlarm remains live.</p><p>That however, is where we disagree and is the reason this article exists.</p><p>My advice, both now and 18 months ago, was to pull cyberAlarm immediately, believing it to be a dangerous application which only increased the risk to anyone who installed it. &#xA0;Understandably, NPCC&apos;s position differs and every effort is being made to patch these issues and keep cyberAlarm going.</p><p>During conversations back &amp; forth, NPCC cited a common 90 day period before any disclosure. &#xA0;They didn&apos;t request it, to be clear... but merely referenced it - perhaps hoping I&apos;d refrain from publishing until they&apos;d had time to investigate. &#xA0;Normally, that&apos;s perfectly reasonable. &#xA0;However, I&apos;ve been barking about cyberAlarm&apos;s vulnerabilities/risks for 18 months... to no avail. &#xA0;NPCC had the chance, 18 months ago, to do the right thing and pull cyberAlarm from service. &#xA0;Now, the number of customers has increased and so have the quantity of vulnerabilities.</p><p>Now, my position couldn&apos;t be clearer.</p><p>CyberAlarm is <strong>profoundly dangerous</strong>. &#xA0;It&apos;s woefully insecure, ill-conceived, poorly written &amp; provides questionable value.</p><p>Whilst I welcome the news that NPCC have engaged another security firm, I sincerely hope they take this opportunity to see cyberAlarm/Pervade for what it is; a one-way ticket to a serious breach.</p><h2 id="april-14th-11-24am">April 14th 11:24AM</h2><p>I received a reply email from Phil Donnelly at NPCC requesting 90 days before disclosure, citing the need to wait for a report and mitigative action.</p><p>I refused on the basis that nearly all of these vulnerabilities existed 18 months ago but were ignored, &quot;never existed&quot; or &quot;weren&apos;t a security issue&quot;. &#xA0;Even so, I&apos;ve given 30 days which I believe is perfectly sufficient given the risk/circumstances and likely far more than any other researcher would provide, given the initial response in 2020.</p><p>Phil again cites &quot;I&apos;ve been assured that several points are not possible due to other checks&quot; but still will not disclose which ones, or why. &#xA0;I have left no room for argument this time; he&apos;s seen every exploit on a Teams call with screen share.</p><h2 id="summary">Summary</h2><p>Pervade has had 3 attempts and well over 18 months to develop cyberAlarm into something resembling a decent, secure &amp; deployable application and judging by this latest iteration, it has utterly failed to do so.</p><p>Whilst NPCC&apos;s response on this occasion has been entirely commendable, their latest communication outlines their need/desire to &quot;get it right&quot;, but go on to discuss &quot;mitigation&quot; following the independent report.</p><p>In my opinion, the NPCC needs to shutter cyberAlarm at the earliest opportunity and turn their attention to other projects outsourced to Pervade, including the Cyber Essential platform.</p><p>I sincerely hope this signals the end of this utterly shambolic debacle. &#xA0;If pride precedes privacy again, expect another article in a few years. &#xA0;If NPCC decides to revert to type and tries to refute this article, there&apos;s a growing number of media outlets &amp; security researchers ready &amp; waiting to <strong>fully</strong> disclose; that really won&apos;t be pretty.</p><p>This article and all findings within are the result of <strong>one</strong> anonymous network admin who remained open-minded &amp; professional enough to push back against the &quot;official line&quot; and wanted an independent audit before putting his staff/students or network at risk. &#xA0;If this has helped you, please pass on your thanks in the comments below.</p><p>If you&apos;re in a similar position, please get in touch.</p>]]></content:encoded></item><item><title><![CDATA[TOFU Attack: Your registration flow is a breach waiting to happen...]]></title><description><![CDATA[The risks of failing to validate an email address...]]></description><link>https://paul.reviews/tofu-attack-your-registration-flow-is-a-breach-waiting-to-happen/</link><guid isPermaLink="false">6251663e33e32e0f420ff6cf</guid><category><![CDATA[data]]></category><category><![CDATA[security]]></category><category><![CDATA[privacy]]></category><category><![CDATA[registration]]></category><category><![CDATA[tofu]]></category><category><![CDATA[tofu attack]]></category><category><![CDATA[paseto]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Fri, 12 Mar 2021 14:42:19 GMT</pubDate><content:encoded><![CDATA[<p>As developers, we&apos;re told <em>never</em> to trust a user&apos;s input; always treat it as malicious until suitable validation &amp; contextually-aware checks are performed.</p><p>Thankfully, the majority adopt this methodology. &#xA0;However, many sites immediately disregard it when it comes to their registration/signup flow.</p><p>For many years, I&apos;ve pushed every client I engage with to adopt the technique I&apos;m about to outline (with variations to fit their business). &#xA0;Last night, I had a somewhat heated discussion with a client who &quot;fundamentally disagreed&quot; with my proposal... so it&apos;s time to write this up and explain my thought process to a wider audience.</p><h2 id="premise-">Premise:</h2><p>Many sites which require registration use an email address, either as a direct user ID or to recover an account in the event of a password breach/loss.</p><p>If you&apos;re one of them, <em>do not store or action anything </em>until the user has confirmed ownership of the email address. &#xA0;Unless absolutely necessary, only collect the email address on the initial registration form.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2021/03/pic1.PNG" class="kg-image" alt loading="lazy"></figure><p>At first glance, you&apos;d be forgiven for thinking there&apos;s no appreciable risk here... but allow me to explain why I believe that to be a fundamental mistake.</p><h2 id="a-story-">A story:</h2><p>5 years ago, I wrote an article about a <a href="https://paul.reviews/identity-theft-payment-fraud-thats-asda-price/">CSRF vulnerability at ASDA/Walmart</a></p><p>That vulnerability allowed me to inject a malicious script into the user&apos;s <em>existing</em> profile which, once invoked, scraped their payment data and sent it to a remote server.</p><p>In order to execute an attack, I needed two things:</p><p>1) An existing user&apos;s account<br>2) A vulnerability in the site</p><p>Therein lies the problem.</p><p>If you don&apos;t validate an email address <strong>immediately</strong>, an attacker can easily create a user&apos;s account for them and embed any malicious payload they like. &#xA0;That&apos;s still the case today with ASDA/Walmart - as indeed with the vast majority of sites. &#xA0;Within a matter of seconds, an attacker can create an account inherently tied to an email address they don&apos;t own.</p><p>But there&apos;s one component we&apos;re missing... a vulnerability to leverage! &#xA0;However, that malicious data will remain until either a vulnerability is identified/introduced, or the actual owner of the email address resets the password to gain access to &quot;their&quot; account and modifies &quot;their&quot; profile.</p><h3 id="aha-no-the-root-cause-is-the-vulnerability-not-the-registration-flow-">&quot;Aha! No, the root cause is the vulnerability, not the registration flow...&quot;</h3><p>During the aforementioned debate, my client continued to disagree... citing the flaw as the root cause, not the earlier collection of malicious data. &#xA0;At this point, he opened a tab to Dropbox.com and asked me to prove it.</p><p>It did not go well.</p><p>Within 5 minutes, his position had changed entirely and the dangers became shockingly real.</p><p>Note: I&apos;m not intentionally picking on Dropbox here, as many sites are guilty of exactly the same oversight... but the client picked this site, so here&apos;s how the attack works.</p><h2 id="the-attack-">The attack:</h2><p>Step 1)<br>Register for a free account at Dropbox.com with the victim&apos;s email address. &#xA0;This triggers an email to be sent to the victim...</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2021/03/pic2.PNG" class="kg-image" alt loading="lazy"></figure><p>As the victim hasn&apos;t actually registered, it&apos;s likely to be ignored or treated as spam. &#xA0;That&apos;s fine, we don&apos;t need the user to click anything... we&apos;re already signed in. &#xA0;Even if they do click the link by mistake, it&apos;s of no consequence to the attacker.</p><p>Step 2)<br>Upload malware/ransomware to the victim&apos;s Dropbox folder, replacing the &quot;Getting started with Dropbox&quot; PDF, or simply adding my own file with a voucher code; something to prompt the user to open our payload.</p><p>Step 3)<br>Sit back and wait!</p><p>It could be a month, could be 6 months, it could be never... but if the victim ever wants to use Dropbox, they&apos;ll try to register. &#xA0;At which point, they&apos;re told an account already exists and, assuming they&apos;ve registered previously and forgotten, resets the password and promptly logs in to &quot;their&quot; account.</p><p>Success!</p><p>We don&apos;t need a vulnerability... Dropbox dutifully places my malware on every device the victim has Dropbox installed.</p><p>At this point, I haven&apos;t just pwned your Dropbox profile... I have complete access to your PC/network.</p><p>Drop a shell, easy.<br>Exfil everything to an FTP server, simple.<br>Sit quietly and watch the user on webcam, quite possible.</p><h2 id="it-gets-worse-">It gets worse:</h2><p>Keep in mind, the victim still hasn&apos;t verified their email address.</p><p>Yet, I (as the attacker) can share files with the victim&apos;s colleagues too.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2021/03/pic3.PNG" class="kg-image" alt loading="lazy"></figure><p>Phishing attacks are, unfortunately, still prevalent and effective... even with spulling mipakes, gramutical errors and never addressing you by name.</p><p>This attack however, comes from a genuine Dropbox email address, uses your name and cites your colleagues email address perfectly. &#xA0;The &quot;note&quot; asking for a reminder to pass on the invoice is yet another trust anchor, leading the second victim to believe this is a genuine email.</p><p>Of course, the file contains malware and they too are now pwned - even if they haven&apos;t installed Dropbox.</p><h2 id="don-t-be-too-trusting-">Don&apos;t be too trusting...</h2><p>I&apos;ve labelled this the &quot;TOFU&quot; or &quot;Trust On First Use Attack&quot; partly because it sits nicely with HSTS&apos; use of the term, but largely because if we inherently trust any data provided during registration, <strong>every single decision/action</strong> we take is based upon a flawed assumption.</p><p>If you can categorically claim your site does not &amp; will never contain any security risks which an attacker could leverage by having initial control of an account, you&apos;re not only living in fantasy land, you&apos;re unnecessarily putting users at risk.</p><h2 id="other-risks-to-consider-">Other risks to consider...</h2><h3 id="gdpr-data-protection-">GDPR/Data Protection:</h3><p>In many jurisdictions, you&apos;re required by law to take reasonable steps to ensure the accuracy &amp; integrity over any data you collect. &#xA0;An email address is classed as personal data, falling firmly into the &quot;identified, identifiable or used to contact&quot; category as outlined in GDPR.</p><p>But, the law is a blunt instrument and I&apos;m certainly no expert in that field... but it would appear to my ignorant self that knowingly storing &amp; acting upon data which you know to have <strong>zero </strong>integrity, would probably breach many laws.</p><h3 id="2fa-seeds-">2FA seeds:</h3><p>I&apos;ve lost count how many sites create a 2FA seed for a user and it remains static for the life of the account. &#xA0;If an attacker has initial access to your profile, they too can slurp the seed; rendering any later 2FA useless.</p><h3 id="recovery-email-addresses-phone-numbers-">Recovery email addresses / phone numbers:</h3><p>How often do you check for recovery email addresses, especially in an account you&apos;ve just created? An attacker can regain control if they&apos;ve hidden a recovery method in your profile.</p><h3 id="xss-csrf-et-al-">XSS / CSRF et al:</h3><p>If the site is currently vulnerable to any low-hangers, you&apos;re likely pwned the moment you sign in. &#xA0;However, even if the victim regains control over the account, unless they remove the arbitrary script, they are still effectively pwned... even if a vulnerability is introduced years later.</p><h3 id="undocumented-features-">Undocumented features:</h3><p>Do we actually need a security vulnerability? Like Dropbox, can we use the service exactly as intended and still cripple our victim?</p><h3 id="new-customer-offers-">New customer offers:</h3><p>How many times do you see free trial, 30 day trial, or a one-time discount for new customers? &#xA0;If an attacker has registered for you, you&apos;re likely no longer eligible. &#xA0;Now you&apos;re potentially harming sales, not just security.</p><h3 id="legal-life-implications-">Legal/Life Implications:</h3><p>How cruel can the attacker be? &#xA0;They could place ransomware/malware on your device, but they could just as easily upload category 1 pornography to your account. &#xA0;Good luck explaining why that&apos;s on your device... using your email address and IP!</p><h2 id="one-possible-solution-">One possible solution:</h2><p>Do we <em>really </em>need to store data with questionable integrity, just to allow a user to register, or is there a better way? &#xA0;I believe there is.</p><p>Use <a href="https://github.com/paragonie/paseto">PASETO tokens</a>! Or, if you&apos;re feeling adventurous, JWT.</p><p>A public PASETO token is a cryptographically-signed JSON payload, allowing you to embed and sign data into a link which is later sent to the user&apos;s email address.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2021/03/pic4.PNG" class="kg-image" alt loading="lazy"></figure><p>The resulting token looks similar to this:</p><figure class="kg-card kg-code-card"><pre><code>v2.public.eyJleHAiOiIyMDM5LTAxLTAxVDAwOjAwOjAwKzAwOjAwIiwiZGF0YSI6InRoaXMgaXMgYSBzaWduZWQgbWVzc2FnZSJ91gC7-jCWsN3mv4uJaZxZp0btLJgcyVwL-svJD7f4IHyGteKe3HTLjHYTGHI1MtCqJ-ESDLNoE7otkIzamFskCA</code></pre><figcaption>A public PASETO token</figcaption></figure><h3 id="what-are-the-benefits">What are the benefits?</h3><p>1) &#xA0;No database writes required!<br>We&apos;ve already established we can&apos;t (or shouldn&apos;t!) trust the data before validation. &#xA0;As such, we can sign the object and simply return it to the user&apos;s email address. &#xA0;That way, we only add this user to our database if they&apos;re valid.</p><p>Bye bye bots, malicious submissions, stale records etc.</p><p>2) &#xA0;Natural expiry<br>Like JWTs, PASETO tokens have an &quot;exp&quot; or expiry timestamp. &#xA0;This allows you to expire the token without needing to track/compare dates in the database. &#xA0;With clever key trickery, you could embed a bool (1/0) which switches based on the existence of a completed profile.</p><p>If the user doesn&apos;t exist, concatenate a zero to the key. &#xA0;If the user exists, concatenate a 1 to the key. &#xA0;That way, the PASETO token is signed with a key which is only valid if the user <em>doesn&apos;t</em> exist. &#xA0;As soon as they&apos;re registered, the email link effectively self destructs without needing to read/write to the database.</p><p>3) &#xA0;The data cannot be manipulated after submission<br>Once signed, the user is unable to modify the payload (to change their email address, for example) to appear to be someone else. &#xA0;Likewise any other data (names, postal addresses etc) - if you absolutely need to collect them during initial registration.</p><h2 id="summary">Summary</h2><p>Even if you disagree with the existence of the risk or severity of it (I&apos;d like to hear more in the comments!), I hope we can agree there&apos;s a material benefit beyond security to discarding (or simply not processing) inaccurate data.</p><p>Incomplete/rogue/bot registrations plague databases everywhere; often requiring GC processes to clean up on a scheduled task. &#xA0;It&apos;s an unnecessary burden we needn&apos;t take on... there are cleaner, more efficient ways which give you the same end result, without introducing risks you probably hadn&apos;t considered.</p><p>That&apos;s it folks. Thanks for listening.</p>]]></content:encoded></item><item><title><![CDATA[CyberAlarm: Testing the "production version"... and why you should avoid it.]]></title><description><![CDATA[Reviewing the "production" build of CyberAlarm.  Good grief - you couldn't make it up.]]></description><link>https://paul.reviews/cyberalarm-testing-the-production-version-and-why-you-should-avoid-it/</link><guid isPermaLink="false">6251663e33e32e0f420ff6cd</guid><category><![CDATA[cyberalarm]]></category><category><![CDATA[npcc]]></category><category><![CDATA[police]]></category><category><![CDATA[security]]></category><category><![CDATA[pervade]]></category><category><![CDATA[pervade-software]]></category><category><![CDATA[vulnerable]]></category><category><![CDATA[rce]]></category><category><![CDATA[tls]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Wed, 02 Dec 2020 15:12:14 GMT</pubDate><media:content url="https://paul.reviews/content/images/2020/11/cyber-alarm-3.png" medium="image"/><content:encoded><![CDATA[<img src="https://paul.reviews/content/images/2020/11/cyber-alarm-3.png" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it."><p>I can&apos;t honestly recall the last time I was left seething with rage; I&apos;m not an angry person. &#xA0;That said, I&apos;ve never been called a liar or been accused of acting in bad faith by the NPCC before... but hey, the increased heart-rate should burn a few much-needed calories.</p><p>Following my review of the infamous &quot;development/test build&quot;, NPCC <a href="https://cyberalarm.police.uk/pca-official-response/">published an article</a> stating it&apos;s &quot;completely untrue&quot;, how it was &quot;a completely different piece of software&quot;, how it &quot;has never formed part of the Police CyberAlarm system in ANY live version&quot; and I &quot;stumbled upon&quot; the development link.</p><p>Their rebuttal pivots on two issues:<br><strong>1)</strong> I &quot;stumbled upon&quot; the development link, therefore would have known it wasn&apos;t CyberAlarm.<br><strong>2)</strong> The production version isn&apos;t based on the development &quot;tool&quot; (which doesn&apos;t make sense), thus it would &quot;be impossible to find the issues raised&quot;. </p><p>I&apos;ve made every effort to protect the force&apos;s reputation and the public, even extending the metaphorical olive branch after the first (of two) insulting cease &amp; desist letters, but I&apos;m left with no choice but to publish the entire debacle in an effort to salvage my reputation.</p><p>This is likely to be an enormous post, but I will try to keep it to a minimum; it&apos;s not intended to be a sedative.</p><p>I don&apos;t want to spend too long discussing the &quot;development/test build&quot; as I&apos;ve pretty much covered everything I could responsibly mention in my previous post, but in order to explain exactly what&apos;s happened, I need to go back to the beginning.</p><h2 id="30th-september-2020-">30th September 2020:</h2><h3 id="12-41pm">12.41PM</h3><p>I filled in the &quot;registration&quot; form on the official CyberAlarm website and received an auto-response.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/auto-response.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><h2 id="2nd-october-2020-">2nd October 2020:</h2><h3 id="9-48am">9.48AM</h3><p>I received an email from Leicestershire Police, apologising for the delay and attaching 4 PDFs which include sample reports, threat summaries etc.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/email-response1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><h3 id="11-22am">11.22AM</h3><p>I replied, asking for an installation guide.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/email-response2.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><h3 id="6-41pm">6.41PM</h3><p>I received a reply with the installation guide attached.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/email_from_leics_2nd-1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><h3 id="7-22pm">7.22PM</h3><p>I downloaded the installation guide.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/memberguide_indir-1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>... then replied to &lt;redacted&gt;</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/12/email-response3.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>Here&apos;s a snippet of the installation guide, or you can view the offending article yourself from my <a href="https://drive.google.com/file/d/14VU14gIxYKgcMH1w9NEtHxMftAUB1_RF/view?usp=sharing">backup</a>.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/memberguide_pdf_linkerror_copy.png" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>Keep in mind the filename of the PDF... ending &quot;310720&quot; which obviously refers to date it was updated. &#xA0;Assuming they&apos;ve sent me the most recent installation guide, that&apos;s the last time it was updated. &#xA0;For 2 months, this has been the document members receive.</p><p>You might be wondering why I think it was updated, rather than created on that date, but I&apos;ll come back to that.</p><p>If you take a look at the &quot;downloadable&quot; URL - it clearly shows &quot;https://www.cyberalarm.police.uk/CyberAlarm.ova&quot; which is the <strong>production build</strong>.</p><h3 id="so-how-did-i-end-up-with-the-test-version">So, how did I end up with the test version?</h3><p>The astute amongst you may have already surmised; in some applications, updating a hyperlink merely changes the visible text but leaves the original URL in the background. &#xA0;When you hover over the link, the truth is revealed. </p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/memberguide_pdf_linkerror.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>Although the text says &quot;cyberalarm.police.uk&quot;, the actual hyperlink takes you to &quot;cyberalarm.org.uk&quot; - housing the dangerous internal build!</p><p>Of course, they refute the existence of screenshots too &amp; claim I&apos;ve never pointed it out, despite two members of staff actually thanking me for raising it! (proof of that later, so as not to confuse the timeline of events).</p><p>This is <strong>absolutely irrefutable proof</strong> that, contrary to NPCC&apos;s claim that I stumbled upon it, I simply used the link they provided by email. &#xA0;They go on to claim it would have been obvious that it wasn&apos;t a &quot;real&quot; CyberAlarm data collector, having later seen the &quot;production&quot; one.</p><h3 id="spinning-up-the-test-build-vm-">Spinning up the &quot;test build&quot; VM:</h3><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/CyberAlarmUIPHP54.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>There&apos;s the one &amp; only UI. &#xA0;The PDF said &quot;CyberAlarm&quot;, the website said &quot;CyberAlarm&quot;, the filename is &quot;CyberAlarm.ova&quot; and the UI says it&apos;s..... CyberAlarm. &#xA0;But, I&apos;m expected to know it&apos;s a demonstrably dangerous, internal build of an &quot;OpView Collector&quot;.</p><h3 id="8-50pm">8.50PM</h3><p>The last hour and a half were spent dissecting the image, uncovering an astonishing array of mind-blowingly awful code, disabled security controls, outdated dependencies, insecure endpoints... just about every rookie mistake a developer could make, all lovingly packaged into something they expect the public to run on their <em>internal </em>network. &#xA0;I&apos;ll bet Huawei&apos;s code isn&apos;t as bad as this... but I digress.</p><p>Needless to say, I emailed back to say I couldn&apos;t recommend this to customers.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/email_to_leics_1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>Let me be the first to say that without context, that was an unreasonable comment and I wouldn&apos;t have expected them to action it without investigating themselves. &#xA0;However, it hopefully does show that whilst the main aim was to protect the public, I was also mindful of the huge reputational damage this would do to member forces and the NPCC.</p><p>However, as the scale of their incompetence began to sink in, I realised I couldn&apos;t just leave it there and needed to report it formally.</p><h2 id="3rd-october-2020-">3rd October 2020:</h2><h3 id="2-57pm">2.57PM</h3><p>I called &lt;redacted&gt; (from Leicestershire Police) on the mobile number (also redacted) from his email above.</p><p>Despite being a rest day, he thankfully took my call and listened as I outlined everything I&apos;d seen thus far. &#xA0;As expected, he asked me to put my findings in an email which I did shortly after.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/12/responsibledisclosure1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>I won&apos;t post the entire screenshot, as it&apos;s identical to the previous article.</p><h3 id="3-12pm">3.12PM</h3><p>He replies to say he&apos;s discussing the issues with the developers.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/12/responsibledisclosure2-1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><h3 id="5-15pm">5.15PM</h3><p>An update! That was quick!</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/responsibledisclosure3.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>So quite apart from being &quot;a completely different piece of software&quot;, it is indeed the proof-of-concept/development version which formed the basis of the current CyberAlarm platform.</p><p>Pay careful attention to the statement &quot;<strong>none</strong> of the below codes/<strong>passwords</strong>/URLs you have mentioned have anything to do with the CyberAlarm system&quot;, referring to &quot;P3rv3d3&quot; and &quot;P3rv4d3S0ftw4r3&quot; from my disclosure email.</p><p>But, my concerns have apparently prompted a full penetration test... so that&apos;s job done, right?</p><h3 id="5-32pm">5.32PM</h3><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/responsibledisclosure4.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><h3 id="6-52pm">6.52PM</h3><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/responsibledisclosure5.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>At this point, they appear to be taking it seriously.</p><p>I&apos;ll snip out the dialog of us finding a suitable time/date for the teams meeting, but it ended up being 5th October 2020 @ 4PM, lasting well over an hour.</p><h2 id="5th-october-2020-">5th October 2020:</h2><h3 id="3-54pm">3.54PM</h3><p>I dialled in to the meeting with &lt;redacted&gt; ready &amp; waiting. &#xA0;Over the next hour or so, we discuss the outcome of their investigations, why none of it applies to the production version (in their view), how I &quot;found&quot; the URL to the test build and TL;DR - &lt;redacted&gt; uttered the phrase which will likely lead to the cancellation of this platform.</p><p>&quot;We don&apos;t consider these to be deal breakers...&quot;</p><p>I&apos;m not paraphrasing either. &#xA0;That&apos;s verbatim.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/chrome-history-ianchat.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>What?! I was absolutely dumbstruck.</p><p>I&apos;ve no idea if it was an attempt to placate me (not that I was hostile in any way), but &lt;redacted&gt; also asks me to join CDSV (Cyber Digital Specials &amp; Volunteers); the replacement for the CSCV programme which was pulled a while back.</p><p>During the meeting, &lt;redacted&gt; generated an &quot;access code&quot; to allow me to download the &quot;production&quot; build and asked me to review it.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/download-history-2.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>To protect myself, I asked him to put his request to review it in writing... which he emailed shortly after. &#xA0;It always pays to be careful... as disclosures can very quickly go sour.</p><p>Hang on, rewind! &#xA0;Look at that download URL...<br>&quot;cyberalarm.police.uk/download/cyberalarm.ova&quot;</p><p>The &quot;installation guide&quot; PDF earlier didn&apos;t mention &quot;/download&quot;, so if you clicked their address, you get a one-way ticket to network compromise (or the &quot;test build&quot;) and if you copy/paste, it 404s.</p><p>Download Link Broken: Check.</p><h2 id="intermission">Intermission</h2><p>Are you still here? Wow. &#xA0;Let&apos;s take a breather for a moment and discuss where we are so far.</p><p>I&apos;ve proven NPCC literally gave me the offending URL, so let&apos;s not go over that again. &#xA0;I&apos;ve also demonstrated that I followed a fairly typical responsible disclosure process &amp; they acknowledge my attempts to report the issues.</p><p>But, I&apos;d like to take a step back to posit a question...</p><p>If this is a &quot;2 year old test build&quot; which &quot;is not used anymore&quot;, why was it last updated in May 2019? &#xA0;Are we to believe they stopped using the product immediately after development? Of course not. &#xA0;I&apos;d hope it&apos;d be passed to beta testers, a QA team, pen testers etc. &#xA0;Realistically, mindful of how long it takes to launch a product like this in a Police force, it&apos;s likely to have remained in use for many months after. &#xA0;I can&apos;t prove <em>that</em>, but I think it&apos;s a reasonable assumption. &#xA0;Strange too they&apos;d buy a TLS certificate to protect an endpoint they don&apos;t use, but perhaps that&apos;s to prevent redirect errors. Who knows.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/index-testbuild1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>Another question too... who ioncubes their own <em>internal </em>development builds?!</p><p>OK. Deep breath... let&apos;s dive back in.</p><h2 id="testing-the-production-build">Testing the &quot;production build&quot;</h2><p>It&apos;s still October 5th, keep in mind.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/first_prod_in_dir1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>I downloaded the installer and immediately opened the bash script, revealing this...</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/first_prod_open_run-7.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/first_prod_open_viewcode.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>The installer is <strong>plain text</strong> - easily visible to anyone, as opposed to the actual code which is still encoded.</p><p>There&apos;s two vulnerabilities, right there! 1024 bit RSA and TLS security checks disabled... on the damn installer! &#xA0;I pointed both of these out in my email about the &quot;test build&quot; but they claim it doesn&apos;t apply to production. &#xA0;If an attacker can trick your box into downloading any ol&apos; .tar.gz, you&apos;re vulnerable to all manner of exploits, including the aforementioned RCE.</p><p>After decoding &quot;index.php&quot; from the file which the installer grabs (insecurely), a similar trend begins to emerge.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/indexPHP_5-10-20-vuln.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>TLS security checks, disabled.<br>Server &quot;secret&quot;: &quot;P3rv4d3S0ftw4r3&quot;.</p><p>You&apos;ll note, that&apos;s the same insecure &quot;secret&quot; which Pervade claimed didn&apos;t exist in the production version.</p><h3 id="okay-okay-that-s-just-the-registration-script-is-server-communication-safe">Okay, okay... that&apos;s just the registration script. Is server communication safe?</h3><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/serverphp051020.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/serverphp051020-2.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>Yet again, TLS certificate checks are disabled <em>everywhere</em>. &#xA0;This is beyond debate.</p><p>Wait a minute...</p><p>The CURLOPT_URL parameter is calling an IP. &#xA0;Hmm... do they really have IPs in their certificate CN (common name)?</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/noip-cn.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>Not that I could find, or you wouldn&apos;t see an error like this.</p><p><em>Note, this is the IP address of the &quot;cyberalarm&quot; public site and this particular image is used as an example only. &#xA0;The system actually calls a &quot;system API&quot; URL on a URL I&apos;m not prepared to release, but that too has no IP addresses in the CN.</em></p><p>Regardless, I try registering on the Police collection endpoint (previously located at &lt;force_area&gt;.cyberalarm.police.uk&gt;. &#xA0;Do not confuse this with the local data collector software above... this is now the admin UI which the forces have access to; looks a little something like this.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/internal-dashboard.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>Ahem... good luck making sense of that mess. &#xA0;You could cogently make the argument that if the system delivers &quot;actionable data&quot; like this, forget security... it&apos;s probably worthless.</p><h3 id="5-27pm">5.27PM</h3><p>Before you get there however, you need to click the &quot;validate email&quot; button they send.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/emsousignup-1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>Note the double protocol, making this a dead link. &#xA0;I later reported this one too.</p><p>Registration Link Broken: Check.</p><h3 id="6-11pm">6.11PM</h3><p>The first &quot;thank you&quot; for reporting the dangerous URL.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/urlthankyou1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><h3 id="6-12pm">6.12PM</h3><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/12/prod_disclosure1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>The next few days are spent relaying issues to &lt;redacted&gt; until finally, I&apos;m told an independent penetration tester could not confirm any of the issues I&apos;d raised.</p><p>I&apos;ll leave out the back &amp; forth which followed, but TL;DR (huh - too late for that) they flat refuse to accept any of the issues I&apos;ve raised affect the production version.</p><p>By now, I suspect &lt;redacted&gt; was growing tired of me parroting the same line, only to hear the same response.</p><h2 id="8th-october-2020-">8th October 2020:</h2><h3 id="3-29pm">3.29PM</h3><p>I&apos;m starting to smell a rat... so I download the installer again.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/updated_prod_open_winrar.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>Hmm. &#xA0;They updated the installer the day after I reported the production build was insecure.</p><p>You can probably guess what&apos;s coming, but don&apos;t get ahead of me. &#xA0;Will they continue to claim I&apos;m wrong? </p><h3 id="9th-october-2020-">9th October 2020:</h3><h3 id="3-47pm">3.47PM</h3><p>I receive an email, out of the blue, from another NPCC Cybercrime Programme member.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/prod_disclosure2-1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>By now, I&apos;m losing my patience.</p><h3 id="6-37pm">6.37PM</h3><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/prod_disclosure3-2.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p><em>Note: I&apos;ve redacted a paragraph, as it relates to an on-going investigation which isn&apos;t suitable for wider release.</em></p><p>Let me explain the above... because I reference the issues in the &quot;test build&quot; and I don&apos;t want any confusion.</p><p>Mindful of the them putting the wrong URL in the PDF, it&apos;s entirely logical to expect anyone in receipt of it would install it, as I did, believing it to be &quot;CyberAlarm&quot;. &#xA0;With no formal update process and no notification from NPCC, that would remain the case. &#xA0;I explained the other issues directly related to the &quot;production build&quot; in prior emails to &lt;redacted&gt; and the other &lt;redacted&gt; from October 2nd.</p><p>Remember, this &quot;test build&quot; can&apos;t talk to a server for updates... it&apos;s been decommissioned &quot;2 years&quot; before I installed it. &#xA0;If it <em>IS </em>running anywhere, it&apos;ll stay that way until it&apos;s either removed or worse, an attacker leverages it.</p><p>They claim this version was &quot;never released or promoted by anyone, least of all the Police&quot; - and we now know that to be inaccurate... so I disagree with the suggestion there&apos;s no risk to the public.</p><h2 id="13th-october-2020-">13th October 2020:</h2><h3 id="5-19pm">5.19PM</h3><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/prod_disclosure4-1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>The admission, in black and white, that the Police accidentally made available a massively-insecure &quot;test build&quot; to the public and said nothing. &#xA0;No article, no email, no &quot;oops, we screwed up, don&apos;t install that&quot;... just silence.</p><p>Worse still, they don&apos;t seem to understand the risk it presents... so you can understand why I&apos;m finding it impossible to outline why the &quot;production&quot; build is equally insecure.</p><h2 id="intermission-2">Intermission #2</h2><p>If you&apos;re still here, thank you.</p><p>I know there&apos;s a huge amount to take in and believe me, I&apos;ve cut this down to make it somewhat readable.</p><p>Let&apos;s recap...</p><p>Two members of the same force acknowledge I raised the dodgy URL and both thank me for alerting them - a world apart from NPCC&apos;s claim that I merely &quot;stumbled upon&quot; it.</p><p>The same force admits they released a insecure build and to date, I&apos;m not aware of a single publication to alert the public.</p><p>The force/NPCC remain confident that PCA is secure.</p><p>Grab yourself a brew and let&apos;s dive in one last time.</p><h2 id="24th-november-2020-">24th November 2020:</h2><p>I publish my findings, primarily focusing on the &quot;test build&quot; but referencing the same vulnerabilities (but different method of execution, in some cases) in the production build.</p><p>There&apos;s a much greater chance the production version is more widely deployed, so I redacted key elements to ensure I don&apos;t become the purveyor of zero-days.</p><h2 id="25th-november-2020-">25th November 2020:</h2><h3 id="6-42pm">6.42PM</h3><p>NPCC send the first cease &amp; desist letter.</p><p>TL;DR - &quot;You&apos;re wrong, you knew you were wrong - pull the article by Friday 5PM, and stop using our image, you&apos;re breaching copyright&quot;</p><h3 id="9-08pm">9.08PM</h3><p>I reply.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/candd1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><h2 id="26th-november-2020-">26th November 2020:</h2><h3 id="4-30pm">4.30PM</h3><p>Even after the ugly &amp; unnecessary cease &amp; desist, I tried one last time.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/candreply2-2.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><h3 id="8-33pm">8.33PM</h3><p>NPCC respond again, with another cease &amp; desist... which you&apos;ve all now seen, as it forms the majority of the official response they published.</p><p>In the second C&amp;D, &lt;redacted&gt; questions why I didn&apos;t post the first C&amp;D letter, which is a reasonable question.</p><p>I didn&apos;t post it because it&apos;s highly embarrassing for both NPCC and &lt;redacted&gt; and, as I said from the very beginning, I was trying to protect NPCC&apos;s reputation whilst following a normal disclosure process. &#xA0;I had assumed that the &quot;olive branch&quot; email I sent in return would make them step back, reconsider and perhaps question why someone would willingly commit career-suicide in the public view, by releasing demonstrably false information.</p><p>Alas, no such luck... just more threats and a libellous retort.</p><h2 id="27th-november-2020-">27th November 2020:</h2><h3 id="6-46pm">6.46PM</h3><p>I pull the installer again, just to see if any of the other issues which don&apos;t exist... don&apos;t exist anymore. &#xA0;It was modified on the 14th of October.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/second_update_prod_open_winrar.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><h2 id="29th-november-2020-lies-deception-and-defamation-">29th November 2020: Lies, deception and defamation...</h2><p>Something just doesn&apos;t add up.</p><p>We have the NPCC Cybercrime team filled with respected professionals, actively pushing a product which I can repeatedly demonstrate is woefully insecure.</p><p>Let&apos;s open that update from the 6th...</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/updated_prod_open_viewcode.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>Sigh.</p><p>The 1024 bit RSA key is still there, but they&apos;ve fixed the vulnerable &quot;wget&quot; call... so the installer is now safe(r). &#xA0;The app however, still has TLS verification disabled.</p><p>Swing and a miss.</p><p>I&apos;d already caught them out once when Pervade stated the laughable &quot;secret&quot; key from the &quot;test build&quot; didn&apos;t exist in production. &#xA0;Now, they&apos;re at it again.</p><p>Someone at Pervade (it really doesn&apos;t matter who) is actively patching the very issues I raised the previous day... but claiming they were never there. &#xA0;Utterly abhorrent behaviour.</p><p>They say trust is a fickle thing. &#xA0;Whilst I <em>might</em> be able to overcome the hideous code, if they&apos;re willing to lie, repeatedly - and put the NPCC&apos;s reputation at risk, it&apos;s game over.</p><h3 id="confirming-my-suspicions-">Confirming my suspicions...</h3><p>Let&apos;s open the installer from the 27th... (which is the latest, as of this article)</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/second_update_prod_open_viewcode_2048.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>They&apos;re using 2048 bit keys! Colour me shocked.</p><p>What about index.php?</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/indexPHP_27-11-20-vuln.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>They validate TLS too! &#xA0;It&apos;s a mess elsewhere, but let&apos;s brush over that for now.</p><p>I can&apos;t see the infamous &quot;P3rv4d3&quot; server secret either. &#xA0;Things are looking up! &#xA0;I still wouldn&apos;t trust it, but at least they are patching bugs, even if they didn&apos;t exist to begin with.</p><p>I really should try to cut down on sarcasm, it&apos;s not a good look.</p><p>Though, if someone more talented than I could explain this laughable bit of obfuscation, that&apos;d be great.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/wtf1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><h2 id="what-about-the-crest-star-ncsc-approved-pen-test">What about the CREST STAR / NCSC-approved &quot;pen test&quot;?</h2><p>Your guess is as good as mine.</p><p>Whilst it fits with the theme to simply bury the testing company, it&apos;s not beyond the realms of possibility that Pervade provided an entirely different or scaled-back application, limited the scope or even lied about the results. &#xA0;It&apos;s also possible the testing companies (there are apparently more than 1) are useless.</p><p>Keep this in mind...</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/penTest-theory.png" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>There&apos;s a world of difference between &quot;we found no issues&quot; and &quot;there are no issues&quot;.</p><p>It&apos;s also possible the testers found all of it (and more - there&apos;s plenty) and Pervade/NPCC simply ignored the experts and carried on.</p><p>Take this gem from their official response, for example...</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/selinux1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>I assumed (how stupid of me, by now) that a direct quote from a Red Hat expert would make them reconsider their ludicrous decision. &#xA0;If someone describes Linux as a footgun, it&apos;s probably not a good idea to play around with security controls that you clearly don&apos;t understand.</p><p>I could try again but let&apos;s face it, I&apos;m a nobody. </p><p>So, I&apos;ll hand over to Mr Karanbir Singh. </p><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Checking in from <a href="https://twitter.com/CentOSProject?ref_src=twsrc%5Etfw">@CentOSProject</a> . This thread is  fascinating.</p>&#x2014; Karanbir Singh (@kbsingh) <a href="https://twitter.com/kbsingh/status/1332399092694196224?ref_src=twsrc%5Etfw">November 27, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</figure><p>Karanbir is widely credited with shaping the CentOS project as we know it today. &#xA0;He&apos;s not just a contributor, he&apos;s the <a href="https://wiki.centos.org/KaranbirSingh">project lead</a>. &#xA0;I can&apos;t think of anyone better placed to convince the NPCC team that they&apos;re not only wrong, they&apos;re dangerously wrong. &#xA0;Keep in mind, SELinux is disabled in the production builds!</p><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">It&apos;s not a great start.. how I read it is that they have not only failed to ensure their own apps meet basic minimal security policy, but also failed to do any work around content and executive assurances.</p>&#x2014; Karanbir Singh (@kbsingh) <a href="https://twitter.com/kbsingh/status/1332400877873885185?ref_src=twsrc%5Etfw">November 27, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</figure><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Exponential worse than a typical end user&apos;s case, since system updates are going to cause some (all?) of these changes to revert. Aka, these systems are not going to get updates. Are they?<br><br>Imagine disabling the only protections you may have, in a DMZ, for unpatchable systems.</p>&#x2014; Karanbir Singh (@kbsingh) <a href="https://twitter.com/kbsingh/status/1332401770740527106?ref_src=twsrc%5Etfw">November 27, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</figure><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Can you imagine what is going on with that remote service that gets all the &apos;uploads&apos; to.<br><br>Oh man, I want to see atleast two independent audits for the service as a whole.</p>&#x2014; Karanbir Singh (@kbsingh) <a href="https://twitter.com/kbsingh/status/1332402847716151300?ref_src=twsrc%5Etfw">November 27, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</figure><p>So do I, but I don&apos;t expect them to be forthcoming.</p><p>I offered to sign an NDA but even then, the source &amp; pen test reports were &quot;not for public record&quot;</p><p>I could continue posting each &amp; every vulnerability, but I think I&apos;ve made my point.</p><p>One last thing though... breach of copyright for using the CyberAlarm logo?! If this isn&apos;t the definition of a criticism/review, I&apos;m not sure what is.</p><h2 id="a-couple-of-things-i-really-should-have-mentioned-">A couple of things I really should have mentioned...</h2><p>A few people have (correctly) pointed out that my claim that PHP 5.4 was insecure isn&apos;t always true. &#xA0;This is a nuanced topic &amp; one I actively wanted to avoid, but I&apos;ll try to explain as quickly as possible.</p><p>Official vendor support for PHP 5.4 ended 5 years ago. &#xA0;Official support for PHP 7.2 ended.... on the 30th November 2020 (seriously!). &#xA0;The vendor&apos;s (The PHP Group) official advice mirrors mine; upgrade as soon as possible because there may be unpatched security vulnerabilities.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/phpsupport.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>However, it&apos;s not quite as clear cut and although I don&apos;t condone relying on backports, I should have explained it more clearly. &#xA0;Just as you may opt for an &quot;extended, 3rd party warranty&quot; with your latest iPhone, platforms like RedHat/CentOS provide something called back-porting; the process of actively monitoring for new vulnerabilities and retrospectively rolling patches in to <em>previous </em>versions.</p><p>This is often misunderstood and causes no end of confusion, largely because whilst the official version stays the same (5.4.16 for example), the subversion (-xx) is often hidden from a standard &quot;phpinfo&quot; or &quot;php -v&quot; command. &#xA0;As a result, patches are often missed and vulnerabilities (even if you&apos;re responsible enough to update) remain unpatched.</p><p>Of course, that&apos;s the case here too.</p><p>The &quot;test build&quot; from October 2nd 2020 is vulnerable to the following...<br>CVE-2018-10547 (CVSS 6.1 Medium)<br>CVE-2018-5712 (CVSS 6.1 Medium)<br>CVE-2019-9024 (CVSS 7.5 High)<br>CVE-2018-7584 (CVSS 9.8 Critical)<br>CVE-2019-11043 (CVSS 9.8 Critical)</p><p>2 &quot;critical&quot; issues - never to receive a patch.</p><h2 id="where-s-the-mit-license-guys">Where&apos;s the MIT license guys?</h2><p>CyberAlarm, both old &amp; new, uses the &quot;<a href="https://github.com/phpseclib/phpseclib/tree/1.0">phpseclib</a>&quot; library... distributed under the MIT license. &#xA0;I can&apos;t, for the life of me, find any reference to the required copyright... and if it doesn&apos;t exist, they&apos;re not providing the necessary credit and have effectively stolen the developer&apos;s work product.</p><h2 id="keep-diggin-">Keep diggin&apos;</h2><p>Upon request of the media, I withheld this article to give them time to question NPCC &amp; Pervade. &#xA0;Unsurprisingly, they doubled-down and refused to accept there are serious issues with CyberAlarm. &#xA0;Following a call between NPCC and the media, they offered to send a link &quot;to have a good look at&quot;, presumably to prove it&apos;s safe.</p><p>As the final nail in the coffin, they sent the media a link to the current public &quot;live&quot; version with a modification date of 29/<strong>11</strong>/20.</p><p>Are there any issues? &#xA0;Of course.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/12/gareth1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>Step 1: Upgrade PEAR - we wouldn&apos;t want to be left insecure, would we?<br>Step 2: Install 10 year old, outdated &amp; vulnerable dependencies.</p><p>Net_SMTP-1.4.2<br><a href="https://pear.php.net/package/Net_SMTP/download/1.4.2">https://pear.php.net/package/Net_SMTP/download/1.4.2</a><br>A 10 year old, outdated build.</p><p>Net_URL2-0.3.1<br><a href="https://pear.php.net/package/Net_URL2/download/0.3.1">https://pear.php.net/package/Net_URL2/download/0.3.1</a><br>A 10 year old beta test build!</p><p>HTTP_Request2-0.5.2<br><a href="https://pear.php.net/package/HTTP_Request2/download/0.5.2">https://pear.php.net/package/HTTP_Request2/download/0.5.2</a><br>A 10 year old <strong>ALPHA</strong> build! (Using an alpha in production - what could go wrong)</p><p>Mail-1.2.0<br><a href="https://pear.php.net/package/Mail/download/1.2.0/">https://pear.php.net/package/Mail/download/1.2.0/</a><br>A 4 year old, outdated build.</p><p>Mail_Mime-1.8.2<br><a href="https://pear.php.net/package/Mail_Mime/download/1.8.2">https://pear.php.net/package/Mail_Mime/download/1.8.2</a><br>A 9 year old, outdated build.</p><p>Do I really have to explain the risks of deploying an alpha build of <em>anything</em> to the NPCC? &#xA0;Again, <strong>this is in the installer</strong>, visible in plain text. &#xA0;Jeez...</p><h2 id="what-now">What now?</h2><p>For CyberAlarm - I hope it&apos;s pulled with immediate effect. &#xA0;It should never have reached the public in this state and those responsible for both developing it &amp; presiding over its deployment should probably reconsider their positions.</p><p>For me - I hope NPCC do the right thing, apologise &amp; retract their defamatory post... quickly.</p><h2 id="summary">Summary</h2><p>Of all the vulnerabilities I raised in the &quot;test&quot; build, only 2 are fixed - CentOS &amp; PHP. &#xA0;I say &quot;fixed&quot;, PHP 7.2 went end-of-life on the 30th November 2020, but backporting... yada yada.</p><p>If we ignore those, let&apos;s briefly bullet everything else.</p><p>SELinux disabled:<br>They don&apos;t deny this - but don&apos;t understand the risk. &#xA0;I&apos;ve told them, a RedHat article explains why it&apos;s dangerous and now, thanks to Karanbir, CentOS have stepped in to prove beyond doubt, this is dangerous; unless nobody cares about exploits like ShellShock etc.<br><br>RCE:<br>Still possible, though not through &quot;getmon.php&quot;. &#xA0;Keep in mind this product is live in Schools, Councils, Mental Health Clinics, SMEs with valuable intellectual property and a Formula 1 team - I obviously can&apos;t drop a zero-day which puts them all at risk. &#xA0;However, untrusted input combined with &quot;exec&quot; - the outcome is self evident.</p><p>Mindful of the risk, here&apos;s a demo proving it&apos;s possible, with steps removed to protect the public...</p><figure class="kg-card kg-embed-card"><iframe width="459" height="344" src="https://www.youtube.com/embed/DY1mZCKyNI0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><p>Cross Site Scripting:<br>Still possible - part of the wider product rather than the data collector itself. &#xA0;Hint - Validate on input, sanitize/encode on output; anything else leaves you vulnerable to XSS attacks.<br><br>TLS Certificate Expired:<br>The production version points to a different endpoint which <strong>does </strong>have a valid certificate. &#xA0;Not that it matters however... as TLS security checks are disabled everywhere.</p><p>Attacker: &quot;Hey, I&apos;m a Police server with an important update for you...&quot;<br>Collector: &quot;You don&apos;t look like a Police server and your certificate has expired... so, what can I do for you?&quot;<br>Attacker: &quot;Extract this .tar.gz and execute the contents...&quot;<br>Collector: &quot;Sure thing&quot;<br><br>Broken Encryption:</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/encryptionkey1-1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p>... sure looks like an encryption key to me.</p><p>They don&apos;t deny using AES-CBC without a MAC either - but again, demonstrate they don&apos;t understand why that&apos;s not only important, but crucial.</p><p>Broken Encryption - Part Deux:</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/serverphp051020-2-1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p><em>Exactly </em>the same as the &quot;test&quot; build - all SSL/TLS security checks disabled.</p><p>Embedding server passwords in code:</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/secretsincode1.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure><p><em>Exactly </em>the same as the &quot;test&quot; build.</p><p>The similarities between these two &quot;completely different pieces of software&quot; is staggering.</p><p>That&apos;s it folks. &#xA0;Thank you for listening and for heaven&apos;s sake, be careful what you install on your network.</p><h2 id="notes-files">Notes / Files</h2><p>If you&apos;ve downloaded CyberAlarm previously, you&apos;ll be able to hash the files to prove I&apos;ve not modified anything other than filenames. &#xA0;If even a single character in <em>any</em> file changes, the entire hash would be different - thus proving we have different versions.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/hashedfiles.PNG" class="kg-image" alt="CyberAlarm: Testing the &quot;production version&quot;... and why you should avoid it." loading="lazy"></figure>]]></content:encoded></item><item><title><![CDATA[CyberAlarm: An independent security review... and why you should avoid it.]]></title><description><![CDATA[A brief review of CyberAlarm uncovers several serious concerns.  Please read this before you deploy it.]]></description><link>https://paul.reviews/cyberalarm-an-independent-security-review-and-why-you-should-avoid-it/</link><guid isPermaLink="false">6251663e33e32e0f420ff6cc</guid><category><![CDATA[cyberalarm]]></category><category><![CDATA[police]]></category><category><![CDATA[security]]></category><category><![CDATA[vulnerability]]></category><category><![CDATA[pervade]]></category><category><![CDATA[pervade software]]></category><category><![CDATA[SME]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Tue, 24 Nov 2020 15:27:02 GMT</pubDate><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/cyber-alarm-1.png" class="kg-image" alt loading="lazy"></figure><p>Phew! It&apos;s been 3 long years since my last article... and I&apos;ve deliberated over posting this for way too long. &#xA0;But, I feel it&apos;s important enough to warrant at least some debate.</p><p>2 months ago, I came across a tweet by Lancashire Police Fraud &amp; Cyber advertising CyberAlarm; a govt-funded tool to help protect companies from cyber attacks.</p><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Police CyberAlarm helps small businesses, charities, academia and local authorities get upp-to-date knowledge of cyber attack types and trends which is an absolute key to having a robust defence. <br><br>Businesses can sign up for memeberships at <a href="https://t.co/JTFlQg7yMV">https://t.co/JTFlQg7yMV</a> &#x1F5A5;&#xFE0F; <a href="https://t.co/bq88tsZYsa">pic.twitter.com/bq88tsZYsa</a></p>&#x2014; Lancs Police Fraud &amp; Cyber (@LancsFraudCyber) <a href="https://twitter.com/LancsFraudCyber/status/1310535084324327425?ref_src=twsrc%5Etfw">September 28, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</figure><p>Interest piqued, I signed up and awaited my &quot;access code&quot; which is necessary to gain access to the downloads page. Or so I thought.</p><p>A few days later, I was contacted by a Cyber Protect officer from Leicestershire Police who explained there was no download link for the &quot;live&quot; product on the grounds of &quot;data confidentiality&quot;. &#xA0;I&apos;m not sure I understand that premise, given it&apos;s a product intended for public use... but I digress. &#xA0;Instead, he provided an &quot;installation guide&quot; PDF which outlined how the product worked &amp; how to install it. &#xA0;If I still wanted to proceed, he could provide the access code.</p><p>Here&apos;s a segment of the installation guide...</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/1.PNG" class="kg-image" alt loading="lazy"></figure><p>--</p><p>Their installation guide suggests running it inside a DMZ (de-militarized zone, an isolated segment from other network assets) or &quot;<strong>on your internal network</strong>&quot;.</p><p>For many firms, especially SME, the concept of running a DMZ is alien; with many network assets all joined together with no logical/physical segmentation whatsoever. &#xA0;This is crucial, as isolating potentially dangerous assets (IoT, BYOD devices etc) from your core infrastructure is vital to help prevent attacks travelling across your network.</p><p>Unfortunately, it&apos;s likely to be those smaller SMEs without a DMZ who deploy CyberAlarm; in the mistaken belief it&apos;s a safe &amp; secure way to mitigate cyber threats.</p><p>If you&apos;re going to run <em>anything </em>on your internal network, you must be able to ensure the product is reasonably secure. &#xA0;Faith-based security rarely ends well, so let&apos;s dive in.</p><h2 id="installation-">Installation:</h2><p>In the installation guide, they advise you to deploy this on a dedicated machine... which seems reasonable, until they explain why...</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/2.PNG" class="kg-image" alt loading="lazy"></figure><p>Disable SELinux?!</p><p>SELinux or &quot;Security-Enhanced Linux&quot; is a mandatory access control (MAC), a vital security tool built into CentOS (based on RedHat Linux). &#xA0;It&apos;s designed to protect system administrators from themselves; enforcing strict security policies and ensuring isolation between processes. &#xA0;If it&apos;s disabled, poorly-configured or malicious apps/services have root access (aka - total control) over the device.</p><p>NCSC quite rightly state &quot;rooted/jailbroken devices are a threat to sensitive data&quot; (<a href="https://www.ncsc.gov.uk/guidance/application-development-guidance-introduction">https://www.ncsc.gov.uk/guidance/application-development-guidance-introduction</a>), but NPCC are actively pushing a product which requires you to effectively root your device!</p><p>If you take NCSC&apos;s advice (and you really should!), this alone is a deal-breaker. &#xA0;The <em>only</em> reason you&apos;d disable a vital security control is because you&apos;re too idle/inept to overcome the issue which prompted you to disable it in the first place. &#xA0;If you need further proof of this ridiculous decision, here&apos;s an article on the CentOS blog called <a href="https://blog.centos.org/2017/07/dont-turn-off-selinux/">No! Don&apos;t turn off SELinux!</a> in which Thomas Cameron, Chief Architect for Red Hat says &quot;Linux is a gun and you know where your foot is&quot;.</p><p>Anyway...</p><p>I noticed a screenshot with the download link and without an access code or authentication, I proceeded to download the 2GB virtual machine image and launched it with VMWare Workstation.</p><h3 id="opening-pandora-s-box-">Opening Pandora&apos;s box...</h3><p>There&apos;s a lot to get through, so I&apos;ll summarise as much as possible.</p><h3 id="php-5-4">PHP 5.4</h3><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/5.png" class="kg-image" alt loading="lazy"></figure><p>PHP 5.4 was end of life in September 2015. &#xA0;No more security patches or updates, it&apos;s dead and should never be used in a production app. &#xA0;I&apos;ll also mention, I put this &quot;phpinfo&quot; file here remotely; it&apos;s not part of CyberAlarm.</p><h3 id="remote-network-access-via-rce">Remote Network Access via RCE</h3><p>This one beggars belief. &#xA0;The app has a file called &quot;getmon.php&quot; which literally serves as an RCE (remote command execution) endpoint.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/4.png" class="kg-image" alt loading="lazy"></figure><p>The above image shows me grabbing /etc/passwd from the virtual machine.</p><p>That&apos;s bad enough, but what if the attacker is slightly more creative?</p><p>Here, we use the SMB protocol to <strong>connect to another PC inside the network</strong> and grab sensitive data from it.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/3.png" class="kg-image" alt loading="lazy"></figure><p>If you have sensitive data, trade secrets or anything else important on your network, it&apos;s now remotely accessible to <em>anyone, anywhere </em>when you view a web page. &#xA0;We haven&apos;t placed anything on the network/virtual machine to achieve this either... the attacker is just carrying out commands as if they&apos;re sat inside your network.</p><p>Let me be really clear about this. &#xA0;This vulnerability allows a remote attacker to entirely bypass your firewall and exfiltrate <em>any </em>data accessible over your network; you only need to visit a vulnerable web page once.</p><h3 id="cross-site-scripting">Cross Site Scripting</h3><p>Looking through the code, there&apos;s no attempt to sanitize (or make safe) any user inputs, so an attacker can remotely inject malicious code into any page on the box. &#xA0;Here, we hijack the &quot;registration&quot; page.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/6.png" class="kg-image" alt loading="lazy"></figure><h3 id="tls-certificate-expiry">TLS certificate expiry</h3><p>It should go without saying, but if your security certificate expires, it&apos;s no longer secure.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/7.png" class="kg-image" alt loading="lazy"></figure><h3 id="broken-encryption">Broken Encryption</h3><p>The strongest of door locks is rendered insecure if you leave the key somewhere vulnerable. &#xA0;The same applies in cryptography. &#xA0;It&apos;s absolutely vital to generate a cryptographically random key and handle it securely.</p><p>Sadly, CyberAlarm does neither.</p><p>The &quot;key&quot; is static and hard-coded: &quot;P3rv4d3S0ftw4r3&quot;</p><p>Reading between the character substitution, you&apos;ll see &quot;Pervade Software&quot; - the developers behind CyberAlarm.</p><p>To make matters worse, they use AES-CBC, which can be implemented securely by a competent developer. &#xA0;Alas here, the weak key and complete lack of MAC (message authentication code) means they cannot trust <em>any </em>of the data they collect.</p><p>A MAC is vital; it allows the recipient to ensure the data hasn&apos;t been manipulated during transit. &#xA0;Without it, they&apos;re actioning harvested data collected from &quot;data collectors&quot; with <strong>absolutely no guarantee</strong> of its integrity. &#xA0;Far from improving security, I&apos;d argue this makes matters worse. &#xA0;Your reports could be entirely fake or largely contain data you can&apos;t act upon; diverting your attention from real risks.</p><h3 id="broken-encryption-part-deux">Broken Encryption &#xA0;- Part Deux</h3><p>One sure-fire way to ensure your product is entirely insecure is to disable all security checks on your certificate, which of course, CyberAlarm does.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/8.PNG" class="kg-image" alt loading="lazy"></figure><p>This means all updates are insecure - allowing an attacker to put <em>anything </em>on the device remotely. &#xA0;Note: I&apos;ve added the comments in this screenshot to clarify what each line does.</p><h3 id="embedding-server-passwords-in-code-">Embedding server passwords in code!</h3><p>Seriously.</p><p>When the app needs to grab a list of &quot;jobs&quot; or tasks to carry out locally, it logs in with a password of &quot;3jscove&quot;.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/image.png" class="kg-image" alt loading="lazy"></figure><p>If you&apos;re wondering, the &quot;phash&quot; function is a wrapper for SHA-256; another insecure &amp; unsuitable choice for password hashing.</p><h2 id="insert-record-scratch-sound-here">&lt;insert record scratch sound here&gt;</h2><p>In light of all these failings, I notified Leicestershire Police and awaited their response.</p><p>When it came, I was stunned.</p><p>The link I&apos;d &quot;found&quot; (from their installation guide) was a 2yr old &quot;test&quot; version never intended for public use! &#xA0;Great, it&apos;s 2 years old... now your dependencies are only 3 years out of date instead &lt;/sarcasm&gt;</p><p>I&apos;m not about to disclose the entire conversation or the meetings which followed, but when the phrase &quot;no deal breakers&quot; was uttered, I realised this has to go public. &#xA0;In fairness, they have put me in touch with the CTO at Pervade with a view to &quot;making the product better&quot; but after a couple of brief conversations (none of which technical) and despite his candid response, my position now hasn&apos;t changed from day one.</p><p>This pilot should be pulled <strong>immediately</strong>. I&apos;d actually go one step further and question how a product with so many simple but critical security flaws could ever be promoted by the Police.</p><h2 id="the-actual-live-version-">The &quot;actual&quot; live version...</h2><p>Following my criticisms over the &quot;old&quot; version, I was given an access code to allow me to download the &quot;live&quot; one.</p><p>Suffice to say, little has changed.</p><p>The code is still woefully insecure, as is the implementation of several core features and in all honesty, I just haven&apos;t the time nor motivation to explain why disabling security controls is a bad idea. Sorry Jon.</p><h2 id="obscurity-hides-a-thousand-sins-">Obscurity hides a thousand sins...</h2><p>What I haven&apos;t yet mentioned, is the fact that every single line of code in CyberAlarm is encoded/obfuscated using IonCube. &#xA0;By obscuring the code, it prevents any casual observer from uncovering the mess contained within.</p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2020/11/10.PNG" class="kg-image" alt loading="lazy"></figure><p>Thankfully, IonCube is easily reversed (as is any encoding) and offers very little real-world protection. &#xA0;However, CyberAlarm has apparently &quot;passed&quot; a penetration test which, assuming it wasn&apos;t carried out by Stevie Wonder, beggars belief.</p><h2 id="summary">Summary</h2><p>CyberAlarm is sadly nothing more than an insecure, poor-designed/engineered wrapper around OpenVAS - an open-source vulnerability assessment scanner.</p><p>I appreciate the forces may disagree with my findings and/or conclusions, however whilst they don&apos;t consider any of the above to be &quot;deal breakers&quot;, the public are now able to decide if they&apos;re willing to entrust their firms security to a product like CyberAlarm.</p><p>If you&apos;re in #infosec (even if you&apos;re not), I welcome your comments below.</p><h3 id="update-s-">Update(s)</h3><p>25/11/20 3PM: Thanks to Dave Walker on Twitter for pointing out a mistake regarding CentOS. &#xA0;My screenshots show a later build with CentOS 7 / PHP 5.4 so to avoid confusion, I&apos;ve removed that section. Apologies folks.</p><p>27/11/20 17:30PM: The NPCC have <a href="https://cyberalarm.police.uk/pca-official-response/">published a response</a>, claiming this is &quot;completely untrue&quot;. &#xA0;Needless to say, they&apos;re entirely wrong... but I&apos;ve been hearing that story for 2 months. &#xA0;I&apos;ll reply here shortly, however for more immediate updates, keep your eyes peeled on <a href="https://twitter.com/paul_reviews">@paul_reviews</a> - where I&apos;ve already disproven their first claim (they never provided a link to the vulnerable version)</p><p>02/12/20 5PM: My response to NPCC and a review of the production build is here: <a href="https://paul.reviews/cyberalarm-testing-the-production-version-and-why-you-should-avoid-it/">https://paul.reviews/cyberalarm-testing-the-production-version-and-why-you-should-avoid-it/</a></p>]]></content:encoded></item><item><title><![CDATA[Passwords: Using 3 Random Words Is A Really Bad Idea!]]></title><description><![CDATA[<p>In 2015, the UK government released an <a href="https://www.cyberaware.gov.uk/blog/passwords-%E2%80%93-why-three-random-words"><strong>article</strong></a> advocating the use of 3 random words in passwords, citing &quot;pragmatism and algorithmic strength against common issues like brute force attacks&quot;.</p><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr"><a href="https://twitter.com/hashtag/Thinkrandom?src=hash&amp;ref_src=twsrc%5Etfw">#Thinkrandom</a> when creating passwords &#x2013; <a href="https://twitter.com/hashtag/use3randomwords?src=hash&amp;ref_src=twsrc%5Etfw">#use3randomwords</a> to make them  <a href="https://t.co/6BlS8EqK7v">https://t.co/6BlS8EqK7v</a> <a href="https://t.co/qtA43ffLf6">pic.twitter.com/qtA43ffLf6</a></p>&#x2014; Cyber</blockquote></figure>]]></description><link>https://paul.reviews/passwords-why-using-3-random-words-is-a-really-bad-idea/</link><guid isPermaLink="false">6251663e33e32e0f420ff6ca</guid><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Sun, 22 Oct 2017 13:41:00 GMT</pubDate><content:encoded><![CDATA[<p>In 2015, the UK government released an <a href="https://www.cyberaware.gov.uk/blog/passwords-%E2%80%93-why-three-random-words"><strong>article</strong></a> advocating the use of 3 random words in passwords, citing &quot;pragmatism and algorithmic strength against common issues like brute force attacks&quot;.</p><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr"><a href="https://twitter.com/hashtag/Thinkrandom?src=hash&amp;ref_src=twsrc%5Etfw">#Thinkrandom</a> when creating passwords &#x2013; <a href="https://twitter.com/hashtag/use3randomwords?src=hash&amp;ref_src=twsrc%5Etfw">#use3randomwords</a> to make them  <a href="https://t.co/6BlS8EqK7v">https://t.co/6BlS8EqK7v</a> <a href="https://t.co/qtA43ffLf6">pic.twitter.com/qtA43ffLf6</a></p>&#x2014; Cyber Aware (@cyberawaregov) <a href="https://twitter.com/cyberawaregov/status/855366795359858688?ref_src=twsrc%5Etfw">April 21, 2017</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</figure><p>2 years later and a plethora of respected Twitter users continue to push this advice. If you&apos;re one of them (looking at you <a href="https://twitter.com/WMPDigitalPCSO"><strong>@WMPDigitalPCSO</strong></a> <a href="https://twitter.com/DurhamCyber"><strong>@DurhamCyber</strong></a> <a href="https://twitter.com/SurreyPolice"><strong>@SurreyPolice</strong></a> <a href="https://twitter.com/nerccu"><strong>@nerccu</strong></a> <a href="https://twitter.com/ncsc"><strong>@ncsc</strong></a> <a href="https://twitter.com/HP_Cyber"><strong>@HP_Cyber</strong></a> <a href="https://twitter.com/metpoliceuk"><strong>@metpoliceuk</strong></a> <a href="https://twitter.com/cyberawaregov"><strong>@cyberawaregov</strong></a>), I implore you to read this article thoroughly and reconsider your position.</p><h1 id="understanding-the-basics-">Understanding the basics...</h1><p>After you&apos;ve entered your chosen password, a responsible site should store it using a suitably-strong password hashing algorithm (bCrypt, PBKDF2, Argon2 etc). Note, I said &quot;password hashing algorithm&quot;... this is a different concept from a cryptographic hashing algorithm. More on that shortly.</p><p>The developer, mindful of the threat landscape, value of the data &amp; server resources... will configure their chosen algorithm such that each hash takes a set time to compute. For example, it&apos;s reasonable to expect a hash to be generated in 400/500 milliseconds (or roughly half a second). This delay is crucial, as it dramatically increases the time required to brute-force their way into your account. A 0.5 second delay is insignificant to the real user, but a real burden to an attacker needing to try trillions of various passwords.</p><p>In an ideal world, sites would all use a well-configured algorithm &amp; users would opt for strong, truly random passwords. But, that&apos;s rarely the case.</p><h1 id="getting-the-basics-wrong-">Getting the basics wrong...</h1><p>Another, entirely inappropriate storage method is a cryptographically strong hashing/digest algorithm. The underlying principle remains the same; derive a fixed-length output for any given input. However, these hashes are blisteringly fast to compute... making brute-force far easier. Examples of such hash algorithms are MD5 (still very common and possible to brute-force at a rate of 200 billion permutations a second), SHA1 (70 billion a second), SHA256 (23 billion a second), SHA512 (8 billion a second) and so on.</p><p>As this article &amp; indeed most password advice is aimed at the end-user, it&apos;s important to choose a password based on the worst case scenario; assume the site stores our credentials in the weakest possible way and mitigate that risk first.</p><h1 id="characters-vs-words-the-premise-behind-the-advice">Characters vs words; the premise behind the advice</h1><p>Long, strong, unique &amp; complex passwords are inherently difficult to remember... especially if you use several websites. This inevitably leads to password re-use, recycling &amp; insecure storage. On that basis, I fully understand the need for an alternative, more-pragmatic approach.</p><p>However, are words really a secure alternative? Let&apos;s dive in.</p><h1 id="the-maths">The Maths</h1><p>For an attacker, carrying out a brute-force attack is a last resort; the process of trying every possible permutation in order to break a password hash. It is however, a guaranteed way (given sufficient time &amp; resources) to gain access to an account.</p><p>To understand the challenge our attacker faces, we first need to understand exponents.</p><p>If our password consists of 8 possible characters and is 3 characters long, the calculation would look like so:<br></p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2017/10/exponent.jpg" class="kg-image" alt="exponent" loading="lazy"></figure><p>In this example, there are 512 possible permutations; meaning our attacker is guaranteed to access our account after 512 attempts.</p><p>Let&apos;s take it one step further with a real-world example...</p><p>If a password consists of a-z, A-Z and 0-9, we have 26 characters + 26 characters + 10 numbers. Our &quot;base&quot; in this example would be 62. Now let&apos;s assume it&apos;s 12 characters long, meaning our exponent is 12.</p><p>62^12 = 3226266762397899821056 permutations (three sextillion, two hundred twenty-six quintillion, two hundred sixty-six quadrillion, seven hundred sixty-two trillion, three hundred ninety-seven billion, eight hundred ninety-nine million, eight hundred twenty-one thousand &amp; fifty-six)</p><p>Obviously, that&apos;s an enormous burden to our attacker and results in a password they&apos;re never going to break, assuming the password is chosen at <em>random</em>.</p><h2 id="it-s-not-all-about-the-base">It&apos;s not all about the base</h2><p>Now you understand how passwords are stored &amp; broken, we can begin to understand why some believe 3 (or more) random words are a better, more secure alternative.</p><p>Compare these...</p><p>&quot;MTLWcAXfY4Dy&quot; is a 12-character, random password.<br>&quot;<strong><strong>jump</strong></strong>desk<strong><strong>polish</strong></strong>&quot; is a 3-word, random password. It just so happens to be 14 characters too.</p><p>We can represent &quot;MTLWcAXfY4Dy&quot; as upper-case, lower-case &amp; numbers... giving us a base of 62. It&apos;s 12 characters long, giving us our exponent of 12.</p><p>We&apos;ve already done the maths on 62^12 earlier, so we know it to be unbreakable if chosen at <em>random</em>.</p><p>If we represent &quot;jumpdeskpolish&quot; in the same fashion, it&apos;s just lower-case... giving us a base of 26. Despite being easier to remember, it&apos;s also longer at 14 characters, giving us our exponent of 14.</p><p>26^14 = 64509974703297150976 permutations (sixty-four quintillion, five hundred nine quadrillion, nine hundred seventy-four trillion, seven hundred three billion, two hundred ninety-seven million, one hundred fifty thousand, nine hundred &amp; seventy-six)</p><p>Purely on the maths alone, we can see this password has far fewer permutations and is undoubtedly weaker... but that&apos;s not the whole story.</p><p>64509974703297150976 (permutations) / 200,000,000,000 (speed in seconds to break an MD5 hash, the weakest widely-used algorithm) is just over 10 years!</p><p>Success! We&apos;ve managed to use far fewer characters, made our password easier to remember and it&apos;s still going to take over a decade to break. By any reasonable measure, this can be considered secure.</p><p>Or is it?</p><h1 id="the-combinator-attack">The Combinator Attack</h1><p>Modern password cracking machines can just as easily rotate characters as words, so &quot;AA/AB/AC&quot; consumes near-identical resources as &quot;appleapple/appleardvark/appleangle&quot; and so on.</p><p>But now we&apos;re using words, there&apos;s a much faster way to break our password.</p><p>Instead of representing &quot;jumpdeskpolish&quot; as 26^14, why can&apos;t we represent it as 171,000^3?</p><p>Confused yet? Let me explain.</p><p>The latest figures suggest there are 171,000 words in the English dictionary, meaning our &quot;base&quot; increases dramatically. Our password is 3 words long... so let&apos;s replay the maths again.</p><p>171,000^3 = 5000211000000000 permutations (five quadrillion, two hundred eleven billion)</p><p>Remember, our attacker can break MD5 hashes at a rate of <strong><strong>200 billion a second</strong></strong>.</p><p>5000211000000000 (permutations) / 200,000,000,000 (speed to break an MD5 hash, the weakest widely-used algorithm) = just shy of <strong><strong>7 hours</strong></strong>!</p><p>Just by altering the attack, our password no longer provides 10 years security... but a much less confidence-inspiring 7 hours.</p><h1 id="it-gets-worse-">It gets worse...</h1><p>We&apos;ve assumed 171,000 is the maximum number of words in a modern English dictionary. By doing so, we know that any password containing 3 English words <em>will fall</em> in 7 hours or less.</p><p>However, that&apos;s not the whole story either.</p><p>Let me introduce Susie Dent...<br></p><figure class="kg-card kg-image-card"><img src="https://paul.reviews/content/images/2017/10/SPORT00021.jpg" class="kg-image" alt="SPORT00021" loading="lazy"></figure><p>If you&apos;re in the UK, you&apos;ll likely recognise Susie as the lexicographer and dictionary expert from <a href="https://en.wikipedia.org/wiki/Countdown_(game_show)"><strong>Countdown</strong></a>. <a href="https://www.lingholic.com/how-many-words-do-i-need-to-know-the-955-rule-in-language-learning-part-2/"><strong>Susie&apos;s research</strong></a> demonstrates the average active vocabulary of an English-speaking adult is 20,000 words; with their passive vocabulary being closer to 40,000.</p><p>If you&apos;re wondering... an active vocabulary consists of words <em><strong><strong>you can recall</strong></strong></em> and use regularly yourself. A passive vocabulary consists of words you recognise &amp; understand, but aren&apos;t able to use yourself.</p><p>If we take Susie&apos;s expert opinion at face value, our calculations now look like this.</p><p>20,000^3 = 8000000000000 permutations (eight trillion).</p><p>8000000000000 (permutations) / 200,000,000,000 (speed to break an MD5 hash) is 40 seconds. FORTY SECONDS!</p><p>We&apos;ve gone from 10 years, to 7 hours, to 40 seconds. This is simple mathematics folks, no opinions or interpretation here.</p><p>Not to cast aspersions on Susie&apos;s expertise, but there has also been research which demonstrates a college-educated adult has a vocab of around 80,000 words (or around half of all words in the dictionary). So, if your linguistic ability is comparable to Jacob Rees-Mogg, are you secure?</p><p>80,000^3 = 512000000000000 permutations (five hundred twelve trillion) or, at the same rate as before, your 3 &quot;random&quot; words falls in just <strong><strong>42 minutes</strong></strong>!</p><h1 id="adding-numbers-special-characters">Adding numbers &amp; special characters</h1><p>I have noticed a couple of Twitter&apos;ers adding &quot;use numbers &amp; special chars too&quot; as a caveat to using 3 random words. This not only undermines the entire premise of memorable words, but has little/no security benefit either.</p><p>In the example above, we&apos;ve gone from a base of 20,000 to 80,000. If quadrupling the base has no tangible effect on security, such that it&apos;s broken in under an hour, adding 100 special chars &amp; 10 numbers really won&apos;t make a dent.</p><p>The underlying issue here is the low exponent... making it <strong><strong>exponent</strong></strong>ially easier to break.</p><h1 id="stronger-hashing">Stronger hashing</h1><p>Now it&apos;s true... I&apos;ve focussed on the weakest &amp; fastest possible hash which is still widely (and sadly!) in use. If the hash is slower, the time to break the hash increases significantly.</p><p>But, if we choose a password assuming the worst possible scenario (MD5, notwithstanding plain-text), it actually doesn&apos;t matter how they&apos;re stored; it&apos;s already either immensely-strong, or unbreakable.</p><h1 id="what-method-should-i-promote">What method should I promote?</h1><p>Password managers. Nothing else.</p><p>The machine-generated passwords they provide (assuming you&apos;re using a respectable one!) are quite literally unbreakable at 12 upper/lower/numbers or more, even with the weakest storage algorithms.</p><p>Before promoting anything, research &amp; understand the concept and ask yourself... could I/do I do this myself? If you can remember 30+ (or possibly hundreds of) random, 12-character passwords, great... but the majority can&apos;t! Rather than promoting passwords as security measures, instead sell the added usability &amp; convenience of never having to deal with passwords again.</p><p>Forget the semantics &amp; subtle nuances of password security; upper-case, lower-case, special characters, numbers, words, lengths, storage, entropy et al... humans don&apos;t <em>do</em> random, at least not well.</p><h1 id="faqs">FAQs</h1><p><strong><strong>&quot;Is 4 random words enough?&quot;</strong></strong><br>The <a href="https://www.ncsc.gov.uk/guidance/password-guidance-simplifying-your-approach"><strong>NCSC&apos;s article</strong></a>, upon which the above advice is based, actually suggests 4 random words, not 3. It&apos;s not clear why someone arbitrarily opted to lower the quantity of words. But, now we&apos;re increasing the exponent, not the base... it&apos;ll have a significant impact upon your password&apos;s security. However, it&apos;s still not enough.</p><p>20,000^4 = 160000000000000000 permutations (one hundred sixty quadrillion). Using the same 200,000,000,000 a second figure, that password would fall in 9 days.</p><p><strong><strong>&quot;Which password manager should I use?&quot;</strong></strong><br>There are several, each serving very different purposes. For home/SME users, I recommend 1Password.</p><p><strong><strong>How does this compare to diceware?</strong></strong><br>Diceware is a list of 7,776 words, but they are truly random. A 7-word diceware password could be represented as:</p><p>7776^7 = 1719070799748422591028658176 permutations (one octillion, seven hundred nineteen septillion, seventy sextillion, seven hundred ninety-nine quintillion, seven hundred forty-eight quadrillion, four hundred twenty-two trillion, five hundred ninety-one billion, twenty-eight million, six hundred fifty-eight thousand, one hundred seventy-six)</p><p>At 200 billion a second, it&apos;d literally take millions of years to break. Note the &quot;base&quot; is significantly lower than our &quot;3 random word&quot; examples, but a slightly higher exponent takes it from broken in seconds, to <strong><strong>unbroken</strong></strong> in millions of years.</p><p>[Edit]<br>@ramriot just made an important point on Twitter, worthy of an update here...</p><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">BTW mentions of diceware as strong should also include that many places that need PW also restrict length thus precluding diceware.</p>&#x2014; 418: No Coffee 4 U &#x1F916; (@ramriot) <a href="https://twitter.com/ramriot/status/922448154552864768?ref_src=twsrc%5Etfw">October 23, 2017</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</figure><p>If the site limits password input length, it may be impossible to use diceware.</p><p><strong><strong>I&apos;ve followed the &quot;3 random word&quot; advice. Should I change my passwords?</strong></strong><br>Yes. Stop reading, do it now.</p><h1 id="summary">Summary</h1><p>Don&apos;t use words in passwords. Ever.<br>Don&apos;t try coming up with secure passwords, apart from the one protecting your password manager.<br>After adopting a solid password manager, don&apos;t give passwords another thought... let it do the hard work for you.<br>If you insist on tweeting &quot;3 random word&quot; advice, provide evidence to substantiate its security.</p><p>That&apos;s it folks. Please RT.</p>]]></content:encoded></item><item><title><![CDATA[SafeBuy: Can you trust a trustmark?]]></title><description><![CDATA[Private, secure & trusted... or is it?]]></description><link>https://paul.reviews/safebuy-can-you-trust-a-trustmark/</link><guid isPermaLink="false">6251663e33e32e0f420ff6c9</guid><category><![CDATA[xss]]></category><category><![CDATA[security]]></category><category><![CDATA[passwords]]></category><category><![CDATA[breach]]></category><category><![CDATA[data]]></category><category><![CDATA[safebuy]]></category><category><![CDATA[trustmark]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Fri, 06 Oct 2017 16:49:35 GMT</pubDate><media:content url="https://paul.reviews/content/images/2017/10/SBY0010a-SafebuyConsumerCarelogo.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://paul.reviews/content/images/2017/10/SBY0010a-SafebuyConsumerCarelogo.jpg" alt="SafeBuy: Can you trust a trustmark?"><p>While watching reruns of <a href="https://en.wikipedia.org/wiki/Dragons%27_Den_(UK_TV_series)">Dragon&apos;s Den</a> last week, one particular pitch caught my attention.</p>
<p>After Googling the company, I arrived at a page containing SQL errors.  Having read the error log, it became clear the site had a critical security vulnerability.  After a few tweets, emails &amp; a brief call, the company patched it within 24hrs. Result!</p>
<p>However, something else caught my eye...</p>
<p><img src="https://paul.reviews/content/images/2017/10/safebuy_small.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>... a <a href="http://safebuy.org.uk">SafeBuy</a> trustmark.</p>
<p>Clicking the trustmark reveals the following popup...</p>
<p><img src="https://paul.reviews/content/images/2017/10/safebuy_popup.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>Interest piqued, I decided to see just how trustworthy this SafeBuy scheme really is.</p>
<h2 id="registration">Registration</h2>
<p>SafeBuy offer a 60 day free trial, after which, it&apos;s &#xA3;180 a year.</p>
<p><img src="https://paul.reviews/content/images/2017/10/reg1.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p><img src="https://paul.reviews/content/images/2017/10/payment1-1.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>That&apos;s it!  That&apos;s the entire registration process.  The observant amongst you will note the lack of a &quot;I agree to abide by our code of conduct&quot; checkbox and, if you&apos;re especially observant, you&apos;ll also note the price has gone up to &#xA3;238.80 too.</p>
<p>The majority of sites ask for a password during registration, but surprisingly, SafeBuy do not.</p>
<p>24 hours later, I receive an email:</p>
<p><img src="https://paul.reviews/content/images/2017/10/email1.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>Hmm, the password is prefixed with &quot;safe&quot; and what looks to be a random number,  1709121.  Remember that for later...</p>
<p>After logging in, you&apos;re greeted with your account profile page.</p>
<p><img src="https://paul.reviews/content/images/2017/10/loggedin1.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>Wait, what?! Toronto, Canada, Freshbooks?!  Where did that come from?</p>
<p>In actual fact, the URL I entered (urity.co.uk) redirects to our billing control panel; run by Freshbooks.  SafeBuy have wrongly assumed I own Freshbooks... but surely they wouldn&apos;t issue a trustmark in their name?</p>
<p><img src="https://paul.reviews/content/images/2017/10/1.PNG" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>Sigh.  The independent vetting process can&apos;t be particularly thorough if this slipped through!</p>
<p>As if that wasn&apos;t bad enough, I&apos;ve been automatically featured in their members&apos; directory.</p>
<p><a href="https://www.safebuy.org.uk/directory/computers.html">https://www.safebuy.org.uk/directory/computers.html</a><br>
<img src="https://paul.reviews/content/images/2017/10/memberdirectory1.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>Hang on, that &quot;accreditation number&quot; looks familiar...<br>
<img src="https://paul.reviews/content/images/2017/10/weakPW.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>Oh for christ sake!  The reputation of &quot;my&quot; business, or rather that of Freshbooks, is now in the hands of anyone blessed with the gift of sight.  Thanks &quot;Safe&quot; Buy!</p>
<p>By this point, I&apos;ve already written this off as insecure, ill-conceived snake oil.  But, how deep does this rabbit hole go?</p>
<h2 id="crediblereviews">&quot;Credible reviews&quot;</h2>
<p>Having all the hallmarks of a &quot;one man band&quot;, I doubt SafeBuy has the resources to audit each &amp; every review they receive.  What they can do however, is implement the most basic of automated checks to verify a review is genuine.  Unfortunately, that doesn&apos;t appear to be the case.</p>
<p>Here&apos;s my first review:<br>
<img src="https://paul.reviews/content/images/2017/10/review1.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>Trouble is, you get slightly less of a warm, fuzzy feeling when you review... yourself.  Yes, I submitted that review... and I was logged in at the time!  What&apos;s the point of a &quot;trusted&quot; reviews site which allows companies to review themselves?</p>
<h2 id="securityorlackthereof">Security, or lack thereof</h2>
<p>Before we get into the shocking state of security at SafeBuy, here&apos;s my reviews page:<br>
<a href="https://ratings.safebuy.org.uk/freshbooks.com/stats.html">https://ratings.safebuy.org.uk/freshbooks.com/stats.html</a></p>
<p>If you&apos;re wondering why the images are going crazy and you&apos;re hearing some pretty awful music, that&apos;s the harlem shake.</p>
<p>You see, the site is so unspeakably insecure, it&apos;s possible to embed &amp; execute arbitrary code as if I&apos;m the developer.  OK, the harlem shake is a bit of harmless fun... but I could just as easily embed malware or indeed alter <em>anything</em> you see; quantity of reviews, star ratings, each review, their responses... literally anything!</p>
<p>Talking of responses:<br>
<img src="https://paul.reviews/content/images/2017/10/reviewedit1.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>On this screen, we can see all our customer reviews and if necessary, respond to them.  One of the best ways to judge a company is not from the quantity of reviews (especially as they&apos;re so easy to fake) but how they respond to reviews/complaints.</p>
<p>Hmm, there&apos;s an ID in the URL.  What happens if we change it?</p>
<p><img src="https://paul.reviews/content/images/2017/10/reviewedit2.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>Sigh!  It&apos;s the review screen for <a href="http://oakhillflooringltd.co.uk">oakhillflooringltd.co.uk</a>.</p>
<p>At first glance, you&apos;d be forgiven for thinking this isn&apos;t a major security concern.  After all, we can view their reviews publicly anyway.  Trouble is, the &quot;reply&quot; button works!</p>
<p>Yes, we can reply to OakHill&apos;s customers as if we&apos;re logged in as OakHill.  It&apos;s a good job I&apos;m not in competition with them, or it&apos;d be very easy to destroy their reputation.</p>
<h2 id="letsrecap">Let&apos;s recap</h2>
<p>In summary, we&apos;ve visited an insecure website, been assured it&apos;s secure &amp; private by a trustmark, registered and been accredited for a brand I neither own nor control, been given an insecure default password (also stored in plain text!), reviewed our own company, hijacked our own review page to deliver fake/inflated reviews and/or malware &amp; had the opportunity to hijack <em>any</em> other SafeBuy member simply by changing a number in the address bar.</p>
<p>It&apos;s hard to believe this was designed in collaboration with the Office of Fair Trading!<br>
<img src="https://paul.reviews/content/images/2017/10/oft1.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>It&apos;s worth mentioning at this point, the OFT closed in 2014... but it adds credibility, so why remove it? &lt;/sarcasm&gt;</p>
<h2 id="responsibledisclosureredefined">Responsible disclosure; redefined?</h2>
<p>As regular readers will know, I always follow (what we call) responsible disclosure; typically by reporting these issues to the company in an attempt to have them addressed.  However, there are those who will undoubtedly claim this <em>isn&apos;t</em> responsible disclosure, so let me explain my actions...</p>
<p>The industry is plagued by snake oil, meaningless trustmarks which continue to mislead users around the world.  I&apos;ve no doubt Troy Hunt would agree, given his comments in this <a href="https://www.troyhunt.com/why-i-am-worlds-greatest-lover-and/">excellent article</a> from 2013.  By reporting &amp; effectively donating my time to companies which provide them, I am complicit in their questionable practices.  On this occasion, the only way to &quot;responsibly disclose&quot; this... is to inform you, the general public, of just how pointless they really are.</p>
<h2 id="servingmalware">Serving malware!</h2>
<p>If you visit the site with a VPN and/or antivirus app running, you&apos;ll receive an error similar to this:<br>
<img src="https://paul.reviews/content/images/2017/10/freedomeblock.jpg" alt="SafeBuy: Can you trust a trustmark?" loading="lazy"></p>
<p>Why?  The site has been infected with malware for months!  Thankfully, the site which the malware redirects to has since been fixed... but quite how &quot;SafeBuy&quot; were hacked is still unknown.  Keep in mind, their trustmark ensures &quot;total security &amp; privacy&quot; yet their own site falls short.</p>
<h2 id="summary">Summary</h2>
<p>I have thinly veiled contempt for companies which claim to be &quot;secure&quot; simply by displaying a misleading image; even more so for those who advocate &amp; facilitate this type of behaviour.</p>
<p>To put it bluntly, SafeBuy is a complete &amp; utter shambles.  If you&apos;re considering entrusting your firm&apos;s reputation to them, I&apos;d strongly urge you to think again.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Kervball: The Kerv ring data breach...]]></title><description><![CDATA[Here's what happened the day my Kerv arrived...]]></description><link>https://paul.reviews/kervball-the-kerv-ring-data-breach/</link><guid isPermaLink="false">6251663e33e32e0f420ff6c8</guid><category><![CDATA[security]]></category><category><![CDATA[privacy]]></category><category><![CDATA[breach]]></category><category><![CDATA[data]]></category><category><![CDATA[ico]]></category><category><![CDATA[kerv]]></category><category><![CDATA[insider threat]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Fri, 23 Jun 2017 09:15:38 GMT</pubDate><media:content url="https://paul.reviews/content/images/2017/06/kerv.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><blockquote>
<img src="https://paul.reviews/content/images/2017/06/kerv.jpg" alt="Kervball: The Kerv ring data breach..."><p>Notice: This article is a work-in-progress and serves only to address questions from media outlets &amp; Kerv customers.</p>
</blockquote>
<p>On the morning of June 21st 2017, I received an email from an &quot;anonymous&quot; Kerv user... coincidentally the same day I received my Kerv ring.</p>
<p><img src="https://paul.reviews/content/images/2017/06/20170622_153103.jpg" alt="Kervball: The Kerv ring data breach..." loading="lazy"></p>
<p>Nothing unusual there, apart from the fact it contained my name, home address, phone number and memorable information.  Oh dear...</p>
<p>As regular readers will know, I use 1Password to generate both passwords &amp; memorable information; meaning a breach of such information doesn&apos;t adversely affect other accounts I hold elsewhere.  As each entry is entirely unique, it&apos;s trivially easy to determine the author of this email really does have access to my Kerv account.  It quickly became clear that this wasn&apos;t a breach in the typical sense... this &quot;anonymous&quot; person had inside information which wouldn&apos;t otherwise be available.  In an act of either lunacy or clarity, he subsequently forwarded admin credentials to me from a Tor address; obviously unaware of my work deanonymizing Tor users.  Not a smart move!</p>
<p>After logging in to my Kerv account, I was greeted with the usual user interface.  This time however, I clearly had access to features which were only intended for Kerv employees.  After a brief investigation, it became obvious I had full admin access to the site, shop &amp; customer database.</p>
<p>Time to contact Kerv!</p>
<p>I initially tried the Kerv &quot;lost &amp; stolen&quot; number from the site, but there was nobody immediately available for comment.  Cue Twitter...</p>
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Hi <a href="https://twitter.com/KervLife">@KervLife</a> <br>I need to speak with your security team urgently. Please advise.<br>cc <a href="https://twitter.com/FD_Phil">@FD_Phil</a></p>&#x2014; Paul Moore (@Paul_Reviews) <a href="https://twitter.com/Paul_Reviews/status/877467210796716033">June 21, 2017</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>After a matter of minutes, Mr Phil Campbell (Director @ Kerv Wearables) emailed to request further information.  After a lengthy telephone conversation, I advised Phil to immediately take the site offline until a review could be performed.  Almost immediately, my access was revoked and at 2:15PM, the site was taken offline completely.</p>
<p><img src="https://paul.reviews/content/images/2017/06/9.PNG" alt="Kervball: The Kerv ring data breach..." loading="lazy"></p>
<p>In the hours which followed, Phil and his team worked to identify the root cause and restore service to their customers.</p>
<p>More information to follow...</p>
<h2 id="faq">FAQ</h2>
<p>Q) <strong>What can I do to protect myself?</strong><br>
A) Change your passwords and memorable information, immediately.  Use a <a href="https://paul.reviews/password-managers-facts-fallacies-fud/">password manager</a> to generate them both.  Register with <a href="http://www.noddle.co.uk">Noddle</a> for free credit alerts/reports.</p>
<p>Q)  <strong>How did Kerv handle the disclosure?</strong><br>
A)  Phil/Kerv&apos;s response is a perfect example of how companies should handle data/security breaches.</p>
<p>Q)  <strong>Do you have any other concerns, should I still use my Kerv?</strong><br>
A)  I haven&apos;t spent much time with Kerv, having only received it yesterday and it being offline ever since.  However, I have a number of concerns which I&apos;ve raised with Phil.  It wouldn&apos;t be appropriate to list them here, however I&apos;ve every confidence that Kerv will resolve any outstanding issues.  Nonetheless, I see no reason to abandon Kerv.  Insider threats affect everyone; Kerv have taken (what I&apos;d consider to be) reasonable &amp; appropriate steps to mitigate the risks involved and have been open &amp; honest in their responses.</p>
<p>Q)  <strong>What information did you have access to?</strong><br>
A)  I was added to the &quot;customer services admin&quot; group, allowing access to virtually every piece of customer data, <strong>excluding financial info</strong>.</p>
<p>Q)  <strong>Do you have any further comments?</strong><br>
A)  If &amp; when I do, I&apos;ll update the article.  If you&apos;re a news/media outlet looking for comment, please use the comments form below.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Don't let them paste passwords...]]></title><description><![CDATA[Disabling paste on password fields can increase security... despite claims to the contrary.]]></description><link>https://paul.reviews/dont-let-them-paste-passwords/</link><guid isPermaLink="false">6251663e33e32e0f420ff6c7</guid><category><![CDATA[2fa]]></category><category><![CDATA[multi-factor authentication]]></category><category><![CDATA[biometrics]]></category><category><![CDATA[security]]></category><category><![CDATA[passwords]]></category><category><![CDATA[paste]]></category><category><![CDATA[disable paste]]></category><category><![CDATA[password managers]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Sat, 18 Feb 2017 12:45:16 GMT</pubDate><media:content url="https://paul.reviews/content/images/2017/02/header-3.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://paul.reviews/content/images/2017/02/header-3.png" alt="Don&apos;t let them paste passwords..."><p><img src="https://paul.reviews/content/images/2017/02/header-2.png" alt="Don&apos;t let them paste passwords..." loading="lazy"></p>
<p>After months of tweets, emails &amp; articles from eminent figures like <a href="https://www.troyhunt.com/the-cobra-effect-that-is-disabling/">Troy Hunt</a> &amp; the <a href="https://www.ncsc.gov.uk/blog-post/let-them-paste-passwords">NCSC</a>, it&apos;s about time I weighed in on the debate surrounding sites which disable a user&apos;s ability to paste passwords.</p>
<p>The general consensus amongst many experts, including those mentioned above, is that disabling paste on password fields reduces security; the NCSC went one step further, calling it <a href="http://www.telegraph.co.uk/news/2017/02/14/gchq-boss-admits-even-struggles-remember-internet-passwords/">&quot;completely pointless&quot; and &quot;damaging&quot;</a>.</p>
<p>So without further ado, allow me to explain why I believe disabling paste can actually increase security.</p>
<h2 id="premise">Premise</h2>
<p>Disabling paste facilitates barrier-less 2FA.</p>
<p>Confused?  OK, let me explain...</p>
<p>Traditional e-authentication systems monitor <em>what</em> you type (your password, for example).  This, by definition, provides 1FA or single-factor authentication; you&apos;ve demonstrated to the site (or verifier, for those of a <a href="https://pages.nist.gov/800-63-3/sp800-63-3.html">NIST</a>y disposition) that you &quot;know&quot; the password.</p>
<p>As we know, passwords can be and are frequently stolen, guessed, intercepted, cracked or bypassed... thus requiring a drive towards 2FA or multi-factor authentication.</p>
<p>For many years, companies have focused on introducing a &quot;possession&quot; factor, allowing you to present something you have (along with something you know) to further prove you are who you&apos;re purporting to be.  That&apos;s great, in theory... but the adoption rate of this type of 2FA is pretty abysmal; with some firms (Google et al) seeing figures of &lt; 5%.</p>
<p>Other firms have opted to use a little-known technique called behavioural biometrics/keystroke dynamics.  These systems monitor <em>how</em> you type; the periodicity of your keystrokes, how long you dwell between each key, how often you make mistakes, how long each key is pressed and so on.  These metrics can be used, with astonishing &amp; near 100% accuracy, to determine who&apos;s typing.  This is known as an inherence factor.  <a href="https://paul.reviews/behavioral-profiling-the-password-you-cant-change/">Here&apos;s a more detailed explanation of behavioural profiling</a>.</p>
<p>You could, in theory, give someone your password and they&apos;ll be unable to login... simply because their typing pattern differs enormously from your own.  Think of it as a signature; something unique to you.</p>
<h2 id="justhowreliableisit">Just how reliable is it?</h2>
<iframe width="560" height="315" src="https://www.youtube.com/embed/v5tjBF5zlkg" frameborder="0" allowfullscreen></iframe>
<p>Back in 2015, myself &amp; Per Thorsheim (@thorsheim) <a href="https://www.youtube.com/watch?v=v5tjBF5zlkg">presented our research</a> into behavioural biometrics (and how to defeat it) at Cambridge University.</p>
<p>During this research, we demonstrated the ability to <a href="https://arstechnica.co.uk/security/2015/07/how-the-way-you-type-can-shatter-anonymity-even-on-tor/">shatter a user&apos;s anonymity, even when using proxy servers &amp; Tor</a>.</p>
<p>Just let that sink in for a moment...</p>
<p>Even when a user is actively trying to hide their identity using sophisticated &amp; layered defences, the site is able to identify who they are by <em>how</em> they type.  <strong>No passwords</strong>, no perma-cookies... just typing into a webpage.</p>
<p>Many financial institutions, including 2 UK banks actively use this technology in the fight against fraud.  Also, HSBC recently announced the introduction of behavioural biometrics via telephone banking; using just your voice to identify you.</p>
<h2 id="howdoesdisablingpastebreakbehaviouralbiometrics">How does disabling paste break behavioural biometrics?</h2>
<p>When you paste data into a form, the value reaches the DOM almost immediately (a caveat being the use of scripts which monitor for bubble events and delay/block them).</p>
<p>As you haven&apos;t typed anything, the script is unable to verify it&apos;s really you... leaving you with just single-factor authentication again.  Depending on how the site is designed, it may prevent you from logging in, or increase a fraud indicator which prevents access to certain functions (transferring funds etc)</p>
<h2 id="myths">Myths</h2>
<p>It&apos;s true, there are dozens of increasingly-comical reasons why some developers believe disabling paste increases security.</p>
<blockquote>
<p>We&apos;ll lose our security certificate if we allow paste</p>
</blockquote>
<p>Nonsense.</p>
<blockquote>
<p>We&apos;ll be vulnerable to brute-force attacks</p>
</blockquote>
<p>True, but attacks are rarely (if ever) carried out this way.</p>
<p>Bizarre eh! But equally bizarre, are the myths which circulate as to why you <em>should</em> be allowed to paste passwords.</p>
<blockquote>
<p>It breaks password managers!</p>
</blockquote>
<p>Not one for going with the status quo, I decided to test this widely agreed-upon theory.</p>
<h2 id="disablingpastedoesntbreakpasswordmanagers">Disabling paste doesn&apos;t break password managers...</h2>
<iframe width="560" height="315" src="https://www.youtube.com/embed/eTZ2SuhpThk" frameborder="0" allowfullscreen></iframe>
<p>1Password, LastPass, Roboform &amp; Dashlane all work <strong>perfectly</strong> with paste disabled.</p>
<h3 id="howsthatpossibleifpasteisdisabled">How&apos;s that possible if paste is disabled?</h3>
<p>They don&apos;t use paste, at all.</p>
<p>If you&apos;re using a password manager which generates &amp; populates password fields automatically, it won&apos;t be using the &quot;paste&quot; event to achieve the desired result, thus disabling it has no effect whatsoever.  I admit, testing 4 password managers is hardly comprehensive... but they all face the same constraints (set by the browser) in terms of how they interact with DOM elements and nearly all adopt a similar, tried &amp; tested method of populating the field.</p>
<p>Now it&apos;s true, some password managers don&apos;t auto-populate fields and have little/no integration with your browser; KeePass is a prime example.  In that scenario, you would be unable to copy/paste from KeePass to the password field.  You still haven&apos;t &quot;broken&quot; the password manager or measurably decreased security... only the user-experience (UX) is affected.</p>
<h3 id="thatsagoodenoughreasontoallowpastethensurely">&quot;That&apos;s a good enough reason to allow paste then, surely?&quot;</h3>
<p>Not really, no.</p>
<p>If we make conscious design decisions affecting <em>only</em> people who use password managers, we&apos;re already talking a tiny fraction of your potential user-base.  To further limit those decisions to people who only use comparably-antiquated and potentially more risky solutions like KeePass, you&apos;re probably in the realms of &lt; 0.1%.</p>
<h2 id="summary">Summary</h2>
<p>Barrier-less 2FA is exactly that... a zero-barrier, frictionless method of increasing security for all your customers, including those who use password managers.</p>
<p>There are many &quot;<a href="http://www.telegraph.co.uk/news/2017/02/14/gchq-boss-admits-even-struggles-remember-internet-passwords/">completely pointless</a>&quot; reasons to disable paste, but that doesn&apos;t mean disabling paste is completely pointless, nor damaging.</p>
<p>That&apos;s it folks.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[How to choose & remember a long, strong & unique password...]]></title><description><![CDATA[Possibly the clearest, most concise password advice you'll read today.]]></description><link>https://paul.reviews/how-to-choose-remember-a-long-strong-unique-password/</link><guid isPermaLink="false">6251663e33e32e0f420ff6c6</guid><category><![CDATA[password]]></category><category><![CDATA[1password]]></category><category><![CDATA[crypto]]></category><category><![CDATA[strong]]></category><category><![CDATA[unique]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Sat, 26 Nov 2016 18:22:59 GMT</pubDate><media:content url="https://paul.reviews/content/images/2016/11/1P4-Mac-icon.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://paul.reviews/content/images/2016/11/1P4-Mac-icon.png" alt="How to choose &amp; remember a long, strong &amp; unique password..."><p>Use a password manager.</p>
<p><a href="https://agilebits.com/store?d=PaulReviews"><img src="https://paul.reviews/content/images/2016/11/1Password-6-Hero1.png" alt="How to choose &amp; remember a long, strong &amp; unique password..." loading="lazy"></a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Bank & Mobile Network Security: For want of a nail...]]></title><description><![CDATA[How two simple exploits allowed access to a million mobile accounts (calls & SMS) and online banking.]]></description><link>https://paul.reviews/bank-mobile-network-security-for-want-of-a-nail/</link><guid isPermaLink="false">6251663e33e32e0f420ff6c5</guid><category><![CDATA[banking]]></category><category><![CDATA[security]]></category><category><![CDATA[breach]]></category><category><![CDATA[xss]]></category><category><![CDATA[csrf]]></category><category><![CDATA[security headers]]></category><category><![CDATA[mobile network]]></category><category><![CDATA[2fa]]></category><category><![CDATA[2sv]]></category><category><![CDATA[two factor authentication]]></category><category><![CDATA[two step verification]]></category><category><![CDATA[theft]]></category><category><![CDATA[sms]]></category><category><![CDATA[halifax]]></category><category><![CDATA[freedompop]]></category><category><![CDATA[lloyds banking group]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Mon, 02 May 2016 11:40:12 GMT</pubDate><media:content url="https://paul.reviews/content/images/2016/05/Bank-Credit-Unions-Security-Services-NYC.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://paul.reviews/content/images/2016/05/Bank-Credit-Unions-Security-Services-NYC.jpg" alt="Bank &amp; Mobile Network Security: For want of a nail..."><p><img src="https://paul.reviews/content/images/2016/05/privacy-policy-banner-3-1.png" alt="Bank &amp; Mobile Network Security: For want of a nail..." loading="lazy"></p>
<p>Ever since publishing a &quot;<a href="https://paul.reviews/the-difference-between-two-factor-and-two-step-authentication/">two factor authentication vs two step verification</a>&quot; article in 2014, I&apos;ve been waiting for an opportunity to irrefutably demonstrate the difference.</p>
<p><strong>Note:</strong><br>
This article is very much a &quot;work in progress&quot; as until both exploits are patched, I can&apos;t provide any technical information.</p>
<h2 id="aquickrecap">A quick recap...</h2>
<p>If you haven&apos;t yet read the above article, let&apos;s quickly recap on the differences between two-factor authentication &amp; two-step verification.</p>
<p>A &quot;factor&quot; falls into one of the following categories.</p>
<ol>
<li>Knowledge</li>
<li>Possession</li>
<li>Inherence</li>
</ol>
<p>The lines between them however, become blurry when companies refer to SMS one-time passwords (OTPs) or calls as &quot;two-factor&quot; authentication.</p>
<p>Although you technically &quot;possess&quot; the phone, the OTP isn&apos;t generated by, nor dependent on the phone itself... but rather the code sent to it via the mobile network.  I&apos;ve long argued that despite <a href="http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-63-2.pdf">NIST&apos;s statement to the contrary</a>, SMS OTPs do not constitute 2FA.</p>
<p>So, let&apos;s dive right in.</p>
<h2 id="whoarefreedompop">Who are FreedomPop?</h2>
<p><a href="http://www.freedompop.com">FreedomPop</a> are the UK&apos;s first completely free mobile network provider; launching in September 2015.</p>
<p>Unsurprisingly, FreedomPop has grown rapidly to in excess of a million users, many of whom opt for the free 200 minutes, 200 texts &amp; 200MB data plan.</p>
<h2 id="freedompopssecurityorlackthereof">FreedomPop&apos;s security... or lack thereof</h2>
<p>At this point, I&apos;d usually explain the exploit in detail but, mindful of not wanting to exacerbate the problem, stop short of providing a step-by-step guide.  On this occasion however, the risk is such that any further information is likely to immediately place 1+ million users at considerable risk.</p>
<p><strong>It is currently possible to remotely hijack any FreedomPop account, allowing both calls &amp; messages to be made/intercepted by an attacker.  No usernames, no passwords and no SIM swapping... just unfettered access to a user&apos;s communications.</strong></p>
<h2 id="monetizingtheexploit">Monetizing the exploit...</h2>
<p>OK.  We now have access to every call &amp; SMS message to a user&apos;s device... how can we convert that into actual money?</p>
<p>Well, the user&apos;s contact list is probably a good place to start; a few quick texts to friends &amp; family is likely to yield a few quid.  Keep in mind, the messages are coming from the victim&apos;s own number.</p>
<p>That&apos;s all well &amp; good, but what if we&apos;re not interested in a few hundred quid?</p>
<h2 id="hittingthebank">Hitting the bank</h2>
<p>At first glance, this seems like a particularly crazy idea.</p>
<p>To successfully gain access to a Halifax account, an attacker would need the username, password &amp; security pass phrase.  Even armed with all this, they&apos;re unable to add a new payee without triggering further anti-fraud checks... in the form of an automated call to your registered mobile number.</p>
<p>The UK banking sector isn&apos;t particularly hot on security either, but that&apos;s still a tall order without tripping sophisticated anti-fraud systems.</p>
<h3 id="canwebypasstheusernamepasswordsecuritypassphraseentirely">Can we bypass the username, password &amp; security pass phrase entirely?</h3>
<p>As of the date of this article, it&apos;s possible to do just that.</p>
<p><img src="https://paul.reviews/content/images/2016/05/bankscreen.PNG" alt="Bank &amp; Mobile Network Security: For want of a nail..." loading="lazy"></p>
<p>Halifax don&apos;t offer a &quot;<strong>Premier +</strong>&quot; account, but would you have spotted the fake/malicious section of the page?</p>
<p>No security warnings, no outward signs at all that we&apos;re looking at a page controlled entirely by an attacker.</p>
<p>A serious (yet remarkably simple) vulnerability in the Halifax site allows an attacker to execute arbitrary &amp; external scripts.  This gives the attacker complete control over the victim&apos;s environment; changing links, buttons, text and crucially... perform actions as if they&apos;re the genuine user.</p>
<p>Thankfully, Halifax/Lloyds Banking Group have since verified this exploit, even bringing in external consultants to re-test &amp; confirm their results.</p>
<p>Whilst we agree there&apos;s an issue, Halifax/Lloyds have (unsurprisingly) played down the risk, suggesting that other safeguards prevent unauthorised access to a user&apos;s bank account.  One of those safeguards, of course, is the requirement to verify a new payee by contacting the victim&apos;s mobile number.</p>
<p>I&apos;ve demonstrated one method of payload delivery and although it works, it&apos;s by no means quick or easily scaled.  There&apos;s at least one other route too, but proving this theory means breaching the Computer Misuse Act and, given their propensity for threatening legal action, it&apos;s a step too far for an exploit I&apos;ve proven by other means.</p>
<p>Let&apos;s not forget though, even a single, well-executed attack can yield a sizeable return.  Remember <a href="https://paul.reviews/phishing-attacks-are-evolving-the-vivian-gabb-story/">Vivian Gabb</a>?</p>
<h2 id="killingtwobirdswithonestone">Killing two birds with one stone.</h2>
<p>Let&apos;s recap...</p>
<p>We control the user&apos;s mobile number.<br>
We control the user&apos;s banking environment.</p>
<p>But, we still need to deliver &amp; execute the payload in a manner which doesn&apos;t alert the user.</p>
<h3 id="how">How?!</h3>
<p>The fix for this exploit is due in 3/4 weeks, so until then, I obviously can&apos;t give any further details.</p>
<p>However, their failure to adopt even the most basic of safeguards means it&apos;s possible to fire both exploits simultaneously and directly on Halifax&apos;s own site.  To make matters worse, the exploit takes place on the user&apos;s device; effectively shielding the attacker from the vast majority of anti-fraud checks.</p>
<h2 id="widerissues">Wider issues...</h2>
<p>Let&apos;s be clear.  An attacker is unlikely to hit your bank account first... the risk is just too high.</p>
<p>There are other low/no risk targets which could yield an equally high return.  Your email address, as an example, provides access to virtually every account you own.</p>
<p>If you&apos;re sensible, you&apos;ve enabled 2FA or 2SV on your email account; effectively preventing unauthorized access to anyone armed with just your password.  It&apos;s also sensible to add a fallback number, if you ever lose access to your second factor... <em>or is it</em>?</p>
<p>Every fallback/revocation option provides a wider threat surface, each attracting their own set of security concerns.  An immensely strong password is rendered useless by anyone with access to my email account.  A Yubikey/Google Authenticator is rendered useless by the ability to bypass it via SMS.  Instead, the crypto seeds which form the basis of my OTPs are backed up locally; encrypted and isolated from the outside world.</p>
<p>Thankfully, I&apos;ve never lost my keys... but it&apos;ll happen one day.  If you must use backups/fallback options, just bear in mind they&apos;re another door into your digital life.</p>
<p>If the attacker now has <strong>knowledge</strong> of your OTP, he has access to your supposedly &quot;2FA&quot; protected accounts.  Keep in mind, 2 knowledge factors does not constitute 2FA either... but 2SV or two-step verification.</p>
<p>The attacker hasn&apos;t stolen something you &quot;possess&quot;, thus it couldn&apos;t possibly be 2FA.  It&apos;s undoubtedly stronger than just a password, but it&apos;s by no means comparable to true 2FA.</p>
<h2 id="summary">Summary</h2>
<p>These exploits really are the lowest of the low-hanging fruit; detected by even the most rudimentary of security scans... but overlooking even the simplest of exploits can lead to much bigger problems.</p>
<p>In isolation, the issues at the Halifax do not appear to be particularly serious...  though I&apos;d question how such a basic flaw went unnoticed.  When combined with other, equally simple exploits elsewhere, an attacker has a much wider window of opportunity to gain access to your communications &amp; bank account.</p>
<hr>
<h4 id="timeline">Timeline</h4>
<p>Halifax/Lloyds Banking Group responded immediately, escalating the issue to the appropriate team for review.  They later called to confirm the exploit, the steps they&apos;re taking to resolve it and their assessment of the risk.  As our assessments differ, a partial publication seems appropriate.</p>
<p>FreedomPop however, are yet to reply.</p>
<p>24/03/16 - Tweeted FreedomPop.  They replied asking for details to be emailed to <a href="mailto:feedback@freedompop.com">feedback@freedompop.com</a> - Email sent.<br>
24/<strong>04</strong>/16 - Identical email to <a href="mailto:feedback@freedompop.com">feedback@freedompop.com</a> requesting a response.<br>
25/04/16 - Email to CTO.  No response.<br>
27/04/16 - DM to FreedomPop asking for an update.<br>
28/04/16 - Response to DM. &quot;We&apos;ve relayed your message, have a wonderful day&quot;<br>
01/05/16 - Publication.  Further information to follow if they fail to respond.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[EveryKey Revisited: Military grade? Give me a break.]]></title><description><![CDATA[$1.25 million dollars & 3.5 years later, EveryKey still hasn't shipped... and leaks database passwords!]]></description><link>https://paul.reviews/everykey-revisited-military-grade-give-me-a-break/</link><guid isPermaLink="false">6251663e33e32e0f420ff6c4</guid><category><![CDATA[everykey]]></category><category><![CDATA[security]]></category><category><![CDATA[aes]]></category><category><![CDATA[crypto]]></category><category><![CDATA[military grade]]></category><category><![CDATA[kickstarter]]></category><category><![CDATA[indiegogo]]></category><category><![CDATA[everykey shipping]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Fri, 08 Apr 2016 22:23:09 GMT</pubDate><media:content url="https://paul.reviews/content/images/2016/04/Everykey-Never-Forget-a-Password-or-Key-Again-01.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://paul.reviews/content/images/2016/04/Everykey-Never-Forget-a-Password-or-Key-Again-01.jpg" alt="EveryKey Revisited: Military grade? Give me a break."><p>Update 27/04/16:<br>
<a href="https://twitter.com/Paul_Reviews/status/725421224801800192">Here are some screenshots of the EveryKey Windows app.</a></p>
<p>It&apos;s not digitally signed, so there&apos;s no way to ensure it&apos;s genuine and hasn&apos;t been modified, it crashes if you click the toolbar &amp; if you click &quot;forgot password&quot;, it opens Google.  To be frank, it looks pretty thrown together at the moment.</p>
<p>Thank you for the anonymous tip folks.</p>
<p>Update 12/04/16:<br>
EveryKey have replied to this post.  Read it <a href="https://paul.reviews/everykey-revisited-military-grade-give-me-a-break/#comment-2615304182">here</a>.</p>
<hr>
<p>In May 2015, I questioned if <a href="https://paul.reviews/everykey-3-years-and-250000-is-it-vaporware/">EveryKey, one of Kickstarter&apos;s most successful campaigns, was vaporware</a>.</p>
<p>Over the last 11 months, I&apos;ve received near-monthly emails/tweets from backers; angry over delays and poor communication.  Other than a few updates to the original article, I didn&apos;t intend revisiting EveryKey as, quite honestly, I didn&apos;t see the point.</p>
<p>This week however, has seen an influx of complaints as EveryKey have, once again, failed to deliver the product as promised.  By my count, they&apos;ve missed no less than 6 deadlines... although &quot;March 2015&quot; was never realistic.</p>
<p>Before we dive in, let me answer my own question.</p>
<h3 id="noeverykeyisntvaporware">No, EveryKey isn&apos;t vaporware.</h3>
<p>It may not be in the hands of backers just yet, but I&apos;ve no doubt EveryKey exists and will ship at some point in the future.</p>
<p>Whether you&apos;ll want to use it however, is another matter entirely.</p>
<h3 id="acceptingpaymentsoverhttp">Accepting payments over HTTP.</h3>
<p>When the Kickstarter campaign finished, EveryKey began collecting pre-orders, customer PII &amp; payment info over HTTP, which is both insecure and in breach of PCI compliance.  I tweeted EveryKey (@_EveryKey) and despite the lack of a response, it was fixed a few days later.  Leaking your customer&apos;s payment data isn&apos;t a great way to begin a working relationship, especially given the context.</p>
<h3 id="wewontbehacked">&quot;We won&apos;t be hacked&quot;</h3>
<p><img src="https://paul.reviews/content/images/2016/04/Everykey-Fail-6.PNG" alt="EveryKey Revisited: Military grade? Give me a break." loading="lazy"></p>
<p>Famous last words.</p>
<p>No responsible company, especially not one in the security space, would ever claim to be impervious to hacking.  It does however, reaffirm my decision to back out of their campaign.</p>
<p>OK.  Enough of the trivialities...</p>
<h3 id="vulnerableapi">Vulnerable API</h3>
<p>For several months, EveryKey has provided an API on <a href="http://api.everykey.com">http://api.everykey.com</a> which presumably acts as the service entry point for their devices/partners.</p>
<p><img src="https://paul.reviews/content/images/2016/04/Everykey-Fail-4.PNG" alt="EveryKey Revisited: Military grade? Give me a break." loading="lazy"></p>
<p>Hmm.  That&apos;s clearly not finished... or even started.</p>
<p>But, what happens if you land on the registration page first?</p>
<p><img src="https://paul.reviews/content/images/2016/04/Everykey-Fail-2_small.png" alt="EveryKey Revisited: Military grade? Give me a break." loading="lazy"></p>
<p>That&apos;s better... apart from the distinct lack of SSL/TLS!  If you try to load the site over HTTPS, the connection fails, so it&apos;s impossible to register your details over a secure connection.</p>
<p>Let&apos;s register.</p>
<p><img src="https://paul.reviews/content/images/2016/04/Everykey-Fail-5-small.png" alt="EveryKey Revisited: Military grade? Give me a break." loading="lazy"></p>
<p>That&apos;s a good start!  It can&apos;t connect to the database!  But hang on, what&apos;s this?</p>
<p><img src="https://paul.reviews/content/images/2016/04/everykey-weak-pw.png" alt="EveryKey Revisited: Military grade? Give me a break." loading="lazy"></p>
<p>Database name: ev[erykey]<br>
Database username: hytech<br>
Database password peeyushisthebest</p>
<h3 id="wenowhaveeverykeysdatabasecredentials">We now have Everykey&apos;s database credentials.</h3>
<p>That&apos;s already game over, for a number of reasons.</p>
<ol>
<li>There&apos;s no SSL/TLS, an absolute necessity when dealing with personal data &amp; passwords.</li>
<li>They&apos;re leaking database credentials in error messages.</li>
<li>The password being used to &quot;protect&quot; the database is weak &amp; amateurish, thus crackable even without being disclosed.</li>
</ol>
<p>Again, I emailed Everykey to  alert them to this and despite not receiving a reply, the domain was taken offline yesterday and replaced with this.</p>
<p><img src="https://paul.reviews/content/images/2016/04/everykey_10.png" alt="EveryKey Revisited: Military grade? Give me a break." loading="lazy"></p>
<p>Perhaps I&apos;m being too harsh.  It&apos;s clearly a work-in-progress and perhaps doesn&apos;t reflect the true quality of the final product.</p>
<h3 id="but">But...</h3>
<p>Is a barely-working, insecure prototype acceptable after nearly 4 years &amp; $1.25 million dollars of investment?  The registration page gives absolutely no indication that it&apos;s a proof-of-concept page and not intended for public use, so how many others have blindly &quot;registered&quot; and inadvertently leaked their details?</p>
<p>The observant amongst you may have spotted the addition of SSL/TLS in the last screenshot, so now it&apos;s secure, right?</p>
<p><img src="https://paul.reviews/content/images/2016/04/Everykey_Fail_7.png" alt="EveryKey Revisited: Military grade? Give me a break." loading="lazy"></p>
<p>Really?  POODLE in a brand new TLS deployment?  This is a joke, surely?</p>
<p><img src="https://paul.reviews/content/images/2016/04/Everykey_Fail_8.png" alt="EveryKey Revisited: Military grade? Give me a break." loading="lazy"></p>
<p>... and the certificates are in the wrong order!  I&apos;ve no idea how they&apos;ve managed to make a mess of a &quot;Let&apos;s Encrypt&quot; deployment... it&apos;s about as &quot;hands off&quot; &amp; simple as it gets.</p>
<h3 id="itsshippedforwindowsandroidorhasit">It&apos;s shipped for Windows &amp; Android.  Or has it?</h3>
<p>A week ago today, EveryKey announced the product had finally shipped.</p>
<p>Well, sort of.</p>
<p>At the last minute, they opted to hold back on support for Mac/iOS, citing the logistics of handling 4,000+ orders and the appreciable load on their support desk.</p>
<p>Forgive me, but that&apos;s thinly-veiled nonsense.</p>
<p>It&apos;s true; shipping 4,000+ products is a logistics nightmare and will undoubtedly increase the number of support requests... but that&apos;s something you scope into your business plan before you begin collecting millions of dollars from backers.  Phased roll-outs are nothing new, but keeping backers in the dark until the day of shipping is misleading to say the least.</p>
<p>It&apos;s also very unusual for a company to send out surveys to &quot;confirm shipping details&quot; on the day they&apos;re due to ship the product.  A bit of forward planning goes a long way.</p>
<p>Despite all this, the comments on both Kickstarter &amp; Indiegogo suggest not a single person has received their survey... even a week later.  BackerKit, which EveryKey uses to manage their campaign, makes the process of sending surveys painless.  They&apos;re quick, simple and hassle-free.  They certainly don&apos;t take a week to send.</p>
<h3 id="theplaystore">The Play Store</h3>
<p>Let&apos;s assume at least 1 has been shipped... the app isn&apos;t in the Play Store.</p>
<p><img src="https://paul.reviews/content/images/2016/04/everykey-play-store-2.png" alt="EveryKey Revisited: Military grade? Give me a break." loading="lazy"></p>
<p>It&apos;s not available to download via their website either, nor is the Windows binary or Chrome/Firefox extension.</p>
<p>Alas, EveryKey later admitted the Mac &amp; iOS versions weren&apos;t ready for release but they estimate it&apos;ll be ready over the next few <s>years</s>/<s>decades</s> months.</p>
<h2 id="summary">Summary</h2>
<p>Well, that&apos;s enough for amateur hour this week folks.</p>
<p>I really do appreciate your efforts in updating me on the situation, but this is likely to be the last I&apos;ll write about EveryKey.</p>
<p>Invest in a password manager and leave cryptography &amp; security to the experts.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[PwnPhone: Default passwords allow covert surveillance.]]></title><description><![CDATA[A brief demonstration of how a default configuration can destroy your privacy & security.  Hijacking a VoIP phone with just a browser.]]></description><link>https://paul.reviews/pwnphone-default-passwords-allow-covert-surveillance/</link><guid isPermaLink="false">6251663e33e32e0f420ff6c3</guid><category><![CDATA[snom]]></category><category><![CDATA[cisco]]></category><category><![CDATA[security]]></category><category><![CDATA[privacy]]></category><category><![CDATA[csrf]]></category><category><![CDATA[covert surveillance]]></category><category><![CDATA[voip]]></category><category><![CDATA[remote control]]></category><category><![CDATA[default passwords]]></category><category><![CDATA[passwords]]></category><category><![CDATA[authentication]]></category><category><![CDATA[breach]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Sat, 13 Feb 2016 22:05:07 GMT</pubDate><media:content url="https://paul.reviews/content/images/2016/02/header1-2.gif" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://paul.reviews/content/images/2016/02/header1-2.gif" alt="PwnPhone: Default passwords allow covert surveillance."><p><img src="https://paul.reviews/content/images/2016/02/header1-1.gif" alt="PwnPhone: Default passwords allow covert surveillance." loading="lazy"></p>
<p>A few weeks ago, I was asked to observe an installation of several wireless access points &amp; VoIP phones, with a view to making recommendations on how best to improve security while maintaining ease of deployment.</p>
<p>It didn&apos;t take long for several trends to appear; chief amongst which was the use of</p>
<blockquote>
<p>We&apos;ll just use defaults, <strong>for now</strong>.  That password will do, <strong>for now</strong>.</p>
</blockquote>
<p>Of course, as soon as the device burst into life, it&apos;s on to the next one.  At which point, &quot;<strong>now</strong>&quot; becomes a distant memory, along with any thoughts of hardening the device for use in a commercial setting.</p>
<p>This was not a fly-by-night company either, nor do they install cheap &amp; cheerful hardware; we&apos;re fitting enterprise-grade Cisco, Snom &amp; Ubiquiti UniFi equipment.  With a tight schedule &amp; reputable brand names, I completely understand why many installers trust the default configurations so vehemently.</p>
<h2 id="adefaultconfigisrarelyasecureconfig">A default config is rarely a secure config.</h2>
<p>A default configuration is <strong>only</strong> intended to restore a device to a &quot;default&quot; state, such that a competent installer can configure it to meet the client&apos;s needs.</p>
<blockquote>
<p>Note:  This is neither aimed at nor unique to Snom devices.  I&apos;m aware of similar exploits against current Cisco devices too.</p>
</blockquote>
<p>In the following example, I&apos;ve reset a Snom 320 VoIP phone (running 8.7.5.13 firmware) back to factory &quot;default&quot; settings.</p>
<p>Even before we begin, there&apos;s a serious problem... there&apos;s <strong>no authentication whatsoever</strong>!</p>
<p><img src="https://paul.reviews/content/images/2016/02/snom1-2.png" alt="PwnPhone: Default passwords allow covert surveillance." loading="lazy"></p>
<p>To their credit, some manufacturers provide a default set of credentials... even if they&apos;re usually &quot;admin/admin&quot;, thus equally insecure.</p>
<p>Snom however, opted to place a tiny &quot;HTTP password not set&quot; warning at the top of the configuration screen.  That&apos;d be fine if it forced you to set a password during the setup process, but it doesn&apos;t.</p>
<p>To make matters worse, it&apos;s only too happy to accept a <strong>single</strong> character/number password too.</p>
<blockquote>
<p>They&apos;re sat behind a strong firewall, so what&apos;s the big deal?</p>
</blockquote>
<p>A reasonable argument, you might think.  So, let&apos;s put it to the test.</p>
<h2 id="hijackingthesnom320">Hijacking the Snom 320</h2>
<p><strong>Step 1:</strong>  Visit a site which contains the exploit payload.</p>
<p>That&apos;s it.</p>
<p>Simply by opening a malicious site (or a genuine site containing the malicious payload), the attacker has <strong>complete</strong> control over our VoIP phone.</p>
<p>To demonstrate this vulnerability, I enlisted the help of two colleagues... Per Thorsheim &amp; Scott Helme.  Per will play the part of our attacker, embedding the exploit on a site which he controls.  Meanwhile, I&apos;m reading Per&apos;s site while having a <em>private</em> conversation with Scott, via Skype.</p>
<p>Unbeknownst to me, Per has forced my VoIP phone to call his premium rate number and disabled the speaker, so unless I&apos;m looking at the phone, I wouldn&apos;t know it&apos;s dialling.</p>
<blockquote>
<p>Note: We&apos;ve left the activity LED on during this demo, as it&apos;s difficult to read the screen.  When the light illuminates, the phone is dialling out.</p>
</blockquote>
<iframe width="853" height="480" src="https://www.youtube.com/embed/mavwngM52Tc" frameborder="0" allowfullscreen></iframe>
<h2 id="whatcantheattackerdo">What can the attacker do?</h2>
<p>Virtually anything.</p>
<p>Make calls, receive calls, transfer calls (even before it rings), play recordings, <strong>upload new firmware</strong> and crucially... use the device for covert surveillance.</p>
<h2 id="ourselfdefeatingapproach">Our self-defeating approach...</h2>
<p>If we look beyond the IP telephony sector to the industry as a whole, many companies ship devices which have no &quot;default&quot; security... or permit the use of weak credentials which provide nothing more than a false sense of security.</p>
<p>It has to stop.</p>
<p><strong>Vendors -  If you must supply devices with &quot;default&quot; credentials, disable all other functionality until a suitably-secure password is set to replace it.</strong></p>
<h2 id="summary">Summary</h2>
<p>The term &quot;covert surveillance&quot; is usually only associated with nation states, certain 3-letter agencies and those closed-minded individuals pushing the Investigatory Powers Bill (IPBill / Snoopers Charter).</p>
<p>In this demonstration, the attacker has not only compromised your phone &amp; privacy with <strong>just</strong> a browser, but you&apos;ve paid him for the privilege!</p>
<p>If you install, use or just find yourself sat next to one of these devices, just remember... it&apos;s basically a PC, with all the security vulnerabilities associated with them.  Don&apos;t assume it&apos;s safe because it&apos;s running as the manufacturer intended; seek professional advice.</p>
<ol>
<li>Use strong passwords, derived from a <a href="https://paul.reviews/privacy-password-managers-a-reality-check/">password manager</a>.</li>
<li>VLAN  / network segregate your phones, if possible.</li>
<li>Restrict access to APIs, even if they&apos;re only visible internally.</li>
<li>Check &amp; upgrade your firmware regularly, ensuring it doesn&apos;t revert to &quot;defaults&quot; afterwards.</li>
</ol>
<p>Just today, Professor Alan Woodward of Surrey University published an article entitled &quot;<a href="http://www.profwoodward.org/2016/02/are-you-only-one-using-your-voip-phone.html">Are you the only one using your VOIP phone?</a>&quot; which discusses the various attack vectors &amp; implications associated with VoIP devices.  If you haven&apos;t yet subscribed to Alan&apos;s RSS feed, I&apos;d strongly suggest doing so.</p>
<p>Thanks to <a href="https://godpraksis.no">Per Thorsheim</a> &amp; <a href="https://scotthelme.co.uk">Scott Helme</a> for their help with this demonstration.</p>
<p>That&apos;s it folks... <strong>for now</strong>.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Identity theft & payment fraud?  That's ASDA price.]]></title><description><![CDATA[Over the last 2 years, ASDA have processed over 19+ million transactions on a demonstrably insecure site.]]></description><link>https://paul.reviews/identity-theft-payment-fraud-thats-asda-price/</link><guid isPermaLink="false">6251663e33e32e0f420ff6c2</guid><category><![CDATA[csrf]]></category><category><![CDATA[xss]]></category><category><![CDATA[xsrf]]></category><category><![CDATA[cross site request forgery]]></category><category><![CDATA[cross site scripting]]></category><category><![CDATA[security]]></category><category><![CDATA[asda]]></category><category><![CDATA[identity theft]]></category><category><![CDATA[payment data]]></category><dc:creator><![CDATA[Paul Moore]]></dc:creator><pubDate>Mon, 18 Jan 2016 12:36:00 GMT</pubDate><media:content url="https://paul.reviews/content/images/2016/01/Asda_slogan.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://paul.reviews/content/images/2016/01/Asda_slogan.png" alt="Identity theft &amp; payment fraud?  That&apos;s ASDA price."><p>Back in March 2014, I contacted ASDA to report several security vulnerabilities and despite a fix promised &quot;in the next few weeks&quot;, little appears to have changed.</p>
<blockquote class="twitter-tweet" data-conversation="none" lang="en"><p lang="en" dir="ltr"><a href="https://twitter.com/Stuho1mez">@Stuho1mez</a> All of our sites are secure, I would advise using Chrome. Thanks, Beth</p>&#x2014; Asda Service Team (@AsdaServiceTeam) <a href="https://twitter.com/AsdaServiceTeam/status/687552939792052224">January 14, 2016</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>After 677 days and several tweets along a similar vein, my patience has finally run out.</p>
<h2 id="whatstheproblem">What&apos;s the problem?</h2>
<p>Two of the simplest and most prevalent exploits allow an attacker to quickly &amp; effectively collect personal information &amp; full payment details.</p>
<p>Rather than outline the finer points of <a href="https://www.owasp.org/index.php/Top_10_2013-A8-Cross-Site_Request_Forgery_(CSRF)">CSRF (Cross Site Request Forgery)</a> &amp; <a href="https://www.owasp.org/index.php/Top_10_2013-A3-Cross-Site_Scripting_(XSS)">XSS (Cross Site Scripting)</a> for the umpteenth time, it&apos;s probably easier to show you.</p>
<iframe width="1280" height="720" src="https://www.youtube.com/embed/iaMOhbzYWAw?VQ=HD720" frameborder="0" allowfullscreen></iframe>
<h2 id="haveibeenaffected">Have I been affected?</h2>
<p>As of <a href="http://your.asda.com/press-centre/asda-announces-q2-2014-financial-results-continued-sales-growth-ahead-of-the-market">Q2 2014</a>, ASDA processed upwards of 200,000 online orders each week.  Given the length of time this has been exploitable, that equates to over 19 million transactions.</p>
<p>I&apos;m not aware of any evidence suggesting <strong>these</strong> exploits are being used in the wild, but just a few months after my initial report, this tweet appeared.</p>
<blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr"><a href="https://twitter.com/asda">@asda</a> some one hacked my acc tomake fraud on line purchases the bank caught it tank god but warn ur customers and i need a number to ring</p>&#x2014; cathy creighton (@Ruby6918) <a href="https://twitter.com/Ruby6918/status/476335927355514880">June 10, 2014</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>Unfortunately, it&apos;s difficult to know if your details have been stolen unless the attacker uses the information very shortly after the breach occurs, such that it&apos;s reasonable to assume a link between the two.  However, ASDA may be able to shed further light on anyone affected by this, or any other exploit.</p>
<h2 id="howcaniprotectmyself">How can I protect myself?</h2>
<p>The safest way is simply to shop elsewhere.</p>
<p>ASDA/Walmart have had ample opportunity to fix these issues and have failed to do so.  If you must continue shopping with ASDA, open a &quot;private&quot; / &quot;incognito&quot; window and do not open <strong>any</strong> other tabs/windows until you&apos;ve logged out.</p>
<h2 id="otherissues">Other issues...</h2>
<p>Well, they don&apos;t enforce SSL/TLS during login and the entire session is maintained over an insecure protocol.</p>
<p>Another user spotted this too... and tweeted ASDA.</p>
<blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr">Hey <a href="https://twitter.com/asda">@ASDA</a> why do you serve your login form over plain (unencrypted) HTTP? <a href="http://t.co/1LsuP8YuLF">pic.twitter.com/1LsuP8YuLF</a></p>&#x2014; Chris (@cmrowles) <a href="https://twitter.com/cmrowles/status/564776548193288192">February 9, 2015</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>Did they acknowledge the issue &amp; deploy a fix?  Not quite.</p>
<blockquote class="twitter-tweet" data-conversation="none" lang="en"><p lang="en" dir="ltr"><a href="https://twitter.com/cmrowles">@cmrowles</a> Morning! We&apos;ve had it confirmed that the page is secure &#x1F60A; Thanks, Beth</p>&#x2014; Asda Service Team (@AsdaServiceTeam) <a href="https://twitter.com/AsdaServiceTeam/status/565060421267120128">February 10, 2015</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>--</p>
<p>When Sarah tried to apply for a job, she was greeted with this error.</p>
<blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr"><a href="https://twitter.com/asda">@asda</a> get a new security certificate for your jobs site, risk of having personal data stolen. <a href="https://twitter.com/hashtag/asda?src=hash">#asda</a> <a href="https://twitter.com/hashtag/websecurity?src=hash">#websecurity</a> <a href="http://t.co/mVpueZs5Qy">pic.twitter.com/mVpueZs5Qy</a></p>&#x2014; Sarah Rose (@NyowcatS) <a href="https://twitter.com/NyowcatS/status/603098482174459904">May 26, 2015</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>Did they spot their mistake, generate and deploy a new certificate?</p>
<blockquote class="twitter-tweet" data-conversation="none" lang="en"><p lang="en" dir="ltr"><a href="https://twitter.com/NyowcatS">@NyowcatS</a> Hi Sarah, I can confirm that all our Asda web pages are secure, Thanks Steph</p>&#x2014; Asda Service Team (@AsdaServiceTeam) <a href="https://twitter.com/AsdaServiceTeam/status/603126471620632577">May 26, 2015</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>No.  They go on to recommend Sarah delete her cookies!</p>
<p>Scott tried to apply for a job too.</p>
<blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr"><a href="https://twitter.com/asda">@asda</a> I&apos;m trying to apply for a job on your site. But anytime I try to access the application part. It tells me the websites in danger</p>&#x2014; scott paterson (@whosinthebox94) <a href="https://twitter.com/whosinthebox94/status/610385229530988545">June 15, 2015</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>Surely now they&apos;ll fix it, right?</p>
<blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr"><a href="https://twitter.com/whosinthebox94">@whosinthebox94</a> Hi Scott, I can confirm to you that the <a href="http://t.co/I7R0i6VbzC">http://t.co/I7R0i6VbzC</a> website is a fully secure site, Thanks Steph</p>&#x2014; Asda Service Team (@AsdaServiceTeam) <a href="https://twitter.com/AsdaServiceTeam/status/610426675340247040">June 15, 2015</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>Nope.  Now, it&apos;s <em>fully</em> secure.</p>
<h2 id="summary">Summary</h2>
<p>Despite a speedy response to my first email and a privacy policy which suggests otherwise, ASDA do not appear to be overly concerned about the security of their customers.</p>
<p><img src="https://paul.reviews/content/images/2016/01/2016-01-18_1434.png" alt="Identity theft &amp; payment fraud?  That&apos;s ASDA price." loading="lazy"></p>
<p>I invited ASDA to comment on the situation; requesting more detailed information on who customers should contact if they believe they&apos;re affected by any security flaws.  I received an &quot;out of office&quot; from their &quot;data protection&quot; email address and haven&apos;t heard anything since.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>