All vulnerabilities
CRITICALSupply chainexploited in the wildcurated

CVE-2023-29059

Software vendor · 3CXDesktopApp

Summary

Disclosed in late March 2023, the 3CX DesktopApp, an Electron VoIP softphone for Windows and macOS, was trojanized at the source: attackers compromised 3CX's build pipeline and shipped malware inside legitimately signed binaries (affected Windows versions 18.12.407 and 18.12.416, plus several macOS builds). The malicious installer side-loaded a rogue ffmpeg.dll that read encrypted shellcode appended to a genuine, Microsoft-signed d3dcompiler_47.dll, abusing the decade-old Windows signature weakness CVE-2013-3900 so the payload rode inside a valid Authenticode signature. A downloader then pulled command-and-control addresses from icon files hosted on a GitHub repository, and a final-stage infostealer harvested browser history and the app config. The landmark detail, established by Mandiant, is that this was the first publicly documented case of one software supply-chain compromise leading to another: a 3CX employee had installed a trojanized X_TRADER application (software Trading Technologies discontinued in 2020) carrying the VEILEDSIGNAL backdoor, which gave the attackers the foothold that eventually reached 3CX's build environment. The activity is attributed with varying confidence to a suspected North Korean cluster (Mandiant's UNC4736, CrowdStrike's Labyrinth Chollima, broadly the Lazarus group). 3CX advertises about 600,000 customers and 12 million daily users, though confirmed hands-on second-stage exploitation reached fewer than ten machines, mostly cryptocurrency firms.

How to fix it

  • Uninstall the trojanized DesktopApp versions, reinstall a clean build from a verified pipeline, prefer the browser PWA, and hunt the published indicators (file hashes, C2 domains, the GitHub icon-file C2).
  • Enforce CVE-2013-3900 by setting EnableCertPaddingCheck to 1 (both the standard and Wow6432Node Cryptography registry keys on 64-bit Windows) so data appended to a signature no longer rides inside a valid Authenticode result.
  • Rebuild and re-sign from an isolated, monitored signing environment with signing keys held in an HSM.
  • Verify installer integrity beyond the signature: pin and compare known-good hashes, since the malicious binaries here were validly signed.

How to avoid it in your code

  • Do not treat a valid code signature as proof a binary is safe; pair signing with provenance (SBOM, reproducible builds, SLSA) and behavioral detection.
  • Isolate and monitor build and signing infrastructure; this breach reached both the Windows and macOS pipelines through stolen developer credentials.
  • Remove discontinued or unmaintained third-party software, since the entire cascade began with a 2020-discontinued X_TRADER app that was still downloadable and trojanized.
  • Favor behavioral EDR over signature trust; SentinelOne and CrowdStrike flagged this while VirusTotal scanning returned an all-clear.
  • Treat a single high-fidelity EDR alert as a lead to investigate, not a false positive to dismiss.

Advisory details

How it happened

The chain ran backwards from the visible victim. In February 2022, Trading Technologies' website was compromised and served a trojanized installer for X_TRADER, a trading platform the company had already discontinued in 2020. A 3CX employee downloaded it to a personal machine around April 2022, where the VEILEDSIGNAL backdoor stole credentials; two days later the earliest sign of 3CX network compromise appeared, via the corporate VPN using those stolen credentials. Months of lateral-movement followed, until the attackers held both the Windows and macOS build environments and could insert their code into the official 3CXDesktopApp. The runtime mechanics were a textbook DLL side-load: 3CXDesktopApp.exe loaded a malicious ffmpeg.dll, which located encrypted shellcode appended after a "FEEDFACE" marker inside the genuine signed d3dcompiler_47.dll, decrypted it, and reflectively loaded the next stage. That downloader fetched .ico files from github.com/IconStorages/images, decoding C2 servers from base64 data hidden after a delimiter, and the infostealer ICONICSTEALER then read browser history from Chrome, Edge, Brave and Firefox along with the 3CX config. Because CVE-2013-3900 (the WinVerifyTrust appended-data weakness, whose fix is opt-in and disabled by default) was never mitigated, the tampered DLL still showed as correctly signed.

Why it matters

3CX's first instinct was to dismiss the alerts. SentinelOne's EDR began flagging the signed app on March 22, 2023, and customers raised it on the 3CX forum, but staff rechecked the binary on VirusTotal, got an all-clear, and treated the warning as a false positive. Only on March 29, when CrowdStrike, SentinelOne and Sophos published simultaneously, did 3CX acknowledge the breach, pull the app, hire Mandiant and ship a clean rebuild. The story matters for two reasons. First, the cascading or second-order supply-chain-attack is now a documented pattern: one vendor's compromise becomes the delivery vehicle for the next, which makes the SolarWinds-style "trust your signed updates" model fragile in both directions. Second, the blast radius and the realized damage diverged enormously, a potential reach in the millions versus fewer than ten deeply exploited machines, mostly crypto companies (Kaspersky tracked a deeper implant it named Gopuram on that subset). The same Lazarus-linked cluster runs through Sony Pictures, WannaCry, Ronin and Bybit, and the supply-chain method sits alongside SolarWinds, CCleaner, ASUS ShadowHammer and the xz backdoor. Note that CVE-2023-29059 designates the trojanized build itself (embedded malicious code), not a coding flaw in 3CX's own logic, and that it is distinct from the abused CVE-2013-3900.

References

Related vulnerabilities

All Supply chain →