Blog

The Notepad++ supply-chain attack: what happened and how it worked


Shana Buhaisa P Associate Security Consultant

On February 2, 2026, the Notepad++ team disclosed a supply-chain compromise affecting their update infrastructure, confirming that attackers had gained persistent access to hosting systems for several months in 2025. The intrusion began around June, continued through September, and attackers were able to hold on to parts of the internal infrastructure until December.
Importantly, this was not a flaw in the Notepad++ application itself. Instead, the attackers exploited trust in the update delivery pipeline, using infrastructure access to quietly push malicious executables to carefully selected targets.
The campaign has been linked to the Chinese espionage group Lotus Blossom, a long-running threat actor active since at least 2009 and known for highly targeted intelligence operations. The compromised update channel was used to deploy a previously undocumented custom backdoor, dubbed Chrysalis, pointing to a targeted espionage-driven intrusion rather than opportunistic malware distribution.
The activity primarily affected organizations in Southeast Asia, and later Central America, with targets spanning government, telecommunications, aviation, critical infrastructure, and media sectors.

Timeline of the Attack

June 2025 - Initial Compromise

The campaign began in June 2025, when threat actors gained access to systems involved in Notepad++'s update delivery process. By compromising the update infrastructure, the attackers positioned themselves inside a trusted part of the software supply chain.

June to September 2025 - Silent and selective abuse

Over the following months, the attackers used this access to manipulate how updates were delivered. Instead of distributing malware to everyone, they were highly selective, redirecting update requests only for specific targets. Most users continued receiving legitimate updates, allowing the operation to remain unnoticed while targeted victims were served malicious payloads.

September 2025 - Access disrupted, but not gone

In early September, the attacker's access to parts of the hosting environment changed as remediation activity began. However, the operation didn't stop. By leveraging retained credentials and secondary internal services, they were able to maintain a foothold and continue limited malicious operations.

September to December 2025 - Persistence and espionage

During this phase, the attackers focused on maintaining persistence within targeted environments. A custom backdoor, later named Chrysalis, was deployed to selected victims, enabling long-term access and intelligence collection.

December 2025 - The intrusion comes to an end

By December 2025, remaining unauthorized access had been removed and affected services were secured. Malicious update redirection activity stopped as credentials and infrastructure were remediated.

February 2, 2026 - Public disclosure

The Notepad++ team publicly confirmed the supply-chain compromise. Follow-on investigations linked the campaign to the Lotus Blossom threat group and highlighted the narrowly targeted scope of the attack.

How the attack chain worked

  1. Update hijack to update.exe

    The attackers did not exploit a flaw in Notepad++ itself. Instead, they abused the trusted updater mechanism.
    For selected victims, update requests were redirected to attacker-controlled infrastructure, causing the updater to download a malicious installer in place of a legitimate update. Forensic analysis consistently showed a sequential execution chain involving notepad++.exe, GUP.exe and update.exe

    GUP.exe is the WinGUp updater component. In compromised cases, it retrieved a weaponized update.exe, implemented as an NSIS-based installer used as a staging container. Using a legitimate installer format allowed the payload to blend into normal update behavior.

  2. NSIS Installer Payloads and Staging

    The malicious NSIS installer dropped multiple artifacts into user-writable locations such as %AppData%, including:

    • A renamed legitimate binary used for DLL sideloading (observed: BluetoothService.exe, actually a repurposed Bitdefender Submission Wizard)
    • A malicious DLL placed alongside it (commonly log.dll)
    • Encrypted shellcode and supporting loader artifacts

    Publicly observed SHA-256 hashes include:

    • update.exe
      a511be5164dc1122fb5a7daa3eef9467e43d8458425b15a640235796006590c9
    • [NSIS].nsi
      8ea8b83645fba6e23d48075a0d3fc73ad2ba515b4536710cda4f1f232718f53e
    • BluetoothService
      77bfea78def679aa1117f569a35e8fd1542df21f7e00e27f192c907e61d63a2e
    • BluetoothService.exe
      2da00de67720f5f13b17e9d985fe70f10f153da60c9ab1086fe58f069a156924
    • log.dll
      3bdc4c0637591533f1d4198a72a33426c01f69bd2e15ceee547866f65e26b7ad
  3. DLL Sideloading to Shellcode Staging

    The renamed legitimate binary loads its expected DLL dependencies. The attackers supplied a malicious log.dll exporting the same functions the application expects.
    On load, log.dll implements routines such as LogInit and LogWrite, which decrypt and map shellcode into memory. The loader resolves APIs dynamically using custom hashing (FNV-1a combined with a MurmurHash-style avalanche finalizer).

    • LogInit simply loads the complementary loader into memory, establishing the initial execution context.
    • LogWrite, however, implements a custom runtime shellcode decryption and dispatcher. Instead of using standard cryptographic methods, it employs a seeded linear congruential generator and custom arithmetic transformations to unpack encrypted bytes in memory, preparing them for execution.
  4. Chrysalis - The Backdoor

    The final payload, Chrysalis, is the backdoor delivered through the hijacked update mechanism. Its capabilities include:

    • Remote command execution (CreateProcessW)
    • Remote file read/write and data exfiltration
    • Directory enumeration
    • Registry and service-based persistence
    • Self-removal routines
    • Command-and-control communication over HTTP(S), using credentialed endpoints

    Chrysalis uses custom configuration encryption (RC4 + custom routines) and communicates with C2 endpoints that rotated over time. The analysis shows heavy use of API hashing and runtime resolution to maximize stealth.

  5. Warbird Abuse and Evasion

    Some loader variants took advantage of Microsoft's internal Warbird code-protection mechanisms to run shellcode within signed Microsoft binaries. By hiding malicious execution inside trusted processes, this approach made static detection much more difficult and likely played a role in allowing the campaign to remain undetected for several months.

Why this Attack matters

This incident highlights a modern evolution in supply-chain operations:

  • Targeting infrastructure trust, not software vulnerabilities
  • Selective victim delivery instead of mass infection
  • Multi-stage, in-memory payload execution
  • Heavy obfuscation, API hashing, and loader indirection
  • Clear long-term intelligence objectives

By compromising the update pipeline itself, the attackers turned a trusted delivery mechanism into a stealthy malware distribution channel. Limiting infections to carefully selected victims helped them maintain operational secrecy while maintaining control.
This reflects classic espionage tradecraft applied directly to software distribution.

Conclusion

The Notepad++ compromise shows how modern supply-chain attacks prioritize stealth and trust abuse over exploiting application flaws. By inserting themselves into a legitimate update pipeline and targeting only selected victims, the attackers maintained long-term access while avoiding widespread detection.
The key lesson is clear: software trust chains are now active attack surfaces. Update mechanisms, distribution infrastructure, and third-party dependencies must be monitored with the same discipline as internal systems. When malicious payloads arrive through trusted channels, traditional defenses often fail silently.
This incident is a reminder that supply-chain security is no longer theoretical. It is an operational reality and security now depends on visibility into how software is built, delivered, and updated.

IOCs:

Network Indicators:

  • 95.179.213[.]0
  • 59.110.7[.]32
  • 61.4.102[.]97
  • 124.222.137[.]114
  • 160.250.93[.]48
  • 103.159.133[.]178
  • 104.18.38[.]233
  • 151.101.129[.]91
  • 151.101.193[.]91
  • 151.101.65[.]91
  • api[.]skycloudcenter[.]com
  • api[.]wiresguard[.]com
  • skycloudcenter[.]com

Hashes:

  • a511be5164dc1122fb5a7daa3eef9467e43d8458425b15a640235796006590c9
  • b43223daac944eb119fa3614190b7a07c2a8e6d077b0d5763603d678f25e4ada
  • 3bdc4c0637591533f1d4198a72a33426c01f69bd2e15ceee547866f65e26b7ad
  • 77bfea78def679aa1117f569a35e8fd1542df21f7e00e27f192c907e61d63a2e
  • 2da00de67720f5f13b17e9d985fe70f10f153da60c9ab1086fe58f069a156924
  • 98b088d3da9ae991bd5d6cad9b5d1d63952c85d4aeae2d57e6a0800ddb93c691
  • e7cd605568c38bd6e0aba31045e1633205d0598c607a855e2e1bca4cca1c6eda
  • fcc2765305bcd213b7558025b2039df2265c3e0b6401e4833123c461df2de51a
  • 0a9b8df968df41920b6ff07785cbfebe8bda29e6b512c94a3b2a83d10014d2fd
  • 7add554a98d3a99b319f2127688356c1283ed073a084805f14e33b4f6a6126fd
  • 078a9e5c6c787e5532a7e728720cbafee9021bfec4a30e3c2be110748d7c43c5
  • 4c2ea8193f4a5db63b897a2d3ce127cc5d89687f380b97a1d91e0c8db542e4f8
  • 831e1ea13a1bd405f5bda2b9d8f2265f7b1db6c668dd2165ccc8a9c4c15ea7dd
  • 8ea8b83645fba6e23d48075a0d3fc73ad2ba515b4536710cda4f1f232718f53e
  • 00704f9f133115379baf830bcc314932a7beba5c8da7d691082ebeba7f649277
  • 00db3cd213ca408699eb46c21cd2486410340f6aedea4ac669eb6f1de2e4be70
  • 020f41eb6f4c9e8233993bb197e6e5ba963d9bea840c594ed1890f490f99236b
  • 026cddfd4888a4324f75380e08dd1e231240d8c0a5131f599ac67653ae7b3e4a
  • 4a52570eeaf9d27722377865df312e295a7a23c3b6eb991944c2ecd707cc9906
  • 0609f691f4b3b20e83b01204797ac14b229ea7ee703c05035ed14aaf516a742f

URLs for your reference