<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Today I Learned (TIL) on Nicola Suter</title><link>https://tech.nicolonsky.ch/categories/today-i-learned-til/</link><description>Recent content in Today I Learned (TIL) on Nicola Suter</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><copyright>© 2026 Nicola Suter</copyright><lastBuildDate>Wed, 20 May 2026 12:00:01 +0000</lastBuildDate><atom:link href="https://tech.nicolonsky.ch/categories/today-i-learned-til/rss.xml" rel="self" type="application/rss+xml"/><item><title>Microsoft Authenticator App Details now exposed in Entra SignInLogs</title><link>https://tech.nicolonsky.ch/til/authenticationappdevicedetails/</link><pubDate>Wed, 20 May 2026 12:00:01 +0000</pubDate><guid>https://tech.nicolonsky.ch/til/authenticationappdevicedetails/</guid><description>&lt;p&gt;In response to CVE-2026-41615&lt;cite&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/cite&gt; (Microsoft Authenticator Information Disclosure Vulnerability), Microsoft started exposing the used Microsoft Authenticator app details as part of the Entra ID Sign-In Logs in the &lt;code&gt;AuthenticationAppDeviceDetails&lt;/code&gt; column. The information can be queried via KQL.&lt;/p&gt;
&lt;p&gt;You can use the below KQL query to find users with outdated Microsoft Authenticator app versions, which are vulnerable:&lt;/p&gt;
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="AuthenticationAppDeviceDetails"
 src="https://tech.nicolonsky.ch/content/images/2026/til/AuthenticationAppDeviceDetails.png"
 &gt;&lt;/figure&gt;
&lt;div class="highlight-wrapper"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-kusto" data-lang="kusto"&gt;// https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41615
let MinimumVersions = datatable(
 AuthenticatorOperatingSystem: string,
 PatchedAuthenticatorVersion: string
)[
 &amp;#34;Android&amp;#34;, &amp;#34;6.2605.2973&amp;#34;,
 &amp;#34;Ios&amp;#34;, &amp;#34;6.8.47&amp;#34;
];
SigninLogs
| where isnotempty(AuthenticationAppDeviceDetails)
| extend AuthenticationAppDetails = parse_json(AuthenticationAppDeviceDetails)
| extend AuthenticatorOperatingSystem = tostring(AuthenticationAppDetails.operatingSystem)
| extend UsedAuthenticatorVersion = tostring(AuthenticationAppDetails.appVersion)
// b2b and guest accounts include: {&amp;#34;deviceId&amp;#34;:&amp;#34;{PII Removed}&amp;#34;} and no authenticator details
| where isnotempty(UsedAuthenticatorVersion)
| join kind=leftouter MinimumVersions on AuthenticatorOperatingSystem
| extend isVulnerable = parse_version(UsedAuthenticatorVersion) &amp;lt; parse_version(PatchedAuthenticatorVersion)
| where isVulnerable
| distinct UserPrincipalName, AuthenticatorOperatingSystem, UsedAuthenticatorVersion, isVulnerable&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;AuthenticationAppDeviceDetails&lt;/code&gt; (JSON) column itself consists of the following properties:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;appVersion&lt;/li&gt;
&lt;li&gt;clientApp&lt;/li&gt;
&lt;li&gt;deviceId&lt;/li&gt;
&lt;li&gt;operatingSystem&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;code&gt;clientApp&lt;/code&gt; property is really helpful, as we now also have another option to identify users who use the Authenticator light capabilities, available as part of the Outlook app:&lt;/p&gt;
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="AuthenticationAppDetailsClientApp"
 src="https://tech.nicolonsky.ch/content/images/2026/til/AuthenticationAppDetailsClientApp.png"
 &gt;&lt;/figure&gt;
&lt;div class="highlight-wrapper"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-kusto" data-lang="kusto"&gt;SigninLogs
| where isnotempty(AuthenticationAppDeviceDetails)
| extend AuthenticationAppDetails = parse_json(AuthenticationAppDeviceDetails)
| extend AuthenticationAppDetailsClientApp = tostring(AuthenticationAppDetails.clientApp)
| where AuthenticationAppDetailsClientApp == &amp;#34;Outlook&amp;#34;
| distinct UserPrincipalName, AuthenticationAppDetailsClientApp&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This might be relevant in your environment if you did not disable the Microsoft-managed setting for using the Authenticator light option, which, for example, does not support Conditional Access authentication strengths, passkeys, and app protection policies:&lt;/p&gt;</description></item></channel></rss>