<?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: Austin Hunt</title>
    <description>The latest articles on DEV Community by Austin Hunt (@austinjhunt).</description>
    <link>https://dev.to/austinjhunt</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%2F825688%2F57ec0d13-cc4e-4154-bc10-bf823ccd5a45.jpeg</url>
      <title>DEV Community: Austin Hunt</title>
      <link>https://dev.to/austinjhunt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/austinjhunt"/>
    <language>en</language>
    <item>
      <title>A Security Analysis of a Sassy Quarterback</title>
      <dc:creator>Austin Hunt</dc:creator>
      <pubDate>Thu, 27 Oct 2022 01:22:11 +0000</pubDate>
      <link>https://dev.to/austinjhunt/a-security-analysis-of-a-sassy-quarterback-2o4b</link>
      <guid>https://dev.to/austinjhunt/a-security-analysis-of-a-sassy-quarterback-2o4b</guid>
      <description>&lt;p&gt;There are a multitude of articles, videos, infographics, and probably even poems out there on the internet walking through the differences between the three main cloud service delivery models. In fact, Google kindly let me know that there are “About 11, 800,000 results” for the query “iaas saas paas”, which, in my head, reads as “Yass, sass! Pass!” &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;That's exactly what an excited wide receiver yells at a quarterback who just said something sassy to an opposing linebacker. If you needed a way to remember these models, you’ve got it now.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I do plan to provide some background context around the Infrastructure-as-a-Service, Platform-as-a-Service, and Software-as-a-Service delivery models for those reading who may not be familiar with those concepts, but I also intend to take a more specific look at that sassy quarterback with a focus on security.&lt;/p&gt;

&lt;p&gt;Since these three models are often represented together in the form of a pyramid with IaaS at the base, PaaS in the middle, and SaaS at the top, and that pyramid serves a semantic purpose, this article will follow that representation, starting with the pyramid’s base: IaaS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Infrastructure-as-a-Service (IaaS)
&lt;/h3&gt;

&lt;p&gt;With the IaaS model of cloud service delivery, a vendor (e.g., Amazon) provides fundamental building blocks of compute, storage, and networking resources, and the customer, who can access those resources on-demand over the internet, pays for those resources as they use them. The cloud provider, or vendor, is primarily responsible for maintaining the underlying hardware infrastructure to support the service, and the customer has full control to spin up virtualized resources like virtual machines (VMs) with desired amounts of CPU and RAM, volumes for extended storage, databases for an application that may need to store data, load balancers to balance web traffic across a cluster of other VMs for high availability, and even firewalls for controlling and filtering out unauthorized network traffic from their environment. Creativity and money are ultimately the limiting factors in what can and cannot be built by a customer leveraging infrastructure as a service, sort of like how creativity and time left until bedtime are the limiting factors for a kid with a box of LEGOs — build what you want. To give a quick plug, I’m currently using &lt;a href="https://cloud.linode.com/"&gt;Linode&lt;/a&gt;’s LEGOs — I mean IaaS — to host my portraiture portfolio website &lt;a href="https://sketchyactivity.com"&gt;https://sketchyactivity.com&lt;/a&gt;. I was previously using Heroku (which is PaaS, to be discussed next), but they are introducing &lt;a href="https://techcrunch.com/2022/08/25/heroku-announces-plans-to-eliminate-free-plans-blaming-fraud-and-abuse/"&gt;new costs starting in November&lt;/a&gt; so I wanted to move to a service with more stable pricing and a greater degree of flexibility.&lt;/p&gt;

&lt;p&gt;Extending upon IaaS is the wonderful concept of infrastructure as code (IaC), which is &lt;a href="https://www.redhat.com/en/topics/automation/what-is-infrastructure-as-code-iac"&gt;documented well by Red Hat&lt;/a&gt;. With IaC, we take our ability to provision resources in the cloud on-demand with IaaS, and we do it automatically by writing code that hits APIs offered by the IaaS provider (using API keys to authenticate and authorize). While this might not seem too valuable if you only need to spin up one constant virtual machine for a lightweight app or service, IaC can be a major asset if the resource requirements for your app change over time. After all, &lt;a href="https://www.vmware.com/topics/glossary/content/cloud-elasticity.html"&gt;elasticity&lt;/a&gt; is one of the fundamental benefits provided by cloud computing since being able to programmatically scale resources up or down depending on demand also means &lt;strong&gt;you are paying only for resources you need over any given time period&lt;/strong&gt;. Using IaC also means you can house infrastructure configuration in version control, which comes with its own universe of &lt;a href="https://www.copado.com/devops-hub/blog/devops-infrastructure-as-code-iac-benefits-beyond-automation-and-version-control"&gt;benefits&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now, IaaS certainly offers a great deal of flexibility and freedom, which really is powerful, but with that power comes with responsibility, as stated by Peter Parker’s Uncle Ben in his well-known &lt;a href="https://www.youtube.com/watch?time_continue=69&amp;amp;v=guuYU74wU70&amp;amp;feature=emb_logo"&gt;2002 Ted Talk&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
IaaS vendors, like all cloud service providers, treat security as a &lt;a href="https://aws.amazon.com/compliance/shared-responsibility-model/"&gt;shared responsibility&lt;/a&gt; meaning they will maintain the security of physical infrastructure up to the &lt;a href="https://www.vmware.com/topics/glossary/content/hypervisor.html"&gt;hypervisor&lt;/a&gt; (their software running virtual machines) but customers building their own infrastructure with IaaS are responsible for making that build secure as well as making the policies and governance around its management secure. This includes but is not limited to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Frequently and regularly updating VMs — this is the easiest one, but it’s often forgotten&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Following the principle of least privilege, e.g., not using a root user for daily tasks on VMs, or setting up RBAC to provide your internal team with limited access only to what they need to manage infrastructure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Requiring that anyone accessing and managing infrastructure with IaaS is using MFA to log in&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Not hardcoding or storing secret values in version control, e.g., API keys for the IaaS API if using IaC; this one’s generally applicable&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Disallowing root login and password authentication for SSH; use key-based authentication instead.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting up a firewall that allows only the traffic required to provide your service to intended audiences&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting up monitoring and alerting about system resources to stay updated on the state of your infrastructure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting up a CI/CD pipeline for software being deployed on the infrastructure which includes automated testing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting up redundant infrastructure as well as backups for recovery in case of failure; make sure to test both to ensure you can meet your &lt;a href="https://www.enterprisestorageforum.com/management/rpo-and-rto-understanding-the-differences/"&gt;recovery time objectives (RTOs) and recovery point objectives (RPOs)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reviewing audit logs to monitor IaaS activity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting up encryption — at rest or in transit, or both, depending on your needs; this may include setting up and regularly renewing your own SSL certificates, e.g., with &lt;a href="https://letsencrypt.org/about/"&gt;Let’s Encrypt&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reviewing your specific compliance requirements and configuring your system to meet those&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short, IaaS is the most flexible cloud service delivery model, but it also requires the most time and attention to maintain a secure environment. IaaS may look like the cheapest option based simply on the pay-per-use costs listed by IaaS vendors, but it inherently comes with more security risks for the IaaS customer (and potentially the customer’s customers) since the customer owns such a hefty portion of the shared responsibility. Because of this, IaaS is a more appropriate fit for teams who are trained on and experienced in configuring, managing, maintaining, patching, and generally securing servers at a low level. Without that experience, the business risk likely is much more expensive than the low pay-per-use cost of some virtual machines, and a different delivery model may be a better fit, which leads us to &lt;strong&gt;PaaS&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Platform-as-a-Service (PaaS)
&lt;/h3&gt;

&lt;p&gt;As we move up the cloud pyramid that I referred to before into the middle layer of PaaS, the space available shrinks a bit compared to the IaaS base — that’s some basic pyramid geometry for you. In the smaller space of the PaaS layer, we have less freedom but also less responsibility for security as the customer.&lt;/p&gt;

&lt;p&gt;The purpose of PaaS is to narrow the scope of customer responsibility in such a way that it &lt;strong&gt;simplifies&lt;/strong&gt; the process of developing and deploying software. In other words, the customer is given a platform on which to work around which &lt;strong&gt;guardrails&lt;/strong&gt; are put in place by the vendor, and the space beyond the guardrails is the vendor’s responsibility.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The customer may, on occasion, linger at the edge of the platform, lean on a guardrail, and stare longingly into that great beyond, but the convenience of clicking a button to deploy their app will beckon them back inward.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The customer can build and deploy application resources and manage data without having to tinker with and configure underlying infrastructure which means rather than having the low-level responsibilities of keeping a server updated and locked down with attention to all the requirements previously discussed, &lt;strong&gt;they can put more focus on the application itself&lt;/strong&gt; — the business logic, the improvements for end users, new features, etc. Since I’m a big fan of analogies, think of it this way: on one hand, someone is offering you — at a low price — a toolbox filled with tools that only work if you put time into consistently repairing them after using them. They work great so long as you maintain them, and you can build a ton of stuff, but if you forget to maintain them, the things you build will collapse and potentially hurt someone, which is quite risky for you especially since you’ve never had to maintain some of these tools. That’s IaaS. Now, on the other hand, someone is offering you, at a higher price, a small pouch of tools that they’ve approved for your use, with the guarantee that they will be responsible for maintaining the tools. You can’t build as much, sure, but you don’t have to spend hours maintaining your tools to make sure what you build works properly and doesn’t hurt anyone. You get to just use them. All you need to focus on is the &lt;strong&gt;structural integrity and security of the things you build&lt;/strong&gt;. That’s PaaS. As a PaaS customer, you still have sort of a building-block-based approach to setting up your environment; the difference is that the building blocks presented as options tend to be a bit less granular and based more on pricing tiers like “Free”, “Production”, “Advanced”, and “Enterprise”, where the price for each tier increases significantly, as they do for &lt;a href="https://www.heroku.com/pricing"&gt;Heroku&lt;/a&gt;. The general idea is that, as a customer, you can choose pre-configured resources for data storage and computation with varying degrees of capacity and security depending on your specific requirements (where &lt;strong&gt;bigger requirements = bigger price&lt;/strong&gt;), you pay for those resources at intervals, and you use them to build and run your application(s) freely without concern for what’s underneath. Also, not only is each resource you select pre-configured, but all the resources selected are pre-integrated automatically by the platform which means you don’t (generally) need to troubleshoot communication problems between things like databases and web services. In my experience using Heroku, using PaaS simplifies collaboration with other developers, setting up CI/CD pipelines, auto-scaling based on demand, configuring dev, test, and prod environments for a given app, monitoring app activity, managing SSL, and even &lt;a href="https://elements.heroku.com/addons"&gt;setting up integrations with other services&lt;/a&gt;. These benefits are significant but it’s worth noting that they come at the expense of your wallet and your ability as a developer to easily port your app to another platform. This is because each PaaS provider’s “building blocks” are unique to them as a provider and sometimes can even come with configuration requirements that introduce &lt;a href="https://devcenter.heroku.com/articles/django-app-configuration"&gt;a need to modify your application code.&lt;/a&gt; Once you’ve started depending on a feature set offered exclusively by one vendor, moving elsewhere even in the face of increased pricing or service decline becomes less practical, which is why &lt;a href="https://www.cloudflare.com/learning/cloud/what-is-vendor-lock-in/"&gt;vendor lock-in&lt;/a&gt; is a common problem experienced by PaaS customers.&lt;/p&gt;

&lt;p&gt;Now, I’ll put my security glasses back on (I lost them before but found them in my safe; that’s a security joke) and we can look at PaaS from the perspective of security requirements. We’ve established that PaaS customers have a smaller share of the shared responsibility than IaaS customers, and PaaS providers take on that extra responsibility of managing underlying infrastructure. Even with that, PaaS customers are still responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Analyzing their own compliance requirements and selecting pre-configured resources that meet those requirements (e.g., selecting an environment that runs in network isolation on dedicated resources versus one that is publicly accessible and runs on shared resources). This includes looking at encryption requirements — does the platform encrypt data at rest?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting up monitoring and alerting about problems with their application(s)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configuring role-based access control within the platform (i.e., who can deploy, add new collaborators, manage application data, purchase new resources, delete existing resources, etc.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting up a CI/CD integration with automated tests that must pass before new application versions are deployed by the platform&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Monitoring activity of collaborators with access to the platform&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensuring platform-related configuration variables are not stored in version control or publicly available (e.g., credentials for pre-configured databases); the same applies to any other secret values&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Requiring all team members with access to the platform to use MFA to log in (assuming that’s an option)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Establishing a plan for when there is a service outage; this includes having a migration plan either to another PaaS vendor or to some other environment&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Staying on top of the quality of their own software (obviously, but it felt wrong to omit this)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configuring and renewing SSL certs via the platform if applicable&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Staying on top of payment and payment-related warnings that could affect your service&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Monitoring the service quality of the provider should also be considered a responsibility of the customer; even vendor lock-in mentioned previously can be considered a security threat to your business, especially if the provider significantly changes pricing models (starts robbing you because they can) or their infrastructure quality declines causing unavoidable outages.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With these requirements in mind, the PaaS model is a decent choice for teams of developers who aren’t too proficient with server management, configuration, and security patches but do want some flexibility in the development, testing, and deployment of their service.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In a nutshell, PaaS allows us to hand over a suitcase of low-level responsibilities and freedoms from our IaaS years in exchange for a pricey Gucci bag of guardrailed guarantees of infrastructure security, convenience, and refocused energy on our own applications over which we still have full control.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That brings us to SaaS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software-as-a-Service (SaaS)
&lt;/h3&gt;

&lt;p&gt;You’ve made it to the apex of the cloud pyramid. Congratulations! Can you see your attack vectors from here? To access this final delivery model (well, final for this article; there are actually &lt;a href="https://medium.com/@nnilesh7756/what-are-cloud-computing-services-iaas-caas-paas-faas-saas-ac0f6022d36e"&gt;more&lt;/a&gt;), we had to submit our technical exploration license to a troll who guards the Bridge of SaaS.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You have not the right to low level mods,” he said, “but these wares of soft have provisions broad.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After recovering from the profundity of his trollish poetry and dropping the weight of more security responsibilities at his feet, we were off.&lt;/p&gt;

&lt;p&gt;With SaaS, we (the customer) are not developing, building, or deploying a service. Rather, a vendor is delivering some application or service over the internet which we, as customers with internet connections, can access and consume on-demand. We’re talking &lt;a href="https://microsoft.com/"&gt;Microsoft 365 apps&lt;/a&gt; like Word, OneDrive, and Teams, &lt;a href="https://workspace.google.com/"&gt;Google apps&lt;/a&gt; like Gmail, Drive, and Docs, and so on. There’s generally no need to install or maintain any software as a SaaS end user aside from a web browser, which means you are free from all complex software and hardware management. The vendor (e.g., Microsoft or Google to follow the previous examples) is accountable for most of the shared responsibility in the SaaS model. More specifically, the vendor holds most of the responsibility for security &lt;em&gt;of&lt;/em&gt; the cloud (i.e., greasing the gears under the hood of their service), while the customer holds responsibility for security &lt;em&gt;in&lt;/em&gt; the cloud (i.e., using the service in a secure way). That’s not to say that the SaaS vendor is fully responsible for everything from the hardware up to the software service they’re providing, though, since a SaaS vendor may (likely) use a separate PaaS or IaaS service as we’ve discussed to provide their own SaaS service. For example, if I want to launch a web app to provide a paid service for people, I would most likely use virtual infrastructure from Linode to run that service — I wouldn’t be responsible for the maintenance of the underlying hardware, but I would certainly be responsible as previously discussed for the secure and resilient configuration of my resources to protect myself and my customers.&lt;/p&gt;

&lt;p&gt;From the customer perspective, SaaS tends to come with general benefits like easy access from anywhere via the internet, high reliability, payment flexibility (e.g., we all know &lt;a href="https://gmail.com/"&gt;Gmail&lt;/a&gt; is free), strong security, and generally the abstraction of the “how it works” away from the “what it provides”. When I’m accessing software over the web like Gmail, or Word, or OneDrive, I access it with the expectation that it’s just going to load, that it’s secure, that I’m not going to lose any data, etc., because I’ve placed trust in an established vendor’s guarantees of those things. Now, with SaaS, the software being provided as a service, while possibly somewhat customizable by end users (e.g., for changing styles and themes and certain settings based on personal preferences), is packaged in a way that &lt;strong&gt;intentionally confines users to using it as expected&lt;/strong&gt;. End users are not tasked with developing SaaS services further before using them or making them more secure as services — that part is handled.&lt;/p&gt;

&lt;p&gt;Ultimately, SaaS customers are purely responsible for the &lt;strong&gt;secure &lt;em&gt;use&lt;/em&gt; of SaaS&lt;/strong&gt; since that’s the full scope of their control. This generally includes largely data-, account-, and information-centric security responsibilities like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Not exposing or sharing sensitive information with users who should not have access&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Not sharing account credentials with other users and not reusing a password for the SaaS account that is used elsewhere&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enabling optional security features on the SaaS account like MFA; if an admin, enforcing an MFA requirement for all other organization users&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Training other end users of the SaaS product in the organization on how to use it securely if applicable; for example, if a new product is being launched to deliver a service to a full organization (e.g., a new intranet or a CRM for a higher education institution)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If an admin, setting up role-based access control from the SaaS product’s administrative settings if applicable (for organizations), following the principle of least privilege&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If an admin, setting up monitoring and alerting from the SaaS product’s administrative settings if applicable (for organizations)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If an admin, tracking information or identity compromises from the SaaS product’s administrative settings if applicable (for organizations)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keeping up to date with notifications from the SaaS provider about changes to their product, especially if managing the product as an admin for an organization&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verifying that the SaaS product supports the organization or business’s security, policy, and legal requirements before purchasing if you’re part of decision-making about SaaS product purchases&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verifying that the SaaS product supports disaster recovery and general business continuity before purchasing if you’re part of decision-making SaaS product purchases&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Specific security requirements around the use of a SaaS product will vary depending on the product itself but general &lt;a href="https://illinois.touro.edu/news/top-10-cybersecurity-best-practices-for-your-business.php"&gt;information security best practices&lt;/a&gt; around things like password management, MFA usage, information protection, monitoring and alerting, access control, etc. are widely applicable to maintaining security when using this service model. To reiterate, SaaS is both simple and confining, and it’s not for developers hoping to launch their own service as is IaaS or PaaS, but rather it’s for end users with an internet connection and a specific goal met by a specific SaaS product.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;To summarize this quite lengthy article, let’s take a look back at the cloud pyramid, but this time with an additional component. I guess technically this image is adding another thousand words but at this point who’s counting? I am. We’re at 3160 so far.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9R7JPOB1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/6048/1%2AZBAn6iVuBM-y1wEpaOU0Tw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9R7JPOB1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/6048/1%2AZBAn6iVuBM-y1wEpaOU0Tw.jpeg" alt="The Cloud Pyramid in a box." width="880" height="1173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was struggling to find articles online that really dove into the semantics behind the use of a pyramid to represent the relationship between each of these three service models. As a result, I started doing some thinking and realized that by drawing a box sitting over the pyramid, the visual can really emphasize the how the ratio of customer-to-vendor responsibility in the shared responsibility model of cloud security &lt;em&gt;changes&lt;/em&gt; across each of these service models. We established that IaaS offers the most technical and creative freedom to customers, but IaaS customers also hold the most responsibility for security in comparison to the other two models. Of course, responsibilities held by the customer are consequently &lt;em&gt;not&lt;/em&gt; held by the vendor. So, as you move upward through PaaS to SaaS, the scope of customer responsibilities around security (the space &lt;em&gt;in&lt;/em&gt; the pyramid) decreases overall while that of the service provider (the space &lt;em&gt;around&lt;/em&gt; the pyramid) increases.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Perhaps the most important note to end with is that cloud security, regardless of the service model — is never a one-sided responsibility.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>iaas</category>
      <category>paas</category>
      <category>saas</category>
      <category>security</category>
    </item>
    <item>
      <title>The ARC Protocol — Keeping Emails Afloat on the Voyage Through Strict Security Policies</title>
      <dc:creator>Austin Hunt</dc:creator>
      <pubDate>Sun, 23 Oct 2022 23:58:55 +0000</pubDate>
      <link>https://dev.to/austinjhunt/the-arc-protocol-keeping-emails-afloat-on-the-voyage-through-strict-security-policies-1i7j</link>
      <guid>https://dev.to/austinjhunt/the-arc-protocol-keeping-emails-afloat-on-the-voyage-through-strict-security-policies-1i7j</guid>
      <description>&lt;p&gt;This article will first provide some context around the SPF, DKIM, and DMARC protocols for email security, and will establish the reasoning behind the &lt;a href="https://www.youtube.com/watch?v=IsxZSHmdntE"&gt;announcement of a new protocol called ARC in 2016&lt;/a&gt;. It will then offer an overview of how the ARC protocol works in support of the other three protocols.&lt;/p&gt;

&lt;h2&gt;
  
  
  SPF: A Screen from the Sun of Scammers
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3orifftBj3OpF6gY8w/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3orifftBj3OpF6gY8w/giphy.gif" alt="Sunscreen application tips courtesy of the Simpsons." width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Sender_Policy_Framework"&gt;Sender Policy Framework (SPF)&lt;/a&gt; is an email authentication protocol allowing domain administrators to define, with a specifically formatted DNS TXT record, an explicit list of mail servers that are authorized to send mail from their domain. This is a significantly valuable protocol because enabling it removes the ability for attackers simply spoof emails from email addresses within the domain. Or, put more strongly, &lt;em&gt;not&lt;/em&gt; enabling for a domain (e.g., example.com) gives any interested attacker the option to spoof emails from any email address within that domain (e.g., &lt;a href="//mailto:ceo@example.com"&gt;ceo@example.com&lt;/a&gt;), allowing them to potentially leverage and exploit the authority of certain people (e.g., CEOs, directors, presidents, etc.) within an organization to trigger some action such as clicking a link or providing confidential information. Moreover, it’s fairly straightforward to set up, especially with tools like &lt;a href="https://mxtoolbox.com/SPFRecordGenerator.aspx"&gt;MX Toolbox SPF Record Generator&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stopping the Bad Guys with DKIM Possible
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/hZw6KWAi3t0VG/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/hZw6KWAi3t0VG/giphy.gif" alt="Kim Possible. Your basic average girl here to save the world." width="500" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since the other protocol that DMARC builds upon is &lt;a href="https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail"&gt;DomainKeys Identified Mail (DKIM)&lt;/a&gt;, and DKIM is based on the idea of &lt;a href="https://medium.com/@austinjhunt/breaking-down-modern-trust-digital-signatures-and-their-impact-on-business-2dfbd4120dae"&gt;digital signatures&lt;/a&gt; for protecting and verifying message integrity, let’s quickly review how digital signatures work. In short, a message sender first hashes their message to produce a &lt;em&gt;message digest&lt;/em&gt;, then encrypts that message using their own private key to produce their &lt;em&gt;digital signature&lt;/em&gt;, which gets appended to the message before transmission. Upon receiving the message with the appended digital signature, the receiver hashes the received message using the same hash function as the sender, and then uses the &lt;em&gt;public&lt;/em&gt; key of the sender to decrypt the digital signature back into a message digest. If the message digest from the digital signature decryption matches the message digest produced by hashing the received message with the same hash function, the receiver can be sure that the message came from the sender and hasn’t been tampered with during transmission.&lt;/p&gt;

&lt;p&gt;With that in mind, DKIM works essentially the same way. The sending email server essentially takes an outbound email, hashes it (well, parts of it, e.g., the subject, the from address, the body, etc.) to produce a message digest, encrypts that digest with a private key to create a DKIM signature, then appends that signature to the outbound email before transmitting it. The receiving server, upon receiving the signed email, hashes the email with the same hash function used by the sender to produce a new message digest, then retrieves the sending server’s public key by querying DNS (since the sending server public key is stored publicly in DNS) and uses that public key to decrypt the appended DKIM signature back into a message digest. If the two digests match, the email has not been tampered with and it certainly came from the expected sender. If they don’t, well, different things can happen, which is where DMARC comes in.&lt;/p&gt;

&lt;h2&gt;
  
  
  DMARC: Demarcating Good Emails from Bad Emails
&lt;/h2&gt;

&lt;p&gt;First published in 2012, the &lt;a href="https://en.wikipedia.org/wiki/DMARC"&gt;Domain-based Message Authentication, Reporting and Conformance (DMARC)&lt;/a&gt; email authentication protocol builds upon the SPF and DKIM protocols to enable email senders and receivers to cooperatively defend against and report on fraudulent emails impersonating a domain. When emails fail to authenticate against SPF or DKIM, we need an explicitly defined way of handling and reporting those failures, whether that means blocking emails entirely or simply flagging them as suspicious and sending them on their merry (or rather, &lt;em&gt;maily&lt;/em&gt;) way. DMARC is the protocol that allows domain administrators to define this handling and reporting logic. Setting up DMARC is a matter of first choosing one of three policies: &lt;strong&gt;none&lt;/strong&gt;, &lt;strong&gt;quarantine&lt;/strong&gt;, or &lt;strong&gt;reject&lt;/strong&gt;. The &lt;strong&gt;none&lt;/strong&gt; policy is, as expected, the least restrictive policy that essentially does nothing aside from monitoring for report gathering; the &lt;strong&gt;quarantine&lt;/strong&gt; policy takes the emails that fail authentication and puts them in the recipient’s &lt;em&gt;junk&lt;/em&gt; folder rather than their main inbox; lastly, the &lt;strong&gt;reject&lt;/strong&gt; policy is of course the most restrictive in that it completely blocks the delivery of emails that fail authentication. There are also a number of other configurable properties for the DMARC protocol centered on things like aggregate and forensic reporting, subdomain-specific policies, and strict versus relaxed alignment rules as seen pretty clearly in this very simple &lt;a href="https://mxtoolbox.com/DMARCRecordGenerator.aspx?domain=cofc.edu"&gt;MX Toolbox DMARC Record Generator tool&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The important thing to note is that DMARC can be enabled with a range of very different behaviors for a domain depending on specific needs, from super simple, non-blocking report generation about fraudulent emails to full-fledged blocking of emails that look even slightly fraudulent — even in cases where they aren’t. This leads us to ARC.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  ARC — Keeping Emails Afloat with Strict Security Settings
&lt;/h2&gt;

&lt;p&gt;In defense against rising — rather, “&lt;a href="https://newsroom.trendmicro.com/2022-06-21-Email-Threats-Spike-101-,-Remains-a-Top-Attack-Vector"&gt;spiking&lt;/a&gt;” — threats to email security, an increasing number of domains are adopting strict DMARC policies due to the protection it provides from attackers and the visibility it provides of their activity. But there is a catch. Anyone who works in software surely knows that &lt;strong&gt;whenever you start locking a system down to make it more secure, new usability issues are bound to pop up&lt;/strong&gt; (e.g., locking down east-west traffic in a data center with a firewall to make a local network more secure inherently increases the difficulty of setting up new applications and services within that network).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;That doesn’t make the security not worth it, though.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Assume an organization has set up the SPF and DKIM protocols and has also set up DMARC with the &lt;strong&gt;reject&lt;/strong&gt; policy such that any emails failing authentication against SPF &lt;em&gt;and&lt;/em&gt; DKIM do not get delivered. Now, also assume that the organization has a communications team that uses a &lt;a href="https://en.wikipedia.org/wiki/Mailing_list"&gt;mailing list&lt;/a&gt;, or &lt;a href="https://www.duocircle.com/content/email-forwarder-free"&gt;third-party-forwarder&lt;/a&gt;, to send out a weekly newsletter to subscribers, or perhaps marketing materials to interested potential customers. Each week, when sending out the mass email, the communications team sends their message to the &lt;em&gt;mailing list server&lt;/em&gt; which consumes, processes, slightly changes, and then relays the message onward to the subscribers of the list. Unfortunately, because of the changes made to the message by the mailing list during the processing, the message no longer produces the same digest when hashed, which means DKIM will fail on the receiving end. Also, if the organization hasn’t explicitly included the address of the intermediary mailing list server in the authorized senders list of their domain’s SPF record, SPF will also fail since the receiving mail server will attempt to verify the received message isn’t spoofed by asserting the sender’s address (the address of the mailing list server) is in the list of the domain’s authorized senders (where the domain is pulled from the email’s Return-Path).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/ghuvaCOI6GOoTX0RmH/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/ghuvaCOI6GOoTX0RmH/giphy.gif" alt="Michael Scott saying What?" width="480" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In other words, if A sends to B and B forwards to C, C is going to find that B is not authorized to send on behalf of A if A hasn’t set up B as an authorized sender with SPF. Now, if the organization sending out this communication has set up their email security policies to block delivery of these messages failing authentication, &lt;strong&gt;they’re not reaching their audience.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As &lt;a href="https://www.youtube.com/watch?v=IsxZSHmdntE"&gt;explained by Steven Jones, Executive Director of DMARC.org&lt;/a&gt; the &lt;a href="https://en.wikipedia.org/wiki/Authenticated_Received_Chain"&gt;Authenticated Received Chain (ARC)&lt;/a&gt; protocol announced in 2016 aims to fix this problem. Basically, with this protocol, the authentication results of the original email, whether pass or fail, can be preserved across an arbitrary number of hops to a final destination (no supernatural horror involved, I promise!).&lt;/p&gt;

&lt;p&gt;Taking the previous example, the intermediary server B would observe and record the authentication results of SPF and DKIM of the email from the original server A and would append the results to the email before sending it onward to C. It appends these results in the form of a new &lt;strong&gt;ARC-Authentication-Results (AAR)&lt;/strong&gt; header combining the SPF, DKIM, and DMARC results with an instance number &lt;em&gt;i&lt;/em&gt;, where &lt;em&gt;i&lt;/em&gt; is really a count of intermediary servers in the chain so far. It would also add an &lt;strong&gt;ARC-Seal (AS)&lt;/strong&gt; header, which is a combination of a that same number &lt;em&gt;i&lt;/em&gt;, a DKIM-esque signature of previous ARC-Seal headers, and the validity of prior ARC entries. Lastly, it would add an &lt;strong&gt;ARC-Message-Signature (AMS)&lt;/strong&gt; header, which again combines the instance number &lt;em&gt;i&lt;/em&gt; with a DKIM-esque signature of the entire email minus the ARC-Seal headers. So, as you move down a chain of intermediary forwarding services of arbitrary length, the instance number &lt;em&gt;i&lt;/em&gt; starts at 1 at the first forwarder and continues incrementing until reaching the last forwarder, and each forwarder has to use the ARC-* headers from the previous forwarder to calculate its own new ARC-* headers. At the end of the line, the receiver obtains the preserved authentication results for the original email by 1) verifying that there are no missing ARC-Seal entries and each ARC-Seal entry states that the previous one is valid, and 2) validating the newest AMS (with the highest instance number &lt;em&gt;i&lt;/em&gt;), which works similarly to &lt;strong&gt;DKIM signature verification&lt;/strong&gt; discussed previously.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This chain means that even if SPF and DKIM fail for the email at the destination C, C can alternatively choose to validate the email by validating the ARC chain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is, assuming C trusts B as an ARC signer, and B signed the authentication results of the original email, then C can trust those signed original results as valid. This same idea, of course, can be arbitrarily extended to an ARC chain of any length if each successive server in the chain trusts the ARC signature of the server before it and the receiver trusts the last one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;With the announcement of the ARC protocol, the trend toward stronger email security via stricter DMARC policies can continue without compromise because ARC will eliminate the common problem of SPF and DKIM failure associated with intermediary email forwarding services. The ARC protocol, at a high level, functions somewhat similarly to a &lt;a href="https://www.thesslstore.com/knowledgebase/ssl-support/explaining-the-chain-of-trust/"&gt;chain of trust&lt;/a&gt; used for validating SSL certificates, but it’s specifically geared toward the preservation of trusted email authentication results (from SPF, DKIM, and DMARC) through a multi-hop chain of intermediary services that an email may travel through before reaching its final recipients. As outlined &lt;a href="https://dmarcly.com/blog/what-is-authenticated-received-chain-arc"&gt;here on DMARCLY&lt;/a&gt; in 2019, contrary to the SPF, DKIM, and DMARC protocols, enabling ARC doesn’t require any specific action or DNS updates, as the ARC implementation happens server-side, transparently to senders. Since ARC was published as &lt;a href="https://www.rfc-editor.org/info/rfc8617"&gt;RFC 8617&lt;/a&gt; in July 2019, its implementation is still in early stages but will certainly speed up, and there are actually already some email services, like &lt;a href="https://www.sympa.org/"&gt;Sympa&lt;/a&gt; and Google’s &lt;a href="https://gmail.com/"&gt;Gmail&lt;/a&gt; (as one would expect), that are using it.&lt;/p&gt;

&lt;p&gt;Please enjoy the following GIF of a chain made of arcs. Yes, I am assuming the edges are directed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/MFabj1E9mgUsqwVWHu/giphy-downsized-large.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/MFabj1E9mgUsqwVWHu/giphy-downsized-large.gif" alt="This is a concluding GIF of a chain of arcs." width="449" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Breaking Down Modern Trust: Digital Signatures and Their Impact on Business</title>
      <dc:creator>Austin Hunt</dc:creator>
      <pubDate>Sun, 23 Oct 2022 23:37:17 +0000</pubDate>
      <link>https://dev.to/austinjhunt/breaking-down-modern-trust-digital-signatures-and-their-impact-on-business-adb</link>
      <guid>https://dev.to/austinjhunt/breaking-down-modern-trust-digital-signatures-and-their-impact-on-business-adb</guid>
      <description>&lt;p&gt;Running a successful business, whether in finance, education, health, manufacturing, retail, or even &lt;a href="https://www.doomsdayprep.com/"&gt;doomsday prep gear distribution&lt;/a&gt; (that’s real), requires trust — trust between the business and other businesses providing third party services (or investors providing money), trust between the business and their clients using &lt;em&gt;their&lt;/em&gt; service, and trust within the business itself. Without inter-business trust, an organization cannot fully leverage the services provided by others; without client trust, the services provided by a business have no value; without intra-business trust — that is, trust among the internal units of the organization — communication channels that allow for internal productivity fail and services cannot be provided, which then can collapse both client and inter-business trust. As Bruce Nolan would say,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“That’s the way the cookie crumbles.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Extending this idea to the modern world, in which a business’s success increasingly requires a digital presence, we can begin thinking about the value of &lt;a href="https://www.cisa.gov/tips/st04-018"&gt;digital signatures&lt;/a&gt; in bolstering the architecture of that trust triangle in a digital context.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Do Digital Signatures Provide?
&lt;/h2&gt;

&lt;p&gt;In a nutshell, digital signatures provide proof that something digitally received is coming from the expected sender and has not been tampered with during its transmission. This means that when using digital signatures, we can receive information and files over the internet without losing our trust in the integrity and authenticity of what we are receiving. On the other side of that same coin is non-repudiation, or the guarantee that the sender cannot deny their authorship of the item received since their digital signature (ultimately, their private key) is unique to them.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do They Work?
&lt;/h2&gt;

&lt;p&gt;On the sender side, the message being sent (which could simply be text or perhaps a file) is first hashed to produce a &lt;strong&gt;message digest&lt;/strong&gt;. That message digest is then encrypted using the private key (assumed to be truly private and unique to the sender). The output of that encryption, which is the digital signature, gets appended to the original message being sent. Note here that the original plaintext message is not encrypted by the creation of a digital signature, so encrypting the message is a separate optional step that can be taken pre-transmission for confidentiality purposes. More details about this step are provided in the &lt;strong&gt;What Digital Signatures Do Not Provide&lt;/strong&gt; section.&lt;/p&gt;

&lt;p&gt;Upon receiving the message, the receiver uses the public key owned by the sender to decrypt the digital signature, which produces the message digest (i.e., the hash output). Since public key infrastructure is built on the idea that something locked with a private key can only be unlocked with the corresponding public key and something unlocked with the public key &lt;strong&gt;must&lt;/strong&gt; have been locked by the corresponding private key, the receiver can trust that the message digest came from the expected sender who owns the private key. Knowing the message digest, the receiver then hashes the plaintext message (possibly after decrypting it if it was encrypted pre-transmission for confidentiality) to produce their own message digest. To do this, they use the same hash function that was used by the sender. If &lt;strong&gt;their&lt;/strong&gt; message digest matches the message digest produced from &lt;strong&gt;decrypting the digital signature&lt;/strong&gt;, then the message is guaranteed to have come from the expected sender without tampering from a middleman. The key assumptions here are the true privacy of the sender’s private key and the use of a cryptographically secure hash function that will not produce the same message digest for two distinct messages. For example, you wouldn’t want a hash function that produces the same digest for a) a malicious message linking to a fake website and b) a real, non-malicious message with information about a policy update.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Digital Signatures Do Not Provide
&lt;/h2&gt;

&lt;p&gt;While digital signatures do guarantee the integrity of received digital content and provide non-repudiation (i.e., the author of the signed content received cannot deny their authorship as the sole owner of the private key used to generate the signature), they do not inherently guarantee confidentiality. Digital signatures do not necessitate the encryption of the message whose integrity is being validated. Rather, the message &lt;strong&gt;digest&lt;/strong&gt; (the hashed value of the message) is encrypted with the private key and that encrypted value is appended to the &lt;strong&gt;plaintext&lt;/strong&gt; message before transmission. To achieve confidentiality as well, the message itself would also need to be encrypted by the sender with the &lt;strong&gt;public key of the receiver&lt;/strong&gt; pre-transmission and then decrypted by the receiver with their own private key. Note that these “guarantees” assume that private keys are truly kept private, which is the assumption underlying public key infrastructure as a whole.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Real-World Example from My Own Experience
&lt;/h2&gt;

&lt;p&gt;Consider a higher education institution (which, indeed, &lt;a href="https://www.insidehighered.com/blogs/student-affairs-and-technology/business-higher-education"&gt;is a business&lt;/a&gt;) which pays for a Microsoft 365 tenant that provides all faculty, staff, and students with the Office 365 suite of tools for file sharing, emailing, chatting, and generally collaborating both within the organization and with external users, groups, and vendors. In this scenario, through the lens of the previously discussed trust triangle, we consider students (prospective and current) as customers, faculty and staff as the internal business actors, and entities like vendors and donors as external stakeholders on the inter-business edge.&lt;/p&gt;

&lt;p&gt;The day-to-day business processes of each administrative and academic department, each office, and generally each team within the organization are critical to its overall success, and many of those processes heavily involve consistent internal sharing of (and acting upon) information in the modes of emails, forms and files representing various aspects of student (customer) statuses from academic standings to financial aid eligibilities to degree audits and so on. Thus, the trust in the integrity of digital information is critical to those various processes; a loss of trust removes “actionable” from “actionable information.” A loss of action is a loss of productivity, which crumbles the cookie.&lt;/p&gt;

&lt;p&gt;Moreover, higher education institutions significantly depend upon external vendors for managing things like events, facilities, software, websites, IT infrastructure, and more. While the initial touchpoints with such vendors certainly require trustable communication, especially when regarding expensive services, the ongoing relationships between the organization and those parties often involves more intensive file sharing, emailing, and collaboration that requires both sides to trust in their digital exchanges. Losing faith in the integrity of files or software shared by a software vendor, for example, could have expensive negative implications resulting in the termination of a contract, and perhaps the loss of a student-facing service which affects &lt;em&gt;their&lt;/em&gt; trust as customers.&lt;/p&gt;

&lt;p&gt;Of course, students need to be able to trust the school they’re attending or considering attending, and a big factor in that trust is the communication they receive (or don’t receive). A majority of the communication students do receive is sent via email (&lt;a href="https://eab.com/insights/daily-briefing/student-success/4-reasons-students-dont-read-your-emails-and-how-to-change-that/"&gt;though the effectiveness of this channel is questionable&lt;/a&gt;, but that is a rabbit hole that we can avoid here). Let’s say a student enters their contact details into a “request more information” form on the school’s public website. Then, the school adds them to a communication plan, and they begin receiving spammy or malicious-looking emails from what appears to be that school — or worse, they get a virus — because of the email content being tampered with during transmission. If a student doesn’t trust information shared by a school, the chance of that student crossing that school off their list increases; at scale, that gets expensive for the institution.&lt;/p&gt;

&lt;p&gt;Fortunately, the Office 365 suite on which the institution’s faculty and staff rely for file and information sharing offers methods for adding digital signatures both to &lt;a href="https://support.microsoft.com/en-us/office/secure-messages-by-using-a-digital-signature-549ca2f1-a68f-4366-85fa-b3f4b5856fc6"&gt;emails sent via Outlook&lt;/a&gt; (in addition to those regular signatures) and to &lt;a href="https://support.microsoft.com/en-us/topic/add-or-remove-a-digital-signature-in-office-files-70d26dc9-be10-46f1-8efa-719c8b3f1a2d"&gt;files created with Office apps&lt;/a&gt; like Word and Excel. This means receivers of files and emails sent by people &lt;strong&gt;who use those digital signatures&lt;/strong&gt; (this is key) can be confident in their content, whether the receiver is a faculty member, a staff member, an external party, or a student.&lt;/p&gt;

&lt;p&gt;Unfortunately, these signatures are &lt;strong&gt;optional&lt;/strong&gt;, and their additions are up to the individual authors. Currently, it doesn’t look like Microsoft tenant admins are able to establish a domain-wide policy requiring their use. Rather, an issue like this prompts a need for communication across the organization about the importance of email security and integrity that includes instructions for enabling and using digital signatures when authoring content — especially important content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In short, we need trust to run successful businesses, because a loss of trust means a loss of actionable information, and a loss of actionable information is a loss of action, which means a loss of productivity. One way (of many) of supporting that foundational trust is the use of digital signatures, which use &lt;a href="https://en.wikipedia.org/wiki/Public-key_cryptography"&gt;public-key cryptography&lt;/a&gt; to allow senders to digitally sign messages and receivers to verify the integrity and authenticity of those signed messages. Digital signatures, while indeed used to verify integrity, do not inherently protect confidentiality; messages being signed and verified are &lt;strong&gt;not encrypted&lt;/strong&gt; with digital signatures by default and need to be encrypted as a &lt;strong&gt;separate step&lt;/strong&gt; before transmission in order to keep them private.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Movin' On Up: An Analysis of The Privilege Escalation Vulnerability CVE-2022-26923</title>
      <dc:creator>Austin Hunt</dc:creator>
      <pubDate>Sun, 23 Oct 2022 23:25:31 +0000</pubDate>
      <link>https://dev.to/austinjhunt/movin-on-up-an-analysis-of-the-privilege-escalation-vulnerability-cve-2022-26923-2hf9</link>
      <guid>https://dev.to/austinjhunt/movin-on-up-an-analysis-of-the-privilege-escalation-vulnerability-cve-2022-26923-2hf9</guid>
      <description>&lt;p&gt;This article provides analysis of &lt;a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-26923"&gt;CVE-2022–26923&lt;/a&gt;, a vulnerability at the intersection of &lt;a href="https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/get-started/virtual-dc/active-directory-domain-services-overview"&gt;Active Directory (AD)&lt;/a&gt; and &lt;a href="https://www.securew2.com/blog/active-directory-certificate-services-ad-cs-explained"&gt;Active Directory Certificate Services (AD CS)&lt;/a&gt; that was &lt;a href="https://research.ifcr.dk/certifried-active-directory-domain-privilege-escalation-cve-2022-26923-9e098fe298f4"&gt;discovered&lt;/a&gt; and reported privately through &lt;a href="https://www.zerodayinitiative.com/"&gt;Zero Day Initiative&lt;/a&gt; by &lt;a href="https://medium.com/@oliverlyak"&gt;Oliver Lyak&lt;/a&gt; and patched on May 10, 2022, which allowed for a low-privileged attacker to escalate their privileges through impersonation of another computer account under the guise of a requested authentication certificate.&lt;br&gt;
As the go-to directory service from Microsoft for Windows domain networks, Active Directory (AD), or more formally &lt;a href="https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/get-started/virtual-dc/active-directory-domain-services-overview"&gt;Active Directory Domain Services (AD DS)&lt;/a&gt;, is a prime target for attackers who want to obtain access to resources on a network.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/QFypAZbq5lz3i/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/QFypAZbq5lz3i/giphy.gif" alt="merida from brave shooting a bow and arrow at a target" width="425" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In a nutshell, AD functions as both a distributed data store and an access control mechanism for organizations using it, including within its scope not just users and groups but other objects like servers, printers, and computers within the network - i.e., networked resources to which access needs to be controlled. Offering quite a simple hierarchical organization, AD makes it easy for domain administrators (often a centralized Identity and Access Management team within the organization) to control access to resources; it also enables authorized network users to navigate and query for information about other users and networked resources in their organization.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge
&lt;/h2&gt;

&lt;p&gt;Let's start with an assumption: you're a user on the network with normal, non-administrative permissions - or perhaps you're not, but you have obtained the identity of someone who is.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/1ziDTlTl9z9iwVK5QA/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/1ziDTlTl9z9iwVK5QA/giphy.gif" alt="Conan putting on a disguise" width="500" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How can you use Active Directory, as described above, to (perhaps &lt;em&gt;further&lt;/em&gt;) escalate your privileges and obtain access to a resource on the network to which you currently do not have access?&lt;/p&gt;

&lt;p&gt;First, privilege escalation would be a bit difficult without visibility of whose privilege level should be targeted. Of course, as mentioned previously, AD does offer the ability for an authorized domain user to simply query the data for information they're interested in like usernames, email addresses, group memberships, etc., which is one way that visibility could be obtained. However, we've seen that with a tool like &lt;a href="https://bloodhound.readthedocs.io/en/latest/"&gt;Bloodhound&lt;/a&gt;, that same domain user (or someone impersonating them on the network) could automatically obtain a graphical visualization (built with a fantastic graph data platform called &lt;a href="https://neo4j.com/"&gt;Neo4j&lt;/a&gt;) not only depicting who the domain administrators are within AD, but also what the shortest path of privilege escalation is to each of those administrators - all essentially at the click of a button.&lt;/p&gt;

&lt;p&gt;Basically, any domain user can obtain this information about their domain by logging into AD, running &lt;a href="https://bloodhound.readthedocs.io/en/latest/data-collection/sharphound.html"&gt;SharpHound&lt;/a&gt; to collect the data from it in JSON format, and then piping that collected data right into the Neo4j-based Bloodhound visualizer. From that point, it's a matter of following the yellow brick road - that is, mapping a route to a target with desired privileges by following the graph edges that reveal useful vulnerabilities. Graph theory, permissions, memberships, oh my.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/ycdNP5BQRz51S/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/ycdNP5BQRz51S/giphy.gif" alt="Wizard of Oz; follow the yellow brick road" width="250" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As an example, you may want to access a domain admin's account, and you notice in the Bloodhound graph that a non-admin has permission within AD to &lt;a href="https://www.thehacker.recipes/ad/movement/dacl/forcechangepassword"&gt;force change one or all of the domain admins' passwords&lt;/a&gt;, so you identify that non-admin as the next target for impersonation.&lt;/p&gt;

&lt;p&gt;Now, assume that you have identified a target for impersonation-based escalation of privileges. Assuming that target is a computer or server account (not a user account), CVE-2022–26923 was a vulnerability that offered a method of carrying out that impersonation.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Pause for Some Context
&lt;/h2&gt;

&lt;p&gt;Introduced in Windows Server® 2008, &lt;a href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/hh831740(v=ws.11)"&gt;Active Directory Certificate Services (AD CS)&lt;/a&gt; is another &lt;a href="https://redmondmag.com/articles/2015/12/10/server-roles-in-active-directory.aspx"&gt;AD Server Role&lt;/a&gt; leveraging &lt;a href="https://en.wikipedia.org/wiki/Public_key_infrastructure"&gt;public key infrastructure (PKI)&lt;/a&gt; to provide domain users with the ability to create digital certificates. Such digital certificates could be used for general encryption to protect data confidentiality, for the generation of &lt;a href="https://www.cisa.gov/tips/st04-018#:~:text=Digital%20signatures%20create%20a%20virtual,part%20of%20the%20digital%20signature."&gt;digital signatures&lt;/a&gt; to protect message integrity during transmission, or even for authentication against AD, which is the focal use case for the purpose of this analysis since successful privilege escalation via impersonation is all about false positives when authenticating.&lt;br&gt;
With public key infrastructure, on which AD CS is built, one of the overarching ideas is that with any public-private key pair, the private key is kept truly private by the owner and thus can be used to identify and authenticate that owner (which has additional &lt;a href="https://csrc.nist.gov/glossary/term/non_repudiation"&gt;non-repudiation&lt;/a&gt; implications). If that owner signs (encrypts) something with their private key, the only way it can be decrypted is with the corresponding public key; more importantly, any message decrypted with a public key can only have come from the owner with the corresponding private key. This theory underlying PKI opens the door to &lt;a href="https://docs.oracle.com/cd/E19575-01/820-2765/6nebir7eb/index.html"&gt;digital certificate-based authentication&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;By associating, or binding, the digital certificates with accounts on a network in AD (whether computer accounts, user accounts, or device accounts), AD CS allows for those accounts to authenticate against AD using their respective digital certificates. Certificate-based authentication is itself an interesting process relying on password entry in addition to digital signature verification, but this paper will avoid diving into that rabbit hole. Note that this process of binding a digital certificate to an identity for the purpose of it being used to authenticate them should be done in a way that other identities cannot forge that binding. This was the problem behind CVE-2022–26923 - AD CS allowed digital certs to be bound to identities via an attribute (dNSHostName) that could be reused arbitrarily for other identities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using CVE-2022–26923 to Escalate Privileges
&lt;/h2&gt;

&lt;p&gt;As documented by the &lt;a href="https://www.semperis.com/blog/ad-vulnerability-cve-2022-26923/"&gt;Semperis Research Team in August of 2022&lt;/a&gt;, there were ultimately two main steps that needed to be completed in order to exploit the CVE-2022–26923 privilege escalation vulnerability. First, the attacker needed to change the &lt;a href="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/5c578b15-d619-408d-ba17-380714b89fd1"&gt;dNSHostName&lt;/a&gt; of their own computer account to match the target computer or server account's dNSHostName value (e.g., that of a domain controller computer account). Then, the attacker needed to obtain a digital certificate bound to their own falsely identified computer account by requesting one with a template configured with the SubjectAltRequireDns flag. This flag essentially sets the Subject of the digital certificate to the dNSHostName value of the requesting computer account (without any sort of validation), where the Subject ultimately identifies the computer account bound to the public key. Note that for the first step, there was actually a prerequisite of the attacker creating their own computer account as a logged in user in AD (a feature &lt;em&gt;enabled by default&lt;/em&gt; in AD), since dNSHostName attributes can be modified only on computer accounts created by the editor.&lt;br&gt;
The presence of this vulnerability meant that an attacker with access to AD could pick and choose from active AD computer accounts and use a default, built-in component of AD to arbitrarily impersonate any desired target via false digital certificate authentication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mitigation
&lt;/h2&gt;

&lt;p&gt;The easiest, most &lt;strong&gt;sledgehammery&lt;/strong&gt; (looky there, I coined a term) fix for this problem would probably be to simply not run AD CS within a Windows domain network, as AD CS is the root of the CVE-2022–26923 rot. This would entirely prevent digital certificate-based authentication, but of course flipping such a broad switch has equivalently broad implications at the enterprise scale which may include, for example, service outages for services running on machines that use certificate-based authentication against AD for valid purposes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/QNFhSB9oz8BMr5QyzK/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/QNFhSB9oz8BMr5QyzK/giphy.gif" alt="Guy flipping a breaker" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Luckily, Microsoft made an &lt;a href="https://support.microsoft.com/en-us/topic/kb5014754-certificate-based-authentication-changes-on-windows-domain-controllers-ad2c23b0-15d8-4340-a468-4d4f3b188f16"&gt;announcement&lt;/a&gt; pretty quickly in response to the vulnerability disclosure about a new change to the way certificate-based authentication would be handled by Windows domain controllers. The announcement included explicit actions that needed to be taken to protect domain environments, namely the application of the May 10, 2022 update which placed AD devices into compatibility mode designed primarily to generate audits ahead of a recommended switch to full enforcement mode which, in short, would begin blocking certain authentication attempts not meeting updated digital certificate criteria.&lt;br&gt;
Those criteria were centered on the idea of certificate mappings, or the bindings mentioned previously, where a mapping between a digital certificate and an account is considered weak, or insecure, if it relies on an identifier that can be reused by other accounts (i.e., the dNSHostName attribute). Certificates weakly mapped to identities would consequently generate audit events in compatibility mode for investigation and fixing, and would entirely fail to authenticate those identities upon the enabling of the update's full enforcement mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In short, CVE-2022–26923 was a significant vulnerability within the Active Directory Certificate Services server role that allowed attackers to leverage weak bindings between identities and their digital certificates such that one could completely bypass the security of public-key infrastructure by simply requesting (and obtaining) a digital certificate identifying them in AD as their desired target. Upon its discovery and disclosure on May 10, 2022, it was quickly addressed by an update to the AD CS server role which requires &lt;strong&gt;stronger, non-forgeable&lt;/strong&gt; bindings between digital certificates and AD identities.&lt;/p&gt;

</description>
      <category>cve202226923</category>
      <category>privilegeescalation</category>
      <category>security</category>
      <category>activedirectory</category>
    </item>
    <item>
      <title>Foundations: First Blog Post</title>
      <dc:creator>Austin Hunt</dc:creator>
      <pubDate>Sat, 05 Mar 2022 18:30:44 +0000</pubDate>
      <link>https://dev.to/austinjhunt/foundations-first-blog-post-m5g</link>
      <guid>https://dev.to/austinjhunt/foundations-first-blog-post-m5g</guid>
      <description>&lt;p&gt;As I sit here preparing to write before these two Chrome windows -- one presenting a blank canvas and the other claiming to present &lt;a href="https://inter-growth.co/content-marketing/write-first-blog-post/"&gt;Expert Advice&lt;/a&gt; on how to fill it -- I can't help but to think of that episode of SpongeBob SquarePants in which he pours his heart and spongey soul into the first word of that 800 word essay for Boating School in a subconscious attempt to escape the work of actual writing.  &lt;/p&gt;

&lt;p&gt;The. I feel you, SpongeBob. &lt;/p&gt;

&lt;p&gt;Luckily, I don't have a blog post due first thing in the morning -- nor am I attending Boating School -- so I'm not technically procrastinating, but one could argue this cartoon-themed introduction on what's supposed to be a developer-themed blog post is just as much a useless decoration as SpongeBob's highly intricate calligraphy.&lt;/p&gt;

&lt;p&gt;One would be wrong. The theme of this post is just that: &lt;/p&gt;

&lt;h3&gt;
  
  
  I don't know what I'm writing about yet.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/w0mylo7p4OXUQ/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/w0mylo7p4OXUQ/giphy.gif" width="350" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I &lt;em&gt;could&lt;/em&gt; say that I started writing this post with a clear direction in mind -- that I'm taking you, the reader, on a journey into the great beyond, like I'm some sort of confident safari tour guide with one of those nice pairs of binoculars that he doesn't even use because he sees that far ahead. I &lt;em&gt;could&lt;/em&gt; recommend that you leave your mental umbrella behind because there's nothing but clarity ahead, and that there's no need to use Waze because I've been memorizing the map to where we're going and studying traffic patterns since I was three years old. I &lt;em&gt;could&lt;/em&gt; promise that I won't use any more ridiculous analogies.&lt;/p&gt;

&lt;p&gt;As much as I'd like those things to be true, they're not. I honestly don't even know what the next post is going to be about. It could be about puppies, and how they're all ultimately good (it's been formally verified with a symbolic model checker). Or, it could be about my experience with the automation of enterprise-level web application deployment.  &lt;strong&gt;Either way, I'm pretty stoked.&lt;/strong&gt; I've never really maintained my own official blog on a platform like this with the expectation that other people will be reading what I'm writing, but I've reached a point in my career where &lt;strong&gt;I'd like to start prioritizing engagement with the developer community&lt;/strong&gt; for a couple of reasons. First, I feel like I've collected a decent amount of development experience in the forms of challenges, successes, and failures worth sharing with others. Secondly, and more importantly, there is a ton to be learned from other developers. The ever-changing nature of tech guarantees that we're only ever scratching the surface, and the set of learnable things, like 

&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;R\mathbb{R}&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathbb"&gt;R&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
, is uncountably infinite. &lt;/p&gt;

&lt;h2&gt;
  
  
  What To Expect From My Blog
&lt;/h2&gt;

&lt;p&gt;While I don't know exactly what I'm aiming for yet, there are a number of topics that I'm considering for upcoming posts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.djangoproject.com/"&gt;Django&lt;/a&gt; development tips and tricks - for context, I started web development with Django in 2017 at &lt;a href="https://cofc.edu"&gt;College of Charleston&lt;/a&gt; under guidance from &lt;a href="https://www.amhajja.com/"&gt;Dr. Ayman Hajja&lt;/a&gt;, an absolute Django expert (who also happens to be a source of inspiration for starting this blog)&lt;/li&gt;
&lt;li&gt;Building custom automation frameworks in Python&lt;/li&gt;
&lt;li&gt;Setting up custom CI/CD pipelines using &lt;a href="https://github.com/features/actions"&gt;GitHub Actions&lt;/a&gt;, &lt;a href="https://www.docker.com/"&gt;Docker&lt;/a&gt;, and &lt;a href="https://github.com/adnanh"&gt;adnanh's&lt;/a&gt; &lt;a href="https://github.com/adnanh/webhook"&gt;webhook project&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Using &lt;a href="https://www.ansible.com/"&gt;Ansible&lt;/a&gt; for automating infrastructure management&lt;/li&gt;
&lt;li&gt;Using &lt;a href="https://icinga.com/docs/icinga-2/latest/doc/01-about/"&gt;Icinga 2&lt;/a&gt; with &lt;a href="https://icinga.com/docs/icinga-director/latest/doc/01-Introduction/"&gt;Icinga Director&lt;/a&gt; for network monitoring and alerting&lt;/li&gt;
&lt;li&gt;other niche "how-tos" &lt;/li&gt;
&lt;li&gt;the work/life line and the challenge of defining that as either &lt;code&gt;border:20px solid black;&lt;/code&gt; or &lt;code&gt;border:none;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;projects for school that I'm working on or excited about&lt;/li&gt;
&lt;li&gt;the intersection of being both a fully remote student and a fully remote IT employee &lt;/li&gt;
&lt;li&gt;maintaining interest in &lt;a href="https://www.sketchyactivity.com"&gt;hobbies&lt;/a&gt; outside of software and web development, and allocating time to those things (with focus on avoiding or dealing with burnout from work/school)
 
&lt;img src="https://i.giphy.com/media/ckTRTDXhDF652ltrK9/giphy.gif" width="480" height="270"&gt;
 &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  First Post Feedback
&lt;/h2&gt;

&lt;p&gt;I want to thank you for reading this far, even if you're a spider automatically crawling this text -- there'd be no web without you, you creepy crawler, and I've grown to &lt;em&gt;love&lt;/em&gt; the web. For you non-arachnids still reading, leave a comment on this post if you liked it, or even if you didn't like it, and let's connect! If there's anything I've mentioned in this first post that sounds interesting, or if there's something I didn't mention that you'd like me to consider as a topic for a future post, let me know! &lt;/p&gt;

</description>
      <category>firstpost</category>
      <category>django</category>
      <category>automation</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
