How to Fix CVE-2010-3765: Firefox, Thunderbird and SeaMonkey memory-corruption RCE
| Severity | CVSS 9.8 - Critical |
|---|---|
| Actively exploited? | Yes, listed in CISA KEV (added 2025-10-06); used by the Belmoo malware in October 2010 |
| Affected | Firefox 3.5.x through 3.5.14 and 3.6.x through 3.6.11; Thunderbird 3.0.x before 3.0.10 and 3.1.x before 3.1.6; SeaMonkey 2.x before 2.0.10 |
| Fixed in | Firefox 3.5.15 / 3.6.12; Thunderbird 3.0.10 / 3.1.6; SeaMonkey 2.0.10 (MFSA 2010-73). All are now EOL. move to a current release. |
| Type (CWE) | CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer (remote code execution) |
Exploitation status
CVE-2010-3765 is actively exploited in the wild. CISA added it to the Known Exploited Vulnerabilities (KEV) catalog on as “Mozilla Multiple Products Remote Code Execution Vulnerability”, which makes patching mandatory for U.S. federal agencies under Binding Operational Directive 22-01. Federal agencies were required to remediate it by . If you run an affected system, treat this as an emergency change, not a scheduled one.
Public exploit availability: a public exploit on Exploit-DB has been published. Assume opportunistic scanning and weaponization; prioritize accordingly.
Authoritative references:
Upgrade immediately. CVE-2010-3765 is a remotely exploitable memory-corruption flaw in the Mozilla browser and mail engine, and it was already weaponized by the Belmoo malware in October 2010. CISA added it to the Known Exploited Vulnerabilities catalog on 2025-10-06, with a federal remediation deadline of 2025-10-27. There is no listening network service to firewall off here: the trigger is a malicious web page or HTML message, so the fix is to get a patched build of Firefox, Thunderbird, or SeaMonkey onto every machine.
What is CVE-2010-3765?
CVE-2010-3765 is a client-side memory-corruption vulnerability in the Gecko layout engine shared by Mozilla Firefox, Thunderbird, and SeaMonkey. It is classified as CWE-119 (improper restriction of operations within the bounds of a memory buffer) and carries a CVSS 3.1 base score of 9.8 (critical). Successful exploitation is remote code execution: attacker-supplied code runs with the privileges of the user running the browser.
From the MITRE record: Mozilla Firefox 3.5.x through 3.5.14 and 3.6.x through 3.6.11, Thunderbird 3.0.x before 3.0.10 and 3.1.x before 3.1.6, and SeaMonkey 2.x before 2.0.10, when JavaScript is enabled, allow remote attackers to execute arbitrary code. The defect lives in the layout code path involving nsCSSFrameConstructor::ContentAppended, the DOM appendChild method, incorrect index tracking, and the creation of multiple frames. A crafted document drives the layout engine to mis-track an index and construct frames against a stale or out-of-bounds buffer, which corrupts memory and lets the attacker steer execution.
Why it is dangerous in practice: the attack needs no credentials and no user action beyond opening content. For Firefox and SeaMonkey, that means visiting a booby-trapped web page. For Thunderbird, it means viewing an HTML email that is allowed to run script. This was not theoretical, the record explicitly notes in-the-wild exploitation by the Belmoo malware, which is why CISA flagged it 15 years later for any environment still running these legacy builds.
Am I affected?
You are affected if any of these are installed and not yet on the patched build:
- Firefox 3.5 through 3.5.14, or 3.6 through 3.6.11.
- Thunderbird 3.0 through 3.0.9, or 3.1 through 3.1.5.
- SeaMonkey 2.0 through 2.0.9.
Check the running version directly. In Firefox or SeaMonkey, open the Help → About dialog, or type about: in the address bar. In Thunderbird, open Help → About Thunderbird. On managed Windows fleets you can read the installed version from the registry or the binary itself:
# Windows: report the installed Firefox build on each host
(Get-Item "C:\Program Files\Mozilla Firefox\firefox.exe").VersionInfo.ProductVersion
# Linux: check the packaged build
firefox --version
thunderbird --version
seamonkey --version
If the version sits in an affected range above and you have not upgraded, treat the host as vulnerable.
How to fix CVE-2010-3765
The fix is a version upgrade. Mozilla advisory MFSA 2010-73 ships the corrected layout code in these builds:
- Firefox 3.5.15 (for the 3.5 line) and Firefox 3.6.12 (for the 3.6 line).
- Thunderbird 3.0.10 (for the 3.0 line) and Thunderbird 3.1.6 (for the 3.1 line).
- SeaMonkey 2.0.10.
Important caveat: every one of those branches is long past end of life. The 3.5.15 / 3.6.12 builds closed this specific hole in 2010, but they have accumulated years of later, unpatched vulnerabilities. The correct action today is not to install the 2010 point release: it is to move the machine to a currently supported version that contains this fix and everything since.
Upgrade Firefox
The cleanest path is the in-product updater: open Help → About Firefox and let it download and apply the latest release, then restart the browser. For managed Windows fleets, deploy the current Firefox ESR MSI through your software-distribution tool rather than relying on each user to click update. On Linux, update through your distribution rather than the 2010 EOL package:
# Debian / Ubuntu: pull the current packaged Firefox (firefox-esr on Debian)
sudo apt-get update && sudo apt-get install --only-upgrade firefox-esr
# Fedora
sudo dnf upgrade --refresh firefox
Upgrade Thunderbird and SeaMonkey
Thunderbird updates the same way: Help → About Thunderbird triggers the built-in updater; restart when it finishes. SeaMonkey is updated from Help → Check for Updates. Because the 2.0 line is retired, download a current SeaMonkey release from the project site instead of staying on 2.0.x. As an interim hardening step in Thunderbird, disable JavaScript in messages (it is off by default in modern builds) so HTML mail cannot drive the vulnerable code path.
After the upgrade
- Fully close and relaunch the application so the patched libraries load, an update staged but not restarted leaves the old, vulnerable process running.
- Reopen the About dialog and confirm the version is at or above the fixed build (or a current release).
- If a host ran an affected build with internet access during the exposure window, review it for compromise and have the user change passwords entered through that browser, since RCE here runs as the logged-in user.
If you can't upgrade immediately
There is no network filter that fixes this, because the vulnerable component is the user's own browser, not a server port. The only meaningful stopgap is to deny the engine the JavaScript it needs to trigger the bug.
Disable JavaScript as a temporary control
The exploit requires JavaScript to be enabled. Turning it off blocks this specific vector until you can upgrade. In Firefox/SeaMonkey of that era, open about:config and set javascript.enabled to false. In Thunderbird, make sure scripting in messages is disabled (Options / Preferences, under message display). This breaks most modern web pages and is strictly a holding measure. schedule the upgrade.
Mitigations are temporary. Get a patched, supported build onto every affected machine as soon as you can.
Verify the fix
Confirm the patched build is the one actually running, on every host, a half-upgraded fleet is the usual reason this CVE lingers.
Open Help → About (or about: in the address bar) and confirm the version is at or above Firefox 3.5.15 / 3.6.12, Thunderbird 3.0.10 / 3.1.6, or SeaMonkey 2.0.10: ideally a current supported release. On managed estates, re-run the version-reporting command above across the fleet and reconcile the results, then re-run an authenticated vulnerability scan and confirm the scanner no longer flags CVE-2010-3765.
Frequently asked questions
Which versions of Firefox, Thunderbird, and SeaMonkey fix CVE-2010-3765?
Per Mozilla advisory MFSA 2010-73, the fix shipped in Firefox 3.5.15 and 3.6.12, Thunderbird 3.0.10 and 3.1.6, and SeaMonkey 2.0.10. Firefox 3.5.x up to 3.5.14 and 3.6.x up to 3.6.11 are vulnerable, so upgrade to 3.5.15 / 3.6.12 or later. Because all of those branches are end of life, the practical move is a current supported release rather than the 2010 point build.
Can I just disable JavaScript instead of upgrading?
Disabling JavaScript blocks this specific exploit because the memory-corruption trigger needs it (the appendChild / nsCSSFrameConstructor::ContentAppended path). It is a stopgap, not a fix. These versions reached end of life years ago and carry many other unpatched flaws, so upgrade to a patched, supported build.
How was CVE-2010-3765 exploited in the wild?
It was used by the Belmoo malware in October 2010. A malicious web page (or HTML email in Thunderbird) with crafted DOM operations corrupts browser memory and runs attacker code with the privileges of the user running the browser. CISA added it to the Known Exploited Vulnerabilities catalog on 2025-10-06.
These versions are end of life. What should I run instead?
Firefox 3.5/3.6, Thunderbird 3.0/3.1, and SeaMonkey 2.0 are all unsupported. Do not try to stay on the 3.x line. Move to a current Firefox ESR or current Thunderbird, or a current SeaMonkey release, so you keep receiving security updates.
References
- Official vendor advisory: https://www.mozilla.org/en-US/security/advisories/mfsa2010-73
- NVD entry: https://nvd.nist.gov/vuln/detail/CVE-2010-3765
- CISA KEV catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog
- CISA KEV entry: "Mozilla Multiple Products Remote Code Execution Vulnerability" - added 2025-10-06, due 2025-10-27
- Additional reference: http://blog.mozilla.com/security/2010/10/26/critical-vulnerability-in-firefox-3-5-and-firefox-3-6/
- Additional reference: http://blogs.sun.com/security/entry/multiple_vulnerabilities_in_mozilla_firefox
- Additional reference: http://isc.sans.edu/diary.html?storyid=9817
- Additional reference: http://lists.fedoraproject.org/pipermail/package-announce/2010-November/050233.html
Assembled from the official vendor advisory, the NVD record, and the CISA KEV listing on 2026-05-25. Always confirm against the vendor advisory before applying changes in production.
Technical deep dive: how the bug works
The defect sits in Gecko's frame construction code, specifically nsCSSFrameConstructor::ContentAppended. When script appends content to the DOM through appendChild, the layout engine builds rendering frames for the newly added nodes. The flaw is an index-tracking error: under specific append patterns the constructor mis-counts which child it is processing and creates multiple frames against a buffer position that no longer corresponds to valid layout state. That out-of-bounds frame construction corrupts heap memory.
Because an attacker controls the page content and the sequence of DOM operations, they can shape the heap so the corrupted memory lands on attacker-chosen data. From there the classic browser exploitation chain applies: turn the memory corruption into control of an object pointer or vtable, then redirect execution into a payload. The Belmoo malware did exactly this in the wild in October 2010, which is why the CVSS vector is the full-impact AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (9.8). No authentication, low complexity, and complete loss of confidentiality, integrity, and availability on the victim host.
Two practical consequences follow from where the bug lives. First, JavaScript must be enabled for the trigger to fire, which is what makes disabling script a valid temporary control. Second, this is a client-side flaw, it is reached by opening hostile content, not by an attacker connecting to a port you expose. That is why host-based firewall rules and WAFs do nothing useful here, and why the only durable remediation is shipping a patched Gecko build to the endpoint.
Rollout checklist for fleets
- Inventory. Identify every host with Firefox 3.5/3.6, Thunderbird 3.0/3.1, or SeaMonkey 2.0 using the version-reporting commands above. Do not forget portable or secondary installs that the software updater may not see.
- Decide the target. The minimum patched builds are Firefox 3.5.15 / 3.6.12, Thunderbird 3.0.10 / 3.1.6, and SeaMonkey 2.0.10. Since all are EOL, set the target to a current Firefox ESR, current Thunderbird, and a current SeaMonkey release instead.
- Deploy and restart. Push the upgrade through your software-distribution tool or the in-product updater, then force a restart of the application so the patched libraries actually load.
- Verify per host. Reconcile the post-upgrade version report against your inventory. Any host still on an affected build is still exploitable.
- Close out. Re-run an authenticated vulnerability scan and confirm CVE-2010-3765 no longer appears.
Related fixes
Other CVEs touching related code paths, worth patching together with this one:
- How to Fix CVE-2010-1428: Exposed Dangerous Method or Function in Jboss
- How to Fix CVE-2010-0738: Exposed Dangerous Method or Function in Jboss
- How to Fix CVE-2010-5326: Missing Authentication for Critical Function
- How to Fix CVE-2010-5330: Command Injection in Ubiquiti AirOS
- How to Fix CVE-2010-4345: Command Injection in Exim
People also ask
Which versions of Firefox, Thunderbird, and SeaMonkey fix CVE-2010-3765?
Per Mozilla advisory MFSA 2010-73, the fix shipped in Firefox 3.5.15 and 3.6.12, Thunderbird 3.0.10 and 3.1.6, and SeaMonkey 2.0.10. Firefox 3.5.x up to 3.5.14 and 3.6.x up to 3.6.11 are vulnerable, so upgrade to 3.5.15 / 3.6.12 or later. ideally a current supported release, since all of these branches are end of life.
Can I just disable JavaScript instead of upgrading?
Disabling JavaScript blocks this specific exploit because the memory-corruption trigger needs it (the appendChild / nsCSSFrameConstructor::ContentAppended path). It is a stopgap, not a fix. Upgrade to a patched, supported build.
How was CVE-2010-3765 exploited in the wild?
It was used by the Belmoo malware in October 2010. A malicious web page or HTML email with crafted DOM operations corrupts browser memory and runs attacker code as the user running the browser. CISA added it to the KEV catalog on 2025-10-06.
These versions are end of life. What should I run instead?
Firefox 3.5/3.6, Thunderbird 3.0/3.1, and SeaMonkey 2.0 are all unsupported. Move to a current Firefox ESR or current Thunderbird, or a current SeaMonkey release, so you keep receiving security updates.