Audit All Outdated Firefox Installations in Your Network
Mozilla’s new version for Firefox and Firefox ESR has been released with additional functionality and security releases as of the 23rd of August, 2022. New features in Firefox 104, as listed on Mozilla’s release page include:
Subtitles now available for Disney+ in Picture-in-Picture.
Firefox now supports both the scroll-snap-stop property as well as re-snapping You can use the scroll-snap-stop property’s „always“ and „normal“ values to specify whether or not to pass snap points, even when scrolling fast. Re-snapping tries to keep the last snap position after any content or layout changes.
The Firefox profiler can now analyze the power usage of a website (Apple M1 and Windows 11 only).
The Firefox UI itself will now be throttled for performance and battery usage when minimized or occluded, in the same way background tabs are.
Additionally, a number of fixes have been made including:
Highlight color is preserved correctly after typing enter in the mail composer of Yahoo Mail and Outlook.
After bypassing the https-only error page, navigating back would take you to the error page that was previously dismissed. This will now take you to the previous site that was visited instead.
The paste unformatted shortcut (shift+ctrl/cmd+v) now works in plain text contexts, such as input and text area.
Firefox 104 also brings 6 security fixes. For Firefox ESR 91.13 3 vulnerabilities have been fixed. Most notable are the fixes for a number of memory safety bugs (CVE-2022-38477 and CVE-2022-38478) and 2 XSLT vulnerabilities (CVE-2022-38472 and CVE-2022-38473) both in Firefox and in Firefox ESR.
To find which machines still need to update their Mozilla Firefox version, you can use the audit below which shows exactly which machines are not running the latest version of Firefox or Firefox ESR yet. Go ahead and start running your Firefox audit.
Firefox 104 and Firefox ESR 91.13u00a0Query
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) < 104)
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) = 104 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) < 104)
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) = 104 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) = 104 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) < 91) Or
(tblSoftwareUni.softwareName Like '%firefox%esr%' And
Cast(ParseName(tblSoftware.softwareVersion, 3) As bigint) = 91 And
Cast(ParseName(tblSoftware.softwareVersion, 2) As bigint) < 13) Or
(tblSoftwareUni.softwareName Like '%firefox%esr%' And
Cast(ParseName(tblSoftware.softwareVersion, 3) As bigint) = 91 And
Cast(ParseName(tblSoftware.softwareVersion, 2) As bigint) = 13 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) < 104)
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) = 104 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) = 104 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,
tblSoftwareUni.softwareName As Software,
tblMacApplications.Version As Version,
tblSoftwareUni.SoftwarePublisher As 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
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(tblMacApplications.Version, 3) As bigint) = 91
And Cast(ParseName(tblMacApplications.Version, 2) As bigint) < 13) Or
(Cast(ParseName(tblMacApplications.Version, 3) As bigint) > 91 And
Cast(ParseName(tblMacApplications.Version, 3) As bigint) < 104) Or
(Cast(ParseName(tblMacApplications.Version, 3) As bigint) = 104 And
Cast(ParseName(tblMacApplications.Version, 2) As bigint) < 0) Or
(Cast(ParseName(tblMacApplications.Version, 3) As bigint) = 104 And
Cast(ParseName(tblMacApplications.Version, 2) As bigint) = 0 And
Cast(ParseName(tblMacApplications.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) 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) < 104) 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) = 104 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) = 104 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) < 104) 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) = 104 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) < 91) 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) = 91 And
Cast(ParseName(subquery1.Version, 2) As bigint) < 13) 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) = 91 And
Cast(ParseName(subquery1.Version, 2) As bigint) = 13 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) < 91) 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) = 91 And
Cast(ParseName(subquery1.Version, 1) As bigint) < 13))
Order By Domain,
AssetName,
Software