Posted in

Critical “Qinglong” 0-Day Is Hijacking Linux Servers

In early 2026, thousands of developers running the popular Qinglong task scheduler noticed a terrifying trend: server CPU usage instantly hitting 100%. Investigations by Snyk and community researchers revealed that unauthenticated hackers were breaching publicly accessible dashboards to install a hidden cryptominer named .fullgc.

Qinglong, an open-source platform with over 19,000 GitHub stars, is a staple for the Chinese developer community and home-lab enthusiasts. By exploiting two critical authentication bypass flaws, attackers have effectively turned these self-hosted automation hubs into a massive, illegal mining network.


The Vulnerabilities: A Fatal Logic Mismatch

The exploits, tracked as CVE-2026-3965 and CVE-2026-4047, highlight a dangerous architectural flaw: a “logic mismatch” between Qinglong’s security middleware and the underlying Express.js framework.

1. The URL Rewrite Trap (CVE-2026-3965)

The system used a rule that mapped /open/* requests to protected /api/* endpoints. Attackers discovered they could send a single unauthenticated request to /open/user/init to reinitialize the admin account and reset the password, granting them total control of the panel.

2. The Case-Sensitivity Bypass (CVE-2026-4047)

While the security layer looked for protected routes using case-sensitive checks (e.g., /api/), Express.js is case-insensitive. By simply changing the request to /aPi/, hackers bypassed all authentication checks to execute remote code directly on the host system.


Timeline of a Silent Breach

While the technical cause was disclosed in late February, the “in-the-wild” damage began weeks earlier:

  • Feb 7-8, 2026: First reports of .fullgc malware causing severe CPU exhaustion.
  • Feb 10, 2026: Public PoC exploits appear, accelerating the wave of infections.
  • Feb 27, 2026: Snyk researchers officially link the infections to the Express.js routing flaws.
  • March 1, 2026: Qinglong maintainers release a hard-coded fix for the authentication logic.

Inside the Payload: Deceptive Mining

The attackers used a clever naming convention to stay hidden. The malware binary, .fullgc, was designed to mimic a standard Java “Full Garbage Collection” process. To a busy administrator, a “garbage collection” process consuming high CPU looks like a performance bug rather than a malicious intrusion.

On Linux systems, the malware modifies the configuration scripts to ensure it restarts every time the container or host reboots, making manual removal difficult without a full system audit.


How to Secure Your Qinglong Instance

If you are running Qinglong version 2.20.1 or earlier, your system is likely compromised or at extreme risk.

  1. Update Immediately: Pull the latest Docker image (v2.20.2 or higher) which fixes the middleware routing logic.
  2. Audit for Miners: Run ls -a in your root and home directories. Search for hidden files named .fullgc or .gc.
  3. Check Credentials: If you were running an unpatched version, assume your admin credentials have been reset. Change them immediately after updating.
  4. Network Hardening: Never expose a task scheduler directly to the internet. Use a VPN or a Zero-Trust Tunnel (like Cloudflare Tunnels) to access your dashboard.

Conclusion: The Lesson of Framework Friction

The Qinglong exploit is a textbook example of how “secure” code can fail when it doesn’t align with the framework it sits on. When your security middleware sees a URL differently than your router does, a bypass is inevitable.

Leave a Reply

Your email address will not be published. Required fields are marked *