If you don’t know what is this about, you must read this https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV170012
Additional, in this article https://support.microsoft.com/en-us/help/4046783/bitlocker-mitigation-plan-for-vulnerability-in-tpm, it said
When TPM-based protector is used to protect the operating system volume, the security of the BitLocker protection is affected only if the TPM firmware version is 1.2.
But the script what Microsoft provided doesn’t include detection if TPM firmware version is 1.2 or not.
I found two excellent posts how to get those information out using PowerShell and ConfigMgr compliance settings
https://p0w3rsh3ll.wordpress.com/2017/10/13/about-microsoft-advisory-adv170012/
https://www.imab.dk/detect-vulnerability-in-tpm-adv170012-using-configmgr-compliance-settings/
If you have Windows 7, and didn’t update Windows Management Framework 5.0 or 5.1 yet, you can’t use Get-TPM, but you can use this instead.
Anyway, my co-worker Bamberg Antti figured we can use SQL query those information from ConfigMgr, and of course you should have hardware inventory enable for Win32_TPM.
Antti and me modified the SQL and WQL query so that I can put them in this post, please modify as your own needs.
For SQL reporting (this will give results for safe and not safe Infineon firmware TPM):
(as note for myself, this a nice website that can make query format looks better http://poorsql.com/ 🙂 )
;
WITH
ase
AS (
SELECT SUBSTRING(ManufacturerVersion0, 1, CHARINDEX('.', ManufacturerVersion0, 1) - 1) AS major,
SUBSTRING(ManufacturerVersion0, CHARINDEX('.', ManufacturerVersion0, 1) + 1, LEN(ManufacturerVersion0) - CHARINDEX('.', ManufacturerVersion0, 1)) AS minor,
resourceid,
ManufacturerVersion0,
ManufacturerId0,
PhysicalPresenceVersionInfo0,
SpecVersion0
FROM v_GS_TPM
WHERE ManufacturerId0 = 0x49465800
),
ase1
AS (
SELECT *
FROM ase
WHERE major IN (4, 5, 6, 7, 133)
),
ase2
AS (
SELECT ase1.*,
CASE WHEN major = 4 AND (minor < 33 OR (minor >= 40 AND minor <= 42)) THEN 'not safe' WHEN major = 5 AND minor <= 61 THEN 'not safe' WHEN major = 6 AND minor <= 42 THEN 'not safe' WHEN major = 7 AND minor <= 61 THEN 'not safe' WHEN major = 133 AND minor <= 32 THEN 'not safe' ELSE 'safe' END AS firmwarecheck
FROM ase1
),
FINAL
AS (
SELECT name0 AS MachineName,
DisplayName,
UserName,
ase2.*,
Manufacturer,
Model,
CASE WHEN Manufacturer = 'Lenovo' THEN model2 ELSE model END AS ModelFriendlyName,
OSBUILDNro,
bios,
biosdate,
LastMessageSentTime
FROM ase2
LEFT JOIN v_R_System sys ON sys.resourceid = ase2.ResourceID
OUTER APPLY (
SELECT manufacturer0 AS Manufacturer,
model0 AS model
FROM v_GS_COMPUTER_SYSTEM cs
WHERE sys.resourceid = cs.resourceid
) AS comp
OUTER APPLY (
SELECT version0 AS model2
FROM v_GS_COMPUTER_SYSTEM_PRODUCT csp
WHERE sys.resourceid = csp.resourceid
) AS prod
OUTER APPLY (
SELECT version0 AS OSBUILDNro
FROM v_GS_OPERATING_SYSTEM AS os
WHERE sys.resourceid = os.resourceid
) AS osb
OUTER APPLY (
SELECT NAME
FROM vsms_windowsservicingstates B
WHERE B.build = sys.build01 AND B.branch = sys.osbranch01
) AS ws
OUTER APPLY (
SELECT value
FROM vsms_windowsservicinglocalizednames C
WHERE ws.NAME = c.NAME
) AS ws2
OUTER APPLY (
SELECT SMBIOSBIOSVERSION0 AS bios,
Releasedate0 AS biosdate
FROM v_GS_PC_BIOS pcbios
WHERE pcbios.ResourceID = sys.ResourceID
) AS citi
OUTER APPLY (
SELECT displayName0 AS DisplayName,
user_name0 AS UserName
FROM v_R_user us
WHERE us.user_name0 = sys.User_Name0
) AS dname
OUTER APPLY (
SELECT cms.LastMessageSentTime
FROM dbo.v_ClientMessageStatistics cms
WHERE cms.ResourceID = sys.ResourceID
) AS cms
)
SELECT * FROM FINAL
You should get a results like this, or let’s hope you don’t get any results (means everything is fine)

WQL query for ConfigMgr Monitor (this only give results for not safe Infineon firmware TPM):
SELECT DISTINCT SMS_R_System.NetbiosName, SMS_G_System_TPM.ManufacturerId, SMS_G_System_TPM.ManufacturerVersion, SMS_G_System_TPM.PhysicalPresenceVersionInfo, SMS_G_System_TPM.SpecVersion FROM SMS_R_System INNER JOIN SMS_G_System_TPM ON SMS_G_System_TPM.ResourceID = SMS_R_System.ResourceId WHERE SMS_G_System_TPM.ManufacturerId = 1229346816 AND ( SMS_G_System_TPM.ManufacturerVersion LIKE "4%" AND ( SMS_G_System_TPM.ManufacturerVersion <= "4.33" OR SMS_G_System_TPM.ManufacturerVersion >= "4.40" AND SMS_G_System_TPM.ManufacturerVersion <= "4.42" ) OR SMS_G_System_TPM.ManufacturerVersion LIKE "5%" AND SMS_G_System_TPM.ManufacturerVersion <= "5.61" OR SMS_G_System_TPM.ManufacturerVersion LIKE "6%" AND SMS_G_System_TPM.ManufacturerVersion <= "6.42" OR SMS_G_System_TPM.ManufacturerVersion LIKE "7%" AND SMS_G_System_TPM.ManufacturerVersion <= "7.61" OR SMS_G_System_TPM.ManufacturerVersion LIKE "133%" AND SMS_G_System_TPM.ManufacturerVersion <= "133.32" )
WQL Query for ConfigMgr collection (this only give results for not safe Infineon firmware TPM):
SELECT SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.NAME, SMS_R_SYSTEM.SMSUniqueIdentifier, SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client FROM SMS_R_System INNER JOIN SMS_G_System_TPM ON SMS_G_System_TPM.ResourceID = SMS_R_System.ResourceId WHERE SMS_G_System_TPM.ManufacturerId = 1229346816 AND ( SMS_G_System_TPM.ManufacturerVersion LIKE "4%" AND ( SMS_G_System_TPM.ManufacturerVersion <= "4.33" OR SMS_G_System_TPM.ManufacturerVersion >= "4.40" AND SMS_G_System_TPM.ManufacturerVersion <= "4.42" ) OR SMS_G_System_TPM.ManufacturerVersion LIKE "5%" AND SMS_G_System_TPM.ManufacturerVersion <= "5.61" OR SMS_G_System_TPM.ManufacturerVersion LIKE "6%" AND SMS_G_System_TPM.ManufacturerVersion <= "6.42" OR SMS_G_System_TPM.ManufacturerVersion LIKE "7%" AND SMS_G_System_TPM.ManufacturerVersion <= "7.61" OR SMS_G_System_TPM.ManufacturerVersion LIKE "133%" AND SMS_G_System_TPM.ManufacturerVersion <= "133.32" )
Not sure that DisplayName0 (Line 79) is correct, at least it throws an error when i run it.
Just change that from DisplayName0 to Name0 and runs perfectly.
Well actually, it depends on What is chosen to discovery in Active directory user discovery, if there is not discovered displayname, then of course it can’t be found in report too.