Apple iOS/iPadOS 17.3 and MacOS 14.3 Vulnerability Audit
Network Devices Vulnerability- This is a static report and therefore not updated automatically, which means that out-of-band updates are not included. However, you can adapt the query to your own needs.
Discover Apple Devices Vulnerable to CVE-2024-23222 in Your IT Estate
Apple has released a series of security updates for multiple products. The main concern of these updates is a zero-day type confusion vulnerability (CVE-2024-23222) affecting iOS, iPadOS, and macOS. The vulnerability may already have been exploited and can lead to arbitrary code execution. You can read more about this bug in the vulnerability blog post.
The report below provides an overview of all Apple Mac devices, iPhones and iPads scanned that still need to be updated. That way you can easily locate potentially vulnerable devices. To get the most out of this report, scan your mobile Apple devices using the AirWatch or Intune scanning targets to get accurate version data.
To find vulnerable instances of Safari, you can run the Safari Version Audit report. Make sure to update all of your Safari installations to version 17.3.
Run the Apple iOS/iPadOS 17.3 and MacOS 14.3 Audit Report!
Apple iOS/iPadOS 17.1.2 and MacOS 14.1.2 Audit Report Lansweeper On-Prem Query
Select Distinct Top 1000000 Coalesce(tsysOS.Image, tsysAssetTypes.AssetTypeIcon10) As icon, tblAssets.AssetID, tblAssets.AssetName, tblAssets.Domain, tblState.Statename As State, tblAssets.IPAddress, tsysIPLocations.IPLocation, tblAssetCustom.Manufacturer, tblAssetCustom.Model, subquery1.SystemVersion, subquery1.[MacOS Patch Status], subquery2.OsVersion As IntuneOSVersion, subquery2.[Intune Patch Status], subquery3.OsVersion, subquery3.[Airwatch Patch Status], tblAssets.Lastseen, tblAssets.Lasttried From tblAssets Left Join (Select tblmacosinfo.AssetID, tblmacosinfo.SystemVersion, Case When Len(tblmacosinfo.SystemVersion) - Len(Replace(tblmacosinfo.SystemVersion, '.', '')) = 2 And Cast(SubString(ParseName(tblmacosinfo.SystemVersion, 3), PatIndex('%[0-9]%', ParseName(tblmacosinfo.SystemVersion, 3)), Len(ParseName(tblmacosinfo.SystemVersion, 3))) As INT) = 14 And Cast(ParseName(tblmacosinfo.SystemVersion, 2) As INT) >= 3 Then 'Up to date' When Len(tblmacosinfo.SystemVersion) - Len(Replace(tblmacosinfo.SystemVersion, '.', '')) = 1 And Cast(SubString(ParseName(tblmacosinfo.SystemVersion, 2), PatIndex('%[0-9]%', ParseName(tblmacosinfo.SystemVersion, 2)), Len(ParseName(tblmacosinfo.SystemVersion, 2))) As INT) = 14 And Cast(Left(ParseName(tblmacosinfo.SystemVersion, 1), CharIndex(' (', ParseName(tblmacosinfo.SystemVersion, 1) + ' (') - 1) As INT) >= 3 Then 'Up to date' When Len(tblmacosinfo.SystemVersion) - Len(Replace(tblmacosinfo.SystemVersion, '.', '')) = 2 And Cast(SubString(ParseName(tblmacosinfo.SystemVersion, 3), PatIndex('%[0-9]%', ParseName(tblmacosinfo.SystemVersion, 3)), Len(ParseName(tblmacosinfo.SystemVersion, 3))) As INT) = 13 And Cast(ParseName(tblmacosinfo.SystemVersion, 2) As INT) >= 6 Then 'Up to date' When Len(tblmacosinfo.SystemVersion) - Len(Replace(tblmacosinfo.SystemVersion, '.', '')) = 2 And Cast(SubString(ParseName(tblmacosinfo.SystemVersion, 3), PatIndex('%[0-9]%', ParseName(tblmacosinfo.SystemVersion, 3)), Len(ParseName(tblmacosinfo.SystemVersion, 3))) As INT) = 13 And Cast(ParseName(tblmacosinfo.SystemVersion, 2) As INT) = 6 And Cast(Left(ParseName(tblmacosinfo.SystemVersion, 1), CharIndex(' (', ParseName(tblmacosinfo.SystemVersion, 1) + ' (') - 1) As INT) >= 4 Then 'Up to date' When Len(tblmacosinfo.SystemVersion) - Len(Replace(tblmacosinfo.SystemVersion, '.', '')) = 1 And Cast(SubString(ParseName(tblmacosinfo.SystemVersion, 2), PatIndex('%[0-9]%', ParseName(tblmacosinfo.SystemVersion, 2)), Len(ParseName(tblmacosinfo.SystemVersion, 2))) As INT) = 13 And Cast(Left(ParseName(tblmacosinfo.SystemVersion, 1), CharIndex(' (', ParseName(tblmacosinfo.SystemVersion, 1) + ' (') - 1) As INT) >= 6 Then 'Up to date' When Len(tblmacosinfo.SystemVersion) - Len(Replace(tblmacosinfo.SystemVersion, '.', '')) = 2 And Cast(SubString(ParseName(tblmacosinfo.SystemVersion, 3), PatIndex('%[0-9]%', ParseName(tblmacosinfo.SystemVersion, 3)), Len(ParseName(tblmacosinfo.SystemVersion, 3))) As INT) = 12 And Cast(ParseName(tblmacosinfo.SystemVersion, 2) As INT) >= 7 Then 'Up to date' When Len(tblmacosinfo.SystemVersion) - Len(Replace(tblmacosinfo.SystemVersion, '.', '')) = 2 And Cast(SubString(ParseName(tblmacosinfo.SystemVersion, 3), PatIndex('%[0-9]%', ParseName(tblmacosinfo.SystemVersion, 3)), Len(ParseName(tblmacosinfo.SystemVersion, 3))) As INT) = 12 And Cast(ParseName(tblmacosinfo.SystemVersion, 2) As INT) = 7 And Cast(Left(ParseName(tblmacosinfo.SystemVersion, 1), CharIndex(' (', ParseName(tblmacosinfo.SystemVersion, 1) + ' (') - 1) As INT) >= 3 Then 'Up to date' When Len(tblmacosinfo.SystemVersion) - Len(Replace(tblmacosinfo.SystemVersion, '.', '')) = 1 And Cast(SubString(ParseName(tblmacosinfo.SystemVersion, 2), PatIndex('%[0-9]%', ParseName(tblmacosinfo.SystemVersion, 2)), Len(ParseName(tblmacosinfo.SystemVersion, 2))) As INT) = 12 And Cast(Left(ParseName(tblmacosinfo.SystemVersion, 1), CharIndex(' (', ParseName(tblmacosinfo.SystemVersion, 1) + ' (') - 1) As INT) >= 7 Then 'Up to date' Else 'Out of date' End As [MacOS Patch Status] From tblmacosinfo Where (tblmacosinfo.SystemVersion Not Like '%Server%' And Len(tblmacosinfo.SystemVersion) - Len(Replace(tblmacosinfo.SystemVersion, '.', '')) = 1 And Cast(SubString(ParseName(tblmacosinfo.SystemVersion, 2), PatIndex('%[0-9]%', ParseName(tblmacosinfo.SystemVersion, 2)), Len(ParseName(tblmacosinfo.SystemVersion, 2))) As INT) >= 12) Or (Len(tblmacosinfo.SystemVersion) - Len(Replace(tblmacosinfo.SystemVersion, '.', '')) = 2 And Cast(SubString(ParseName(tblmacosinfo.SystemVersion, 3), PatIndex('%[0-9]%', ParseName(tblmacosinfo.SystemVersion, 3)), Len(ParseName(tblmacosinfo.SystemVersion, 3))) As INT) >= 12)) As subquery1 On subquery1.AssetID = tblAssets.AssetID Left Join (Select tblIntuneDevice.AssetId, tblIntuneDevice.OsVersion, Case When Len(tblIntuneDevice.OsVersion) - Len(Replace(tblIntuneDevice.OsVersion, '.', '')) = 2 And Cast(ParseName(tblIntuneDevice.OsVersion, 3) As int) > 17 Then 'Up to date' When Len(tblIntuneDevice.OsVersion) - Len(Replace(tblIntuneDevice.OsVersion, '.', '')) = 2 And Cast(ParseName(tblIntuneDevice.OsVersion, 3) As int) = 17 And Cast(ParseName(tblIntuneDevice.OsVersion, 2) As int) >= 3 Then 'Up to date' When Len(tblIntuneDevice.OsVersion) - Len(Replace(tblIntuneDevice.OsVersion, '.', '')) = 1 And Cast(ParseName(tblIntuneDevice.OsVersion, 2) As int) > 17 Then 'Up to date' When Len(tblIntuneDevice.OsVersion) - Len(Replace(tblIntuneDevice.OsVersion, '.', '')) = 1 And Cast(ParseName(tblIntuneDevice.OsVersion, 2) As int) = 17 And Cast(ParseName(tblIntuneDevice.OsVersion, 1) As int) >= 3 Then 'Up to date' When Len(tblIntuneDevice.OsVersion) - Len(Replace(tblIntuneDevice.OsVersion, '.', '')) = 2 And Cast(ParseName(tblIntuneDevice.OsVersion, 3) As int) = 16 And Cast(ParseName(tblIntuneDevice.OsVersion, 2) As int) = 7 And Cast(ParseName(tblIntuneDevice.OsVersion, 1) As int) >= 5 Then 'Up to date' When Len(tblIntuneDevice.OsVersion) - Len(Replace(tblIntuneDevice.OsVersion, '.', '')) = 1 And Cast(ParseName(tblIntuneDevice.OsVersion, 2) As int) = 16 And Cast(ParseName(tblIntuneDevice.OsVersion, 1) As int) >= 7 Then 'Up to date' When Len(tblIntuneDevice.OsVersion) - Len(Replace(tblIntuneDevice.OsVersion, '.', '')) = 2 And Cast(ParseName(tblIntuneDevice.OsVersion, 3) As int) = 15 And Cast(ParseName(tblIntuneDevice.OsVersion, 2) As int) = 8 And Cast(ParseName(tblIntuneDevice.OsVersion, 1) As int) >= 1 Then 'Up to date' When Len(tblIntuneDevice.OsVersion) - Len(Replace(tblIntuneDevice.OsVersion, '.', '')) = 1 And Cast(ParseName(tblIntuneDevice.OsVersion, 2) As int) = 15 And Cast(ParseName(tblIntuneDevice.OsVersion, 1) As int) >= 8 Then 'Up to date' Else 'Out of date' End As [Intune Patch Status] From tblIntuneDevice Inner Join tblassets On tblassets.AssetID = tblIntuneDevice.AssetId Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblassets.Assettype Where (tsysAssetTypes.AssetTypename Like '%iphone%' Or tsysAssetTypes.AssetTypename Like '%ipad%')) As subquery2 On subquery2.AssetId = tblAssets.AssetID Left Join (Select tblAirWatchDevice.AssetId, tblAirWatchDevice.OsVersion, Case When Len(tblAirWatchDevice.OsVersion) - Len(Replace(tblAirWatchDevice.OsVersion, '.', '')) = 1 And Cast(ParseName(tblAirWatchDevice.OsVersion, 3) As int) > 17 Then 'Up to date' When Len(tblAirWatchDevice.OsVersion) - Len(Replace(tblAirWatchDevice.OsVersion, '.', '')) = 1 And Cast(ParseName(tblAirWatchDevice.OsVersion, 3) As int) = 17 And Cast(ParseName(tblAirWatchDevice.OsVersion, 2) As int) >= 3 Then 'Up to date' When Len(tblAirWatchDevice.OsVersion) - Len(Replace(tblAirWatchDevice.OsVersion, '.', '')) = 2 And Cast(ParseName(tblAirWatchDevice.OsVersion, 3) As int) > 17 Then 'Up to date' When Len(tblAirWatchDevice.OsVersion) - Len(Replace(tblAirWatchDevice.OsVersion, '.', '')) = 2 And Cast(ParseName(tblAirWatchDevice.OsVersion, 3) As int) = 17 And Cast(ParseName(tblAirWatchDevice.OsVersion, 2) As int) >= 3 Then 'Up to date' When Len(tblAirWatchDevice.OsVersion) - Len(Replace(tblAirWatchDevice.OsVersion, '.', '')) = 1 And Cast(ParseName(tblAirWatchDevice.OsVersion, 3) As int) = 16 And Cast(ParseName(tblAirWatchDevice.OsVersion, 2) As int) >= 7 Then 'Up to date' When Len(tblAirWatchDevice.OsVersion) - Len(Replace(tblAirWatchDevice.OsVersion, '.', '')) = 2 And Cast(ParseName(tblAirWatchDevice.OsVersion, 3) As int) = 16 And Cast(ParseName(tblAirWatchDevice.OsVersion, 2) As int) = 7 And Cast(ParseName(tblAirWatchDevice.OsVersion, 1) As int) >= 5 Then 'Up to date' When Len(tblAirWatchDevice.OsVersion) - Len(Replace(tblAirWatchDevice.OsVersion, '.', '')) = 1 And Cast(ParseName(tblAirWatchDevice.OsVersion, 3) As int) = 15 And Cast(ParseName(tblAirWatchDevice.OsVersion, 2) As int) >= 8 Then 'Up to date' When Len(tblAirWatchDevice.OsVersion) - Len(Replace(tblAirWatchDevice.OsVersion, '.', '')) = 2 And Cast(ParseName(tblAirWatchDevice.OsVersion, 3) As int) = 15 And Cast(ParseName(tblAirWatchDevice.OsVersion, 2) As int) = 8 And Cast(ParseName(tblAirWatchDevice.OsVersion, 1) As int) >= 1 Then 'Up to date' Else 'Out of date' End As [Airwatch Patch Status] From tblAirWatchDevice Inner Join tblassets On tblassets.AssetID = tblAirWatchDevice.AssetId Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblassets.Assettype Where (tsysAssetTypes.AssetTypename Like '%iphone%' Or tsysAssetTypes.AssetTypename Like '%ipad%')) As subquery3 On subquery3.AssetId = tblAssets.AssetID Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID Left Join tsysOS On tsysOS.OScode = tblAssets.OScode Left Join tsysIPLocations On tblAssets.IPNumeric >= tsysIPLocations.StartIP And tblAssets.IPNumeric <= tsysIPLocations.EndIP Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype Inner Join tblState On tblState.State = tblAssetCustom.State Where (subquery1.SystemVersion Is Not Null Or subquery2.OsVersion Is Not Null Or subquery3.OsVersion Is Not Null) And (subquery1.[MacOS Patch Status] <> 'Up to date' Or subquery2.[Intune Patch Status] <> 'Up to date' Or subquery3.[Airwatch Patch Status] <> 'Up to date') And tblAssetCustom.State = 1 And (tsysAssetTypes.AssetTypename Like '%iphone%' Or tsysAssetTypes.AssetTypename Like '%ipad%' Or tsysAssetTypes.AssetTypename Like '%Apple%') Order By tblAssets.Domain, tblAssets.AssetName