An infected developer workstation is not just an endpoint incident. It can become a publishing account, a cloud admin session, a Kubernetes foothold, and a CI/CD compromise all at once.
Trend Micro’s May 4, 2026 analysis of Quasar Linux (QLNX) is a useful example of that shift: a Linux remote access trojan designed less like noisy commodity malware and more like a quiet access broker for software supply chain environments.
TL;DR
- QLNX is a previously undocumented Linux RAT reported by Trend Micro with rootkit, PAM backdoor, credential theft, keylogging, proxying, and P2P mesh capabilities.
- Its highest-value target is the developer and DevOps credential set: npm, PyPI, Git, AWS, Kubernetes, Docker, Vault, Terraform, GitHub CLI tokens, SSH keys, browser data, and
.envfiles.- It can use
/etc/ld.so.preloadfor user-space rootkit behavior and persistence, and it can compile PAM-related modules on the target when tooling is available.- Detection should focus on behavior: suspicious
gccshared-object builds, changes to/etc/ld.so.preload, hidden credential logs, unusual systemd or autostart entries, and developer-token access by unexpected processes.- Treat any confirmed QLNX infection as a supply chain incident, not just a Linux cleanup task.
Why This Matters
Most supply chain writeups focus on the registry: npm, PyPI, container images, package maintainers, GitHub Actions, and release pipelines. QLNX starts one step earlier.
It assumes the developer workstation is the soft center of the environment. That is a good attacker bet. Developer machines often hold long-lived credentials, local cloud profiles, deploy keys, package registry tokens, Git remotes, SSH keys, kubeconfigs, browser sessions, and .env files. A single compromise can give an operator multiple paths into production or downstream users.
That changes the incident response model. If a normal workstation stealer finds a browser password, you rotate passwords and hunt for reuse. If a DevOps workstation stealer finds npm tokens, PyPI credentials, AWS profiles, kubeconfigs, and SSH keys, you also need to ask what could have been published, built, deployed, or signed while the attacker had access.
What QLNX Does
Trend Micro describes QLNX as a full-featured Linux implant with a large command set. The reported capabilities include host profiling, process enumeration, file upload and download, command execution, screen capture, keylogging through /dev/input or X11, TCP tunneling, SOCKS proxying, SSH-based lateral movement, log clearing, timestamp modification, inotify monitoring, P2P routing, and in-memory module loading.
That breadth matters because QLNX is not only a credential grabber. It can observe, persist, hide, pivot, and turn the compromised host into infrastructure for the next step.
The most important cluster of capabilities for defenders is:
| Capability | Defensive significance |
|---|---|
| Credential harvesting | Pulls developer, cloud, registry, browser, SSH, and local secret files in one operator-triggered sweep |
| LD_PRELOAD persistence | Uses dynamic linker behavior so malicious shared libraries can be loaded broadly across processes |
| PAM backdoor behavior | Targets authentication flow for password capture and potential bypass |
| Rootkit behavior | Hides process, file, and network artifacts from ordinary userland tools |
| P2P mesh | Allows implants to relay through each other, complicating eradication |
| Proxy and tunneling | Turns a developer endpoint into an internal pivot point |
Mapped to MITRE ATT&CK, the core defensive themes align with Dynamic Linker Hijacking (T1574.006), Systemd Service persistence (T1543.002), Cron persistence (T1053.003), Unsecured Credentials (T1552), Keylogging (T1056.001), and Masquerading (T1036).
The Supply Chain Angle
The credential list is the real story.
Trend Micro reported that QLNX looks for high-value developer and infrastructure files including .npmrc, .pypirc, .git-credentials, AWS credentials, Kubernetes kubeconfig, Docker’s config.json, Vault tokens, Terraform credentials, GitHub CLI tokens, SSH key material, browser databases, shell history, /etc/shadow when root, and .env files in the user’s home directory.
Those are not random secrets. They map directly to operational leverage:
| Stolen material | What an attacker may be able to do |
|---|---|
.npmrc, .pypirc | Publish malicious package versions or access private registries |
| Git credentials and GitHub CLI tokens | Pull private source, modify repositories, tamper with workflows |
| AWS credentials | Access cloud resources, secrets, storage, workloads, and IAM paths |
| Kubernetes kubeconfig | Deploy containers, read secrets, exec into pods, pivot inside clusters |
| Docker config | Pull or push container images, access private registries |
| SSH keys and config | Move laterally through servers already trusted by the developer |
.env files | Harvest database, SaaS, API, and internal service credentials |
This is why a QLNX case should trigger a package and release integrity review. If the infected user could publish packages, push tags, approve releases, deploy to cloud, or sign artifacts, assume those actions need verification during the exposure window.
Detection Priorities
Do not rely on ps, ls, or netstat alone. QLNX includes hiding behavior, so ordinary local triage can underreport the compromise. Collect telemetry from endpoint sensors, auditd, EDR, file integrity monitoring, shell history where trustworthy, package registry logs, cloud logs, Git provider logs, and network controls.
Start with the artifacts and behaviors Trend Micro highlighted:
/etc/ld.so.preload/usr/lib/libsecurity_utils.so.1/usr/lib/.libpam_cache.so/tmp/.pam_cache/var/log/.Test-unix/var/log/.ICE-unix/tmp/.X752e2ca1-lock~/.config/systemd/user/quasar_linux.service~/.config/autostart/quasar_linux.desktop/etc/systemd/system/quasar_linux.service/etc/init.d/quasar_linux/tmp/.hide_src_*.c/tmp/.pcs_*/tmp/.pam_src_*Useful behavioral hunts:
gcc AND "-shared" AND "-fPIC" AND ("-lpam" OR "ld.so.preload")write OR modify on /etc/ld.so.preloadnew files under /usr/lib/ with hidden or security-themed namesnew systemd units containing unexpected ExecStart pathsnew crontab @reboot entries from developer accountsprocess names resembling kernel threads but owned by userland pathsaccess to .npmrc, .pypirc, .aws/credentials, .kube/config, .docker/config.json by non-interactive processesnetwork sessions from developer hosts to unfamiliar TLS endpoints followed by token accessFor Linux auditd, a narrow starting point is:
auditctl -w /etc/ld.so.preload -p wa -k ld_preload_changeauditctl -w /etc/pam.d/ -p wa -k pam_config_changeauditctl -w /usr/lib/ -p wa -k usr_lib_writeauditctl -w /etc/systemd/system/ -p wa -k systemd_persistenceauditctl -w /etc/init.d/ -p wa -k initd_persistenceTune this before broad production use. /usr/lib/ writes can be noisy during package updates, but they should not be routine on developer workstations outside managed software installation windows.
Response Playbook
If QLNX is suspected, do not treat process termination as cleanup. With LD_PRELOAD persistence, killing the visible process before removing the loader path can cause re-execution when normal commands run.
- Isolate the host from untrusted networks while preserving volatile evidence where possible.
- Collect memory, process, network, file, and audit telemetry before rebooting.
- Inspect
/etc/ld.so.preload, PAM-related paths, systemd units, crontabs, shell startup files, XDG autostart entries, and init scripts. - Compare local process and port listings with EDR, kernel telemetry, and external network observations.
- Rotate credentials from a clean system: npm, PyPI, GitHub, Git, cloud, Kubernetes, Docker registry, Vault, SSH, database, SaaS, and CI/CD tokens.
- Review package registry publishing history, Git pushes, release tags, CI workflow changes, container pushes, and cloud API activity for the suspected access window.
- Rebuild the workstation from a trusted image if persistence or rootkit behavior is confirmed.
The key discipline is sequencing. Remove or neutralize persistence first, preserve evidence where the business impact allows, and rotate credentials only from clean infrastructure.
What You Can Do Today
For developer workstations:
- Remove long-lived package publishing tokens where trusted publishing or short-lived credentials are available.
- Move cloud access toward SSO, short sessions, scoped roles, and device posture checks.
- Alert on access to developer secret files by unexpected binaries.
- Forward Linux audit, systemd, shell, EDR, and network telemetry from engineering endpoints, not only servers.
- Inventory who can publish packages, push release tags, approve CI workflows, deploy to production, and access Kubernetes clusters.
For incident responders:
- Add
/etc/ld.so.preload, PAM module paths, systemd unit paths, XDG autostart, and developer credential files to Linux triage checklists. - Build a “compromised developer workstation” response path that includes source control, package registry, cloud, container registry, and CI/CD review.
- Validate package releases by artifact hash, source commit, signer, build workflow, and publication actor.
- Practice credential rotation at dependency speed. A token rotation plan that takes three days is too slow for a package publishing compromise.
Related Posts
- GitHub Finally Puts a Human in the Loop: npm Staged Publishing Explained - why human approval and 2FA matter when registry publishing becomes the attack path.
- The Package You Trusted: How the Axios Supply Chain Attack Happened - a practical example of package trust being abused downstream.
- Shai-Hulud: The Open-Source GitHub Actions Token Harvester That Just Went Public - CI/CD token theft from the attacker’s perspective.
- Rapid Compromise Triage: First 10 Minutes on Linux and Windows - first-response triage habits that help preserve signal.
- Linux Privilege Escalation: Attack Techniques and How to Detect Them - broader Linux detection coverage for post-exploitation behavior.
Sources
- Trend Micro - Quasar Linux (QLNX): A Silent Foothold in the Software Supply Chain
- MITRE ATT&CK - Hijack Execution Flow: Dynamic Linker Hijacking (T1574.006)
- MITRE ATT&CK - Create or Modify System Process: Systemd Service (T1543.002)
- MITRE ATT&CK - Scheduled Task/Job: Cron (T1053.003)
- MITRE ATT&CK - Unsecured Credentials (T1552)
- MITRE ATT&CK - Input Capture: Keylogging (T1056.001)
- MITRE ATT&CK - Masquerading (T1036)