Audit All Outdated Firefox Installations in Your Network
Mozilla released its new versions for Firefox and Firefox ESR with additional functionality and security fixes on the 14th of March, 2023. New features, fixes, and changes in Firefox 111, as listed on Mozilla’s release page include:
Windows native notifications are now enabled.
Firefox Relay users can now opt-in to create Relay email masks directly from the Firefox credential manager. You must be signed in with your Firefox Account.
2 new locales: Silhe Friulian (fur) and Sardinian (sc).
Firefox now supports the use of the rel attribute on form elements, allowing the specification of the relationship between the current document and the form target in a simpler, cross-browser way.
Origin private file system access is now enabled. This new storage API enables web applications to store and retrieve data from and to the filesystem in a sandbox.
The new releases bring 13 security fixes in Firefox 111 and 6 for Firefox ESR 102.9. 7 of these issues received a high severity rating. They include 2 memory safety bugs (CVE-2023-28176, CVE-2023-28177), 2 bugs that could have hidden fullscreen notifications behind download popups or Windows prompts on Android (CVE-2023-28159, CVE-2023-25748), and an assortment of other issues.
You can use the audit report below to find out which machines in your network still need to update their Mozilla Firefox version. It will show you exactly which machines are not running the latest version of Firefox or Firefox ESR yet. Go ahead and start running your Firefox audit.
Firefox 111 and Firefox ESR 102.9 Lansweeper Classicu00a0Query
Select Top 1000000 tblAssets.AssetID,
tblAssets.AssetName,
tblAssets.Domain,
tsysAssetTypes.AssetTypename As AssetType,
tblAssets.Username,
tblAssets.Userdomain,
Coalesce(tsysOS.Image, tsysAssetTypes.AssetTypeIcon10) As icon,
tblAssets.IPAddress,
tblSoftwareUni.softwareName As Software,
tblSoftware.softwareVersion As Version,
tblSoftwareUni.SoftwarePublisher As Publisher,
tsysIPLocations.IPLocation,
tblAssetCustom.Manufacturer,
tblAssetCustom.Model,
Coalesce(tsysOS.OSname, tblSccmAsset.OsCaption,
tblSccmAsset.OperatingSystemNameandVersion) As OS,
tblAssets.Version As OSVersion,
Case
When tblErrors.ErrorText Is Not Null Or
tblErrors.ErrorText != '' Then
'Scanning Error: ' + tsysasseterrortypes.ErrorMsg
Else ''
End As ScanningErrors,
tblAssets.Lastseen,
tblAssets.Lasttried
From tblAssets
Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
Inner Join tsysIPLocations On tsysIPLocations.LocationID =
tblAssets.LocationID
Inner Join tblState On tblState.State = tblAssetCustom.State
Inner Join tblSoftware On tblAssets.AssetID = tblSoftware.AssetID
Inner Join tblSoftwareUni On tblSoftwareUni.SoftID = tblSoftware.softID
Left Outer Join tsysOS On tsysOS.OScode = tblAssets.OScode
Left Outer Join tblSccmAsset On tblAssets.AssetID = tblSccmAsset.AssetId
Left Join (Select Distinct Top 1000000 tblErrors.AssetID As ID,
Max(tblErrors.Teller) As ErrorID
From tblErrors
Group By tblErrors.AssetID) As ScanningError On tblAssets.AssetID =
ScanningError.ID
Left Join tblErrors On ScanningError.ErrorID = tblErrors.Teller
Left Join tsysasseterrortypes On tsysasseterrortypes.Errortype =
tblErrors.ErrorType
Where tblSoftwareUni.softwareName Like '%firefox%' And
tblSoftwareUni.SoftwarePublisher Like '%mozilla%' And tblState.Statename =
'Active' And ((Len(tblSoftware.softwareVersion) -
Len(Replace(tblSoftware.softwareVersion, '.', '')) = 1 And
tblSoftwareUni.softwareName Like '%firefox%' And
tblSoftwareUni.softwareName Not Like '%esr%' And
Cast(ParseName(tblSoftware.softwareVersion, 2) As bigint) < 111)
Or
(Len(tblSoftware.softwareVersion) - Len(Replace(tblSoftware.softwareVersion,
'.', '')) = 1 And tblSoftwareUni.softwareName Like '%firefox%' And
tblSoftwareUni.softwareName Not Like '%esr%' And
Cast(ParseName(tblSoftware.softwareVersion, 2) As bigint) = 111 And
Cast(ParseName(tblSoftware.softwareVersion, 1) As bigint) < 0) Or
(Len(tblSoftware.softwareVersion) - Len(Replace(tblSoftware.softwareVersion,
'.', '')) = 2 And tblSoftwareUni.softwareName Like '%firefox%' And
tblSoftwareUni.softwareName Not Like '%esr%' And
Cast(ParseName(tblSoftware.softwareVersion, 3) As bigint) < 111)
Or
(Len(tblSoftware.softwareVersion) - Len(Replace(tblSoftware.softwareVersion,
'.', '')) = 2 And tblSoftwareUni.softwareName Like '%firefox%' And
tblSoftwareUni.softwareName Not Like '%esr%' And
Cast(ParseName(tblSoftware.softwareVersion, 3) As bigint) = 111 And
Cast(ParseName(tblSoftware.softwareVersion, 2) As bigint) < 0) Or
(Len(tblSoftware.softwareVersion) - Len(Replace(tblSoftware.softwareVersion,
'.', '')) = 2 And tblSoftwareUni.softwareName Like '%firefox%' And
tblSoftwareUni.softwareName Not Like '%esr%' And
Cast(ParseName(tblSoftware.softwareVersion, 3) As bigint) = 111 And
Cast(ParseName(tblSoftware.softwareVersion, 2) As bigint) = 0 And
Cast(ParseName(tblSoftware.softwareVersion, 1) As bigint) < 0) Or
(tblSoftwareUni.softwareName Like '%firefox%esr%' And
Cast(ParseName(tblSoftware.softwareVersion, 3) As bigint) < 102)
Or (tblSoftwareUni.softwareName Like '%firefox%esr%' And
Cast(ParseName(tblSoftware.softwareVersion, 3) As bigint) = 102 And
Cast(ParseName(tblSoftware.softwareVersion, 2) As bigint) < 9) Or
(tblSoftwareUni.softwareName Like '%firefox%esr%' And
Cast(ParseName(tblSoftware.softwareVersion, 3) As bigint) = 102 And
Cast(ParseName(tblSoftware.softwareVersion, 2) As bigint) = 9 And
Cast(ParseName(tblSoftware.softwareVersion, 1) As bigint) < 0) Or
(Len(tblSoftware.softwareVersion) - Len(Replace(tblSoftware.softwareVersion,
'.', '')) = 3 And tblSoftwareUni.softwareName Like '%firefox%' And
Cast(ParseName(tblSoftware.softwareVersion, 4) As bigint) < 111)
Or
(Len(tblSoftware.softwareVersion) - Len(Replace(tblSoftware.softwareVersion,
'.', '')) = 3 And tblSoftwareUni.softwareName Like '%firefox%' And
tblSoftwareUni.softwareName Not Like '%esr%' And
Cast(ParseName(tblSoftware.softwareVersion, 4) As bigint) = 111 And
Cast(ParseName(tblSoftware.softwareVersion, 3) As bigint) < 0) Or
(Len(tblSoftware.softwareVersion) - Len(Replace(tblSoftware.softwareVersion,
'.', '')) = 3 And tblSoftwareUni.softwareName Like '%firefox%' And
tblSoftwareUni.softwareName Not Like '%esr%' And
Cast(ParseName(tblSoftware.softwareVersion, 4) As bigint) = 111 And
Cast(ParseName(tblSoftware.softwareVersion, 3) As bigint) = 0 And
Cast(ParseName(tblSoftware.softwareVersion, 2) As bigint) < 0))
Union
Select Top 1000000 tblAssets.AssetID,
tblAssets.AssetName,
tblAssets.Domain,
tsysAssetTypes.AssetTypename As AssetType,
tblAssets.Username,
tblAssets.Userdomain,
tsysAssetTypes.AssetTypeIcon10 As icon,
tblAssets.IPAddress,
Case
When subquery1.Software Like '%firefox%' And
(Cast(ParseName(tblMacApplications.Version, 3) As bigint) = 102 And
Cast(ParseName(tblMacApplications.Version, 2) As bigint) < 9) Or
(Cast(ParseName(tblMacApplications.Version, 3) As bigint) < 102)
Then 'firefox (Possible ESR)'
Else subquery1.Software
End As Software,
subquery1.Version,
subquery1.Publisher,
tsysIPLocations.IPLocation,
tblAssetCustom.Manufacturer,
tblAssetCustom.Model,
tblMacOSInfo.SystemVersion As OS,
tblAssets.Version As OSVersion,
Case
When tblErrors.ErrorText Is Not Null Or
tblErrors.ErrorText != '' Then
'Scanning Error: ' + tsysasseterrortypes.ErrorMsg
Else ''
End As ScanningErrors,
tblAssets.Lastseen As [Last successful scan],
tblAssets.Lasttried As [Last scan attempt]
From tblAssets
Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
Inner Join tsysIPLocations On tsysIPLocations.LocationID =
tblAssets.LocationID
Inner Join tblState On tblState.State = tblAssetCustom.State
Left Join (Select tblSoftwareUni.softwareName As Software,
tblSoftwareUni.SoftwarePublisher As Publisher,
tblMacApplications.AssetID,
Case
When tblMacApplications.Version Like '%R%' Then
Left(tblMacApplications.Version, CharIndex('R',
tblMacApplications.Version) - 1)
Else tblMacApplications.Version
End As Version
From tblMacApplications
Inner Join tblSoftwareUni On tblSoftwareUni.SoftID =
tblMacApplications.softid
Where tblSoftwareUni.softwareName Like '%firefox%') As subquery1 On
subquery1.AssetID = tblAssets.AssetID
Inner Join tblMacApplications On
tblAssets.AssetID = tblMacApplications.AssetID
Inner Join tblSoftwareUni On tblSoftwareUni.SoftID = tblMacApplications.softid
Inner Join tblMacOSInfo On tblMacOSInfo.AssetID = tblAssets.AssetID
Left Join (Select Distinct Top 1000000 tblErrors.AssetID As ID,
Max(tblErrors.Teller) As ErrorID
From tblErrors
Group By tblErrors.AssetID) As ScanningError On tblAssets.AssetID =
ScanningError.ID
Left Join tblErrors On ScanningError.ErrorID = tblErrors.Teller
Left Join tsysasseterrortypes On tsysasseterrortypes.Errortype =
tblErrors.ErrorType
Where tblSoftwareUni.softwareName Like '%firefox%' And tblState.Statename =
'Active' And ((Cast(ParseName(subquery1.Version, 3) As bigint) < 111) Or
(Cast(ParseName(subquery1.Version, 3) As bigint) = 111 And
Cast(ParseName(subquery1.Version, 2) As bigint) < 0) Or
(Cast(ParseName(subquery1.Version, 3) As bigint) = 111 And
Cast(ParseName(subquery1.Version, 2) As bigint) = 0 And
Cast(ParseName(subquery1.Version, 1) As bigint) < 0))
Union
Select Top 1000000 tblAssets.AssetID,
tblAssets.AssetName,
tblAssets.Domain,
tsysAssetTypes.AssetTypename As AssetType,
tblLinuxUser.UserName,
tblAssets.Userdomain,
tsysAssetTypes.AssetTypeIcon10 As icon,
tblAssets.IPAddress,
subquery1.Software,
subquery1.Version,
subquery1.Publisher,
tsysIPLocations.IPLocation,
tblAssetCustom.Manufacturer,
tblAssetCustom.Model,
tblLinuxSystem.OSRelease As OS,
tblAssets.Version As OSVersion,
Case
When tblErrors.ErrorText Is Not Null Or
tblErrors.ErrorText != '' Then
'Scanning Error: ' + tsysasseterrortypes.ErrorMsg
Else ''
End As ScanningErrors,
tblAssets.Lastseen As [Last successful scan],
tblAssets.Lasttried As [Last scan attempt]
From tblAssets
Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
Inner Join tsysIPLocations On tsysIPLocations.LocationID =
tblAssets.LocationID
Inner Join tblState On tblState.State = tblAssetCustom.State
Inner Join tblLinuxSystem On tblAssets.AssetID = tblLinuxSystem.AssetID
Inner Join tblLinuxUser On tblAssets.AssetID = tblLinuxUser.AssetID
Inner Join tblLinuxUserLogon On tblLinuxUserLogon.Id = tblLinuxUser.id
Inner Join (Select tblLinuxUser.AssetId,
Max(tblLinuxUserLogon.LogonTime) As MaxLogontime
From tblLinuxUser
Inner Join tblLinuxUserLogon On tblLinuxUserLogon.Id = tblLinuxUser.id
Group By tblLinuxUser.assetid) As subquery2 On subquery2.MaxLogontime =
tblLinuxUserLogon.LogonTime
Inner Join (Select tblSoftwareUni.softwareName As Software,
tblSoftwareUni.SoftwarePublisher As Publisher,
tblLinuxSoftware.LastChanged,
tblLinuxSoftware.assetid,
Case
When tblLinuxSystem.OSRelease Like '%Ubuntu%' And
tblSoftwareUni.softwareName Not Like '%esr%' And
tblLinuxSoftware.Version Like '%+%' And tblLinuxSoftware.Version Like
'%.%.%[^0-9]%' Then Left(tblLinuxSoftware.Version, CharIndex('+',
tblLinuxSoftware.Version) - 1)
When tblLinuxSystem.OSRelease Like '%Ubuntu%' And
tblSoftwareUni.softwareName Like '%esr%' And
tblLinuxSoftware.Version Like '%+%' And tblLinuxSoftware.Version Like
'%.%.%[^0-9]%' Then Left(tblLinuxSoftware.Version, CharIndex('+',
tblLinuxSoftware.Version) - 4)
When tblLinuxSystem.OSRelease Like '%manjaro%' And
tblSoftwareUni.softwareName Not Like '%esr%' And
tblLinuxSoftware.Version Like '%-%' And tblLinuxSoftware.Version Like
'%.%.%[^0-9]%' Then Left(tblLinuxSoftware.Version, CharIndex('-',
tblLinuxSoftware.Version) - 1)
When tblLinuxSystem.OSRelease Like '%manjaro%' And
tblSoftwareUni.softwareName Like '%esr%' And
tblLinuxSoftware.Version Like '%-%' And tblLinuxSoftware.Version Like
'%.%.%[^0-9]%' Then Left(tblLinuxSoftware.Version, CharIndex('-',
tblLinuxSoftware.Version) - 1)
When tblLinuxSystem.OSRelease Like '%manjaro%' And
tblSoftwareUni.softwareName Like '%esr%' And
tblLinuxSoftware.Version Like '%esr-%' And
tblLinuxSoftware.Version Like '%.%.%[^0-9]%' Then
Left(tblLinuxSoftware.Version, CharIndex('-',
tblLinuxSoftware.Version) - 4)
When tblLinuxSystem.OSRelease Like '%debian%' And
tblSoftwareUni.softwareName Not Like '%esr%' And
tblLinuxSoftware.Version Like '%-%' And tblLinuxSoftware.Version Like
'%.%.%[^0-9]%' Then Left(tblLinuxSoftware.Version, CharIndex('-',
tblLinuxSoftware.Version) - 1)
When tblLinuxSystem.OSRelease Like '%debian%' And
tblSoftwareUni.softwareName Like '%esr%' And
tblLinuxSoftware.Version Like '%-%' And tblLinuxSoftware.Version Like
'%.%.%[^0-9]%' Then Left(tblLinuxSoftware.Version, CharIndex('-',
tblLinuxSoftware.Version) - 4)
Else tblLinuxSoftware.Version
End As Version
From tblLinuxSoftware
Inner Join tblSoftwareUni On tblSoftwareUni.SoftID =
tblLinuxSoftware.SoftwareUniID
Inner Join tblLinuxSystem On tblLinuxSoftware.AssetID =
tblLinuxSystem.AssetID
Where tblSoftwareUni.softwareName In ('firefox', 'MozillaFirefox',
'firefox-esr')) As subquery1 On subquery1.assetid = tblAssets.assetid
Left Join (Select Distinct Top 1000000 tblErrors.AssetID As ID,
Max(tblErrors.Teller) As ErrorID
From tblErrors
Group By tblErrors.AssetID) As ScanningError On tblAssets.AssetID =
ScanningError.ID
Left Join tblErrors On ScanningError.ErrorID = tblErrors.Teller
Left Join tsysasseterrortypes On tsysasseterrortypes.Errortype =
tblErrors.ErrorType
Where subquery1.Software In ('firefox', 'MozillaFirefox', 'firefox-esr') And
tblState.Statename = 'Active' And ((Len(subquery1.Version) -
Len(Replace(subquery1.Version, '.', '')) = 2 And
subquery1.Software Like '%firefox%' And subquery1.Software Not Like
'%esr%' And Cast(ParseName(subquery1.Version, 3) As bigint) < 111) Or
(Len(subquery1.Version) - Len(Replace(subquery1.Version, '.', '')) = 2 And
subquery1.Software Like '%firefox%' And subquery1.Software Not Like
'%esr%' And Cast(ParseName(subquery1.Version, 3) As bigint) = 111 And
Cast(ParseName(subquery1.Version, 2) As bigint) < 0) Or
(Len(subquery1.Version) - Len(Replace(subquery1.Version, '.', '')) = 2 And
subquery1.Software Like '%firefox%' And subquery1.Software Not Like
'%esr%' And Cast(ParseName(subquery1.Version, 3) As bigint) = 111 And
Cast(ParseName(subquery1.Version, 2) As bigint) = 0 And
Cast(ParseName(subquery1.Version, 1) As bigint) < 0) Or
(Len(subquery1.Version) - Len(Replace(subquery1.Version, '.', '')) = 1 And
subquery1.Software Like '%firefox%' And subquery1.Software Not Like
'%esr%' And Cast(ParseName(subquery1.Version, 2) As bigint) < 111) Or
(Len(subquery1.Version) - Len(Replace(subquery1.Version, '.', '')) = 1 And
subquery1.Software Like '%firefox%' And subquery1.Software Not Like
'%esr%' And Cast(ParseName(subquery1.Version, 2) As bigint) = 111 And
Cast(ParseName(subquery1.Version, 1) As bigint) < 0) Or
(Len(subquery1.Version) - Len(Replace(subquery1.Version, '.', '')) = 2 And
subquery1.Software Like '%firefox%' And subquery1.Software Like '%esr%'
And Cast(ParseName(subquery1.Version, 3) As bigint) < 102) Or
(Len(subquery1.Version) - Len(Replace(subquery1.Version, '.', '')) = 2 And
subquery1.Software Like '%firefox%' And subquery1.Software Like '%esr%'
And Cast(ParseName(subquery1.Version, 3) As bigint) = 102 And
Cast(ParseName(subquery1.Version, 2) As bigint) < 9) Or
(Len(subquery1.Version) - Len(Replace(subquery1.Version, '.', '')) = 2 And
subquery1.Software Like '%firefox%' And subquery1.Software Like '%esr%'
And Cast(ParseName(subquery1.Version, 3) As bigint) = 102 And
Cast(ParseName(subquery1.Version, 2) As bigint) = 9 And
Cast(ParseName(subquery1.Version, 1) As bigint) < 0) Or
(Len(subquery1.Version) - Len(Replace(subquery1.Version, '.', '')) = 1 And
subquery1.Software Like '%firefox%' And subquery1.Software Like '%esr%'
And Cast(ParseName(subquery1.Version, 2) As bigint) < 102) Or
(Len(subquery1.Version) - Len(Replace(subquery1.Version, '.', '')) = 1 And
subquery1.Software Like '%firefox%' And subquery1.Software Like '%esr%'
And Cast(ParseName(subquery1.Version, 2) As bigint) = 102 And
Cast(ParseName(subquery1.Version, 1) As bigint) < 9))
Order By Domain,
AssetName,
Software