Mar 5, 2026·5 min read·2 visits
A malicious Rust crate named 'time_calibrators' was discovered on crates.io. It executes a build script to steal '.env' files and sends secrets to a fake 'timeapi.io' domain. Users who installed this crate must immediately rotate all exposed credentials.
The 'time_calibrators' crate, published to the Rust crates.io registry, was identified as a malicious package designed to compromise developer environments. Masquerading as a legitimate time synchronization utility, the package contained code to locate and exfiltrate sensitive credentials stored in '.env' files. The stolen data was transmitted to a remote command-and-control server designed to impersonate the legitimate 'timeapi.io' service. The package was removed within three hours of publication, limiting its spread, but represents a sophisticated supply chain attack linked to the SyncFuture espionage campaign.
On March 3, 2026, the Rust security team identified and removed a malicious crate named time_calibrators from the crates.io registry. This incident constitutes a Supply Chain Compromise (CWE-506: Embedded Malicious Code), where an attacker publishes a package with a deceptive name to trick developers into installing it. The package purported to be a library for time calibration but served solely as a vehicle for data exfiltration.
The attack surface in this context is the developer's local machine and Continuous Integration (CI) environments. Unlike typical software vulnerabilities that exploit bugs in valid code, this entry represents a deliberate injection of malware into the software dependency tree. The crate leveraged the trust model of the Cargo ecosystem, where dependencies are often pulled automatically based on semantic versioning or direct addition to Cargo.toml.
The primary impact is the complete compromise of development secrets. Because the malware specifically targets .env files—which conventionally store high-value secrets like API keys, database credentials, and service tokens—the potential damage extends beyond the local machine to the cloud infrastructure and third-party services accessed by those credentials.
The malware achieves execution persistence and immediate activation through the use of a build.rs script. in the Rust ecosystem, build.rs allows packages to compile non-Rust code or perform system checks before the main package is compiled. This script runs automatically when a developer executes cargo build or cargo check, meaning the victim does not need to run the application or even import the library in their code to trigger the payload.
Upon execution, the malicious code initiates a file system reconnaissance phase (ATT&CK T1083). It recursively searches the project root and parent directories for files named .env. This targeting is specific and intentional, exploiting the common "12-factor app" pattern where configuration is stored in environment files. The code likely utilizes standard Rust file I/O libraries (std::fs, walkdir) to locate these files without raising alerts from standard antivirus software, which may view file reading within a build directory as benign behavior.
The collected data is aggregated into a payload for exfiltration. The use of a build script for this purpose is a known technique in malicious crates because it guarantees execution privileges equal to the user running the build, often bypassing runtime sandboxes or restrictions that might apply to the final compiled binary.
The exfiltration mechanism employs a sophisticated masquerading technique (ATT&CK T1036.005). The malware transmits the stolen .env contents to a command-and-control (C2) server configured to mimic the legitimate service timeapi.io. Analysis indicates the use of look-alike domains such as timeapi[.]co or time-api[.]io. This masquerading serves two purposes: it evades casual inspection of network logs by developers who might expect time-related traffic from a crate named time_calibrators, and it attempts to bypass domain-based firewall rules that might allow traffic to known utility APIs.
The traffic is likely encapsulated in HTTPS POST requests, encrypting the stolen data in transit and preventing network intrusion detection systems (NIDS) from inspecting the payload content. In documented variations of this campaign, the malware includes fallback mechanisms. If the primary exfiltration domain is unreachable, it may attempt to contact other public time services or alternative C2 endpoints to ensure the data is delivered. This resilience indicates a weaponized maturity level, designed for reliability in diverse network environments.
Intelligence correlates time_calibrators with the "SyncFuture" espionage campaign. This threat actor is known for targeting developers in specific geographic regions, notably India and China, using a combination of malicious packages and phishing sites. The distinct behavior of impersonating time services is a hallmark of this group's tradecraft.
The SyncFuture campaign often employs a "spray and pray" approach with typosquatting, hoping to catch developers who make typing errors (e.g., typing time_calibrators instead of a legitimate package). However, the specific targeting of .env files suggests an intent to pivot from developer workstations to corporate infrastructure. By stealing cloud credentials (such as AWS_ACCESS_KEY_ID), the attackers aim to gain persistent access to production environments, bypassing the perimeter defenses that usually protect these assets.
The successful execution of this malware results in a critical breach of confidentiality. The compromised data typically includes long-lived credentials that grant administrative or privileged access to cloud resources. An attacker in possession of a valid .env file can effectively impersonate the application or the developer, allowing them to steal customer data, inject malicious code into production, or incur financial costs through resource abuse (cryptojacking).
Although the crate was removed within three hours, the "zero reported downloads" metric can be misleading in automated environments. Mirrors, caches, and automated dependency update bots might have propagated the package before its removal. Any system that attempted a build including this crate during the window of availability must be treated as fully compromised. The breach is not contained to the local machine; every service referenced in the stolen environment variables must be considered exposed.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
time_calibrators crates.io | * | (Removed) |
| Attribute | Detail |
|---|---|
| Attack Vector | Network (Supply Chain) |
| CWE | CWE-506 (Embedded Malicious Code) |
| Impact | Critical (Credential Theft) |
| CVSS | Critical (Unassigned) |
| Exploit Status | Weaponized |
| Campaign | SyncFuture |
The product contains code that appears to be malicious in nature.