Pale Moon: Release notes
General notes:
DiD This means that
a fix is "Defense-in-Depth": It is a fix that does not apply to a
(potentially) actively exploitable vulnerability in Pale Moon, but
prevents future vulnerabilities caused by the same code, e.g. when
surrounding code changes, exposing the problem, or when new attack
vectors are discovered.
Rejected security patches:
This means that patches were theoretically applicable to our code but
considered undesirable, which could be due to unwanted changes in
behavior, known regressions caused by the patches, or unnecessary risks
for stability, security or privacy.
v33.5.1 (2025-01-15)
This is a small bugfix and security release.
Changes/fixes:
- Changed the way cookies are handled internally to fix an
issue with cookie database corruption as a result of updates to domain
suffixes.
- Fixed an issue with Alternative-Services protocol
negotiation.
- Fixed a potential crash scenario with Structured Clone
operations. DiD
- Fixed a potential issue with line breaking if out of memory.
- Fixed a rare crash with opportunistic encryption.
- Minor code cleanup.
- Security issues addressed: CVE-2025-0239 and CVE-2025-0238.
v33.5.0 (2024-12-05)
This is a development, bugfix and security release.
Note: Intel Mac builds are now "ad hoc" signed instead of unsigned,
which should solve potential issues with newer macOS while still being
compatible with old OS X. If you experience issues, please post in the Mac
board on the forum for support.
Changes/fixes:
- Implemented Regular Expression "match indices" (/d) feature.
- Added a way to programmatically clear the DNS cache in the
browser, and added a button to the UI for it in about:networking.
- Updated handling of referrer policies to adhere to the
updated spec.
- CSS font
variations keywords no longer throw
an error. See implementation notes.
- CSS
border-radius will now also apply to
element outlines.
- Improved the display of amount of cached web content in
preferences when cache is being cleared.
- Improved the installer AVX check to skip on early versions
of Windows 10 (which don't support it).
- Updated NSS to 3.90.5 (unofficial) to pick up some security
fixes.
- Refreshed the built-in list of effective top-level domains.
- Fixed several application crashes.
- Reduced unnecessary debug/informative messages in release
builds (WebGL and CSP).
- Backed out building against ffmpeg 6.0 and ffvpx 6.0 for
causing a video playback regression on full-range videos (levels 0-255).
- Cleaned up a large amount of leftover Boot2Gecko code,
simplifying code paths throughout the code base.
- From this version forward we also publish language packs
for Persian (Farsi), Hindi, Kannada and Vietnamese.
- Security issues addressed: CVE-2024-11693 and
CVE-2024-11704 (DiD).
Implementation notes:
- The CSS font variations keywords (
woff2-variations ,
truetype-variations , etc.) allow webmasters to
indicate format hints for @font-face font resources so
authors can provide alternative resources for browsers that don't
support tech(variations) . The intent of these hints is to
provide an alternate font with variations in addition to regular fonts
without. Unfortunately, some webmasters don't indicate a base font the
variation font face would be an alternate for, which resulted in Pale
Moon throwing an error on the only @font-face src
entry provided, in turn having the web font not being loaded at all
(because no valid entry was found), breaking website layout. From this
version onwards, we parse the -variations keywords
allowing variation alternative font-faces to be loaded, even if no base
font was specified. To webmasters only supplying @font-face entries
with variations keywords: please understand the intent of this CSS 4
spec and always provide a base font entry (graceful fallback).
v33.4.1 (2024-11-05)
This is a small bugfix and security release.
Changes/fixes:
- Added a processor check to the 64-bit installer for Windows
to check for AVX.
Note: this check does not work on Window 7/8/8.1 and will allow
installations on non-AVX processors there.
Note: if you are running Windows 10 before build 2004 (before 20H1),
this check may fail on AVX-capable CPUs and prevent installation.
- Improved handling of multipart/mixed documents.
(CVE-2024-10461 and CVE-2016-2816) DiD
- Addressed CVE-2024-10463.
v33.4.0.1 (2024-10-09)
This is a small update to address two important issues:
- Extension compatibility issues with the ghostbuster
(leading to tab handling problems).
- Windows 7 compatibility issues in 32-bit builds on some
systems (leading to application UI paint failures/black window).
v33.4.0 (2024-10-08)
This is a development, bugfix and security release.
Changes/fixes:
- Introduced the "ghostbuster" concept; this is an automated
internal mechanism to attempt cleanup of particularly problematic web
content after a tab or window is closed. See implementation notes.
- Added support for the PROT_MPROTECT security feature on
targets that use it (notably PaX and NetBSD).
- Implemented preferences to give the user control over the
Same-Origin Policy (SOP) and CORS preflight. See implementation notes.
- Improved buildability on NetBSD and Altivec architectures.
- Fixed building issues on Apple Silicon Mac with XCode 16.
- Added workarounds for non-standard MSE/WebM/VPx encoding on
YouTube that could cause video buffering and halting issues.
- Dev: Changed the default credentials mode for module
scripts from 'omit' to 'same-origin', aligning with mainstream.
- Dev: Implemented
getTransform and setTransform
with DOMMatrix arguments.
- Dev: Implemented ES2023 Hashbang grammar proposal.
- Fixed an issue with JavaScript's
StructuredClone .
- Security issues addressed: CVE-2024-9396.
- Rejected:
CVE-2024-9398 (properly informing the user about attempts to use
unhandled protocols by web pages is considered more important than
potential determination whether a handler for such a protocol is
installed)
Implementation notes:
- When very complex "modern" websites get closed by the user,
it is possible that the browser is unable to properly release all the
resources attached to it, especially those resources, modules and
scripts that were part of Shadow DOM or complex interlinked module
scripts. This can then result in "detached" web content and scripts
that continue to use memory, have active event listeners and loaded
scripts. Mainstream browsers are less affected by this as their
multi-process setups will effectively "throw the baby out with the bath
water" by simply killing the relevant content process. Since we don't
have that luxury of a lazy solution to an architectural problem, we
need to handle these so-called "ghost windows" resulting from this
problem internally without restarting the browser process. This version
of Pale Moon introduces the "ghostbuster" concept to try and address
this: an automated, internal mechanism that periodically checks for the
existence of ghost windows and severs links of them, so that
garbage/cycle collection can come in afterwards and release the
resources, hopefully preventing browser slowdowns and inflated memory
usage over time. If this, for some reason, causes issues for you, you
can disable the ghostbuster by setting the preference
browser.ghostbuster.enabled
to false . Also please report (in detail) on the forum
about the issue you're having if flipping this preference to false
resolves it, so we can look into improving this new feature.
- By user request, primarily for advanced power users who
need this for their local setups, 2 new preferences were introduced to
control how the browser deals with same-origin and CORS.
security.same_origin_policy.enabled , when
set to false , will completely disable checking if scripts
are allowed to be loaded based on the same-origin policy. Security warning: this is a really
bad idea on the open web and you should never blanket disable the
Same-Origin Policy check in a web browser for normal use.
content.cors.bypass_preflight_request ,
when set to true , will no longer send CORS preflight
requests or check preflight responses and always allow cross-origin
requests. Note that this kind of request is normally only made if
sending a request to a server might result in data changes server-side
(e.g. POST). This preference only does something when CORS is already
disabled; provided primarily for specific corner cases where CORS is
disabled and preflight checks (providing an extra safety net for server
data) need to be shut off too.
There are dragons hiding in
these two preferences. Please handle them responsibly.
v33.3.1 (2024-09-10)
This is a minor security and bugfix update.
Changes/fixes:
- Backed out support for FFmpeg 7.0/libavcodec 61 (Linux) due
to it causing a major regression in WebAudio (broken on all platforms).
This is being worked on to re-land at a later date.
- Restricted the
NotifyPaintEvent interface to
chrome code only; there is no reason (other than potential
tracking/fingerprinting) to have this accessible from content.
- Fixed a potentially exploitable issue in JavaScript (
FetchName ).
- Fixed a code correctness issue in XPConnect when creating
sandboxes. DiD
- Added a warning for using externally handled usenet
protocols.
- Security issues addressed: CVE-2024-8383 and CVE-2024-8381.
v33.3.0 (2024-08-13)
This is a major development update.
Important
notes with this version:
- From this version forward, all 64-bit releases require a
processor with AVX capabilities! Please keep an eye on the forum for
announcements of 64-bit SSE builds by the community if you are on
particularly old or otherwise limited hardware that does not support
AVX.
- For Linux users: Starting with this version, our binaries
are built with gcc 11 on a still conservative but more modern build
platform (Oracle Linux 8). As a result, there may be some lib
incompatibilities if you are still running on a particularly old distro
for some reason. While we try to serve as broad of a Linux base as
possible with our binaries, our lowest common denominator will
occasionally shift to newer distros as a result of O.S. life cycles,
compiler capabilities and available libraries.
Changes/fixes:
- Implemented the bulk of the CSS "cascade layers" spec (
@layer{} ).
This implementation is not 100% complete yet, but should satisfy common
use of CSS cascade layers on the web.
- Implemented support for
Sec-Fetch-* headers,
implementing another mechanism to deal with site security. See this
part of the spec for a primer on what this does.
- Added support for FFmpeg 7.0 / libavcodec 61 (Linux).
- Pale Moon will now look up hosts in DNS ahead of time to
make page navigation smoother. See implementation notes.
- Pale Moon will now block access to the reserved address
0.0.0.0 on non-Windows operating systems. See implementation notes.
- Dev: Aligned rounding behavior and precision ranges of
toFixed
and related functions with the spec. See implementation notes.
- Dev: Aligned isTrusted for
PostMessage and BroadcastChannel
with expected values on the web. See implementation notes.
- Dev: Added the
navigator.webdriver attribute
for web compatibility (always false in Pale Moon as we do not support
browser automation APIs).
- Re-implemented the Durstenfeld shuffle for plugin
enumeration that was unfortunately dropped with one of our past
rebases, to strengthen fingerprinting resistance.
- Fixed an issue with character clusters (e.g. for text
selection) resulting from a regression surrounding our improvements for
emoji handling.
- Fixed an issue with setting DOM color values. DiD
- Slightly improved password form handling, detecting
previously unsupported field orders.
- Updated NSS to 3.90.4.
- Updated our emoji font to 15.1.2 (Unicode 15.1 with some
additional extras/updates).
- Code cleanup:
- Removed unused code related to the (incomplete) FoxEye
experiment.
- Removed support code for LibAV and (very) old versions of
FFmpeg. We require libavcodec 58 or later (FFmpeg 4.0+) from this
version forward (Linux).
- Removed click event dispatching code that is no longer
relevant.
- Cleaned up internal macro use in CSS code (this does not
impact any exposed APIs or code).
- Removed the hidden
network.dns.disablePrefetchFromHTTPS
pref. DNS prefetching should not be treated differently for http and
https.
- Security issues addressed: CVE-2024-7531.
Implementation notes:
- Pale Moon will now pre-emptively look up the internet
addresses in DNS for website navigation (e.g. from links). This speeds
up navigation as there will be no delay for DNS lookups when users
navigate to a new host or domain from the visited page. Please note
that this only deals with DNS (i.e.: looking up the addresses of
websites in the domain name system) and Pale Moon will not pre-emptively connect to the
servers in question; it will just have the addresses for them ready in
case the user decides to navigate to them.
For some people, this may still be seen as a privacy issue (e.g. when
the DNS server operated within an organization is tightly monitored for
"unwanted traffic") as it will regularly fire DNS lookups for hosts or
domains the user doesn't actually visit, so if this is a concern for
you and you wish to revert to our previous behavior, go to Preferences
-> Advanced -> tab "Network", and uncheck "Prefetch DNS lookups".
- Pale Moon will no longer allow connecting to the "this
machine" special reserved address 0.0.0.0 (and IPv6 equivalents
[::]/[::0.0.0.0]) on operating systems other than Windows. This is to
mitigate potentially unrestricted access to local resources on
UNIX-like operating systems due to the way the network stack operates
there. If needed for your use case, you can control this behavior
through the preference
network.dns.blockQuad0 -- if set
to true , any attempt to connect to the reserved addresses
will result in an error.
- We aligned behavior of number conversions with what is
generally expected on the web by mainstream browser engines and/or
updated specs. Specifically,
toFixed no longer accepts
negative precision ranges, and toExponential will now
round up at the midpoint in the decimal significand.
- Initially, the mechanisms
BroadcastChannel
and MessagePort implicitly called for dispatched events
to not be trusted, but since browsers marked them as trusted, this was
in conflict with the spec. Eventually, the spec for this was changed to
make them trusted in this case. Pale Moon now follows this behavior as
well.
You can find the release notes for previous
releases of Pale Moon on
the Archived Release
Notes page.
|