<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><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" xmlns:media="http://search.yahoo.com/mrss/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0"><channel><title>Troy Hunt's Blog</title><description>Observations, musings and conjecture about the world of software and technology</description><link>https://www.troyhunt.com/</link><image><url>https://www.troyhunt.com/favicon.png</url><title>Troy Hunt</title><link>https://www.troyhunt.com/</link></image><generator>Ghost 4.45</generator><lastBuildDate>Mon, 25 Apr 2022 11:43:58 GMT</lastBuildDate><ttl>60</ttl><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TroyHunt" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="troyhunt" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>-33.824008</geo:lat><geo:long>151.251244</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">TroyHunt</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">https://feedburner.google.com</feedburner:feedburnerHostname><item><title><![CDATA[Weekly Update 292]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>Well that was an unusual ending. Both my mouse and keyboard decided to drop off right at the end of this week&apos;s video and without any control whatsoever, there was no way to end the live stream! Wired devices from kids borrowed, I eventually got back control and</p>]]></description><link>https://www.troyhunt.com/weekly-update-292/</link><guid isPermaLink="false">626224f7bdd567003d4c2393</guid><category><![CDATA[Weekly update]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Fri, 22 Apr 2022 07:23:05 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/04/Splash-Template-3.jpg" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/04/Splash-Template-3.jpg" alt="Weekly Update 292"><p>Well that was an unusual ending. Both my mouse and keyboard decided to drop off right at the end of this week&apos;s video and without any control whatsoever, there was no way to end the live stream! Wired devices from kids borrowed, I eventually got back control and later discovered that all things Bluetooth had suddenly decided to die without any warning whatsoever. I certainly wasn&apos;t updating drivers mid-live stream or anything like that so... &#x1F937;&#x200D;&#x2642;&#xFE0F;</p><p>Anyway, other than that it&apos;s business as usual this week, enjoy!</p><!--kg-card-begin: html--><div><div style="width: 170px; display: inline-block; margin-right: 3px;"><a href="https://itunes.apple.com/au/podcast/troy-hunts-weekly-update-podcast/id1176454699"><img src="https://www.troyhunt.com/content/images/2018/05/Listen-on-Apple-Podcasts.svg" alt="Weekly Update 292"></a></div><div style="width: 146px; display: inline-block; margin-right: 3px;"><a href="https://playmusic.app.goo.gl/?ibi=com.google.PlayMusic&amp;isi=691797987&amp;ius=googleplaymusic&amp;apn=com.google.android.music&amp;link=https://play.google.com/music/m/If3tw7npymckucxq4q76762ncny?t%3DTroy_Hunt&apos;s_Weekly_Update_Podcast%26pcampaignid%3DMKT-na-all-co-pr-mu-pod-16"><img src="https://www.troyhunt.com/content/images/2018/05/Get-it-on-Google-Play.svg" alt="Weekly Update 292"></a></div><div style="width: 118px; display: inline-block; margin-right: 3px;"><a href="https://open.spotify.com/show/7jMtKFohdrw6qmz8AkLqit"><img src="https://www.troyhunt.com/content/images/2019/10/spotify.svg" class="kg-image" alt="Weekly Update 292"></a></div><div style="width: 120px; display: inline-block;"><a href="https://omny.fm/shows/troy-hunt-weekly-update/playlists/podcast.rss"><img src="https://www.troyhunt.com/content/images/2018/07/Download-via-RSS.svg" alt="Weekly Update 292"></a></div><iframe width="100%" height="480" src="https://www.youtube.com/embed/rt8KO_x9VkY" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div><!--kg-card-end: html--><h3 id="references">References</h3><ol><li><a href="https://twitter.com/troyhunt/status/1515432277018218498">The shots I&apos;m getting with the new drone are <em>amazing!</em></a> (it&apos;s crazy how much tech is jammed into this little thing)</li><li><a href="https://twitter.com/troyhunt/status/1516891678623162368">I&apos;m disappointed that Mailchimp has stopped offering a discount for users with 2FA enabled</a> (I&apos;d really love to think there was an ROI for them offering the discount)</li><li><a href="https://twitter.com/troyhunt/status/1516154004375732224">You&apos;d think an Attorney General&apos;s office would have better things to do than forwarding on a complaint from someone who thinks HIBP has been breached</a> (seriously, it&apos;d take about 3 mins for anyone paying attention to understand what&apos;s going on)</li><li><a href="https://www.troyhunt.com/breach-disclosure-blow-by-blow-heres-why-its-so-hard/">Disclosing data breaches is still way too hard</a> (people found it painful to watch a 1 hour 15 minute video of me trying to disclose to Avvo - good - that&apos;s the point - it&apos;s painful!)</li><li><a href="https://www.varonis.com/integrations/salesforce/?utm_medium=display&amp;utm_source=troyhunt.com&amp;utm_campaign=Q222Salesforce" rel="noopener">Sponsored by: Varonis for Salesforce. Protect Salesforce data from overexposure and cyberthreats. Try it free!</a></li></ol>]]></content:encoded></item><item><title><![CDATA[Breach Disclosure Blow-by-Blow: Here's Why It's so Hard]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>For many years now, I&apos;ve lamented about how much of my time is spent attempting to disclose data breaches to impacted companies. It&apos;s by far the single most time-consuming activity in processing breaches for <a href="https://haveibeenpwned.com/">Have I Been Pwned</a> (HIBP) and frankly, it&apos;s about the</p>]]></description><link>https://www.troyhunt.com/breach-disclosure-blow-by-blow-heres-why-its-so-hard/</link><guid isPermaLink="false">62565f5d0fd5e6003d948dd5</guid><category><![CDATA[Have I Been Pwned]]></category><category><![CDATA[Security]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Fri, 15 Apr 2022 03:48:57 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/04/Avvo-Extortion-Email.png" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/04/Avvo-Extortion-Email.png" alt="Breach Disclosure Blow-by-Blow: Here&apos;s Why It&apos;s so Hard"><p>For many years now, I&apos;ve lamented about how much of my time is spent attempting to disclose data breaches to impacted companies. It&apos;s by far the single most time-consuming activity in processing breaches for <a href="https://haveibeenpwned.com/">Have I Been Pwned</a> (HIBP) and frankly, it&apos;s about the most thankless task I can imagine. Finding contact details is hard. Getting responses is hard. Not having an organisation just automatically assume you&apos;re trying to shake them down for cash is hard. So hard, in fact, I thought I&apos;d record the process end-to-end and share it publicly to help demonstrate just how painful the process is.</p><p>I&apos;d filed the (alleged) Avvo breach away in the &quot;too hard&quot; basket a long time ago and it was only after seeing this tweet last week that a distant bell rang in my head:</p><!--kg-card-begin: html--><blockquote class="twitter-tweet"><p lang="en" dir="ltr"><a href="https://twitter.com/troyhunt?ref_src=twsrc%5Etfw">@troyhunt</a> Looks like <a href="https://twitter.com/Avvo?ref_src=twsrc%5Etfw">@avvo</a> has had a breach of their user list -- I&apos;m getting those &quot;you&apos;ve been hacked&quot; scam emails on my Avvo-specific address. No passwords, so I&apos;m guessing they&apos;re hashed.</p>&#x2014; p&#x1E27;&#xFF;z&#xF6;m&#xEB; (@phyzome) <a href="https://twitter.com/phyzome/status/1511006201693233152?ref_src=twsrc%5Etfw">April 4, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><!--kg-card-end: html--><p>On a hunch that this wasn&apos;t going to be an easy process, I started recording and kicked off my usual disclosure process. It failed - completely - but at least now I have a complete blow-by-blow of everything I&apos;ve done, who I&apos;ve contacted and who I&apos;ve even <em>engaged</em> with yet still, to no avail. Here&apos;s the whole thing:</p><!--kg-card-begin: html--><iframe width="100%" height="480" src="https://www.youtube.com/embed/ec56f7J2Ggg" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><!--kg-card-end: html--><p>The Avvo data breach is now searchable in HIBP. By the time I sent out notifications, they went to 20,183 individuals monitoring their accounts and a further 9,637 people monitoring domains with impacted email addresses. I&apos;ll update this post with any further relevant information if it comes up in the future.</p>]]></content:encoded></item><item><title><![CDATA[Weekly Update 291]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>Bit of a long one this week, just due to a bunch of stuff all coinciding at the same time. The drone is obviously the coolest one and it was interesting to hear other people&apos;s experiences with theirs. This is just super cool tech and I can&apos;</p>]]></description><link>https://www.troyhunt.com/weekly-update-291/</link><guid isPermaLink="false">6258d4990fd5e6003d948dff</guid><category><![CDATA[Weekly update]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Fri, 15 Apr 2022 02:26:13 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/04/Splash-Template-2.jpg" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/04/Splash-Template-2.jpg" alt="Weekly Update 291"><p>Bit of a long one this week, just due to a bunch of stuff all coinciding at the same time. The drone is obviously the coolest one and it was interesting to hear other people&apos;s experiences with theirs. This is just super cool tech and I can&apos;t remember the last time I looked at a consumer product and thought &quot;wow, I didn&apos;t know they could do <em>that!</em>&quot; Check that out and a whole heap more in this week&apos;s video below &#x1F447;</p><!--kg-card-begin: html--><div><div style="width: 170px; display: inline-block; margin-right: 3px;"><a href="https://itunes.apple.com/au/podcast/troy-hunts-weekly-update-podcast/id1176454699"><img src="https://www.troyhunt.com/content/images/2018/05/Listen-on-Apple-Podcasts.svg" alt="Weekly Update 291"></a></div><div style="width: 146px; display: inline-block; margin-right: 3px;"><a href="https://playmusic.app.goo.gl/?ibi=com.google.PlayMusic&amp;isi=691797987&amp;ius=googleplaymusic&amp;apn=com.google.android.music&amp;link=https://play.google.com/music/m/If3tw7npymckucxq4q76762ncny?t%3DTroy_Hunt&apos;s_Weekly_Update_Podcast%26pcampaignid%3DMKT-na-all-co-pr-mu-pod-16"><img src="https://www.troyhunt.com/content/images/2018/05/Get-it-on-Google-Play.svg" alt="Weekly Update 291"></a></div><div style="width: 118px; display: inline-block; margin-right: 3px;"><a href="https://open.spotify.com/show/7jMtKFohdrw6qmz8AkLqit"><img src="https://www.troyhunt.com/content/images/2019/10/spotify.svg" class="kg-image" alt="Weekly Update 291"></a></div><div style="width: 120px; display: inline-block;"><a href="https://omny.fm/shows/troy-hunt-weekly-update/playlists/podcast.rss"><img src="https://www.troyhunt.com/content/images/2018/07/Download-via-RSS.svg" alt="Weekly Update 291"></a></div><iframe width="100%" height="480" src="https://www.youtube.com/embed/Q1oE0N5G8xw" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div><!--kg-card-end: html--><h3 id="references">References</h3><ol><li><a href="https://www.troyhunt.com/2022events/">As travel gradually resumes, there are more events you can now catch me at</a> (stay tuned for one in Tasmania in July too)</li><li><a href="https://www.troyhunt.com/today-marks-two-important-milestones/">It was 7 years ago today I left a 14 year career at Pfizer...</a> (...and never once looked back!)</li><li><a href="https://twitter.com/troyhunt/status/1513785245169971200">The DJI Air 2S drone is <em>insanely</em> awesome!</a> (I&apos;ll keep posting to that thread as I work out how to use the thing)</li><li><a href="https://www.thingiverse.com/thing:4576554">Can&apos;t see myself doing it, but yeah, you can 3D print a frame to mount a cut up noodle to your drone</a> (amphibious landings anyone?)</li><li><a href="https://twitter.com/ezrabowman/status/1513156787809095688?s=21&amp;t=WN3q4iuMU42le6JmogEDCQ">I really don&apos;t like password strength indicators like this</a> (there&apos;s really nothing of practical use people can take away from them)</li><li><a href="https://www.troyhunt.com/password-strength-indicators-help-people-make-dumb-choices/">Hey, here&apos;s a blog post on how much I dislike password strength meters!</a> (5 years later, still all true)</li><li><a href="https://krebsonsecurity.com/2022/04/raidforums-get-raided-alleged-admin-arrested/">RaidForums is no more</a> (and just like that, something else has stepped in and taken its place)</li><li><a href="https://www.troyhunt.com/welcoming-the-north-macedonian-government-to-have-i-been-pwned/">The North Macedonian government has become the 32nd to get access to HIBP APIs for monitoring and querying their gov domains</a> (that&apos;s the third one in a row from that region of the world)</li><li><a href="https://www.epas.de/?ref=hibp" rel="noopener">Sponsored by: Detack. Detect &amp; prevent weak, leaked, shared passwords with EPAS, a patented, privacy compliant solution used in 40 countries. Try it free!</a></li></ol>]]></content:encoded></item><item><title><![CDATA[Welcoming the North Macedonian Government to Have I Been Pwned]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>In <a href="https://www.troyhunt.com/the-uk-and-australian-governments-are-now-monitoring-their-gov-domains-on-have-i-been-pwned/">my ongoing bid to make more useful information on data breaches available to impacted national governments</a>, today I&apos;m very happy to welcome the 32nd national CERT to Have I Been Pwned, the Republic of North Macedonia! They now join their counterparts across the globe in having free</p>]]></description><link>https://www.troyhunt.com/welcoming-the-north-macedonian-government-to-have-i-been-pwned/</link><guid isPermaLink="false">624fddbd60b4c7004dccbbeb</guid><category><![CDATA[Government]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Mon, 11 Apr 2022 06:50:37 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/04/Artboard-1-1.png" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/04/Artboard-1-1.png" alt="Welcoming the North Macedonian Government to Have I Been Pwned"><p>In <a href="https://www.troyhunt.com/the-uk-and-australian-governments-are-now-monitoring-their-gov-domains-on-have-i-been-pwned/">my ongoing bid to make more useful information on data breaches available to impacted national governments</a>, today I&apos;m very happy to welcome the 32nd national CERT to Have I Been Pwned, the Republic of North Macedonia! They now join their counterparts across the globe in having free API-level access to monitor and query their government domains.</p><p>I look forward to welcoming more governments in the future and building out additional support to assist them in the wake of further data breaches.</p>]]></content:encoded></item><item><title><![CDATA[Weekly Update 290]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>I hope scheduling these in advance is working well for everyone, the analytics certainly suggest a much higher viewership so I&apos;m going to keep scheduling these and refining the whole thing further. Other than that, it&apos;s same-same this week with the usual array of breaches, tech</p>]]></description><link>https://www.troyhunt.com/weekly-update-290/</link><guid isPermaLink="false">6250c06c82416d003d1eab5e</guid><category><![CDATA[Weekly update]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Sat, 09 Apr 2022 04:30:56 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/04/Splash-Template-1.jpg" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/04/Splash-Template-1.jpg" alt="Weekly Update 290"><p>I hope scheduling these in advance is working well for everyone, the analytics certainly suggest a much higher viewership so I&apos;m going to keep scheduling these and refining the whole thing further. Other than that, it&apos;s same-same this week with the usual array of breaches, tech and life down under. Enjoy &#x1F60A;</p><!--kg-card-begin: html--><div><div style="width: 170px; display: inline-block; margin-right: 3px;"><a href="https://itunes.apple.com/au/podcast/troy-hunts-weekly-update-podcast/id1176454699"><img src="https://www.troyhunt.com/content/images/2018/05/Listen-on-Apple-Podcasts.svg" alt="Weekly Update 290"></a></div><div style="width: 146px; display: inline-block; margin-right: 3px;"><a href="https://playmusic.app.goo.gl/?ibi=com.google.PlayMusic&amp;isi=691797987&amp;ius=googleplaymusic&amp;apn=com.google.android.music&amp;link=https://play.google.com/music/m/If3tw7npymckucxq4q76762ncny?t%3DTroy_Hunt&apos;s_Weekly_Update_Podcast%26pcampaignid%3DMKT-na-all-co-pr-mu-pod-16"><img src="https://www.troyhunt.com/content/images/2018/05/Get-it-on-Google-Play.svg" alt="Weekly Update 290"></a></div><div style="width: 118px; display: inline-block; margin-right: 3px;"><a href="https://open.spotify.com/show/7jMtKFohdrw6qmz8AkLqit"><img src="https://www.troyhunt.com/content/images/2019/10/spotify.svg" class="kg-image" alt="Weekly Update 290"></a></div><div style="width: 120px; display: inline-block;"><a href="https://omny.fm/shows/troy-hunt-weekly-update/playlists/podcast.rss"><img src="https://www.troyhunt.com/content/images/2018/07/Download-via-RSS.svg" alt="Weekly Update 290"></a></div><iframe width="100%" height="480" src="https://www.youtube.com/embed/h1EEbkOKPxY" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div><!--kg-card-end: html--><h3 id="references">References</h3><ol><li><a href="https://www.troyhunt.com/2022events/">I keep forgetting to talk about upcoming events</a> (that&apos;s a list of what&apos;s coming &#xA0;in 2022, I&apos;ll try to remember to discuss it next week given I&apos;m off to Sydney the week after for the Akamai event)</li><li><a href="https://www.riskbasedsecurity.com/2021/12/14/dark-web-roundup-november-2021/">Indonesian real estate site Travelio was breached</a> (this dates back to last year, but the data is now in HIBP)</li><li><a href="https://twitter.com/troyhunt/status/1512346111284969472">Lots of crickets chirping over at Avvo</a> (this is becoming a textbook case of why disclosure is so hard)</li><li><a href="https://scotthelme.co.uk/pci-dss-4-0-its-time-to-get-serious-on-magecart/">Scott wrote a great blog post on PCI DSS 4.0</a> (really interesting to see how much focus has shifted to defending against Magecart style attacks via compromised JavaScript)</li><li><a href="https://www.varonis.com/integrations/salesforce/?utm_medium=display&amp;utm_source=troyhunt.com&amp;utm_campaign=Q222Salesforce" rel="noopener">Sponsored by: Varonis for Salesforce. Detect suspicious behavior and strengthen your Salesforce security posture. Try it free!</a></li></ol>]]></content:encoded></item><item><title><![CDATA[Welcoming the Serbian Government to Have I Been Pwned]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>Supporting national governments has been <a href="https://www.troyhunt.com/the-uk-and-australian-governments-are-now-monitoring-their-gov-domains-on-have-i-been-pwned/">a major cornerstone of Have I Been Pwned for the last 4 years</a>. Today, I&apos;m very happy to welcome the 31st government on board, Serbia! The National CERT and the Gov-CERT of the Republic of Serbia now has free and complete access to</p>]]></description><link>https://www.troyhunt.com/welcoming-the-serbian-government-to-have-i-been-pwned/</link><guid isPermaLink="false">624d563a60b4c7004dccbbac</guid><category><![CDATA[Government]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Thu, 07 Apr 2022 20:52:24 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/04/Artboard-1.png" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/04/Artboard-1.png" alt="Welcoming the Serbian Government to Have I Been Pwned"><p>Supporting national governments has been <a href="https://www.troyhunt.com/the-uk-and-australian-governments-are-now-monitoring-their-gov-domains-on-have-i-been-pwned/">a major cornerstone of Have I Been Pwned for the last 4 years</a>. Today, I&apos;m very happy to welcome the 31st government on board, Serbia! The National CERT and the Gov-CERT of the Republic of Serbia now has free and complete access to query their government domains via API.</p><p>Visibility into the exposure of government departments in data breaches remains a valuable service I&apos;m glad to see continuing to be taken up by national CERTs.</p>]]></content:encoded></item><item><title><![CDATA[Weekly Update 289]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>Everyone just came for the Ubiquiti discussion, right? This is such a tricky one; if their products sucked we could all just forget about them and go on with our day. But they don&apos;t suck - they&apos;re awesome - and that makes it hard to fathom</p>]]></description><link>https://www.troyhunt.com/weekly-update-289/</link><guid isPermaLink="false">6246541ef0db2a003d995c8d</guid><category><![CDATA[Weekly update]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Fri, 01 Apr 2022 07:18:13 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/04/Splash-Template.jpg" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/04/Splash-Template.jpg" alt="Weekly Update 289"><p>Everyone just came for the Ubiquiti discussion, right? This is such a tricky one; if their products sucked we could all just forget about them and go on with our day. But they don&apos;t suck - they&apos;re awesome - and that makes it hard to fathom how a company that makes such great gear is responding this way to such a well-respected journo. I spend most of this week&apos;s video talking about this and perhaps what surprised me most, is even after that discussion there&apos;s a bunch of people asking product questions. It&apos;ll be interesting to see how this whole thing eventually plays out...</p><!--kg-card-begin: html--><div><div style="width: 170px; display: inline-block; margin-right: 3px;"><a href="https://itunes.apple.com/au/podcast/troy-hunts-weekly-update-podcast/id1176454699"><img src="https://www.troyhunt.com/content/images/2018/05/Listen-on-Apple-Podcasts.svg" alt="Weekly Update 289"></a></div><div style="width: 146px; display: inline-block; margin-right: 3px;"><a href="https://playmusic.app.goo.gl/?ibi=com.google.PlayMusic&amp;isi=691797987&amp;ius=googleplaymusic&amp;apn=com.google.android.music&amp;link=https://play.google.com/music/m/If3tw7npymckucxq4q76762ncny?t%3DTroy_Hunt&apos;s_Weekly_Update_Podcast%26pcampaignid%3DMKT-na-all-co-pr-mu-pod-16"><img src="https://www.troyhunt.com/content/images/2018/05/Get-it-on-Google-Play.svg" alt="Weekly Update 289"></a></div><div style="width: 118px; display: inline-block; margin-right: 3px;"><a href="https://open.spotify.com/show/7jMtKFohdrw6qmz8AkLqit"><img src="https://www.troyhunt.com/content/images/2019/10/spotify.svg" class="kg-image" alt="Weekly Update 289"></a></div><div style="width: 120px; display: inline-block;"><a href="https://omny.fm/shows/troy-hunt-weekly-update/playlists/podcast.rss"><img src="https://www.troyhunt.com/content/images/2018/07/Download-via-RSS.svg" alt="Weekly Update 289"></a></div><iframe width="100%" height="480" src="https://www.youtube.com/embed/yJlNultN51Q" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div><!--kg-card-end: html--><h3 id="references">References</h3><ol><li><a href="https://twitter.com/troyhunt/status/1509447670980440065">I bought Ari a biometric padlock for his locker as other kids were successfully guessing the PIN on his other one</a> (now let&apos;s talk about adversaries, capabilities and impact)</li><li><a href="https://krebsonsecurity.com/2021/03/whistleblower-ubiquiti-breach-catastrophic/">The first Krebs story on Ubiquiti fuelled by the &quot;whistleblower&quot;</a> (IMHO, Brian was pretty clear on the source of the information and it <em>was</em> from someone within Ubiquiti)</li><li><a href="https://krebsonsecurity.com/2021/12/ubiquiti-developer-charged-with-extortion-causing-2020-breach/">The second Krebs story explaining how it was an insider attempting to extort the company</a> (also IMHO, this explains the nature of the source from the first story and provides appropriate context as to their motives)</li><li><a href="https://twitter.com/quinnypig/status/1508965090019577856">Corey Quinn&apos;s Twitter thread was the first news I saw on the lawsuit against Brian</a> (it&apos;s selective sections of the doc, but they certainly don&apos;t read well)</li><li><a href="https://news.ycombinator.com/item?id=30850416">The Hacker News comments are actually surprisingly insightful, pointing out aspects in Ubiquiti&apos;s favour</a> (but it does make it all feel like this boils down to &quot;was Brian subsequently clear enough after learning more&quot;)</li><li><a href="https://twitter.com/gcluley/status/1509128304984530952">Graham Cluley&apos;s tweet may just be the most accurate description of what all this means</a> (Ubiquiti is doing serious damage to its reputation by going down this path)</li><li><a href="https://www.troyhunt.com/welcoming-the-bulgarian-government-to-have-i-been-pwned/">The Bulgarian government is now the 30th on board HIBP</a> (the home of Telerik and Shelly &#x1F60A;)</li><li><a href="https://www.epas.de/?ref=hibp" rel="noopener">Sponsored by: Detack. Detect &amp; prevent weak, leaked, shared passwords with EPAS, a patented, privacy compliant solution used in 40 countries. Try it free!</a></li></ol>]]></content:encoded></item><item><title><![CDATA[Welcoming the Bulgarian Government to Have I Been Pwned]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>Data breaches impact us all as individuals, companies and as governments. <a href="https://www.troyhunt.com/the-uk-and-australian-governments-are-now-monitoring-their-gov-domains-on-have-i-been-pwned/">Over the last 4 years, I&apos;ve been providing additional access to data breach information in Have I Been Pwned for government agencies responsible for protecting their citizens</a>. The access is totally free and amounts to APIs designed</p>]]></description><link>https://www.troyhunt.com/welcoming-the-bulgarian-government-to-have-i-been-pwned/</link><guid isPermaLink="false">6233cd0715fdcd003da5f6e4</guid><category><![CDATA[Have I Been Pwned]]></category><category><![CDATA[Government]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Mon, 28 Mar 2022 20:30:53 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/03/Artboard-1-1.png" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/03/Artboard-1-1.png" alt="Welcoming the Bulgarian Government to Have I Been Pwned"><p>Data breaches impact us all as individuals, companies and as governments. <a href="https://www.troyhunt.com/the-uk-and-australian-governments-are-now-monitoring-their-gov-domains-on-have-i-been-pwned/">Over the last 4 years, I&apos;ve been providing additional access to data breach information in Have I Been Pwned for government agencies responsible for protecting their citizens</a>. The access is totally free and amounts to APIs designed to search and monitor government owned domains and TLDs. Today, I&apos;m very happy to welcome the 30th participant of this service, Bulgaria!</p><p>This is just one of many initiatives I&apos;m pursuing to help those impacted by data breaches and I look forward to welcoming many more national governments in the future.</p>]]></content:encoded></item><item><title><![CDATA[Weekly Update 288]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>Wow, what a day yesterday! I mentioned at the start of this week&apos;s update that Charlotte and I jumped on a chopper with our parents to check out our wedding venue, here&apos;s the pics and I just added a video to the thread too:</p><!--kg-card-begin: html--><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Well that</p></blockquote>]]></description><link>https://www.troyhunt.com/weekly-update-288/</link><guid isPermaLink="false">623d268351f001003d494bb3</guid><category><![CDATA[Weekly update]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Fri, 25 Mar 2022 06:37:30 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/03/Splash-Template-3.jpg" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/03/Splash-Template-3.jpg" alt="Weekly Update 288"><p>Wow, what a day yesterday! I mentioned at the start of this week&apos;s update that Charlotte and I jumped on a chopper with our parents to check out our wedding venue, here&apos;s the pics and I just added a video to the thread too:</p><!--kg-card-begin: html--><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Well that was amazing; chopper ride to our wedding venue for lunch with our parents. So happy to live here and have access to such a wonderful place. And such a wonderful woman in <a href="https://twitter.com/charlottelyng?ref_src=twsrc%5Etfw">@charlottelyng</a> &#x1F60A; &#x1F681; &#x1F48D; <a href="https://t.co/NEgDxZxNeR">pic.twitter.com/NEgDxZxNeR</a></p>&#x2014; Troy Hunt (@troyhunt) <a href="https://twitter.com/troyhunt/status/1506886437081280514?ref_src=twsrc%5Etfw">March 24, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><!--kg-card-end: html--><p>I talked a bunch about Okta today and shortly after, jumped in the car and turned on <a href="https://risky.biz/RB659/">the latest Risky Business podcast</a>. Have a good listen to Patrick and Adam&apos;s take on this, it&apos;s right up front in the podcast and well worth a listen. Here&apos;s this week&apos;s vid, enjoy!</p><!--kg-card-begin: html--><div><div style="width: 170px; display: inline-block; margin-right: 3px;"><a href="https://itunes.apple.com/au/podcast/troy-hunts-weekly-update-podcast/id1176454699"><img src="https://www.troyhunt.com/content/images/2018/05/Listen-on-Apple-Podcasts.svg" alt="Weekly Update 288"></a></div><div style="width: 146px; display: inline-block; margin-right: 3px;"><a href="https://playmusic.app.goo.gl/?ibi=com.google.PlayMusic&amp;isi=691797987&amp;ius=googleplaymusic&amp;apn=com.google.android.music&amp;link=https://play.google.com/music/m/If3tw7npymckucxq4q76762ncny?t%3DTroy_Hunt&apos;s_Weekly_Update_Podcast%26pcampaignid%3DMKT-na-all-co-pr-mu-pod-16"><img src="https://www.troyhunt.com/content/images/2018/05/Get-it-on-Google-Play.svg" alt="Weekly Update 288"></a></div><div style="width: 118px; display: inline-block; margin-right: 3px;"><a href="https://open.spotify.com/show/7jMtKFohdrw6qmz8AkLqit"><img src="https://www.troyhunt.com/content/images/2019/10/spotify.svg" class="kg-image" alt="Weekly Update 288"></a></div><div style="width: 120px; display: inline-block;"><a href="https://omny.fm/shows/troy-hunt-weekly-update/playlists/podcast.rss"><img src="https://www.troyhunt.com/content/images/2018/07/Download-via-RSS.svg" alt="Weekly Update 288"></a></div><iframe width="100%" height="480" src="https://www.youtube.com/embed/8K-LOzfuKaM" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div><!--kg-card-end: html--><h3 id="references">References</h3><ol><li><a href="https://passwordpurgatory.com/">The Password Purgatory website is now up and running</a> (give it a go, it&apos;s... infuriating &#x1F923;)</li><li><a href="https://twitter.com/haveibeenpwned/status/1505336766332825601">ZAP-Hosting was breached and heaps of chat logs leaked</a> (their disclosure thread is a bit disjointed, but you&apos;ll get the idea)</li><li><a href="https://twitter.com/troyhunt/status/1506163763581362176">The Okta breach / not breach / situation hasn&apos;t been handled well in terms of comms</a> (the actual incident itself may be minor, it&apos;s the handling of it that&apos;s the problem)</li><li><a href="https://www.troyhunt.com/welcoming-the-italian-government-to-have-i-been-pwned/">The Italian government is now the 29th to jump on board HIBP</a> (not in the bad &quot;we got breached way&quot;, rather in the good &quot;let&apos;s do something really useful with breach data&quot; way)</li><li><a href="https://www.varonis.com/use-case/ransomware-prevention/?utm_medium=display&amp;utm_source=troyhunt.com&amp;utm_campaign=zero-trust-zero-damage" rel="noopener">Sponsored by: Varonis. Reduce your ransomware blast radius with the leader in data-first security. Try it free!</a></li></ol>]]></content:encoded></item><item><title><![CDATA[Welcoming the Italian Government to Have I Been Pwned]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>For the last 4 years, <a href="https://www.troyhunt.com/the-uk-and-australian-governments-are-now-monitoring-their-gov-domains-on-have-i-been-pwned/">I&apos;ve been providing API-level access to national government agencies so that they can search and monitor their government domains on Have I Been Pwned</a>. Today, I&apos;m very happy to welcome the 29th government to join the service, Italy! Via CSIRT-Italia within</p>]]></description><link>https://www.troyhunt.com/welcoming-the-italian-government-to-have-i-been-pwned/</link><guid isPermaLink="false">6233c9e015fdcd003da5f6b5</guid><category><![CDATA[Have I Been Pwned]]></category><category><![CDATA[Government]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Mon, 21 Mar 2022 09:16:58 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/03/Artboard-1.png" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/03/Artboard-1.png" alt="Welcoming the Italian Government to Have I Been Pwned"><p>For the last 4 years, <a href="https://www.troyhunt.com/the-uk-and-australian-governments-are-now-monitoring-their-gov-domains-on-have-i-been-pwned/">I&apos;ve been providing API-level access to national government agencies so that they can search and monitor their government domains on Have I Been Pwned</a>. Today, I&apos;m very happy to welcome the 29th government to join the service, Italy! Via CSIRT-Italia within their National Cybersecurity Agency (ACN), they now have free access to breach data I hope will further empower them to protect their people in the wake of data breaches.</p><p>I expect to continue onboarding eligible governments and look forward to welcoming many more in the future.</p>]]></content:encoded></item><item><title><![CDATA[Weekly Update 287]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>So the plan was to schedule this week&apos;s session in advance then right on 17:30 at my end, go live. It mostly worked, I just forgot to press the &quot;go live&quot; button having worked on the (obviously incorrect) assumption that would happen automatically. Lesson learned,</p>]]></description><link>https://www.troyhunt.com/weekly-update-287/</link><guid isPermaLink="false">6236558715fdcd003da5f705</guid><category><![CDATA[Weekly update]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Sat, 19 Mar 2022 22:33:28 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/03/Splash-Template-2.jpg" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/03/Splash-Template-2.jpg" alt="Weekly Update 287"><p>So the plan was to schedule this week&apos;s session in advance then right on 17:30 at my end, go live. It mostly worked, I just forgot to press the &quot;go live&quot; button having worked on the (obviously incorrect) assumption that would happen automatically. Lesson learned, session restarted, we&apos;ll be all good next week &#x1F60A;</p><!--kg-card-begin: html--><div><div style="width: 170px; display: inline-block; margin-right: 3px;"><a href="https://itunes.apple.com/au/podcast/troy-hunts-weekly-update-podcast/id1176454699"><img src="https://www.troyhunt.com/content/images/2018/05/Listen-on-Apple-Podcasts.svg" alt="Weekly Update 287"></a></div><div style="width: 146px; display: inline-block; margin-right: 3px;"><a href="https://playmusic.app.goo.gl/?ibi=com.google.PlayMusic&amp;isi=691797987&amp;ius=googleplaymusic&amp;apn=com.google.android.music&amp;link=https://play.google.com/music/m/If3tw7npymckucxq4q76762ncny?t%3DTroy_Hunt&apos;s_Weekly_Update_Podcast%26pcampaignid%3DMKT-na-all-co-pr-mu-pod-16"><img src="https://www.troyhunt.com/content/images/2018/05/Get-it-on-Google-Play.svg" alt="Weekly Update 287"></a></div><div style="width: 118px; display: inline-block; margin-right: 3px;"><a href="https://open.spotify.com/show/7jMtKFohdrw6qmz8AkLqit"><img src="https://www.troyhunt.com/content/images/2019/10/spotify.svg" class="kg-image" alt="Weekly Update 287"></a></div><div style="width: 120px; display: inline-block;"><a href="https://omny.fm/shows/troy-hunt-weekly-update/playlists/podcast.rss"><img src="https://www.troyhunt.com/content/images/2018/07/Download-via-RSS.svg" alt="Weekly Update 287"></a></div><iframe width="100%" height="480" src="https://www.youtube.com/embed/I2n84gs6Ks4" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div><!--kg-card-end: html--><h3 id="references">References</h3><ol><li><a href="https://twitter.com/troyhunt/status/1503098363696222209">Asking about IoT&apos;ing the kids&apos; showers led to lots of wrong answers</a> (maybe I&apos;m just scarred now knowing how much work is involved as soon as you touch actual plumbing in a bathroom)</li><li><a href="https://twitter.com/troyhunt/status/1503510950330048515">Seeing a psych and getting help is just fine</a> (after recording this vid, I was watching Toto Wolff on Drive to Survive and the <em>enormous </em>amount of pressure on him)</li><li><a href="https://www.ftc.gov/news-events/news/press-releases/2022/03/ftc-takes-action-against-cafepress-data-breach-cover">CafePress got slapped with a fine by the FTC for their 2019 breach</a> (and deservedly so, IMHO)</li><li><a href="https://1password.com/fastmail/">Your email address is the primary key of your digital life, should you use different ones on different sites?</a> (that&apos;s a link through to 1Password&apos;s Masked Email feature that leverages Fastmail, the video is a good primer)</li><li><a href="https://crowdsec.net/?mtm_campaign=Troy-Hunt-March-2020" rel="noopener">Sponsored by: CrowdSec - The open-source &amp; collaborative IPS: respond to attacks &amp; share signals across the community. Download it for free.</a></li></ol>]]></content:encoded></item><item><title><![CDATA[Setting the Bar for Government Access to Have I Been Pwned]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>Over the last 4 years,<a href="https://www.troyhunt.com/tag/government/"> I&apos;ve onboarded 28 national government CERTs onto Have I Been Pwned</a> (HIBP) and given them free and open access to APIs that enable them to query and monitor their gov domains. This doesn&apos;t give them access to any information they can&</p>]]></description><link>https://www.troyhunt.com/setting-the-bar-for-government-access-to-have-i-been-pwned/</link><guid isPermaLink="false">622abafbcce716004d216b0f</guid><category><![CDATA[Have I Been Pwned]]></category><category><![CDATA[Government]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Fri, 11 Mar 2022 08:12:34 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/03/HIBP-Banner.jpg" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/03/HIBP-Banner.jpg" alt="Setting the Bar for Government Access to Have I Been Pwned"><p>Over the last 4 years,<a href="https://www.troyhunt.com/tag/government/"> I&apos;ve onboarded 28 national government CERTs onto Have I Been Pwned</a> (HIBP) and given them free and open access to APIs that enable them to query and monitor their gov domains. This doesn&apos;t give them access to any information they can&apos;t already access via <a href="https://haveibeenpwned.com/DomainSearch">the free public domain search feature</a>, but it makes their lives easier. <em>Much</em> easier.</p><p>As interest from govs has grown, it&apos;s caused me to ponder: who am I willing to give access to? Who am I <em>unwilling</em> to give access to? Those questions prompted a tweet earlier today:</p><!--kg-card-begin: html--><blockquote class="twitter-tweet"><p lang="en" dir="ltr">If I was to define metrics for which governments I accepted onto <a href="https://twitter.com/haveibeenpwned?ref_src=twsrc%5Etfw">@haveibeenpwned</a>, what should they look like? Human rights? Other? And as defined by who? I need something empirical, consistent and repeatable for govs that &quot;feel&quot; uncomfortable. Context: <a href="https://t.co/gxwBfdOdBl">https://t.co/gxwBfdOdBl</a></p>&#x2014; Troy Hunt (@troyhunt) <a href="https://twitter.com/troyhunt/status/1502055882091376657?ref_src=twsrc%5Etfw">March 10, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><!--kg-card-end: html--><p>There are 2 primary factors that caused me to pose this question and I want to explain my thinking on both clearly here:</p><p>The first is the current situation with Russia and Ukraine and more specifically, the sanctions levelled at the former in recent weeks. It&apos;s not just sanctions, it&apos;s everything from <a href="https://www.9news.com.au/world/russia-ukraine-war-mcdonalds-to-close-850-stores-in-russia/aa4f51e5-de7e-4354-8372-d73eb616aaea">McDonald&apos;s closing stores</a> to my tweet this morning about Universal Audio blocking traffic from Russia and Belarus:</p><!--kg-card-begin: html--><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Strong stance by <a href="https://twitter.com/UAudio?ref_src=twsrc%5Etfw">@UAudio</a> against the invasion of Ukraine. Which other services are blocking traffic form Russia and Belarus? How does everyone feel about this approach, and should we see more of it? <a href="https://t.co/hAWPW1WbW3">pic.twitter.com/hAWPW1WbW3</a></p>&#x2014; Troy Hunt (@troyhunt) <a href="https://twitter.com/troyhunt/status/1502029536493711361?ref_src=twsrc%5Etfw">March 10, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><!--kg-card-end: html--><p>You may or may not agree with the stance these organisations have taken, but what this has highlighted is that there is a valid discussion to be had about which countries services are provided to and if there is a threshold beneath which you choose not to do business there.</p><p>The second factor is that the requests I&apos;ve had from some governments simply don&apos;t &quot;feel&quot; right. To be clear, these requests are no different to, say, New Zealand&apos;s (just to pick the most recent one), but my own subjective view on these countries is that they fall short on many of the values that I (and probably you), hold dear. Democracy. Freedom of press and speech. The ability to choose religion, sexuality and other basic rights I take for granted in a place like Australia. But just a &quot;feel&quot; is insufficient and per my earlier tweet, not at all empirical, consistent or repeatable.</p><p>Of all the responses I received, this one really stood out:</p><!--kg-card-begin: html--><blockquote class="twitter-tweet" data-conversation="none"><p lang="en" dir="ltr">There are a number of country rankings that you could consider using. Here&apos;s one<br> <a href="https://t.co/kA61z7NCn9">https://t.co/kA61z7NCn9</a></p>&#x2014; Jeff Barnes (@mani2jeff) <a href="https://twitter.com/mani2jeff/status/1502056954297946121?ref_src=twsrc%5Etfw">March 10, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><!--kg-card-end: html--><p>Jeff pointed me to the World Population Review website and in particular, <a href="https://worldpopulationreview.com/country-rankings/democracy-countries">the democracy ranking by country</a>. Let me repeat the list here with the 28 governments already onboard HIBP highlighted in green:</p><p><strong>Edit:</strong> I&apos;ll keep updating this table as more governments come on board, so the number will exceed the original 28:</p><!--kg-card-begin: html--><style>th {font-weight: bold} .green td {background-color: #C6EFCE}</style>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;table-layout:fixed; font-size: 0.7em">
 <tr class="green">
  <th>Country
  </th><th>Category
  </th><th>Score
  </th><th>Elec Process
  </th><th>Function of Gov
  </th><th>Polit Partici
  </th><th>Polit Culture
  </th><th>Civil Liberties
 </th></tr>
 <tr class="green">
  <td>Norway</td>
  <td>Full Democracy</td>
  <td align="right">9.81</td>
  <td align="right">10</td>
  <td align="right">9.64</td>
  <td align="right">10</td>
  <td align="right">10</td>
  <td align="right">9.41</td>
 </tr>
 <tr class="green">
  <td>Iceland</td>
  <td>Full Democracy</td>
  <td align="right">9.37</td>
  <td align="right">10</td>
  <td align="right">8.57</td>
  <td align="right">8</td>
  <td align="right">10</td>
  <td align="right">9.41</td>
 </tr>
 <tr class="green">
  <td>Sweden</td>
  <td>Full Democracy</td>
  <td align="right">9.26</td>
  <td align="right">9</td>
  <td align="right">9.29</td>
  <td align="right">8</td>
  <td align="right">10</td>
  <td align="right">9.12</td>
 </tr>
 <tr class="green">
  <td>New Zealand</td>
  <td>Full Democracy</td>
  <td align="right">9.25</td>
  <td align="right">10</td>
  <td align="right">8.93</td>
  <td align="right">8</td>
  <td align="right">8</td>
  <td align="right">9.71</td>
 </tr>
 <tr class="green">
  <td>Canada</td>
  <td>Full Democracy</td>
  <td align="right">9.24</td>
  <td align="right">9</td>
  <td align="right">8.93</td>
  <td align="right">8</td>
  <td align="right">9</td>
  <td align="right">9.41</td>
 </tr>
 <tr class="green">
  <td>Finland</td>
  <td>Full Democracy</td>
  <td align="right">9.2</td>
  <td align="right">10</td>
  <td align="right">8.93</td>
  <td align="right">8</td>
  <td align="right">8</td>
  <td align="right">9.41</td>
 </tr>
 <tr class="green">
  <td>Denmark</td>
  <td>Full Democracy</td>
  <td align="right">9.15</td>
  <td align="right">10</td>
  <td align="right">8.93</td>
  <td align="right">8</td>
  <td align="right">9</td>
  <td align="right">9.12</td>
 </tr>
 <tr class="green">
  <td>Ireland</td>
  <td>Full Democracy</td>
  <td align="right">9.05</td>
  <td align="right">10</td>
  <td align="right">7.86</td>
  <td align="right">8</td>
  <td align="right">9</td>
  <td align="right">9.71</td>
 </tr>
 <tr class="green">
  <td>Netherlands</td>
  <td>Full Democracy</td>
  <td align="right">8.96</td>
  <td align="right">9</td>
  <td align="right">9.29</td>
  <td align="right">8</td>
  <td align="right">8</td>
  <td align="right">8.82</td>
 </tr>
 <tr class="green">
  <td>Australia</td>
  <td>Full Democracy</td>
  <td align="right">8.96</td>
  <td align="right">10</td>
  <td align="right">8.57</td>
  <td align="right">7</td>
  <td align="right">8</td>
  <td align="right">9.71</td>
 </tr>
 <tr>
  <td>Taiwan</td>
  <td>Full Democracy</td>
  <td align="right">8.94</td>
  <td align="right">10</td>
  <td align="right">9.64</td>
  <td align="right">7</td>
  <td align="right">8</td>
  <td align="right">9.71</td>
 </tr>
 <tr class="green">
  <td>Switzerland</td>
  <td>Full Democracy</td>
  <td align="right">8.83</td>
  <td align="right">9</td>
  <td align="right">8.57</td>
  <td align="right">7</td>
  <td align="right">9</td>
  <td align="right">8.82</td>
 </tr>
 <tr class="green">
  <td>Luxembourg</td>
  <td>Full Democracy</td>
  <td align="right">8.68</td>
  <td align="right">10</td>
  <td align="right">8.57</td>
  <td align="right">6</td>
  <td align="right">8</td>
  <td align="right">9.41</td>
 </tr>
 <tr>
  <td>Germany</td>
  <td>Full Democracy</td>
  <td align="right">8.67</td>
  <td align="right">9</td>
  <td align="right">8.21</td>
  <td align="right">8</td>
  <td align="right">8</td>
  <td align="right">9.12</td>
 </tr>
 <tr class="green">
  <td>Uruguay</td>
  <td>Full Democracy</td>
  <td align="right">8.61</td>
  <td align="right">10</td>
  <td align="right">8.57</td>
  <td align="right">6</td>
  <td align="right">8</td>
  <td align="right">9.71</td>
 </tr>
 <tr class="green">
  <td>United Kingdom</td>
  <td>Full Democracy</td>
  <td align="right">8.54</td>
  <td align="right">10</td>
  <td align="right">7.5</td>
  <td align="right">8</td>
  <td align="right">7</td>
  <td align="right">8.82</td>
 </tr>
 <tr>
  <td>Chile</td>
  <td>Full Democracy</td>
  <td align="right">8.28</td>
  <td align="right">9</td>
  <td align="right">8.21</td>
  <td align="right">6</td>
  <td align="right">8</td>
  <td align="right">8.82</td>
 </tr>
 <tr>
  <td>Costa Rica</td>
  <td>Full Democracy</td>
  <td align="right">8.16</td>
  <td align="right">9</td>
  <td align="right">6.79</td>
  <td align="right">7</td>
  <td align="right">7</td>
  <td align="right">9.71</td>
 </tr>
 <tr class="green">
  <td>Austria</td>
  <td>Full Democracy</td>
  <td align="right">8.16</td>
  <td align="right">9</td>
  <td align="right">7.5</td>
  <td align="right">8</td>
  <td align="right">6</td>
  <td align="right">8.53</td>
 </tr>
 <tr>
  <td>Mauritius</td>
  <td>Full Democracy</td>
  <td align="right">8.14</td>
  <td align="right">9</td>
  <td align="right">7.86</td>
  <td align="right">6</td>
  <td align="right">8</td>
  <td align="right">8.82</td>
 </tr>
 <tr>
  <td>Japan</td>
  <td>Full Democracy</td>
  <td align="right">8.13</td>
  <td align="right">8</td>
  <td align="right">8.57</td>
  <td align="right">6</td>
  <td align="right">8</td>
  <td align="right">8.53</td>
 </tr>
 <tr class="green">
  <td>Spain</td>
  <td>Full Democracy</td>
  <td align="right">8.12</td>
  <td align="right">9</td>
  <td align="right">7.14</td>
  <td align="right">7</td>
  <td align="right">8</td>
  <td align="right">8.53</td>
 </tr>
 <tr>
  <td>South Korea</td>
  <td>Full Democracy</td>
  <td align="right">8.01</td>
  <td align="right">9</td>
  <td align="right">8.21</td>
  <td align="right">7</td>
  <td align="right">7</td>
  <td align="right">7.94</td>
 </tr>
 <tr>
  <td>France</td>
  <td>Flawed Democracy</td>
  <td align="right">7.99</td>
  <td align="right">9</td>
  <td align="right">7.5</td>
  <td align="right">7</td>
  <td align="right">6</td>
  <td align="right">8.24</td>
 </tr>
 <tr class="green">
  <td>United States</td>
  <td>Flawed Democracy</td>
  <td align="right">7.92</td>
  <td align="right">9</td>
  <td align="right">6.79</td>
  <td align="right">8</td>
  <td align="right">6</td>
  <td align="right">8.53</td>
 </tr>
 <tr class="green">
  <td>Portugal</td>
  <td>Flawed Democracy</td>
  <td align="right">7.9</td>
  <td align="right">9</td>
  <td align="right">7.5</td>
  <td align="right">6</td>
  <td align="right">7</td>
  <td align="right">8.82</td>
 </tr>
 <tr>
  <td>Estonia</td>
  <td>Flawed Democracy</td>
  <td align="right">7.84</td>
  <td align="right">9</td>
  <td align="right">7.86</td>
  <td align="right">6</td>
  <td align="right">6</td>
  <td align="right">8.24</td>
 </tr>
 <tr class="green">
  <td>Israel</td>
  <td>Flawed Democracy</td>
  <td align="right">7.84</td>
  <td align="right">9</td>
  <td align="right">7.5</td>
  <td align="right">9</td>
  <td align="right">7</td>
  <td align="right">5.59</td>
 </tr>
 <tr class="green">
  <td>Italy</td>
  <td>Flawed Democracy</td>
  <td align="right">7.74</td>
  <td align="right">9</td>
  <td align="right">6.43</td>
  <td align="right">7</td>
  <td align="right">7</td>
  <td align="right">7.94</td>
 </tr>
 <tr>
  <td>Malta</td>
  <td>Flawed Democracy</td>
  <td align="right">7.68</td>
  <td align="right">9</td>
  <td align="right">6.79</td>
  <td align="right">6</td>
  <td align="right">8</td>
  <td align="right">8.24</td>
 </tr>
 <tr class="green">
  <td>Czech Republic</td>
  <td>Flawed Democracy</td>
  <td align="right">7.67</td>
  <td align="right">9</td>
  <td align="right">6.07</td>
  <td align="right">6</td>
  <td align="right">7</td>
  <td align="right">8.53</td>
 </tr>
 <tr>
  <td>Botswana</td>
  <td>Flawed Democracy</td>
  <td align="right">7.62</td>
  <td align="right">9</td>
  <td align="right">6.79</td>
  <td align="right">6</td>
  <td align="right">7</td>
  <td align="right">8.53</td>
 </tr>
 <tr>
  <td>Cyprus</td>
  <td>Flawed Democracy</td>
  <td align="right">7.56</td>
  <td align="right">9</td>
  <td align="right">5.36</td>
  <td align="right">7</td>
  <td align="right">7</td>
  <td align="right">8.53</td>
 </tr>
 <tr>
  <td>Slovenia</td>
  <td>Flawed Democracy</td>
  <td align="right">7.54</td>
  <td align="right">9</td>
  <td align="right">6.43</td>
  <td align="right">7</td>
  <td align="right">6</td>
  <td align="right">8.24</td>
 </tr>
 <tr class="green">
  <td>Belgium</td>
  <td>Flawed Democracy</td>
  <td align="right">7.51</td>
  <td align="right">9</td>
  <td align="right">7.86</td>
  <td align="right">5</td>
  <td align="right">6</td>
  <td align="right">8.24</td>
 </tr>
 <tr>
  <td>Greece</td>
  <td>Flawed Democracy</td>
  <td align="right">7.39</td>
  <td align="right">9</td>
  <td align="right">5.21</td>
  <td align="right">6</td>
  <td align="right">7</td>
  <td align="right">8.53</td>
 </tr>
 <tr>
  <td>Latvia</td>
  <td>Flawed Democracy</td>
  <td align="right">7.24</td>
  <td align="right">9</td>
  <td align="right">6.07</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">8.24</td>
 </tr>
 <tr>
  <td>Malaysia</td>
  <td>Flawed Democracy</td>
  <td align="right">7.19</td>
  <td align="right">9</td>
  <td align="right">7.86</td>
  <td align="right">6</td>
  <td align="right">6</td>
  <td align="right">5.59</td>
 </tr>
 <tr>
  <td>Panama</td>
  <td>Flawed Democracy</td>
  <td align="right">7.18</td>
  <td align="right">9</td>
  <td align="right">6.43</td>
  <td align="right">7</td>
  <td align="right">5</td>
  <td align="right">7.65</td>
 </tr>
 <tr class="green">
  <td>Trinidad and Tobago</td>
  <td>Flawed Democracy</td>
  <td align="right">7.16</td>
  <td align="right">9</td>
  <td align="right">7.14</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">7.35</td>
 </tr>
 <tr>
  <td>Lithuania</td>
  <td>Flawed Democracy</td>
  <td align="right">7.13</td>
  <td align="right">9</td>
  <td align="right">6.07</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">8.82</td>
 </tr>
 <tr class="green">
  <td>Jamaica</td>
  <td>Flawed Democracy</td>
  <td align="right">7.13</td>
  <td align="right">8</td>
  <td align="right">7.14</td>
  <td align="right">5</td>
  <td align="right">6</td>
  <td align="right">8.53</td>
 </tr>
 <tr>
  <td>Timor-Leste</td>
  <td>Flawed Democracy</td>
  <td align="right">7.06</td>
  <td align="right">9</td>
  <td align="right">5.93</td>
  <td align="right">5</td>
  <td align="right">6</td>
  <td align="right">7.35</td>
 </tr>
 <tr>
  <td>South Africa</td>
  <td>Flawed Democracy</td>
  <td align="right">7.05</td>
  <td align="right">7</td>
  <td align="right">7.14</td>
  <td align="right">8</td>
  <td align="right">5</td>
  <td align="right">7.35</td>
 </tr>
 <tr>
  <td>Colombia</td>
  <td>Flawed Democracy</td>
  <td align="right">7.04</td>
  <td align="right">9</td>
  <td align="right">6.43</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">7.94</td>
 </tr>
 <tr class="green">
  <td>Slovakia</td>
  <td>Flawed Democracy</td>
  <td align="right">6.97</td>
  <td align="right">9</td>
  <td align="right">6.43</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">7.65</td>
 </tr>
 <tr>
  <td>Argentina</td>
  <td>Flawed Democracy</td>
  <td align="right">6.95</td>
  <td align="right">9</td>
  <td align="right">5.36</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">7.94</td>
 </tr>
 <tr>
  <td>Brazil</td>
  <td>Flawed Democracy</td>
  <td align="right">6.92</td>
  <td align="right">9</td>
  <td align="right">5.36</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">7.94</td>
 </tr>
 <tr>
  <td>Poland</td>
  <td>Flawed Democracy</td>
  <td align="right">6.85</td>
  <td align="right">9</td>
  <td align="right">5.71</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">7.06</td>
 </tr>
 <tr>
  <td>Suriname</td>
  <td>Flawed Democracy</td>
  <td align="right">6.82</td>
  <td align="right">9</td>
  <td align="right">6.07</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">7.35</td>
 </tr>
 <tr class="green">
  <td>Bulgaria</td>
  <td>Flawed Democracy</td>
  <td align="right">6.71</td>
  <td align="right">9</td>
  <td align="right">5.71</td>
  <td align="right">7</td>
  <td align="right">4</td>
  <td align="right">7.06</td>
 </tr>
 <tr>
  <td>India</td>
  <td>Flawed Democracy</td>
  <td align="right">6.61</td>
  <td align="right">8</td>
  <td align="right">7.14</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">5.59</td>
 </tr>
 <tr>
  <td>Tunisia</td>
  <td>Flawed Democracy</td>
  <td align="right">6.59</td>
  <td align="right">9</td>
  <td align="right">5.36</td>
  <td align="right">7</td>
  <td align="right">5</td>
  <td align="right">5.59</td>
 </tr>
 <tr>
  <td>Hungary</td>
  <td>Flawed Democracy</td>
  <td align="right">6.56</td>
  <td align="right">8</td>
  <td align="right">6.43</td>
  <td align="right">5</td>
  <td align="right">6</td>
  <td align="right">6.76</td>
 </tr>
 <tr>
  <td>Philippines</td>
  <td>Flawed Democracy</td>
  <td align="right">6.56</td>
  <td align="right">9</td>
  <td align="right">5</td>
  <td align="right">7</td>
  <td align="right">4</td>
  <td align="right">6.47</td>
 </tr>
 <tr>
  <td>Peru</td>
  <td>Flawed Democracy</td>
  <td align="right">6.53</td>
  <td align="right">8</td>
  <td align="right">5.36</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">7.35</td>
 </tr>
 <tr>
  <td>Namibia</td>
  <td>Flawed Democracy</td>
  <td align="right">6.52</td>
  <td align="right">7</td>
  <td align="right">5.36</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">7.94</td>
 </tr>
 <tr>
  <td>Croatia</td>
  <td>Flawed Democracy</td>
  <td align="right">6.5</td>
  <td align="right">9</td>
  <td align="right">6.07</td>
  <td align="right">6</td>
  <td align="right">4</td>
  <td align="right">6.76</td>
 </tr>
 <tr>
  <td>Ghana</td>
  <td>Flawed Democracy</td>
  <td align="right">6.5</td>
  <td align="right">8</td>
  <td align="right">5.36</td>
  <td align="right">6</td>
  <td align="right">6</td>
  <td align="right">5.88</td>
 </tr>
 <tr>
  <td>Mongolia</td>
  <td>Flawed Democracy</td>
  <td align="right">6.48</td>
  <td align="right">8</td>
  <td align="right">5.71</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">6.76</td>
 </tr>
 <tr class="green">
  <td>Romania</td>
  <td>Flawed Democracy</td>
  <td align="right">6.4</td>
  <td align="right">9</td>
  <td align="right">5.36</td>
  <td align="right">6</td>
  <td align="right">3</td>
  <td align="right">7.06</td>
 </tr>
 <tr class="green">
  <td>Dominican Republic</td>
  <td>Flawed Democracy</td>
  <td align="right">6.32</td>
  <td align="right">9</td>
  <td align="right">4.29</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">7.06</td>
 </tr>
 <tr>
  <td>Lesotho</td>
  <td>Flawed Democracy</td>
  <td align="right">6.3</td>
  <td align="right">9</td>
  <td align="right">4.14</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">6.47</td>
 </tr>
 <tr>
  <td>Indonesia</td>
  <td>Flawed Democracy</td>
  <td align="right">6.3</td>
  <td align="right">7</td>
  <td align="right">7.5</td>
  <td align="right">6</td>
  <td align="right">4</td>
  <td align="right">5.59</td>
 </tr>
 <tr class="green">
  <td>Serbia</td>
  <td>Flawed Democracy</td>
  <td align="right">6.22</td>
  <td align="right">8</td>
  <td align="right">5.36</td>
  <td align="right">6</td>
  <td align="right">3</td>
  <td align="right">7.06</td>
 </tr>
 <tr>
  <td>Paraguay</td>
  <td>Flawed Democracy</td>
  <td align="right">6.18</td>
  <td align="right">8</td>
  <td align="right">5.71</td>
  <td align="right">5</td>
  <td align="right">4</td>
  <td align="right">7.06</td>
 </tr>
 <tr>
  <td>Sri Lanka</td>
  <td>Flawed Democracy</td>
  <td align="right">6.14</td>
  <td align="right">7</td>
  <td align="right">5.71</td>
  <td align="right">5</td>
  <td align="right">6</td>
  <td align="right">6.18</td>
 </tr>
 <tr>
  <td>Ecuador</td>
  <td>Flawed Democracy</td>
  <td align="right">6.13</td>
  <td align="right">8</td>
  <td align="right">5</td>
  <td align="right">6</td>
  <td align="right">3</td>
  <td align="right">6.47</td>
 </tr>
 <tr>
  <td>Papua New Guinea</td>
  <td>Flawed Democracy</td>
  <td align="right">6.1</td>
  <td align="right">6</td>
  <td align="right">6.07</td>
  <td align="right">3</td>
  <td align="right">6</td>
  <td align="right">7.94</td>
 </tr>
 <tr>
  <td>Albania</td>
  <td>Flawed Democracy</td>
  <td align="right">6.08</td>
  <td align="right">7</td>
  <td align="right">5.36</td>
  <td align="right">4</td>
  <td align="right">6</td>
  <td align="right">7.35</td>
 </tr>
 <tr>
  <td>Mexico</td>
  <td>Flawed Democracy</td>
  <td align="right">6.07</td>
  <td align="right">7</td>
  <td align="right">5.71</td>
  <td align="right">7</td>
  <td align="right">3</td>
  <td align="right">5.88</td>
 </tr>
 <tr>
  <td>Thailand</td>
  <td>Flawed Democracy</td>
  <td align="right">6.04</td>
  <td align="right">7</td>
  <td align="right">5</td>
  <td align="right">6</td>
  <td align="right">6</td>
  <td align="right">5.29</td>
 </tr>
 <tr>
  <td>Singapore</td>
  <td>Flawed Democracy</td>
  <td align="right">6.03</td>
  <td align="right">4</td>
  <td align="right">7.86</td>
  <td align="right">4</td>
  <td align="right">6</td>
  <td align="right">6.76</td>
 </tr>
 <tr>
  <td>Guyana</td>
  <td>Flawed Democracy</td>
  <td align="right">6.01</td>
  <td align="right">6</td>
  <td align="right">5.36</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">7.06</td>
 </tr>
 <tr>
  <td>Bangladesh</td>
  <td>Hybrid Regime</td>
  <td align="right">5.99</td>
  <td align="right">7</td>
  <td align="right">6.07</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">4.71</td>
 </tr>
 <tr>
  <td>El Salvador</td>
  <td>Hybrid Regime</td>
  <td align="right">5.9</td>
  <td align="right">9</td>
  <td align="right">4.29</td>
  <td align="right">6</td>
  <td align="right">3</td>
  <td align="right">6.18</td>
 </tr>
 <tr class="green">
  <td>North Macedonia</td>
  <td>Hybrid Regime</td>
  <td align="right">5.89</td>
  <td align="right">7</td>
  <td align="right">5.71</td>
  <td align="right">6</td>
  <td align="right">3</td>
  <td align="right">7.06</td>
 </tr>
 <tr class="green">
  <td>Ukraine</td>
  <td>Hybrid Regime</td>
  <td align="right">5.81</td>
  <td align="right">8</td>
  <td align="right">2.71</td>
  <td align="right">7</td>
  <td align="right">5</td>
  <td align="right">5.88</td>
 </tr>
 <tr>
  <td>Moldova</td>
  <td>Hybrid Regime</td>
  <td align="right">5.78</td>
  <td align="right">7</td>
  <td align="right">4.64</td>
  <td align="right">6</td>
  <td align="right">4</td>
  <td align="right">6.76</td>
 </tr>
 <tr>
  <td>Montenegro</td>
  <td>Hybrid Regime</td>
  <td align="right">5.77</td>
  <td align="right">7</td>
  <td align="right">5.71</td>
  <td align="right">6</td>
  <td align="right">3</td>
  <td align="right">6.47</td>
 </tr>
 <tr>
  <td>Malawi</td>
  <td>Hybrid Regime</td>
  <td align="right">5.74</td>
  <td align="right">7</td>
  <td align="right">4.29</td>
  <td align="right">5</td>
  <td align="right">6</td>
  <td align="right">6.18</td>
 </tr>
 <tr>
  <td>Fiji</td>
  <td>Hybrid Regime</td>
  <td align="right">5.72</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">5.29</td>
 </tr>
 <tr>
  <td>Bhutan</td>
  <td>Hybrid Regime</td>
  <td align="right">5.71</td>
  <td align="right">8</td>
  <td align="right">6.79</td>
  <td align="right">3</td>
  <td align="right">5</td>
  <td align="right">4.71</td>
 </tr>
 <tr>
  <td>Madagascar</td>
  <td>Hybrid Regime</td>
  <td align="right">5.7</td>
  <td align="right">7</td>
  <td align="right">3.57</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">4.71</td>
 </tr>
 <tr>
  <td>Senegal</td>
  <td>Hybrid Regime</td>
  <td align="right">5.67</td>
  <td align="right">6</td>
  <td align="right">5.71</td>
  <td align="right">4</td>
  <td align="right">6</td>
  <td align="right">5.88</td>
 </tr>
 <tr>
  <td>Hong Kong</td>
  <td>Hybrid Regime</td>
  <td align="right">5.57</td>
  <td align="right">3</td>
  <td align="right">3.64</td>
  <td align="right">5</td>
  <td align="right">7</td>
  <td align="right">8.53</td>
 </tr>
 <tr>
  <td>Honduras</td>
  <td>Hybrid Regime</td>
  <td align="right">5.36</td>
  <td align="right">7</td>
  <td align="right">4.29</td>
  <td align="right">4</td>
  <td align="right">4</td>
  <td align="right">5.88</td>
 </tr>
 <tr>
  <td>Armenia</td>
  <td>Hybrid Regime</td>
  <td align="right">5.35</td>
  <td align="right">7</td>
  <td align="right">5</td>
  <td align="right">6</td>
  <td align="right">3</td>
  <td align="right">5</td>
 </tr>
 <tr>
  <td>Liberia</td>
  <td>Hybrid Regime</td>
  <td align="right">5.32</td>
  <td align="right">7</td>
  <td align="right">2.71</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">5.29</td>
 </tr>
 <tr>
  <td>Georgia</td>
  <td>Hybrid Regime</td>
  <td align="right">5.31</td>
  <td align="right">7</td>
  <td align="right">3.57</td>
  <td align="right">6</td>
  <td align="right">3</td>
  <td align="right">5.29</td>
 </tr>
 <tr>
  <td>Nepal</td>
  <td>Hybrid Regime</td>
  <td align="right">5.22</td>
  <td align="right">4</td>
  <td align="right">5.36</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">5.29</td>
 </tr>
 <tr>
  <td>Tanzania</td>
  <td>Hybrid Regime</td>
  <td align="right">5.1</td>
  <td align="right">4</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">6</td>
  <td align="right">4.41</td>
 </tr>
 <tr>
  <td>Bolivia</td>
  <td>Hybrid Regime</td>
  <td align="right">5.08</td>
  <td align="right">6</td>
  <td align="right">3.57</td>
  <td align="right">6</td>
  <td align="right">3</td>
  <td align="right">5.88</td>
 </tr>
 <tr>
  <td>Kenya</td>
  <td>Hybrid Regime</td>
  <td align="right">5.05</td>
  <td align="right">3</td>
  <td align="right">5.36</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">4.12</td>
 </tr>
 <tr>
  <td>Morocco</td>
  <td>Hybrid Regime</td>
  <td align="right">5.04</td>
  <td align="right">5</td>
  <td align="right">4.64</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">4.12</td>
 </tr>
 <tr>
  <td>Guatemala</td>
  <td>Hybrid Regime</td>
  <td align="right">4.97</td>
  <td align="right">6</td>
  <td align="right">3.93</td>
  <td align="right">5</td>
  <td align="right">3</td>
  <td align="right">5.88</td>
 </tr>
 <tr>
  <td>Uganda</td>
  <td>Hybrid Regime</td>
  <td align="right">4.94</td>
  <td align="right">4</td>
  <td align="right">3.21</td>
  <td align="right">5</td>
  <td align="right">6</td>
  <td align="right">5.29</td>
 </tr>
 <tr>
  <td>Sierra Leone</td>
  <td>Hybrid Regime</td>
  <td align="right">4.86</td>
  <td align="right">6</td>
  <td align="right">2.86</td>
  <td align="right">3</td>
  <td align="right">6</td>
  <td align="right">5.29</td>
 </tr>
 <tr>
  <td>Zambia</td>
  <td>Hybrid Regime</td>
  <td align="right">4.86</td>
  <td align="right">4</td>
  <td align="right">2.93</td>
  <td align="right">3</td>
  <td align="right">6</td>
  <td align="right">5.88</td>
 </tr>
 <tr>
  <td>Benin</td>
  <td>Hybrid Regime</td>
  <td align="right">4.58</td>
  <td align="right">3</td>
  <td align="right">5.36</td>
  <td align="right">3</td>
  <td align="right">5</td>
  <td align="right">4.71</td>
 </tr>
 <tr>
  <td>Gambia</td>
  <td>Hybrid Regime</td>
  <td align="right">4.49</td>
  <td align="right">4</td>
  <td align="right">4.29</td>
  <td align="right">4</td>
  <td align="right">5</td>
  <td align="right">4.12</td>
 </tr>
 <tr class="green">
  <td>Turkey</td>
  <td>Hybrid Regime</td>
  <td align="right">4.48</td>
  <td align="right">3</td>
  <td align="right">5.36</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">2.35</td>
 </tr>
 <tr>
  <td>Pakistan</td>
  <td>Hybrid Regime</td>
  <td align="right">4.31</td>
  <td align="right">5</td>
  <td align="right">5.36</td>
  <td align="right">3</td>
  <td align="right">2</td>
  <td align="right">4.71</td>
 </tr>
 <tr>
  <td>Haiti</td>
  <td>Hybrid Regime</td>
  <td align="right">4.22</td>
  <td align="right">4</td>
  <td align="right">1.71</td>
  <td align="right">2</td>
  <td align="right">6</td>
  <td align="right">5.59</td>
 </tr>
 <tr>
  <td>Kyrgyzstan</td>
  <td>Hybrid Regime</td>
  <td align="right">4.21</td>
  <td align="right">4</td>
  <td align="right">2.93</td>
  <td align="right">5</td>
  <td align="right">3</td>
  <td align="right">4.71</td>
 </tr>
 <tr>
  <td>Lebanon</td>
  <td>Hybrid Regime</td>
  <td align="right">4.16</td>
  <td align="right">3</td>
  <td align="right">1.5</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">4.12</td>
 </tr>
 <tr>
  <td>Ivory Coast</td>
  <td>Hybrid Regime</td>
  <td align="right">4.11</td>
  <td align="right">4</td>
  <td align="right">2.86</td>
  <td align="right">3</td>
  <td align="right">5</td>
  <td align="right">3.82</td>
 </tr>
 <tr>
  <td>Nigeria</td>
  <td>Hybrid Regime</td>
  <td align="right">4.1</td>
  <td align="right">5</td>
  <td align="right">3.57</td>
  <td align="right">3</td>
  <td align="right">3</td>
  <td align="right">4.12</td>
 </tr>
 <tr>
  <td>Mali</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.93</td>
  <td align="right">5</td>
  <td align="right">0</td>
  <td align="right">4</td>
  <td align="right">5</td>
  <td align="right">4.41</td>
 </tr>
 <tr>
  <td>Mauritania</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.92</td>
  <td align="right">3</td>
  <td align="right">3.57</td>
  <td align="right">5</td>
  <td align="right">3</td>
  <td align="right">4.41</td>
 </tr>
 <tr>
  <td>Palestine</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.83</td>
  <td align="right">3</td>
  <td align="right">0.14</td>
  <td align="right">7</td>
  <td align="right">4</td>
  <td align="right">3.53</td>
 </tr>
 <tr>
  <td>Kuwait</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.8</td>
  <td align="right">3</td>
  <td align="right">3.93</td>
  <td align="right">3</td>
  <td align="right">4</td>
  <td align="right">3.24</td>
 </tr>
 <tr>
  <td>Algeria</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.77</td>
  <td align="right">3</td>
  <td align="right">2.5</td>
  <td align="right">4</td>
  <td align="right">5</td>
  <td align="right">3.82</td>
 </tr>
 <tr>
  <td>Burkina Faso</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.73</td>
  <td align="right">3</td>
  <td align="right">2.36</td>
  <td align="right">4</td>
  <td align="right">5</td>
  <td align="right">3.82</td>
 </tr>
 <tr>
  <td>Angola</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.66</td>
  <td align="right">2</td>
  <td align="right">2.86</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">2.65</td>
 </tr>
 <tr>
  <td>Jordan</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.62</td>
  <td align="right">2</td>
  <td align="right">3.93</td>
  <td align="right">3</td>
  <td align="right">4</td>
  <td align="right">3.24</td>
 </tr>
 <tr>
  <td>Iraq</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.62</td>
  <td align="right">5</td>
  <td align="right">0</td>
  <td align="right">6</td>
  <td align="right">5</td>
  <td align="right">1.18</td>
 </tr>
 <tr>
  <td>Nicaragua</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.6</td>
  <td align="right">0</td>
  <td align="right">2.86</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">4.12</td>
 </tr>
 <tr>
  <td>Gabon</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.54</td>
  <td align="right">2</td>
  <td align="right">1.86</td>
  <td align="right">4</td>
  <td align="right">5</td>
  <td align="right">3.82</td>
 </tr>
 <tr>
  <td>Mozambique</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.51</td>
  <td align="right">2</td>
  <td align="right">1.43</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">3.53</td>
 </tr>
 <tr>
  <td>Ethiopia</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.38</td>
  <td align="right">0</td>
  <td align="right">3.57</td>
  <td align="right">5</td>
  <td align="right">5</td>
  <td align="right">2.35</td>
 </tr>
 <tr>
  <td>Russia</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.31</td>
  <td align="right">2</td>
  <td align="right">2.14</td>
  <td align="right">5</td>
  <td align="right">3</td>
  <td align="right">4.12</td>
 </tr>
 <tr>
  <td>Niger</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.29</td>
  <td align="right">2</td>
  <td align="right">1.14</td>
  <td align="right">3</td>
  <td align="right">4</td>
  <td align="right">4.71</td>
 </tr>
 <tr>
  <td>Qatar</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.24</td>
  <td align="right">0</td>
  <td align="right">4.29</td>
  <td align="right">2</td>
  <td align="right">5</td>
  <td align="right">3.53</td>
 </tr>
 <tr>
  <td>Zimbabwe</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.16</td>
  <td align="right">0</td>
  <td align="right">2.5</td>
  <td align="right">4</td>
  <td align="right">5</td>
  <td align="right">3.24</td>
 </tr>
 <tr>
  <td>Kazakhstan</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.14</td>
  <td align="right">0</td>
  <td align="right">3.21</td>
  <td align="right">5</td>
  <td align="right">3</td>
  <td align="right">3.24</td>
 </tr>
 <tr>
  <td>Republic of the Congo</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.11</td>
  <td align="right">2</td>
  <td align="right">2.5</td>
  <td align="right">3</td>
  <td align="right">3</td>
  <td align="right">3.24</td>
 </tr>
 <tr>
  <td>Rwanda</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.1</td>
  <td align="right">1</td>
  <td align="right">4.29</td>
  <td align="right">2</td>
  <td align="right">4</td>
  <td align="right">2.65</td>
 </tr>
 <tr>
  <td>Cambodia</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.1</td>
  <td align="right">0</td>
  <td align="right">3.93</td>
  <td align="right">3</td>
  <td align="right">5</td>
  <td align="right">2.06</td>
 </tr>
 <tr>
  <td>Comoros</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.09</td>
  <td align="right">2</td>
  <td align="right">2.21</td>
  <td align="right">3</td>
  <td align="right">3</td>
  <td align="right">3.53</td>
 </tr>
 <tr>
  <td>eSwatini</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.08</td>
  <td align="right">0</td>
  <td align="right">2.86</td>
  <td align="right">2</td>
  <td align="right">5</td>
  <td align="right">3.24</td>
 </tr>
 <tr>
  <td>Guinea</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.08</td>
  <td align="right">3</td>
  <td align="right">0.43</td>
  <td align="right">4</td>
  <td align="right">4</td>
  <td align="right">2.65</td>
 </tr>
 <tr>
  <td>Myanmar</td>
  <td>Authoritarian Regime</td>
  <td align="right">3.04</td>
  <td align="right">1</td>
  <td align="right">3.93</td>
  <td align="right">2</td>
  <td align="right">4</td>
  <td align="right">2.35</td>
 </tr>
 <tr>
  <td>Oman</td>
  <td>Authoritarian Regime</td>
  <td align="right">3</td>
  <td align="right">0</td>
  <td align="right">3.93</td>
  <td align="right">2</td>
  <td align="right">4</td>
  <td align="right">3.82</td>
 </tr>
 <tr>
  <td>Vietnam</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.94</td>
  <td align="right">0</td>
  <td align="right">2.86</td>
  <td align="right">3</td>
  <td align="right">5</td>
  <td align="right">2.35</td>
 </tr>
 <tr>
  <td>Egypt</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.93</td>
  <td align="right">1</td>
  <td align="right">3.21</td>
  <td align="right">3</td>
  <td align="right">5</td>
  <td align="right">1.76</td>
 </tr>
 <tr>
  <td>Afghanistan</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.85</td>
  <td align="right">3</td>
  <td align="right">0.64</td>
  <td align="right">3</td>
  <td align="right">2</td>
  <td align="right">3.82</td>
 </tr>
 <tr>
  <td>Cuba</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.84</td>
  <td align="right">0</td>
  <td align="right">3.57</td>
  <td align="right">3</td>
  <td align="right">4</td>
  <td align="right">2.94</td>
 </tr>
 <tr>
  <td>Togo</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.8</td>
  <td align="right">0</td>
  <td align="right">1.79</td>
  <td align="right">3</td>
  <td align="right">5</td>
  <td align="right">2.94</td>
 </tr>
 <tr>
  <td>Cameroon</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.77</td>
  <td align="right">1</td>
  <td align="right">2.14</td>
  <td align="right">3</td>
  <td align="right">4</td>
  <td align="right">2.35</td>
 </tr>
 <tr>
  <td>Venezuela</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.76</td>
  <td align="right">0</td>
  <td align="right">1.79</td>
  <td align="right">5</td>
  <td align="right">4</td>
  <td align="right">2.65</td>
 </tr>
 <tr>
  <td>Djibouti</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.71</td>
  <td align="right">0</td>
  <td align="right">1.29</td>
  <td align="right">3</td>
  <td align="right">5</td>
  <td align="right">2.35</td>
 </tr>
 <tr>
  <td>United Arab Emirates</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.7</td>
  <td align="right">0</td>
  <td align="right">3.93</td>
  <td align="right">2</td>
  <td align="right">5</td>
  <td align="right">2.35</td>
 </tr>
 <tr>
  <td>Azerbaijan</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.68</td>
  <td align="right">0</td>
  <td align="right">2.86</td>
  <td align="right">3</td>
  <td align="right">3</td>
  <td align="right">2.94</td>
 </tr>
 <tr>
  <td>Guinea-Bissau</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.63</td>
  <td align="right">4</td>
  <td align="right">0</td>
  <td align="right">2</td>
  <td align="right">3</td>
  <td align="right">2.35</td>
 </tr>
 <tr>
  <td>Belarus</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.59</td>
  <td align="right">0</td>
  <td align="right">2</td>
  <td align="right">3</td>
  <td align="right">5</td>
  <td align="right">2.06</td>
 </tr>
 <tr>
  <td>Sudan</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.54</td>
  <td align="right">0</td>
  <td align="right">1.79</td>
  <td align="right">4</td>
  <td align="right">5</td>
  <td align="right">1.47</td>
 </tr>
 <tr>
  <td>Bahrain</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.49</td>
  <td align="right">0</td>
  <td align="right">2.71</td>
  <td align="right">2</td>
  <td align="right">4</td>
  <td align="right">1.76</td>
 </tr>
 <tr>
  <td>China</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.27</td>
  <td align="right">0</td>
  <td align="right">4.29</td>
  <td align="right">2</td>
  <td align="right">3</td>
  <td align="right">1.18</td>
 </tr>
 <tr>
  <td>Iran</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.2</td>
  <td align="right">0</td>
  <td align="right">2.5</td>
  <td align="right">3</td>
  <td align="right">3</td>
  <td align="right">1.47</td>
 </tr>
 <tr>
  <td>Eritrea</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.15</td>
  <td align="right">0</td>
  <td align="right">2.14</td>
  <td align="right">0</td>
  <td align="right">6</td>
  <td align="right">1.18</td>
 </tr>
 <tr>
  <td>Burundi</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.14</td>
  <td align="right">0</td>
  <td align="right">0</td>
  <td align="right">3</td>
  <td align="right">5</td>
  <td align="right">2.35</td>
 </tr>
 <tr>
  <td>Uzbekistan</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.12</td>
  <td align="right">0</td>
  <td align="right">1.86</td>
  <td align="right">2</td>
  <td align="right">5</td>
  <td align="right">0.88</td>
 </tr>
 <tr>
  <td>Saudi Arabia</td>
  <td>Authoritarian Regime</td>
  <td align="right">2.08</td>
  <td align="right">0</td>
  <td align="right">3.57</td>
  <td align="right">2</td>
  <td align="right">3</td>
  <td align="right">1.47</td>
 </tr>
 <tr>
  <td>Libya</td>
  <td>Authoritarian Regime</td>
  <td align="right">1.95</td>
  <td align="right">0</td>
  <td align="right">0</td>
  <td align="right">3</td>
  <td align="right">3</td>
  <td align="right">2.65</td>
 </tr>
 <tr>
  <td>Yemen</td>
  <td>Authoritarian Regime</td>
  <td align="right">1.95</td>
  <td align="right">0</td>
  <td align="right">0</td>
  <td align="right">3</td>
  <td align="right">5</td>
  <td align="right">0.88</td>
 </tr>
 <tr>
  <td>Tajikistan</td>
  <td>Authoritarian Regime</td>
  <td align="right">1.94</td>
  <td align="right">0</td>
  <td align="right">2.21</td>
  <td align="right">2</td>
  <td align="right">4</td>
  <td align="right">0.88</td>
 </tr>
 <tr>
  <td>Equatorial Guinea</td>
  <td>Authoritarian Regime</td>
  <td align="right">1.92</td>
  <td align="right">0</td>
  <td align="right">0.43</td>
  <td align="right">3</td>
  <td align="right">4</td>
  <td align="right">1.47</td>
 </tr>
 <tr>
  <td>Laos</td>
  <td>Authoritarian Regime</td>
  <td align="right">1.77</td>
  <td align="right">0</td>
  <td align="right">2.86</td>
  <td align="right">1</td>
  <td align="right">3</td>
  <td align="right">0.59</td>
 </tr>
 <tr>
  <td>Turkmenistan</td>
  <td>Authoritarian Regime</td>
  <td align="right">1.72</td>
  <td align="right">0</td>
  <td align="right">0.79</td>
  <td align="right">2</td>
  <td align="right">5</td>
  <td align="right">0.59</td>
 </tr>
 <tr>
  <td>Chad</td>
  <td>Authoritarian Regime</td>
  <td align="right">1.55</td>
  <td align="right">0</td>
  <td align="right">0</td>
  <td align="right">1</td>
  <td align="right">3</td>
  <td align="right">2.35</td>
 </tr>
 <tr>
  <td>Syria</td>
  <td>Authoritarian Regime</td>
  <td align="right">1.43</td>
  <td align="right">0</td>
  <td align="right">0</td>
  <td align="right">2</td>
  <td align="right">4</td>
  <td align="right">0</td>
 </tr>
 <tr>
  <td>Central African Republic</td>
  <td>Authoritarian Regime</td>
  <td align="right">1.32</td>
  <td align="right">1</td>
  <td align="right">0</td>
  <td align="right">1</td>
  <td align="right">1</td>
  <td align="right">2.35</td>
 </tr>
 <tr>
  <td>DR Congo</td>
  <td>Authoritarian Regime</td>
  <td align="right">1.13</td>
  <td align="right">0</td>
  <td align="right">0</td>
  <td align="right">1</td>
  <td align="right">3</td>
  <td align="right">0.88</td>
 </tr>
 <tr>
  <td>North Korea</td>
  <td>Authoritarian Regime</td>
  <td align="right">1.08</td>
  <td align="right">0</td>
  <td align="right">2.5</td>
  <td align="right">1</td>
  <td align="right">1</td>
  <td align="right">0</td>
 </tr>
</table><!--kg-card-end: html--><p>Of those 28 govs, all are classified as &quot;Full Democracy&quot; (Norway and Australia), &quot;Flawed Democracy&quot; (the US and Belgium) or &quot;Hybrid Regime&quot; (Ukraine and Turkey). The govs I mentioned as not feeling right are all <em>well</em> below the highlighted ones, with each classified as an &quot;Authoritarian Regime&quot; and as such, I&apos;ve decided to reject those governments. I won&apos;t say where the cut-off is nor will I commit to a single, easily definable threshold, but I will say that they each rated well below every highlighted gov on every measurable metric. My &quot;feel&quot; is amply reflected by the data.</p><p>I&apos;m sure there will be those who feel this approach is insufficient, too much, missing appropriate data, using the wrong metrics and all sorts of other reasons. I don&apos;t expect it to be perfect nor does it need to be, what&apos;s important to me here is to describe the problem, explain my logic and have a resource I can direct both current and future requests to when I feel the gov is not a suitable fit for the offering I&apos;ve made available.</p><p>Time and time again over the last 8 years, I&apos;ve needed to make ethical decisions on how I alone run this service. This is just one more of those decisions and I hope I&apos;ve done a good job of explaining my logic here.</p>]]></content:encoded></item><item><title><![CDATA[Weekly Update 286]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>Somehow this week ended up being all about Russia and Cloudflare. Mostly as 2 completely separate topics, but also a little bit around Cloudflare&apos;s ongoing presence in Russia (with a very neutral view on that, TBH). Looking back on this video a few hours later, the thing that</p>]]></description><link>https://www.troyhunt.com/weekly-update-286/</link><guid isPermaLink="false">622acd23cce716004d216beb</guid><category><![CDATA[Weekly update]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Fri, 11 Mar 2022 06:46:07 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/03/Splash-Template-1.jpg" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/03/Splash-Template-1.jpg" alt="Weekly Update 286"><p>Somehow this week ended up being all about Russia and Cloudflare. Mostly as 2 completely separate topics, but also a little bit around Cloudflare&apos;s ongoing presence in Russia (with a very neutral view on that, TBH). Looking back on this video a few hours later, the thing that strikes me is the discussion around what appears to be a phishing page seeking donations for Ukraine. Just listen to me try to figure this out and as I say in the vid, if I have trouble discerning phish from legit resource, how do people who don&apos;t live in this world work it out?! Easy answer - they don&apos;t, that&apos;s why phishing remains so lucrative.</p><!--kg-card-begin: html--><div><div style="width: 170px; display: inline-block; margin-right: 3px;"><a href="https://itunes.apple.com/au/podcast/troy-hunts-weekly-update-podcast/id1176454699"><img src="https://www.troyhunt.com/content/images/2018/05/Listen-on-Apple-Podcasts.svg" alt="Weekly Update 286"></a></div><div style="width: 146px; display: inline-block; margin-right: 3px;"><a href="https://playmusic.app.goo.gl/?ibi=com.google.PlayMusic&amp;isi=691797987&amp;ius=googleplaymusic&amp;apn=com.google.android.music&amp;link=https://play.google.com/music/m/If3tw7npymckucxq4q76762ncny?t%3DTroy_Hunt&apos;s_Weekly_Update_Podcast%26pcampaignid%3DMKT-na-all-co-pr-mu-pod-16"><img src="https://www.troyhunt.com/content/images/2018/05/Get-it-on-Google-Play.svg" alt="Weekly Update 286"></a></div><div style="width: 118px; display: inline-block; margin-right: 3px;"><a href="https://open.spotify.com/show/7jMtKFohdrw6qmz8AkLqit"><img src="https://www.troyhunt.com/content/images/2019/10/spotify.svg" class="kg-image" alt="Weekly Update 286"></a></div><div style="width: 120px; display: inline-block;"><a href="https://omny.fm/shows/troy-hunt-weekly-update/playlists/podcast.rss"><img src="https://www.troyhunt.com/content/images/2018/07/Download-via-RSS.svg" alt="Weekly Update 286"></a></div><iframe width="100%" height="480" src="https://www.youtube.com/embed/ZglFv1QQ7EE" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div><!--kg-card-end: html--><h3 id="reference">Reference</h3><ol><li><a href="https://www.businessinsider.com.au/elon-musk-twitter-users-request-deactivate-tesla-russia-2022-3?utm_campaign=sf-bi-ti&amp;utm_source=facebook.com&amp;utm_medium=social&amp;fbclid=IwAR1p9SpdQUxuSZSClUJYSCGtHdYV9UnR-QcmFWtMgx0d5oTJIM94zNSp11M&amp;r=US&amp;IR=T">The idea of Tesla remotely killing cars in Russia feels like a very bad one</a> (invert that logic - what if you owned a Chinese car that could be remotely killed due to geopolitical dispute?)</li><li><a href="https://twitter.com/troyhunt/status/1502027279882665984">As sure as night follows day, scam follows disaster</a> (it&apos;s a particularly low act when it prey on good citizens appalled by the bombing of a hospital)</li><li><a href="https://twitter.com/troyhunt/status/1502029536493711361">When should you deny digital services to Russian citizens?</a> (I&apos;m just not sure Universal Audio&apos;s decision here is anything beyond symbolic, but maybe that&apos;s enough?)</li><li><a href="https://www.troyhunt.com/building-password-purgatory-with-cloudflare-pages-and-workers/">Password Purgatory is gonna be a whole bunch of laughs &#x1F923;</a> (also, Cloudflare Pages and Workers are amazing!)</li><li><a href="https://www.varonis.com/use-case/ransomware-prevention/?utm_medium=display&amp;utm_source=troyhunt.com&amp;utm_campaign=zero-trust-zero-damage" rel="noopener">Sponsored by: Varonis. Reduce your ransomware blast radius with the leader in data-first security. Try it free!</a></li></ol>]]></content:encoded></item><item><title><![CDATA[Building Password Purgatory with Cloudflare Pages and Workers]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>I have lots of little ideas for various pet projects, most of which go nowhere (<a href="https://haveibeenpwned.com/">Have I Been Pwned</a> being the exception), so I&apos;m always looking for the fastest, cheapest way to get up and running. Last month as part of my blog post on <a href="https://www.troyhunt.com/how-everything-were-told-about-website-identity-assurance-is-wrong/">How Everything We&</a></p>]]></description><link>https://www.troyhunt.com/building-password-purgatory-with-cloudflare-pages-and-workers/</link><guid isPermaLink="false">6229320fcce716004d2167ce</guid><category><![CDATA[Cloudflare]]></category><category><![CDATA[Passwords]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Thu, 10 Mar 2022 06:53:28 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/03/logo.jpg" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/03/logo.jpg" alt="Building Password Purgatory with Cloudflare Pages and Workers"><p>I have lots of little ideas for various pet projects, most of which go nowhere (<a href="https://haveibeenpwned.com/">Have I Been Pwned</a> being the exception), so I&apos;m always looking for the fastest, cheapest way to get up and running. Last month as part of my blog post on <a href="https://www.troyhunt.com/how-everything-were-told-about-website-identity-assurance-is-wrong/">How Everything We&apos;re Told About Website Identity Assurance is Wrong</a>, I spun up a <a href="https://developers.cloudflare.com/pages/">Cloudflare Pages</a> website for the first time and hosted <a href="https://digicert-secured.com/">digicert-secured.com</a> there (the page has a seal on it so you know you can trust it). Instantly, I fell in love with this method of building websites so when I came up with an idea just yesterday, I knew exactly how I wanted to build it.</p><p>Here&apos;s the idea: I&apos;ve been pondering for some time how to deal with spam like this:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-39.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="532" height="367"></figure><p>Somehow, this made it all the way through the Microsoft 365 spam filters, landed in my inbox and consumed some of my precious, limited, highly-valued time. I, in turn, have been considering how to not only consume the time of these spammers, but make it entertaining for all. Which led me to a moment of clarity just yesterday as I was pondering revenge tactics and, in a flash of inspiration, came up with the idea of Password Purgatory:</p><blockquote>purgatory: a place or state of temporary suffering or misery</blockquote><p>You know how we all <em>hate </em>password complexity criteria? The kind that asks for uppercase characters, numbers, but only limited special characters and so on and so forth? That&apos;s what I&apos;m now referring to as Password Purgatory - that temporary state of misery - and that&apos;s what we&apos;re going to do to the spammers &#x1F642;</p><p>The end product will be a page on troyhunt.com where the Michelles of the world will be directed to pitch their content. All they have to do first is create a password... The idea of the Password Purgatory service is that it&apos;s an API designed to take a password, find something wrong with it and send that back in the response. It&apos;ll start out gentle (for example, minimum length) and get increasingly bizarre. A separate service will log each attempt the spammer makes to satisfy the inane criteria and once they&apos;ve finally given up in agony (fingers crossed), I&apos;ll share the results publicly. Naturally I&apos;ll ensure there&apos;s no PII involved and given folks like Michelle write about cybersecurity, it won&apos;t be a password they&apos;ve reused anywhere else, so no problems there (&#x1F644;). </p><p>To really get into the community spirit (let&apos;s face it, we all bond together when screwing with spammers), I wanted to make it all open source, take PRs and make the API accessible to anyone from anywhere. My hope is that we build something awesome together and collectively make the lives of spammers just that little bit more miserable.</p><p>So, here&apos;s the whole thing, end to end and step by step.</p><h3 id="creating-a-github-repo-for-pages">Creating a GitHub Repo for Pages</h3><p>Everything is going to deploy out of GitHub so I&apos;ve spun up <a href="https://github.com/troyhunt/password-purgatory">a public repo called &quot;password-purgatory&quot; under my personal account</a>:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-1.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="915" height="506" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-1.png 600w, https://www.troyhunt.com/content/images/2022/03/image-1.png 915w" sizes="(min-width: 720px) 720px"></figure><p>Clone it locally, drop in an index.html file with a logo and push it back up. This is now effectively a working website (ok, a <em>really </em>basic one) sitting in source control. This will be a standalone website for people that just want to play with the API I build later on (this isn&apos;t where I&apos;ll be sending Michelle). I&apos;ll also add API documentation there in due course.</p><p>Let&apos;s get it deployed!</p><h3 id="setting-up-cloudflare-pages">Setting up Cloudflare Pages</h3><p>Super easy stuff here, just hit the &quot;Pages&quot; link then &quot;Create a project&quot;:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-5.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="1184" height="540" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-5.png 600w, https://www.troyhunt.com/content/images/size/w1000/2022/03/image-5.png 1000w, https://www.troyhunt.com/content/images/2022/03/image-5.png 1184w" sizes="(min-width: 720px) 720px"></figure><p>The first time I used Cloudflare Pages, I had to authorise it to access the GitHub repository by virtue of the Cloudflare App. Jumping back in there now, that authorisation is still in place but it&apos;s the only repo I can see:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-6.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="744" height="709" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-6.png 600w, https://www.troyhunt.com/content/images/2022/03/image-6.png 744w" sizes="(min-width: 720px) 720px"></figure><p>No problem, back over to the Cloudflare Pages app on GitHub and add access to the new repo:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-3.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="797" height="805" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-3.png 600w, https://www.troyhunt.com/content/images/2022/03/image-3.png 797w" sizes="(min-width: 720px) 720px"></figure><p>I <em>could</em> just give it access to &quot;All repositories&quot;, but I like the idea of <a href="https://en.wikipedia.org/wiki/Principle_of_least_privilege">the principle of least privilege</a> in terms of reducing risk so I&apos;m sticking with &quot;Only select repositories&quot;. Back to creating the new Cloudflare Pages site and the repo is now visible:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-7.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="721" height="413" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-7.png 600w, https://www.troyhunt.com/content/images/2022/03/image-7.png 721w" sizes="(min-width: 720px) 720px"></figure><p>Time to set up builds and deployments and I&apos;m just going to stick with all the defaults:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-9.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="726" height="1138" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-9.png 600w, https://www.troyhunt.com/content/images/2022/03/image-9.png 726w" sizes="(min-width: 720px) 720px"></figure><p>Maybe you don&apos;t want to deploy from main, maybe you want to choose a framework and customise the build command, whatever. For now, I just want to push a single page website so it&apos;s straight to &quot;Save and Deploy&quot;. Thinking, thinking, 4 seconds later... done!</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-10.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="734" height="730" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-10.png 600w, https://www.troyhunt.com/content/images/2022/03/image-10.png 734w" sizes="(min-width: 720px) 720px"></figure><p>The live site is now addressable at <a href="https://password-purgatory.pages.dev/">password-purgatory.pages.dev</a>:</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://www.troyhunt.com/content/images/2022/03/image-19.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="1393" height="715" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-19.png 600w, https://www.troyhunt.com/content/images/size/w1000/2022/03/image-19.png 1000w, https://www.troyhunt.com/content/images/2022/03/image-19.png 1393w"></figure><h3 id="binding-the-domain">Binding the Domain</h3><p>The dev URL would normally be fine for dev purposes, but <a href="https://twitter.com/troyhunt/status/1501699537580163075">I&apos;m live-tweeting this as I go</a> and I want the whole thing up and working on the official domain. After the initial build above, I&apos;m over on the project page and now into &quot;Custom domains&quot;:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-11.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="1053" height="513" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-11.png 600w, https://www.troyhunt.com/content/images/size/w1000/2022/03/image-11.png 1000w, https://www.troyhunt.com/content/images/2022/03/image-11.png 1053w" sizes="(min-width: 720px) 720px"></figure><p>I&apos;d already registered <a href="https://passwordpurgatory.com/">passwordpurgatory.com</a> with DNSimple so the domain exists already, let&apos;s drop it in:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-12.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="915" height="361" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-12.png 600w, https://www.troyhunt.com/content/images/2022/03/image-12.png 915w" sizes="(min-width: 720px) 720px"></figure><p>Finding the domain already registered, Cloudflare now needs me to update DNS to point over to their nameservers:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-15.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="917" height="460" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-15.png 600w, https://www.troyhunt.com/content/images/2022/03/image-15.png 917w" sizes="(min-width: 720px) 720px"></figure><p>This is the one part of the process that feels a bit rough TBH; the &quot;Add Site&quot; page pops in a new tab and we&apos;re now embarking on the &quot;classic&quot; path to add a site to Cloudflare:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-14.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="718" height="205" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-14.png 600w, https://www.troyhunt.com/content/images/2022/03/image-14.png 718w"></figure><p>Free is good &#x1F60E;</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-16.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="890" height="896" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-16.png 600w, https://www.troyhunt.com/content/images/2022/03/image-16.png 890w" sizes="(min-width: 720px) 720px"></figure><p>Often when you&apos;re moving a domain over to Cloudflare there&apos;ll be existing DNS records. When that&apos;s the case, they&apos;re listed in the screen below but as this is a brand new domain that&apos;s presently doing absolutely nothing, we&apos;ll ignore that and just continue (we&apos;ll add DNS records later when the domain is bound to the Cloudflare Pages resource):</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-17.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="878" height="537" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-17.png 600w, https://www.troyhunt.com/content/images/2022/03/image-17.png 878w" sizes="(min-width: 720px) 720px"></figure><p>Nameserver time! Cloudflare has identified the existing 4 nameservers at DNSimple and given me 2 of their own to replace these with:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-18.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="897" height="1044" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-18.png 600w, https://www.troyhunt.com/content/images/2022/03/image-18.png 897w" sizes="(min-width: 720px) 720px"></figure><p>How you update nameservers will depend on who your domain registrar is, but it&apos;s all pretty much the same process and it looks like this on DNSimple:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-40.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="705" height="991" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-40.png 600w, https://www.troyhunt.com/content/images/2022/03/image-40.png 705w"></figure><p>And that&apos;s it. Well, other than waiting for DNS magic to do its thing and propagate, let&apos;s head back to Cloudflare and hit that &quot;Done, check nameservers&quot; button. (Whilst writing that sentence, email confirmation comes through that the domain is now active.) I won&apos;t screen cap everything here, the tl;dr is that I turned on all the security things, all the auto minification things, completed the wizard then repeated the &quot;Add a custom domain&quot; process from earlier on. With the domain now added to Cloudflare, they&apos;re able to add the appropriate CNAME and activate it against the Pages resource:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-21.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="867" height="327" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-21.png 600w, https://www.troyhunt.com/content/images/2022/03/image-21.png 867w" sizes="(min-width: 720px) 720px"></figure><p>Just pausing here for a moment, one of the really cool things about Cloudflare pages compared to more traditional hosting models is that <em>I have no idea where it&apos;s hosted!</em> Well, kinda - it&apos;s hosted on the hundreds of Cloudflare&apos;s edge nodes spread around the world, the point is it&apos;s not deployed to, say, the West US data centre like HIBP is. You can see this illustrated via the cf-ray response header which indicates the edge node the request was served from:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-22.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="546" height="379"></figure><p>Brisbane is just up the road from me so my connection has gone a <em>very </em>short distance to a local instance of the site. Fire up NordVPN, connect to a Norway exit node and suddenly we&apos;re getting content from Copenhagen:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-23.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="551" height="382"></figure><p>What did I have to do to get a massively geographically distributed website up and running? Nothing more than spend about 15 mins and $0 &#x1F60E;</p><h3 id="creating-a-cloudflare-worker-with-wrangler">Creating a Cloudflare Worker with Wrangler</h3><p>Just before we jump into this, a quick note: As I completed the entire code, deployment and blog post and prepared for a celebratory beer, I learned that <a href="https://developers.cloudflare.com/pages/platform/functions/">there&apos;s a beta of Functions within Cloudflare Pages</a> that would simplify my implementation. Do check that out if you&apos;re going to follow in my footsteps.</p><p>This is going to be the heart of Password Purgatory, the API that receives a password and puts people through hell by demanding increasingly bizarre and infeasible criteria in order for it to be accepted. It never will be accepted - there has to be <em>no </em>acceptable password - hence being in purgatory &#x1F642;</p><p>Before we go further, the pre-req is Cloudflare&apos;s Workers CLI known as &quot;Wrangler&quot;. Installation with Node is easy and is documented on <a href="https://developers.cloudflare.com/workers/get-started/guide/">the getting started guide for workers</a>. Get it, install it then continue. Make sure you allow Wrangler to manage the Workers in your Cloudflare account:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-24.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="600" height="366" srcset="https://www.troyhunt.com/content/images/2022/03/image-24.png 600w"></figure><p>From the CLI on my local machine, I can now create a brand new project:</p><!--kg-card-begin: html--><style>
.post-header
{
  background-position: 50% 40%;
}
</style>
<pre><code>wrangler generate password-purgatory-api</code></pre><!--kg-card-end: html--><p>This generates all the content required not just to build your own local worker, but inits a new Git repository as well:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-25.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="628" height="395" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-25.png 600w, https://www.troyhunt.com/content/images/2022/03/image-25.png 628w"></figure><p>The index.js file contains the Worker code and will look familiar if you&apos;ve previously just created Workers in the browser (check out <a href="https://www.troyhunt.com/serverless-to-the-max-doing-big-things-for-small-dollars-with-cloudflare-workers-and-azure-functions/">Serverless to the Max: Doing Big Things for Small Dollars with Cloudflare Workers and Azure Functions</a> and <a href="https://www.troyhunt.com/creating-a-lametric-app-with-cloudflare-workers-and-kv/">Creating a LaMetric App with Cloudflare Workers and KV</a> for previous examples of Workers).</p><p>Let&apos;s get to the really cool bit:</p><!--kg-card-begin: html--><pre><code>wrangler dev</code></pre><!--kg-card-end: html--><p>This command fires up the local dev environment which by default, listens on port 8787:</p><!--kg-card-begin: html--><pre><code>Listening on http://127.0.0.1:8787</code></pre><!--kg-card-end: html--><p>Which now means we can do this:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-26.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="303" height="152"></figure><p>And there we have it - a working worker! That request is then tracked in the CLI:</p><!--kg-card-begin: html--><pre><code>[2022-03-10 11:38:24] GET password-purgatory-api.troyhunt.workers.dev/ HTTP/1.1 200 OK</code></pre><!--kg-card-end: html--><p>Once up and running, you can jump into the Worker code and make edits:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-27.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="502" height="268"></figure><p>Which the running dev environment immediately picks up on:</p><!--kg-card-begin: html--><pre><code> Detected changes...
Script modified; context reset.</code></pre><!--kg-card-end: html--><p>And then reflects upon next request:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-28.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="292" height="132"></figure><p>As this is going to be an API returning JSON, let&apos;s tweak it a little to return the right content type in the right format:</p><!--kg-card-begin: html--><pre><code>addEventListener(&apos;fetch&apos;, event =&gt; {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const data = {
    message: &apos;Hello worker!&apos;,
  };

  const json = JSON.stringify(data, null, 2);

  return new Response(json, {
    headers: { &apos;content-type&apos;: &apos;application/json;charset=UTF-8&apos; },
  })
}</code></pre><!--kg-card-end: html--><p>Lastly, I&apos;m going to push this up to GitHub into a brand new repo located at <a href="https://github.com/troyhunt/password-purgatory-api">https://github.com/troyhunt/password-purgatory-api</a></p><p>Which now means we can do the next really cool bit:</p><h3 id="deploying-the-cloudflare-worker-from-github">Deploying the Cloudflare Worker from GitHub</h3><p>Over in the GitHub marketplace, there&apos;s an action called <a href="https://github.com/marketplace/actions/deploy-to-cloudflare-workers-with-wrangler">Deploy to Cloudflare Workers with Wrangler</a> which does, well, it&apos;s kinda self-explanatory. What we&apos;re going to do now is configure GitHub to watch for changes and then publish those over to the live running Worker on Cloudflare. As with the Cloudflare Pages example before, I&apos;m going to configure the simplest possible implementation which will mean deploying from &quot;master&quot; (Wrangler&apos;s default branch name as opposed to &quot;main&quot; seen earlier when creating the repository directly in GitHub).</p><p>Before doing that, we need to give GitHub the secret Cloudflare uses to orchestrate deployments. <a href="https://dash.cloudflare.com/profile/api-tokens">Cloudflare&apos;s API tokens page</a> allows you to create secrets based on templates and there&apos;s a handy one ready to go for Workers:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-29.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="693" height="579" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-29.png 600w, https://www.troyhunt.com/content/images/2022/03/image-29.png 693w"></figure><p>In configuring this, I&apos;ve named the token &quot;GitHub deployment of Password Purgatory API&quot;, selected my Cloudflare account and for the zone, the passwordpurgatory.com account I created earlier on. Once the token is created it&apos;s back to GitHub and I&apos;ve created a secret called &quot;CF_API_TOKEN&quot; with the appropriate value:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-30.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="541" height="266"></figure><p>That now sits in the public repository out of sight from anyone else, but accessible via the deployment script we&apos;re about to create:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-31.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="780" height="129" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-31.png 600w, https://www.troyhunt.com/content/images/2022/03/image-31.png 780w" sizes="(min-width: 720px) 720px"></figure><p>Now for the GitHub action itself and again, all this is going to be the bare basics, simple easy go-fast version:</p><!--kg-card-begin: html--><pre><code>name: Deploy

on:
  push:
    branches:
      - master

jobs:
  deploy:
    runs-on: ubuntu-latest
    name: Deploy
    steps:
      - uses: actions/checkout@v2
      - name: Publish
        uses: cloudflare/wrangler-action@1.3.0
        with:
          apiToken: ${{ secrets.CF_API_TOKEN }}</code></pre><!--kg-card-end: html--><p>Note the reference on the last line to the secret I created in the previous step. Save this into the &quot;.github\workflows\main.yml&quot;, commit, push and then over in the &quot;Actions&quot; section of the GitHub repo where the magic has already happened:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-32.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="956" height="257" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-32.png 600w, https://www.troyhunt.com/content/images/2022/03/image-32.png 956w" sizes="(min-width: 720px) 720px"></figure><p>Let&apos;s check it actually exists in Cloudflare by jumping over to the dashboard and drilling down into workers:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-33.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="825" height="443" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-33.png 600w, https://www.troyhunt.com/content/images/2022/03/image-33.png 825w" sizes="(min-width: 720px) 720px"></figure><p>Success! But does it actually work? Let&apos;s drill down into it further:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-34.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="657" height="191" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-34.png 600w, https://www.troyhunt.com/content/images/2022/03/image-34.png 657w"></figure><p>The route of <a href="https://password-purgatory-api.troyhunt.workers.dev/">password-purgatory-api.troyhunt.workers.dev</a> is generated by Cloudflare and a quick check shows exactly what we&apos;d expect to see:</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://www.troyhunt.com/content/images/2022/03/image-35.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="440" height="153"></figure><p>There&apos;s just one more step - defining a custom route. What I really want to do is access this API via api.passwordpurgatory.com and the first thing I&apos;m going to need to do that is a CNAME DNS entry to create the subdomain. Over to Cloudflare&apos;s DNS settings and add a new record:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-36.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="1007" height="193" srcset="https://www.troyhunt.com/content/images/size/w600/2022/03/image-36.png 600w, https://www.troyhunt.com/content/images/size/w1000/2022/03/image-36.png 1000w, https://www.troyhunt.com/content/images/2022/03/image-36.png 1007w" sizes="(min-width: 720px) 720px"></figure><p>It doesn&apos;t matter that the CNAME target is the Cloudflare Pages resource, so long as it&apos;s routed to Cloudflare we&apos;re going to catch requests to the API in the next step. What we need is a route for the Worker so let&apos;s jump down to the &quot;Workers&quot; section of the site we&apos;re now on and create the following:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-37.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="443" height="309"></figure><p>Why that route? Because I want to hit the API <a href="https://api.passwordpurgatory.com/make-hell?password=hunter2">like this</a>:</p><!--kg-card-begin: html--><pre><code>https://api.passwordpurgatory.com/make-hell?password=hunter2</code></pre><!--kg-card-end: html--><p>Which works just beautifully:</p><figure class="kg-card kg-image-card"><img src="https://www.troyhunt.com/content/images/2022/03/image-38.png" class="kg-image" alt="Building Password Purgatory with Cloudflare Pages and Workers" loading="lazy" width="523" height="154"></figure><p>Finally, just to test this end to end:</p><ol><li>Added a bunch of code locally to the worker</li><li>Tested via the Wrangler CLI</li><li>Pushed to GitHub</li><li>Watched action run and successfully deploy</li><li>Checked production Worker in the Cloudflare dashboard by going to &quot;Quick edit&quot; and saw the changes in place</li><li>Tested the API in the browser</li></ol><p>As with Pages, the Worker is also running &quot;on the edge&quot; and for just the same reason as with pages, that&apos;s super cool &#x1F60E;</p><h3 id="summary">Summary</h3><p>I&apos;ve had a bunch of PRs between live-tweeting earlier today and pushing this blog post just now. Thank you! I&apos;d really like to get this more intelligent; maybe there should be different &quot;paths&quot; for password criteria to mix it up a bit? Maybe it should differ based on the day or time? Maybe based on the requestor&apos;s country (<a href="https://developers.cloudflare.com/workers/examples/country-code-redirect/">which you can easily access via the inbound request</a>)? The optimal approach should be one that keeps the victim trying to get the password right for as long as possible whilst simultaneously infuriating them and burning their time. Either submit your own PRs or leave comments below, I&apos;d love to hear your ideas.</p><p>As for Michelle, let&apos;s get this code finished up over the coming days and hopefully next week, I&apos;ll start sharing spammers&apos; painful attempts to create an acceptable password &#x1F37F;</p>]]></content:encoded></item><item><title><![CDATA[Weekly Update 285]]></title><description><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><p>With travel now behind me, I&apos;m back to a stable schedule and doing these on time again. Mind you, I came home to some of the wildest weather I&apos;ve ever seen here, but it was kinda cool to watch and the kids didn&apos;t complain</p>]]></description><link>https://www.troyhunt.com/weekly-update-285/</link><guid isPermaLink="false">6221f3708962a2003d9144b7</guid><category><![CDATA[Weekly update]]></category><dc:creator><![CDATA[Troy Hunt]]></dc:creator><pubDate>Fri, 04 Mar 2022 11:21:36 GMT</pubDate><media:content url="https://www.troyhunt.com/content/images/2022/03/Splash-Template.jpg" medium="image" /><content:encoded><![CDATA[<p><a href="https://l.kolide.co/3Lng4XK"><strong>Presently sponsored by:</strong> Got Slack? Got Macs? Get Kolide: Device security that fixes challenging problems by messaging users on Slack. Try Kolide for 14 days free.</a></p><img src="https://www.troyhunt.com/content/images/2022/03/Splash-Template.jpg" alt="Weekly Update 285"><p>With travel now behind me, I&apos;m back to a stable schedule and doing these on time again. Mind you, I came home to some of the wildest weather I&apos;ve ever seen here, but it was kinda cool to watch and the kids didn&apos;t complain getting days off school. Oh - and I also loaded a bunch of new data breaches this week, the Robinhood one from earlier today being particularly noteworthy with more than 5M unique email addresses. At that and more in this week&apos;s update.</p><!--kg-card-begin: html--><div><div style="width: 170px; display: inline-block; margin-right: 3px;"><a href="https://itunes.apple.com/au/podcast/troy-hunts-weekly-update-podcast/id1176454699"><img src="https://www.troyhunt.com/content/images/2018/05/Listen-on-Apple-Podcasts.svg" alt="Weekly Update 285"></a></div><div style="width: 146px; display: inline-block; margin-right: 3px;"><a href="https://playmusic.app.goo.gl/?ibi=com.google.PlayMusic&amp;isi=691797987&amp;ius=googleplaymusic&amp;apn=com.google.android.music&amp;link=https://play.google.com/music/m/If3tw7npymckucxq4q76762ncny?t%3DTroy_Hunt&apos;s_Weekly_Update_Podcast%26pcampaignid%3DMKT-na-all-co-pr-mu-pod-16"><img src="https://www.troyhunt.com/content/images/2018/05/Get-it-on-Google-Play.svg" alt="Weekly Update 285"></a></div><div style="width: 118px; display: inline-block; margin-right: 3px;"><a href="https://open.spotify.com/show/7jMtKFohdrw6qmz8AkLqit"><img src="https://www.troyhunt.com/content/images/2019/10/spotify.svg" class="kg-image" alt="Weekly Update 285"></a></div><div style="width: 120px; display: inline-block;"><a href="https://omny.fm/shows/troy-hunt-weekly-update/playlists/podcast.rss"><img src="https://www.troyhunt.com/content/images/2018/07/Download-via-RSS.svg" alt="Weekly Update 285"></a></div><iframe width="100%" height="480" src="https://www.youtube.com/embed/QkqFwYRJT2w" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div><!--kg-card-end: html--><h3 id="references">References</h3><ol><li><a href="https://twitter.com/troyhunt/status/1498240635392131072">The weather here got a bit crazy, check out how much dirt got dumped into the waterways</a> (drone footage courtesy of Heather Downing)</li><li><a href="https://twitter.com/troyhunt/status/1498050283263332352">So much water the kids were literally kayaking out of our boat shed</a> (that&apos;ll happen on a king tide anyway, but the official tide height was 30cm below that so... if it ever rained like this on a king tide...)</li><li><a href="https://twitter.com/troyhunt/status/1497452913873985541">I&apos;m going with &quot;dead as a doornail&quot; as far as this screen is concerned</a> (weird when &quot;only&quot; a 27&quot; wide + an ultrawide is barely sufficient...)</li><li><a href="https://app.crowdsec.net/?mtm_campaign=Troy-Hunt-January22" rel="noopener">Sponsored by: CrowdSec - Check out our CTI Console, monitor attacks on your network, mitigate them and get intelligence on attackers. Sign up for free.</a></li></ol>]]></content:encoded></item></channel></rss>
