{"id":25032,"date":"2026-03-31T07:31:52","date_gmt":"2026-03-31T05:31:52","guid":{"rendered":"https:\/\/herolab.usd.de\/?page_id=25032"},"modified":"2026-04-08T13:30:07","modified_gmt":"2026-04-08T11:30:07","slug":"usd-2025-73","status":"publish","type":"page","link":"https:\/\/herolab.usd.de\/en\/security-advisories\/usd-2025-73\/","title":{"rendered":"usd-2025-73"},"content":{"rendered":"<p>[et_pb_section fb_built=\"1\" _builder_version=\"4.21.0\" _module_preset=\"default\" background_color=\"#2E353D\" custom_padding=\"||0px|||\" global_colors_info=\"{}\"][et_pb_row _builder_version=\"4.25.2\" _module_preset=\"default\" global_colors_info=\"{}\"][et_pb_column type=\"4_4\" _builder_version=\"4.21.0\" _module_preset=\"default\" global_colors_info=\"{}\"][et_pb_text _builder_version=\"4.27.6\" _module_preset=\"default\" custom_padding=\"||13px|||\" global_colors_info=\"{}\"]<\/p>\n<h1>usd-2025-73 | Entra ID - PIM Conditional Access Bypass<\/h1>\n<h1><\/h1>\n<p><strong>Product<\/strong>: Entra ID<br \/><strong>Affected Version<\/strong>: SomeVersion<br \/><strong>Vulnerability Type<\/strong>: Insufficient Granularity of Access Control (CWE-1220)<br \/><strong>Security Risk<\/strong>: High<br \/><strong>Vendor<\/strong>: Microsoft<br \/><strong>Vendor URL<\/strong>: <a href=\"https:\/\/microsoft.com\" target=\"_blank\" rel=\"noopener\">https:\/\/microsoft.com<\/a><br \/><strong>Vendor acknowledged vulnerability<\/strong>: No<br \/><strong>Vendor Status<\/strong>: Not fixed<br \/><strong>CVE Number<\/strong>: Not requested yet<br \/><strong>CVE Link<\/strong>: Not requested yet<br \/><strong>Advisory ID<\/strong>: usd-2025-73<\/p>\n<h3>Description<\/h3>\n<p>Conditional Access is Microsoft's Zero Trust policy engine to use identity-driven signals to enforce granular access control decisions.<br \/>It is common, that administrative users are secured using Conditional Access.<br \/>Therefore, a distinct set of Conditional Access policies can be applied specifically to the admin persona.<br \/>One commonly used option to apply Conditional Access policies to administrative users is to include specific built-in directory roles.<br \/>According to the <a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/conditional-access\/concept-conditional-access-users-groups\" target=\"_blank\" rel=\"noopener\">documentation<\/a> in this case, the Conditional Access policies apply to users actively assigned a directory role.<\/p>\n<p>Privileged Identity Management (PIM) is a service in Microsoft Entra ID that provides just-in-time access to directory roles. Roles can be assigned eligible and only activated when needed.<\/p>\n<p>Assume Conditional Access is used to protect privileged users by including directory roles.<br \/>Furthermore, assume an administrative user does not have any active role assignments but is eligible for a privileged role.<br \/>If this user signs in, the Conditional Access policies will not apply. The user is now able to get an access token for their own identity.<br \/>Next, the user can activate the directory role using PIM in the browser.<br \/>In the browser, the user is now required to fulfill the Conditional Access requirements.<br \/>If the requirements are not met, the user is not able to access anything protected with Conditional Access in the Browser.<br \/>However, the previously issued access token remains valid and can be used with the now actively assigned permissions.<br \/>This allows bypassing every Conditional Access policy that is designed to protect administrative identities by including directory roles.<\/p>\n<p>In the worst-case, there are no Conditional Access policies that apply to every user, hence leaving the administrative users fully unprotected.<br \/>In this case, only the user account name and password would be required to compromise an administrative account.<br \/>In addition - because the mandatory MFA enforcement requires MFA to access the admin portal - an attacker would need to wait until the legitimate user activates an administrative role.<\/p>\n<h3>Proof of Concept<\/h3>\n<p>Assume that an attacker knows the username and password of a user who is eligible to activate and use administrative roles via PIM.<br \/>The administrative account has an administrative directory role eligible assigned.<br \/>There are only Conditional Access policies that target administrative directory roles.<\/p>\n<p>Attacker Step 1.:<br \/>Login using the known account name and password. No MFA is required.<br \/><strong>az login<\/strong><\/p>\n<p>Attacker Step 2.:<br \/>Create an access token<br \/><strong>token=$(az account get-access-token --resource=<a>https:\/\/graph.microsoft.com<\/a> --query accessToken --output tsv)<\/strong><\/p>\n<p>Legitimate Admin Step 1.:<br \/>Activate privileged directory role.<br \/>The user is now required to meet the Conditional Access requirements.<\/p>\n<p>Attacker Step 3.:<br \/>Use the access token to perform administrative changes. For example create a new user:<\/p>\n<div class=\"codehilite\" style=\"background: #263238;color: #eff\">\n<pre style=\"line-height: 125%\"><span style=\"background: #263238\"><\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">curl<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">-<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">X<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">POST<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">-<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">H<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"Content-type: application\/json\"<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">-<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">H<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"Authorization: Bearer $token\"<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">-<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">d<\/span>\n<span class=\"err\" style=\"background: #263238;color: #ff5370\">'<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">  <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"accountEnabled\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">true<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">  <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"displayName\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"Adele Vance\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">  <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"mailNickname\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"AdeleV\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">  <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"userPrincipalName\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"AdeleV@contoso.com\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">  <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"passwordProfile\"<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\"> \u00a0\u00a0 <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"forceChangePasswordNextSignIn\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">true<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\"> \u00a0\u00a0 <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"password\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"xWwvJ]6NMw+bWH-d\"<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">  <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span><span class=\"err\" style=\"background: #263238;color: #ff5370\">'<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">https<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/graph.microsoft.com\/v1.0\/users<\/span><\/pre>\n<\/div>\n<h3>Fix<\/h3>\n<p>Workaround for the customer: When using PIM, Conditional Access must include users based on groups.<\/p>\n<p>How the vendor can fix the vulnerability: Access token must be invalidated when active role assignments are changed.<\/p>\n<h3>Timeline<\/h3>\n<ul>\n<li><strong>2025-12-12<\/strong>: Initial contact request submitted via the MSRC Researcher Portal<\/li>\n<li><strong>2025-12-13<\/strong>: Vendor acknowledges the report and begins investigation<\/li>\n<li><strong>2025-12-23<\/strong>: usd AG requests a status update<\/li>\n<li><strong>2025-12-29<\/strong>: Vendor informs that additional time is required for analysis<\/li>\n<li><strong>2026-01-15<\/strong>: Vendor states the behavior is \u201cworking as designed\u201d and not considered a vulnerability<\/li>\n<li><strong>2026-01-25 \u2013 2026-03-12<\/strong>: Further investigations with our customers and implementation of custom workarounds<\/li>\n<li><strong>2026-03-30<\/strong>: Despite the vendor\u2019s assessment, the behavior was classified as a security concern by our team and recommended to be mitigated due to its potential security impact<\/li>\n<li><strong>2026-03-30<\/strong>: Security advisory published<\/li>\n<\/ul>\n<h3>Credits<\/h3>\n<p>This security vulnerability was identified by Ben Steiner of usd AG.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>usd-2025-73 | Entra ID - PIM Conditional Access Bypass Product: Entra IDAffected Version: SomeVersionVulnerability Type: Insufficient Granularity of Access Control (CWE-1220)Security Risk: HighVendor: MicrosoftVendor URL: https:\/\/microsoft.comVendor acknowledged vulnerability: NoVendor Status: Not fixedCVE Number: Not requested yetCVE Link: Not requested yetAdvisory ID: usd-2025-73 Description Conditional Access is Microsoft's Zero Trust policy engine to use identity-driven signals [&hellip;]<\/p>\n","protected":false},"author":118,"featured_media":0,"parent":16124,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"class_list":["post-25032","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/25032","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/users\/118"}],"replies":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/comments?post=25032"}],"version-history":[{"count":5,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/25032\/revisions"}],"predecessor-version":[{"id":25080,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/25032\/revisions\/25080"}],"up":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/16124"}],"wp:attachment":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/media?parent=25032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}