<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>MFA Fatigue on IAMDevBox</title><link>https://www.iamdevbox.com/tags/mfa-fatigue/</link><description>Recent content in MFA Fatigue on IAMDevBox</description><image><title>IAMDevBox</title><url>https://www.iamdevbox.com/IAMDevBox.com.jpg</url><link>https://www.iamdevbox.com/IAMDevBox.com.jpg</link></image><generator>Hugo -- 0.146.0</generator><language>en-us</language><lastBuildDate>Sat, 18 Apr 2026 14:40:06 +0000</lastBuildDate><atom:link href="https://www.iamdevbox.com/tags/mfa-fatigue/index.xml" rel="self" type="application/rss+xml"/><item><title>MFA Fatigue: Why Your 'Secure' Push Notifications Are Getting You Hacked</title><link>https://www.iamdevbox.com/posts/mfa-fatigue-why-your-secure-push-notifications-are-getting-you-hacked/</link><pubDate>Sat, 18 Apr 2026 14:40:03 +0000</pubDate><guid>https://www.iamdevbox.com/posts/mfa-fatigue-why-your-secure-push-notifications-are-getting-you-hacked/</guid><description>Discover how MFA Fatigue exploits human behavior to breach security. Learn to enforce number matching and use FIDO2 keys to protect your organization.</description><content:encoded><![CDATA[<h3 id="why-this-matters-now">Why This Matters Now</h3>
<p>In the wake of recent high-profile security breaches, companies are investing heavily in robust Identity Providers (IdPs) and multi-factor authentication (MFA) solutions. However, these investments can be undermined by a phenomenon known as MFA Fatigue. Attackers exploit human psychology to bypass MFA by overwhelming users with repeated authentication prompts, leading to compromised accounts. This became urgent because traditional MFA methods like simple &ldquo;Approve/Deny&rdquo; buttons are no longer sufficient to protect against sophisticated attacks.</p>
<h3 id="the-mechanics-prompt-bombing">The Mechanics: Prompt Bombing</h3>
<p>MFA Fatigue, also known as Prompt Bombing, is a prevalent attack vector used by threat actors such as Lapsus$ and Scattered Spider. These attackers typically start with stolen credentials, often purchased on darknet markets or obtained through phishing attacks. Once they have a valid username and password, the only barrier to entry is the MFA prompt.</p>
<h4 id="how-it-works">How It Works</h4>
<ol>
<li><strong>Credential Acquisition</strong>: Attackers acquire valid credentials through various means, such as phishing or credential stuffing.</li>
<li><strong>Prompt Bombing</strong>: They script the login portal to send multiple MFA prompts in quick succession. This creates a flood of notifications, overwhelming the user.</li>
<li><strong>Exploiting Human Psychology</strong>: Exhausted and frustrated, users are more likely to approve any prompt without verifying its legitimacy.</li>
<li><strong>Session Token Capture</strong>: Once the user approves the prompt, the attacker captures the session token and gains unauthorized access.</li>
</ol>
<h4 id="real-world-example">Real-World Example</h4>
<p>Imagine Kevin in Sales receives his password scraped by an infostealer. At 2:14 AM, his phone buzzes. He ignores it. By 2:15 AM, his phone buzzes 30 more times. Tired and annoyed, Kevin eventually approves the prompt without checking its validity. The attacker now has access to Kevin&rsquo;s account and, potentially, the entire corporate network.</p>
<h3 id="the-fix-kill-the-approve-button">The Fix: Kill the &ldquo;Approve&rdquo; Button</h3>
<p>Relying on a simple &ldquo;Approve/Deny&rdquo; button for MFA is fundamentally flawed. Instead, organizations should enforce more robust verification methods.</p>
<h4 id="number-matching">Number Matching</h4>
<p>Number Matching is a more secure approach where the login screen displays a randomly generated 2-digit number. The user must open their authenticator app and manually type this specific number. This method ensures that the user is actively verifying the request, not just approving it blindly.</p>
<p><strong>Advantages</strong>:</p>
<ul>
<li><strong>Active Verification</strong>: Users must actively engage with the prompt, reducing the chance of accidental approval.</li>
<li><strong>Human Factor Mitigation</strong>: Even if the user is tired, they must perform an additional step to approve the request.</li>
</ul>
<h4 id="fido2-hardware-keys">FIDO2 Hardware Keys</h4>
<p>For highly privileged accounts (such as Domain Admins and Global Admins), phone-based MFA should be deprecated in favor of FIDO2 hardware keys, like YubiKeys. FIDO2 keys are cryptographically bound to the TLS session and the specific domain being accessed, making them resistant to phishing attacks.</p>
<p><strong>Advantages</strong>:</p>
<ul>
<li><strong>Phishing Resistance</strong>: FIDO2 keys cannot be tricked by phishing attempts, as they are tied to the specific domain.</li>
<li><strong>Strong Cryptography</strong>: The cryptographic binding ensures that the key can only be used for legitimate purposes.</li>
</ul>
<h3 id="the-code--config">The Code &amp; Config</h3>
<p>Implementing these fixes requires configuring your IdP correctly. Let&rsquo;s take a look at how to enforce Number Matching using Microsoft Entra ID (formerly Azure AD).</p>
<h4 id="enforce-number-matching-via-ms-graph-api">Enforce Number Matching via MS Graph API</h4>
<p>Microsoft Entra ID now defaults to Number Matching, but legacy policies might override this setting. To ensure strict enforcement, you can use the Microsoft Graph API to update the authentication method configuration.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#75715e">// PATCH https://graph.microsoft.com/v1.0/policies/authenticationMethodsPolicy/authenticationMethodConfigurations/microsoftAuthenticator
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>{
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;state&#34;</span>: <span style="color:#e6db74">&#34;enabled&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;numberMatchingRequired&#34;</span>: <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;includeTargets&#34;</span>: [
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;targetType&#34;</span>: <span style="color:#e6db74">&#34;group&#34;</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;id&#34;</span>: <span style="color:#e6db74">&#34;your-group-id&#34;</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;isRegistrationRequired&#34;</span>: <span style="color:#66d9ef">false</span>
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  ]
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p><strong>Explanation</strong>:</p>
<ul>
<li><strong>state</strong>: Enables the Microsoft Authenticator.</li>
<li><strong>numberMatchingRequired</strong>: Ensures that Number Matching is enforced.</li>
<li><strong>includeTargets</strong>: Specifies the groups or users to which this policy applies.</li>
</ul>
<h4 id="additional-configuration">Additional Configuration</h4>
<p>You can also enhance security by displaying application context and geographic location in the MFA prompt. This provides additional verification points for the user.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#75715e">// PATCH https://graph.microsoft.com/v1.0/policies/authenticationMethodsPolicy/authenticationMethodConfigurations/microsoftAuthenticator
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>{
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;state&#34;</span>: <span style="color:#e6db74">&#34;enabled&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;numberMatchingRequired&#34;</span>: <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;displayAppContext&#34;</span>: <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;displayLocationContext&#34;</span>: <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;includeTargets&#34;</span>: [
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;targetType&#34;</span>: <span style="color:#e6db74">&#34;group&#34;</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;id&#34;</span>: <span style="color:#e6db74">&#34;your-group-id&#34;</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;isRegistrationRequired&#34;</span>: <span style="color:#66d9ef">false</span>
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  ]
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p><strong>Explanation</strong>:</p>
<ul>
<li><strong>displayAppContext</strong>: Shows the application name in the MFA prompt.</li>
<li><strong>displayLocationContext</strong>: Displays the location of the login attempt.</li>
</ul>
<h3 id="key-takeaways">Key Takeaways</h3>
<ul>
<li><strong>MFA Fatigue is a serious threat</strong>: Traditional MFA methods like &ldquo;Approve/Deny&rdquo; buttons are vulnerable to human error.</li>
<li><strong>Enforce Number Matching</strong>: Implementing Number Matching reduces the risk of accidental approvals.</li>
<li><strong>Use FIDO2 Hardware Keys</strong>: For highly privileged accounts, FIDO2 keys provide stronger security and resistance to phishing attacks.</li>
<li><strong>Regularly update configurations</strong>: Ensure your IdP settings align with best practices to protect against evolving threats.</li>
</ul>
<div class="key-takeaway">
<h4>🎯 Key Takeaways</h4>
<ul>
<li>MFA Fatigue exploits human behavior to bypass security measures.</li>
<li>Enforce Number Matching to require active verification of MFA prompts.</li>
<li>Use FIDO2 hardware keys for highly privileged accounts to enhance security.</li>
<li>Regularly update your IdP configurations to mitigate emerging threats.</li>
</ul>
</div>
<h3 id="conclusion">Conclusion</h3>
<p>Protecting your organization from MFA Fatigue requires a proactive approach to security. By enforcing Number Matching and using FIDO2 hardware keys, you can significantly reduce the risk of unauthorized access. Stay vigilant and continuously improve your security posture to safeguard your organization against evolving threats.</p>
<div class="notice warning">⚠️ <strong>Warning:</strong> Do not rely solely on simple "Approve/Deny" buttons for MFA. Implement Number Matching and consider FIDO2 keys for critical accounts.</div>]]></content:encoded></item></channel></rss>