<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Patrick Walsh</title>
    <description>The latest articles on DEV Community by Patrick Walsh (@zmre).</description>
    <link>https://dev.to/zmre</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F150090%2F63e533a0-ced3-496d-b7b9-3f6e98458774.jpeg</url>
      <title>DEV Community: Patrick Walsh</title>
      <link>https://dev.to/zmre</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zmre"/>
    <language>en</language>
    <item>
      <title>A Checklist to Quickly Evaluate SaaS Security</title>
      <dc:creator>Patrick Walsh</dc:creator>
      <pubDate>Mon, 27 Sep 2021 17:31:08 +0000</pubDate>
      <link>https://dev.to/zmre/a-checklist-to-quickly-evaluate-saas-security-3hj3</link>
      <guid>https://dev.to/zmre/a-checklist-to-quickly-evaluate-saas-security-3hj3</guid>
      <description>&lt;p&gt;Large companies have security teams that scrutinize every partner and vendor they use. They put the vendor through the wringer with security reviews that usually involve long and tedious spreadsheets. &lt;/p&gt;

&lt;p&gt;The result of those painful security reviews is generally an analysis on the relative level of risk that comes with the solution. Then the business stakeholder can choose to take the advice of security or overrule it (spending political capital in the process) to say that the benefits outweigh the risks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The review process is painful for everyone and, frankly, despite the intentions of various startups and others, it seems to be getting worse, not better.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And we have another problem: &lt;strong&gt;only the biggest companies even get to evaluate the security of their vendors.&lt;/strong&gt; The rest of us aren't privvy to the information needed to do a full risk analysis and we may not be sophisticated enough to do it even if the vendor is willing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Evaluation for the Rest of Us
&lt;/h2&gt;

&lt;p&gt;It's ludicrous to think that security only matters to large enterprises. Yet that's how the industry operates. So the rest of us are left to scrape together the breadcrumbs of publicly available information as part of our purchasing process.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Credentials
&lt;/h3&gt;

&lt;p&gt;I've been on both ends of security evaluations, I've run engineering teams building large, complex enterprise cloud software, and I'm the CEO of a company that helps SaaS providers harden their apps. I've seen a lot of the skeletons hiding in the closets of software vendors and I've developed a nose for approximating a risk analysis based on publicly available information.&lt;/p&gt;

&lt;p&gt;These are the things I look for and the steps I take when evaluating cloud software if the vendor might hold any data that I feel is private.&lt;/p&gt;

&lt;h3&gt;
  
  
  Seeing Through the B.S.
&lt;/h3&gt;

&lt;p&gt;The hardest part of evaluating software and services for security maturity is the sheer amount of bullshit that gets spewed. Companies frequently have polished web pages that say things like, &lt;em&gt;"we take your security seriously."&lt;/em&gt;  They then go on to talk up minor things as if they're extremely important. For example, if someone tells you they're using &lt;a href="https://blog.ironcorelabs.com/military-grade-encryption-69aae0145588"&gt;"military grade encryption"&lt;/a&gt;, run away. Seriously. It's a big "B.S." signal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Find the security page
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;em&gt;for now, we're only evaluating their basic security posture and how well they're able to keep confidential data safe. We are not looking at integrity or availability.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most companies have a page (or sometimes a downloadable PDF) that gives a high-level marketing-oriented view of their security. We're going to use that page to evaluate them, but the first trick is to find it. And that's not always as easy as you might hope. Here's what I do, in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the website and look for a "Security" or "Trust Center" link in the footer. If you don't find it there, it's already a bit of a bad sign, but don't give up yet.&lt;/li&gt;
&lt;li&gt;I do a Duckduckgo (or Google or whatever) search that looks something like &lt;code&gt;site:company-x.com security&lt;/code&gt; to see what comes up. I'm just looking at page titles here.&lt;/li&gt;
&lt;li&gt;If that fails, it's sometimes because this sort of information gets pushed into "resources" sections of a website as a download. That's the third place I check.&lt;/li&gt;
&lt;li&gt;Finally, if all that fails, I go to the support pages. Sometimes a company's knowledge base isn't indexed for search by the major search engines or is on a different domain. Find the knowledge base and search it for "security" and often you'll find details about what the company does to be a trustworthy partner.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At this point, if you still haven't found a page discussing how a company is going to protect your data, they get an &lt;strong&gt;F&lt;/strong&gt; and you should disqualify them with extreme prejudice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Check the boxes
&lt;/h2&gt;

&lt;p&gt;Next you have to wade through statements like, "we care about your security" and "we use state-of-the-art encryption for all data, whether at rest or in transit" and "plans include SSL encryption to keep your data safe" to find where they make specific security claims. For example, "we care about your security" is not a specific claim, but saying they use SSL or encrypt "at rest or in transit" are statements that you can map back to the checklist.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.google.com/spreadsheets/d/156_cI5yhyoLG1pXIc9UKvfdRYMIsO2Cl2neqv2VwGRg/edit#gid=0"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q88smc8K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://ironcorelabs.com/images/blog/maturity-level-sheets-checklist.png" alt="SaaS Security Maturity Checklist"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We've &lt;a href="https://docs.google.com/spreadsheets/d/156_cI5yhyoLG1pXIc9UKvfdRYMIsO2Cl2neqv2VwGRg/edit?usp=sharing"&gt;made a spreadsheet&lt;/a&gt; that has both the checklist and some of the phrases you're looking for to figure out if each row should be checked or not. You can freely copy and modify the spreadsheet to suit your needs. It is licensed under the Creative Commons Attribution 4.0 International License, which just means we'd like you to give us credit if you redistribute it with or without modifications.&lt;/p&gt;

&lt;p&gt;There are currently 23 checkboxes. This may evolve over time, but we'd like to keep the number low rather than comprehensive so it remains a lightweight way to evaluate a company's seriousness about security.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Score it
&lt;/h2&gt;

&lt;p&gt;The spreadsheet will do this for you. For the moment, we score one point for basic checkboxes, three points for intermediate, and five points for advanced. We put a maturity level at the bottom where anything under 15 is considered "weak," with "reasonable" and "exceptional" levels above that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Scores
&lt;/h2&gt;

&lt;p&gt;As of the time of writing, here's what we gleaned from a few well-known services. Note: the specifics with notes are in tabs in the spreadsheet. We welcome corrections if we missed something.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Company&lt;/th&gt;
&lt;th&gt;Total Score&lt;/th&gt;
&lt;th&gt;Maturity Level&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Intuit&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Reasonable&lt;/td&gt;
&lt;td&gt;Disappointingly, Intuit only just barely cleared the "reasonable" line.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Salesforce&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;Exceptional&lt;/td&gt;
&lt;td&gt;Salesforce crushes the maturity test.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;Exceptional&lt;/td&gt;
&lt;td&gt;Github could do more, particularly with data protection, but is otherwise a leader.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now you try. And let us know what you think.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2GuSL9ob--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://ironcorelabs.com/images/blog/maturity-level.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2GuSL9ob--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://ironcorelabs.com/images/blog/maturity-level.png" alt="Reasonable Score"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://docs.google.com/spreadsheets/d/156_cI5yhyoLG1pXIc9UKvfdRYMIsO2Cl2neqv2VwGRg/edit#gid=0"&gt;Free SaaS Security Evaluation Spreadsheet&lt;/a&gt;&lt;/p&gt;

</description>
      <category>saas</category>
      <category>security</category>
      <category>infosec</category>
      <category>evaluation</category>
    </item>
    <item>
      <title>Application-Layer Encryption Defined</title>
      <dc:creator>Patrick Walsh</dc:creator>
      <pubDate>Mon, 27 Sep 2021 17:27:03 +0000</pubDate>
      <link>https://dev.to/zmre/application-layer-encryption-defined-4pnk</link>
      <guid>https://dev.to/zmre/application-layer-encryption-defined-4pnk</guid>
      <description>&lt;h2&gt;
  
  
  Let's Not Overcomplicate It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt; Application-layer Encryption (ALE) is when you encrypt data before sending it to a data store. There are many variations, but at its core, that's it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Variations
&lt;/h2&gt;

&lt;p&gt;There are three main ways in which implementations may differ:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Code vs. Service&lt;/strong&gt;: In some implementations, the encryption/decryption truly happens inside the application, which calls &lt;code&gt;encrypt()&lt;/code&gt; or &lt;code&gt;decrypt()&lt;/code&gt; routines. In others, an intermediate service or proxy essentially does that for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client vs. Server&lt;/strong&gt;: Some systems are strict about only encrypting and decrypting data in the client, which brings zero-trust data systems using end-to-end encryption (E2EE). E2EE is a subset of application-layer encryption. But encryption/decryption may alternately happen on the server. For server-side application-layer encryption and SaaS, the most secure option is &lt;a href="https://ironcorelabs.com/cmk/"&gt;customer-held keys&lt;/a&gt; where each customer keeps their master KEKs in their own KMS.  We've also seen hybrid models where some data is end-to-end encrypted and other data is server-side encrypted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key Management&lt;/strong&gt;: This is where systems differ the most. Ideally, each piece of data gets its own key, called a document encryption key (DEK), and that DEK is wrapped by a master key or key encryption key (KEK). This is called &lt;a href="https://ironcorelabs.com/docs/data-control-platform/concepts/envelope-encryption/"&gt;envelope encryption&lt;/a&gt;. When done right, the KEK is held in a Key Management Server (KMS) where it can't be exported and is backed by a Hardware Security Module (HSM). There can be multiple different KEKs at a per-row, per-field, or per-tenant basis, and the KEKs should rotate regularly so the number of KEKs increases over time. But while that's a strong application-layer encryption approach, plenty of implementations reuse keys to encrypt everything the same way and store keys in insecure places.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Don't Fall for the B.S.
&lt;/h2&gt;

&lt;p&gt;There's a pattern repeated by security solution vendors: as soon as some term starts catching on, the whole industry puts it on their website and says that's what they do. They expand and stretch the definition and muddy the waters until the original meaning is essentially lost. It can be frustrating. &lt;/p&gt;

&lt;p&gt;For example, the term &lt;em&gt;"zero-trust"&lt;/em&gt; is now prominent industry-wide, but few deserve the label.  If you're curious, we break down trust definitions in our &lt;a href="https://ironcorelabs.com/blog/2020/saas-trust-models-for-security-and-data-privacy/"&gt;trust models blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Homomorphic encryption"&lt;/em&gt; is another example. It has a very specific definition that's based on a mathematical abstraction called a &lt;a href="https://en.wikipedia.org/wiki/Homomorphism"&gt;homomorphism&lt;/a&gt;. But security vendors have stretched the definition to mean pretty much anything that involves the use of encrypted data. We used to get excited when we saw someone claiming homomorphic encryption. Now we mostly roll our eyes and move on. 🙄&lt;/p&gt;

&lt;p&gt;The latest casualty is &lt;em&gt;"application-layer encryption"&lt;/em&gt;, aka &lt;em&gt;application-level encryption,&lt;/em&gt; aka &lt;em&gt;ALE.&lt;/em&gt; Which is what spurred us to write this blog.&lt;/p&gt;

&lt;p&gt;But this is an easy one to check. &lt;/p&gt;

&lt;h2&gt;
  
  
  A Simple Test
&lt;/h2&gt;

&lt;p&gt;Next time someone says they're using application-layer encryption, apply this simple test: if you had (possibly stolen) credentials and network access that let you query a data store, and you use that to fetch data, is any of that data encrypted when you get it back? It should be.&lt;/p&gt;

&lt;p&gt;An alternate test: if your infrastructure provider gets a law enforcement warrant for your data, and they make the query, will they get back meaningful data? Or will it be garbled?&lt;/p&gt;

&lt;p&gt;More concretely, &lt;strong&gt;if you've turned on encryption for your databases, key-value stores, or object storage in AWS, GCP, or Azure, that's great, but that isn't application-layer encryption.&lt;/strong&gt; It doesn't matter if the KMS only accepts requests from certain applications. If the data is transparently encrypted at the storage level, it's not application-layer encryption.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Matters
&lt;/h2&gt;

&lt;p&gt;We've recently seen flaws in Azure that caused large numbers of &lt;a href="https://chaosdb.wiz.io/"&gt;Cosmos DB instances&lt;/a&gt; to be publicly accessible. Those impacted companies would have had much less to fear if their exposed data was non-transparently encrypted.&lt;/p&gt;

&lt;p&gt;Another reason it matters is that it's surprisingly easy to accidentally expose data in complex cloud environments. One in five data breaches is due to cloud misconfigurations (per Ponemon). The classic example is when much of the Fortune 500 was found to have &lt;a href="https://blog.ironcorelabs.com/audit-your-s3-storage-immediately-2b2e10e63b8f"&gt;open AWS buckets&lt;/a&gt;. These issues would have been mitigated by non-transparent encryption. &lt;/p&gt;

&lt;p&gt;As a final example, we have the latest &lt;a href="https://www.wsj.com/articles/t-mobile-hacker-who-stole-data-on-50-million-customers-their-security-is-awful-11629985105"&gt;T-mobile breach&lt;/a&gt;. A hacker got a foothold inside their network and then ferreted out their saved database credentials. Querying the database gave back unencrypted data including social security numbers.&lt;/p&gt;

&lt;p&gt;Remember, transparent encryption is useful, but it mostly protects against stolen hard drive attacks and it doesn't help at all in these scenarios.&lt;/p&gt;

&lt;p&gt;Application-layer encryption brings &lt;a href="https://ironcorelabs.com/blog/2021/saas-missing-security-layers/"&gt;an important layer of protection&lt;/a&gt; that means extra hurdles and challenges for attackers. It completely foils many common attacks.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Here to There
&lt;/h2&gt;

&lt;p&gt;Application-layer encryption isn't a silver bullet, but it's critically important.  And while the definition is simple, implementing application-layer encryption can be complicated and full of pitfalls. We've seen application-layer encryption schemes where people put unwrapped encryption keys directly in the database. We've seen a single key get used and reused for all values. We've seen designs where keys can never rotate. And that's the tip of the iceberg.&lt;/p&gt;

&lt;p&gt;At IronCore, we've worked hard to make it straight-forward for anyone to add application-layer encryption to their app, even if it's multi-tenant SaaS. &lt;strong&gt;We've made it developer-proof so no one can accidentally do the wrong thing.&lt;/strong&gt; If you'd like to understand how we might help you accelerate and supercharge your data security, &lt;a href="https://ironcorelabs.com/contact-us/"&gt;let's talk&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>cryptography</category>
      <category>saas</category>
      <category>security</category>
      <category>encryption</category>
    </item>
    <item>
      <title>The Lack of Security Layers in SaaS</title>
      <dc:creator>Patrick Walsh</dc:creator>
      <pubDate>Tue, 24 Aug 2021 21:11:11 +0000</pubDate>
      <link>https://dev.to/zmre/the-lack-of-security-layers-in-saas-270j</link>
      <guid>https://dev.to/zmre/the-lack-of-security-layers-in-saas-270j</guid>
      <description>&lt;p&gt;Running applications using a cloud service should be far more secure than running the same apps on your own servers. In theory, the cloud company will keep everything up-to-date, deal with upgrades and migrations, and understand deeply what security is needed.&lt;/p&gt;

&lt;p&gt;But if the cloud app holds sensitive data, then it's a rich target. If breached, an attacker will likely get the data of many customers. One vulnerability in the code, the infrastructure configuration, or any unexpected behavior at the intersection of complex systems, and an attacker can get at that data. The resulting breach can be devastating for both the cloud app company and their customers.&lt;/p&gt;

&lt;p&gt;This blog will look at the typical approach to securing cloud apps, the weaknesses inherent in it, and will consider what can be done to improve things.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Typical SaaS Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tBP3qHN5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://ironcorelabs.com/images/blog/three-security-layers.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tBP3qHN5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://ironcorelabs.com/images/blog/three-security-layers.png" alt="Typical SaaS security layers"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In most cases, a SaaS app will consist of one or more application-layer services that talk to one or more backend data stores. Each application-layer service enforces permissions to make sure that the user making a request only gets back the data that he or she is allowed to see.  The data stores don't usually enforce this or even know who the end user is that is making the request.&lt;/p&gt;

&lt;p&gt;Because developers make mistakes, and because of attacks like &lt;a href="https://owasp.org/www-community/attacks/SQL_Injection"&gt;SQL injections&lt;/a&gt;, most SaaS companies will purchase a security solution that sits out in front of the application. Typically, that means a network-layer firewall plus a web application firewall (WAF).  It's the responsibility of the latter to block common attacks targeting web applications.&lt;/p&gt;

&lt;p&gt;After traffic is scanned, it travels onward to some kind of ingress controller or load balancer. This is responsible for routing traffic to the appropriate services, limiting direct access to some service endpoints, and helping the app scale by adding more instances of the services. (Note: sometimes the WAF comes after the load balancer.)&lt;/p&gt;

&lt;p&gt;Finally, the individual services will typically talk to the data stores as needed. Here's what this looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Lz1l1DhB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eu22xh9x64y70cy56e5l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Lz1l1DhB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eu22xh9x64y70cy56e5l.png" alt="Typical SaaS Architecture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're an attacker looking at this, what you'll see is an outer shell with security rules that need to be evaded and a set of services each of which likely contains yet-to-be-discovered vulnerabilities. That's two layers of security to get through in order to get to the good stuff.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/Av0xmqCB3OUGjwVomb/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/Av0xmqCB3OUGjwVomb/giphy.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Overreliance on WAFs
&lt;/h2&gt;

&lt;p&gt;So that Web Application Firewall (WAF) carries a lot of the burden. But here's the thing: not only are &lt;a href="https://duckduckgo.com/?q=waf+evasion+techniques&amp;amp;t=ffab&amp;amp;ia=web"&gt;WAF evasion&lt;/a&gt; &lt;a href="https://duckduckgo.com/?q=waf+bypass&amp;amp;t=ffab&amp;amp;ia=web"&gt;and bypass&lt;/a&gt; techniques plentiful, but most don't require much skill on the part of the hacker.&lt;/p&gt;

&lt;p&gt;Even worse, WAFs can do more harm than good. For example:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;They reduce performance;&lt;/li&gt;
&lt;li&gt;they produce false positives that break your app (causing you to shut off some of the protections that you may need);&lt;/li&gt;
&lt;li&gt;they have their own &lt;a href="https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=%22web+application+firewall%22"&gt;vulnerabilities&lt;/a&gt; that can give an attacker a foothold in your network;&lt;/li&gt;
&lt;li&gt;they promote an attitude in developers that makes security someone else's problem;&lt;/li&gt;
&lt;li&gt;and they introduce added complexity that enables attacks like &lt;a href="https://portswigger.net/research/http2"&gt;desyncs&lt;/a&gt; and &lt;a href="https://portswigger.net/research/when-security-features-collide"&gt;rewrites&lt;/a&gt;. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Some security researchers, like those who wrote about the desync attacks linked above, believe WAFs are actively harmful. I think they still have value and I wouldn't run a service without one, but they do introduce some risks even as they mitigate others. The lesson here: if you lean too heavily on your WAF, you'll fall over.&lt;/p&gt;

&lt;p&gt;But maybe the cloud app is well-designed, with flawless permissions enforcement, always validated inputs, and no vulnerabilities. And the libraries and other software that the app uses are equally bulletproof. And the continuous stream of changes to the stack don't adversely affect its security.  And pigs might fly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3o6MbqqzfGY4zpMCrK/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3o6MbqqzfGY4zpMCrK/giphy.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Swiss Cheese Model
&lt;/h2&gt;

&lt;p&gt;There's a concept in risk analysis that helps to visualize layers of safety and risk reduction. The idea is that any single measure will inherently be imperfect, but layered together, a risk can be mitigated. For example, you might think of a seatbelt as a slice of cheese. An airbag is another. A crumple zone is a third. ABS brakes are a fourth. The goal of each of these measures is to prevent deaths in the case of a car accident. A death only occurs if the holes (the weaknesses) in each measure all line up and occur at the same time. This is called the &lt;a href="https://en.wikipedia.org/wiki/Swiss_cheese_model"&gt;swiss cheese model&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N9viWS-q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/0/07/Swiss_cheese_model.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N9viWS-q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/0/07/Swiss_cheese_model.svg" alt="Swiss Cheese Model Graphic By BenAveling - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=91881875"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Swiss Cheese Model Graphic By BenAveling - Own work, CC BY-SA 4.0, &lt;a href="https://commons.wikimedia.org/w/index.php?curid=91881875"&gt;Wikimedia Commons&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Essentially this is a way to visualize one of the core pillars of &lt;a href="https://blog.ironcorelabs.com/secure-design-principles-series-part-one-829280422838"&gt;security by design&lt;/a&gt;: Defense in Depth. So why, then, are there only two layers of meaningful security between an attacker and the data they seek to reach in the typical SaaS app? Why do most cloud app companies consider it "good enough" to transparently encrypt the data in its data stores, when that encryption does nothing to prevent unauthorized access to the data if an application is compromised?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's time to add some more cheese to SaaS apps.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3o7TKwg3mvxmnBYNry/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3o7TKwg3mvxmnBYNry/giphy.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Application-layer Encryption (ALE)
&lt;/h2&gt;

&lt;p&gt;One layer to add sits between the application and the data stores, and it's often called application-layer or application-level encryption (ALE). The key concept is that data is encrypted before being stored, which prevents someone with direct access to a database from being able to browse the encrypted data.&lt;/p&gt;

&lt;p&gt;ALE can take many forms, but at its best, it adds another layer of permissioning and data segmentation to the data. That is, it can be used to virtually isolate sets of data so that an application breach does not immediately expose all the data. Instead, a layer remains that contains the blast radius from the application vulnerabilities. It will also prevent any access to sensitive data if the network is the exploited component or the hacker gets into the data store.&lt;/p&gt;

&lt;p&gt;Using our earlier systems diagram, it might look something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mz6iCj_q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c3eu9if2cikd0xdqcim3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mz6iCj_q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c3eu9if2cikd0xdqcim3.png" alt="SaaS Architecture with ALE"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Segmenting Data by Service or by Tenant
&lt;/h2&gt;

&lt;p&gt;To segment data, you use keys and restricted access to those keys to create the virtual isolation. For example, you could restrict Service 1 to only access the data in the database that it needs to do its job. Other data stored in the database or in the file store would be meaningless to it. And you can do this on a per-row or per-column basis.&lt;/p&gt;

&lt;p&gt;In a multi-tenant SaaS world, you can use a different master key for each and every tenant (customer) and use an ALE solution that only allows the fetching of data for one tenant at a time.&lt;/p&gt;

&lt;p&gt;This extra precaution is a game changer in terms of what happens when a breach occurs. And it's even more of a game changer if the SaaS app lets their customers &lt;a href="https://dev.to/cmk/"&gt;hold their own master keys&lt;/a&gt; and monitor access of their data. The customers retain control of that data and can revoke access at any time.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's Time For Action
&lt;/h2&gt;

&lt;p&gt;It's time that we as a software industry stop hoping for magic vendor solutions that sit outside the application and intercept all hacking attempts. At best, they work partially and at worst, they're part of the problem. Applications need to add their own layers of security, and there's no more meaningful component to add than a data protection layer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cQZUrJvN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://ironcorelabs.com/images/blog/four-security-layers.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cQZUrJvN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://ironcorelabs.com/images/blog/four-security-layers.png" alt="SaaS security with ALE"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>saas</category>
      <category>development</category>
      <category>encryption</category>
    </item>
    <item>
      <title>California's new privacy law explained</title>
      <dc:creator>Patrick Walsh</dc:creator>
      <pubDate>Wed, 27 Mar 2019 23:40:40 +0000</pubDate>
      <link>https://dev.to/zmre/california-s-new-privacy-law-explained-4ec5</link>
      <guid>https://dev.to/zmre/california-s-new-privacy-law-explained-4ec5</guid>
      <description>&lt;p&gt;The California Consumer Privacy Act takes effect on January 1st, 2020. But it has provisions that reach back to January 1st, 2019. If you’re a software developer or work for a software company, it’s reasonably likely that CCPA is going to impact your roadmap, your website, and existing or planned features in the near future.&lt;/p&gt;

&lt;p&gt;This post originally appeared in Hacker Noon. &lt;a href="https://hackernoon.com/ccpa-what-you-need-to-know-aede1acb792a"&gt;Read the whole post&lt;/a&gt; there.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>security</category>
      <category>architecture</category>
      <category>policy</category>
    </item>
  </channel>
</rss>
