TeamPCP — Software Supply-Chain Compromise (FBI FLASH-20260702-01)
Executive Summary
TeamPCP is a large-scale software supply-chain campaign flagged by the FBI in FLASH advisory FLASH-20260702-01 (2026-07-02), reportedly affecting 1,000+ organizations. The actors inject malicious code into legitimate developer and security packages — publicly named examples include Trivy, KICS, LiteLLM, and the Telnyx Python SDK — then publish trojanized versions through normal distribution channels and wait for CI/CD pipelines to pull them automatically.
Once installed, the tainted packages deploy credential-stealing malware — CanisterWorm (cloud access tokens, API keys, and credentials for AWS/GCP/Azure), SANDCLOCK (AWS credentials, Kubernetes ServiceAccount tokens, environment variables, and cryptocurrency wallet data), and the self-replicating Mini Shai-Hulud / Miasma worms that spread across npm and PyPI while harvesting secrets. Stolen data is exfiltrated to attacker-controlled GitHub repositories (tpcp-docs, docs-tpcp) and lookalike domains; the actors then extort victims and publish names on a leak site.
The attacker objective is credential harvesting at build time — a single tainted dependency yields cloud keys and cluster secrets that unlock downstream environments. The highest-value defensive angle is watching build/developer hosts and CI runners for package-manager processes that read cloud/SSH/Kubernetes credential material or make outbound connections to the published TeamPCP infrastructure.
Defender priority: Block the FBI-published C2 IPs and lookalike domains (Q1/Q2 — real atomic IOCs), then hunt build/dev hosts for package-install processes touching .aws/.ssh/kube credentials (Q3) and any egress to the attacker GitHub exfil repos (Q4). Rotate every credential exposed to an affected pipeline — assume harvested until proven otherwise.
Source Review & Web Hunter Notes
| Tier | Source | Key finding | Carry forward |
|---|---|---|---|
| 1 | FBI FLASH-20260702-01 (IC3) | Large-scale supply-chain compromise; trojanized dev/security tools; credential theft, persistence, extortion + leak site; published IOCs. | Yes — campaign, IOCs |
| 2 | SecurityAffairs — FBI TeamPCP report | Trojanized Trivy/KICS/LiteLLM/Telnyx SDK; malware CanisterWorm/SANDCLOCK/Mini Shai-Hulud/Miasma; targets AWS/GCP/Azure creds, SSH keys, K8s ServiceAccount tokens, env vars, crypto wallets; exfil via GitHub repos tpcp-docs/docs-tpcp; atomic IPs + lookalike domains. | Yes — TTPs, IOCs |
| 2 | gbhackers / cybernews / HSToday | 1,000+ firms affected; trojanized updates steal cloud tokens, SSH keys, Kubernetes secrets; automatic CI/CD pull is the delivery vector. | Yes — scale, vector |
Web-hunter note: The FBI FLASH lists 27 file hashes that are not enumerated in secondary reporting; this pack therefore uses only the IP and domain IOCs that appear verbatim in reliable secondary sources and leaves hash blocks as REPLACE_WITH_... placeholders to be filled from the FLASH PDF or your own findings. Do not substitute unverified hashes.
Hunt Brief & Attack Chain
Hunt hypotheses (fidelity-ordered)
- H1 (high): A host connects to a published TeamPCP C2 IP — direct atomic-IOC match.
- H2 (high): A host resolves a TeamPCP lookalike domain (
checkmarx.zone,models.litellm.cloud,git-tanstack.com,recv.hackmoltrepeat.com). - H3 (high): A package-manager / interpreter process (npm, node, pip, python, bun, yarn) reads cloud/SSH/Kubernetes credential material during or after an install — the SANDCLOCK/CanisterWorm harvest behavior.
- H4 (medium): Outbound push or reference to the attacker GitHub exfil repos
tpcp-docs/docs-tpcp. - H5 (medium): The Bun runtime is fetched and executed on a build/dev host — the Mini Shai-Hulud / Miasma bootstrap.
- H6 (medium): A security-scanner binary (trivy, kics) or LiteLLM spawns a shell or makes unexpected egress — trojanized-tool post-install behavior.
Attack chain
| # | Step | Telemetry | Hunt angle |
|---|---|---|---|
| 1 | CI/CD auto-pulls a trojanized package | Process (npm/pip install) | H5, H6 |
| 2 | Post-install script fetches Bun / stage-2 | ProcessRollup2 · NetworkConnectIP4 | H5, H1 |
| 3 | Harvest AWS/GCP/Azure/SSH/K8s creds + env | ProcessRollup2 (CommandLine) | H3 |
| 4 | Exfil to GitHub repos / lookalike domains | DnsRequest · NetworkConnectIP4 | H2, H4 |
| 5 | Worm re-publishes to npm/PyPI (self-spread) | Process (npm publish) | H5 |
| 6 | Downstream access with stolen cloud keys | Cloud audit logs | Native §7 |
Consolidated IOC Table
Provenance: IPs and domains below appear verbatim in FBI-derived secondary reporting (SecurityAffairs). File hashes (27 in the FLASH) are not reproduced here and are left as placeholders — pull them from the IC3 FLASH PDF before blocking.
| Type | Value | Confidence | Action | Context | Expiry |
|---|---|---|---|---|---|
| IPv4 | 83.142.209.11 | High | detect | TeamPCP C2 infrastructure | 2027-01-08 |
| IPv4 | 83.142.209.194 | High | detect | TeamPCP C2 infrastructure | 2027-01-08 |
| IPv4 | 83.142.209.203 | High | detect | TeamPCP C2 infrastructure | 2027-01-08 |
| IPv4 | 45.148.10.212 | High | detect | TeamPCP C2 infrastructure | 2027-01-08 |
| IPv4 | 94.154.172.43 | High | detect | TeamPCP C2 infrastructure | 2027-01-08 |
| IPv4 | 67.217.57.240 | High | detect | TeamPCP C2 infrastructure | 2027-01-08 |
| Domain | checkmarx.zone | High | detect | Vendor-lookalike (Checkmarx typosquat) | 2026-10-08 |
| Domain | models.litellm.cloud | High | detect | LiteLLM-lookalike delivery/C2 | 2026-10-08 |
| Domain | git-tanstack.com | High | detect | GitHub/TanStack-lookalike | 2026-10-08 |
| Domain | recv.hackmoltrepeat.com | High | detect | Exfil receiver | 2026-10-08 |
| GitHub repo | tpcp-docs, docs-tpcp | Medium | hunt | Attacker exfil repositories | 2026-10-08 |
| Trojanized pkg | Trivy · KICS · LiteLLM · Telnyx Python SDK | Medium | hunt | Named affected packages (verify installed versions) | n/a |
| SHA256 | REPLACE_WITH_FLASH_HASH (27 in FLASH) | Medium | detect | Malware payloads — pull from IC3 FLASH PDF | 2027-01-08 |
Affected Surface & Telemetry Matrix
| Surface | Required telemetry | Priority | Gap risk |
|---|---|---|---|
| CI/CD runners (Linux) | SyntheticProcessRollup2, NetworkConnectIP4, DnsRequest | Critical | High — runners often lack an EDR sensor |
| Developer workstations | ProcessRollup2, DnsRequest | Critical | Low |
| Build/artifact servers | ProcessRollup2, NetworkConnectIP4 | High | Med |
| Cloud control plane (AWS/GCP/Azure) | CloudTrail / audit logs | High | High — post-theft use is off-endpoint |
| Kubernetes clusters | API server audit logs | Medium | High — ServiceAccount token abuse |
ATT&CK Mapping
| Tactic | Technique | Behavior | Query / Control |
|---|---|---|---|
| Initial Access | T1195.002 — Compromise Software Supply Chain | Trojanized Trivy/KICS/LiteLLM/Telnyx pulled by CI/CD | Q5 · Q6 · pin deps |
| Execution | T1059.004 / T1059.006 — Shell / Python | Post-install script runs, fetches Bun stage-2 | Q5 · Q6 |
| Credential Access | T1552.001 / T1552.005 — Creds in Files / Cloud metadata | Reads .aws/.ssh/kube creds, env vars | Q3 |
| Collection | T1530 — Data from Cloud Storage / Secrets | Harvest cloud tokens, K8s ServiceAccount tokens, wallets | Q3 |
| Command & Control | T1071.001 / T1568 — Web / lookalike domains | C2 to published IPs and typosquat domains | Q1 · Q2 |
| Exfiltration | T1567.001 — Exfil to Code Repository | Push stolen data to GitHub tpcp-docs/docs-tpcp | Q4 |
Native Audit-Log Hunts (non-CQL)
- Dependency audit: Enumerate installed versions of Trivy, KICS, LiteLLM, and the Telnyx Python SDK across build images and lockfiles; compare against vendor advisories and pin to known-good versions.
- AWS CloudTrail: Hunt for
GetCallerIdentity,ListBuckets, or STS activity from CI/CD credentials originating from unfamiliar source IPs (correlate with the C2 IPs) or new user agents shortly after a build. - GCP / Azure audit: Review service-account key usage and token grants from non-pipeline locations after 2026-06-01.
- Kubernetes API audit: Look for ServiceAccount tokens used from outside the cluster / from developer or unknown IPs.
- GitHub org audit log: Search for pushes to or creation of repos named
tpcp-docs/docs-tpcp, and for outbound data pushes from CI tokens.
CrowdStrike LogScale CQL Hunt Queries
Looks for: any endpoint connecting to a published TeamPCP command-and-control IP — a direct atomic-IOC match. FP: near-zero; investigate every hit.
// HUNT: outbound to published TeamPCP C2 IPs (FBI FLASH-20260702-01) // MITRE: T1071.001 | CONF: high FP: low COST: low // REQUIRES: NetworkConnectIP4 | FALSE POSITIVES: none expected #event_simpleName=/NetworkConnectIP4/ | RemoteAddressIP4=/^(83\.142\.209\.11|83\.142\.209\.194|83\.142\.209\.203|45\.148\.10\.212|94\.154\.172\.43|67\.217\.57\.240)$/ | table([ComputerName, aid, ContextBaseFileName, RemoteAddressIP4, RemotePort, UserName, Timestamp], limit=max)
Looks for: resolution of the vendor-lookalike / exfil domains named in the campaign. FP: negligible — these are typosquats with no legitimate use.
// HUNT: DNS for TeamPCP lookalike / exfil domains // MITRE: T1568, T1071.001 | CONF: high FP: low COST: low // REQUIRES: DnsRequest | FALSE POSITIVES: none expected #event_simpleName=/DnsRequest/ | DomainName=/checkmarx\.zone|models\.litellm\.cloud|git-tanstack\.com|recv\.hackmoltrepeat\.com/i | table([ComputerName, aid, DomainName, ContextBaseFileName, UserName, Timestamp], limit=200)
Looks for: an interpreter / package-manager process (node, npm, python, pip, bun, yarn) whose child command line references cloud, SSH, or Kubernetes credential material — the SANDCLOCK/CanisterWorm harvest step. FP: legit tooling (aws-cli, kubectl, terraform) reads these paths; scope to package-manager parents and exclude known IaC/admin accounts.
// HUNT: credential harvest under a package-manager parent // MITRE: T1552.001, T1552.005, T1530 | CONF: high FP: med COST: med // REQUIRES: ProcessRollup2 | FALSE POSITIVES: aws-cli/kubectl/terraform // TUNING: exclude approved IaC service accounts & CI images that legitimately read creds #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName=/^(node|npm|npx|yarn|pnpm|bun|python[0-9.]*|pip[0-9]*)(\.exe)?$/i | CommandLine=/credentials|id_rsa|id_ed25519|\.aws|\.ssh|\.kube|kubeconfig|serviceaccount|access[_-]?key|secret[_-]?key|\.npmrc|\.env|aws_session_token/i | table([ComputerName, aid, ParentBaseFileName, FileName, CommandLine, UserName, ProcessStartTime], limit=200)
Looks for: any process command line referencing the attacker exfil repositories tpcp-docs / docs-tpcp (git push, curl to the GitHub API). FP: low — these repo names are attacker-specific.
// HUNT: exfil to attacker GitHub repos tpcp-docs / docs-tpcp // MITRE: T1567.001 | CONF: med FP: low COST: low // REQUIRES: ProcessRollup2 | FALSE POSITIVES: rare — attacker-specific names #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | CommandLine=/tpcp-docs|docs-tpcp/i | table([ComputerName, aid, ParentBaseFileName, FileName, CommandLine, UserName, ProcessStartTime], limit=200)
Looks for: the Bun JavaScript runtime being downloaded or executed by a Python/Node parent — the Mini Shai-Hulud / Miasma bootstrap that fetches Bun to run its payload. FP: teams that legitimately use Bun; baseline expected Bun usage and alert on Bun spawned by an unexpected package-install parent.
// HUNT: Bun runtime bootstrap (Mini Shai-Hulud / Miasma) // MITRE: T1059.006, T1195.002 | CONF: med FP: med COST: low // REQUIRES: ProcessRollup2 | FALSE POSITIVES: legit Bun adopters // TUNING: allowlist hosts/repos that legitimately build with Bun #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName=/^(python[0-9.]*|node|npm|pip[0-9]*|sh|bash)(\.exe)?$/i | FileName=/^bun(\.exe)?$/i OR CommandLine=/bun\.sh|install.*\bbun\b|curl.*bun/i | table([ComputerName, aid, ParentBaseFileName, FileName, CommandLine, UserName], limit=200)
Looks for: a trojanized security tool (Trivy, KICS) or LiteLLM process spawning a shell or network utility — behavior these scanners should not exhibit. FP: some scanners shell out for plugins; scope to shells/download utilities and correlate with Q1–Q3.
// HUNT: trojanized dev/security tool spawns shell or downloader // MITRE: T1195.002, T1059 | CONF: med FP: med COST: low // REQUIRES: ProcessRollup2 | FALSE POSITIVES: scanner plugin exec // TUNING: correlate with Q1/Q2/Q3; exclude documented plugin behavior #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName=/^(trivy|kics|litellm)(\.exe)?$/i | FileName=/^(sh|bash|dash|cmd|powershell|pwsh|curl|wget|nc|ncat)(\.exe)?$/i | table([ComputerName, aid, ParentBaseFileName, FileName, CommandLine, UserName], limit=200)
CrowdStrike Custom IOA Recommendations
| IOA name | Pattern | Exclusions | Action |
|---|---|---|---|
| TeamPCP-C2-Network | Connection to any published TeamPCP C2 IP / lookalike domain | None | Block (via Falcon Custom IOC, not IOA) |
| PkgMgr-Cred-Read | node/npm/python/pip/bun parent; child cmdline reads .aws/.ssh/.kube creds | Approved IaC service accounts & CI images | Detect |
| Scanner-Spawns-Shell | trivy/kics/litellm parent → sh/bash/curl/wget child | Documented plugin exec | Detect → Block after tuning |
The network indicators (Q1/Q2) are best deployed as Falcon Custom IOCs (block) rather than IOAs. Keep Q3/Q6 as detect-only IOAs until the IaC/plugin exclusions are baselined.
Machine-Readable IOC Appendix
IPs and domains are ready to import. Hashes are placeholders — pull the 27 from the IC3 FLASH PDF before enabling the SHA256 block.
type,value,action,severity,expiration,description,tags ipv4,83.142.209.11,detect,critical,2027-01-08,TeamPCP C2,campaign:TeamPCP ipv4,83.142.209.194,detect,critical,2027-01-08,TeamPCP C2,campaign:TeamPCP ipv4,83.142.209.203,detect,critical,2027-01-08,TeamPCP C2,campaign:TeamPCP ipv4,45.148.10.212,detect,critical,2027-01-08,TeamPCP C2,campaign:TeamPCP ipv4,94.154.172.43,detect,critical,2027-01-08,TeamPCP C2,campaign:TeamPCP ipv4,67.217.57.240,detect,critical,2027-01-08,TeamPCP C2,campaign:TeamPCP domain,checkmarx.zone,detect,critical,2026-10-08,Checkmarx lookalike,campaign:TeamPCP domain,models.litellm.cloud,detect,critical,2026-10-08,LiteLLM lookalike,campaign:TeamPCP domain,git-tanstack.com,detect,critical,2026-10-08,GitHub lookalike,campaign:TeamPCP domain,recv.hackmoltrepeat.com,detect,critical,2026-10-08,Exfil receiver,campaign:TeamPCP sha256,REPLACE_WITH_FLASH_HASH,detect,critical,2027-01-08,TeamPCP payload (from IC3 FLASH),campaign:TeamPCP
Parent(node|npm|python|pip|bun) -> cmdline reads .aws|.ssh|.kube|serviceaccount|.env Parent(trivy|kics|litellm) -> Child(sh|bash|curl|wget|nc) Bun runtime fetched/executed by a package-install parent cmdline references tpcp-docs | docs-tpcp Egress to any TeamPCP C2 IP or lookalike domain
Campaign: TeamPCP (FBI FLASH-20260702-01, 2026-07-02)
Malware: CanisterWorm (cloud tokens/keys AWS/GCP/Azure)
SANDCLOCK (AWS creds, K8s ServiceAccount tokens, env, wallets)
Mini Shai-Hulud / Miasma (self-replicating npm/PyPI worms)
Trojanized: Trivy, KICS, LiteLLM, Telnyx Python SDK
Exfil repos: tpcp-docs, docs-tpcp
1. Inventory Trivy/KICS/LiteLLM/Telnyx SDK versions in build images + lockfiles 2. Pin to vendor known-good; rebuild affected images 3. Rotate ALL secrets reachable from affected pipelines: - AWS/GCP/Azure keys & STS tokens - SSH keys (id_rsa, id_ed25519) - Kubernetes ServiceAccount tokens - npm/PyPI publish tokens, .npmrc, .env 4. Review cloud + GitHub audit logs since 2026-06-01
Detection Validation Gates
| Gate | Check | Pass criteria |
|---|---|---|
| Telemetry ready | DnsRequest + NetworkConnectIP4 on dev/build hosts; CI runners have a sensor | Runners visible in Falcon; if not, note the gap |
| Benign baseline | Run Q3/Q5/Q6 over 7–14 days | Document IaC/Bun/plugin usage as exclusions |
| Positive test | In a lab: package-install parent reads a dummy .aws/credentials; resolve a test domain | Q2 and Q3 fire |
| Promotion | Import IPs/domains as Custom IOCs (block); Q3/Q6 FP acceptable | Network IOCs blocking; behavioral IOAs detect-only |
Hardening — Tiered
- Block the published IPs and domains at the proxy/firewall and import as Falcon Custom IOCs (M1037 — Filter Network Traffic).
- Rotate all pipeline-reachable secrets — cloud keys, SSH keys, K8s ServiceAccount tokens, npm/PyPI publish tokens — and revoke long-lived cloud keys (M1027 / M1015 — Credential + Active Directory/SSO hygiene).
- Pin and rebuild any image using Trivy/KICS/LiteLLM/Telnyx SDK to a vendor-verified known-good version (M1051 — Update Software).
- Egress-restrict CI/CD runners to an allowlist of package registries and required endpoints; deny arbitrary outbound (M1037 — Filter Network Traffic; CIS Software Supply Chain Security Guide).
- Short-lived, workload-scoped cloud credentials — OIDC federation for CI instead of static keys; per-job Kubernetes ServiceAccounts with minimal RBAC (M1026 — Privileged Account Management).
- Lockfile + integrity enforcement — require pinned hashes (`npm ci`, `pip --require-hashes`); block install-time scripts where feasible (`npm --ignore-scripts`) (M1016 — Vulnerability Scanning / supply-chain policy).
- Build-provenance / SLSA — signed artifacts and verified provenance across the pipeline; internal registry mirror with admission control (M1045 — Code Signing).
- Secretless CI — remove static secrets from runners entirely; broker all access through short-lived identity (M1027 — Password/Secret Policies).
- Continuous dependency monitoring — SCA + typosquat/lookalike-domain detection wired into alerting (⚠ best-practice; align to CIS Supply Chain guidance).
Deployable Playbooks
1 · Inventory affected packages (shell)
# Find the named tools + versions across the fleet / build images for t in trivy kics litellm; do command -v "$t" >/dev/null 2>&1 && printf '%s: %s\n' "$t" "$($t --version 2>/dev/null | head -1)"; done # Python SDK check pip show telnyx 2>/dev/null | grep -E '^(Name|Version)' # Grep lockfiles for the named packages grep -REn 'trivy|kics|litellm|telnyx' --include=package-lock.json --include=requirements*.txt --include=poetry.lock . 2>/dev/null
2 · Harden npm/pip installs (CI config)
# npm: deterministic install, no lifecycle scripts, verified integrity npm ci --ignore-scripts # pip: require hashes so a swapped artifact fails closed pip install --require-hashes -r requirements.txt # Restrict runner egress (example: default-deny + registry allowlist at the network layer) # allow: registry.npmjs.org, pypi.org, files.pythonhosted.org, internal mirror # deny: everything else (block the TeamPCP IPs/domains explicitly)
3 · Rotate exposed cloud/K8s credentials (CLI)
# AWS: deactivate + rotate any key used by CI aws iam list-access-keys --user-name ci-deployer aws iam update-access-key --access-key-id AKIAEXAMPLE --status Inactive --user-name ci-deployer # Kubernetes: rotate a compromised ServiceAccount token (delete the secret; controller reissues) kubectl -n build delete secret ci-deployer-token # GitHub: revoke and reissue CI/publish tokens from org settings (audit tpcp-docs/docs-tpcp first)
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Block TeamPCP IPs/domains; network-contain any host with Q1/Q2 hits; freeze affected CI pipelines | SOC | Q1/Q2 hits, block rules |
| Eradicate | Remove trojanized package versions; rebuild images from pinned known-good; kill malicious install processes | DevOps + IR | Lockfile diffs, Q5/Q6 timeline |
| Rotate | Rotate ALL pipeline-reachable secrets (cloud keys, SSH, K8s tokens, publish tokens); revoke static keys | IAM / Cloud | Rotation log |
| Assess exposure | Review cloud/GitHub/K8s audit logs since 2026-06-01 for stolen-credential use from C2 IPs | IR | CloudTrail / audit findings |
| Recover | Re-enable pipelines only after provenance verification; add lookalike-domain + SCA monitoring | Platform | Rebuild + validation record |
Detection Coverage Map
| Technique | Behavior | CQL | IOA/IOC | Coverage |
|---|---|---|---|---|
| T1195.002 | Trojanized package pulled | Q5, Q6 | Dependency audit | Partial — pre-install pull not on endpoint |
| T1552.x / T1530 | Credential harvest | Q3 | PkgMgr-Cred-Read | Good |
| T1071.001 / T1568 | C2 to IPs / lookalike domains | Q1, Q2 | Custom IOC (block) | Good |
| T1567.001 | Exfil to GitHub repos | Q4 | — | Partial |
| T1059.006 | Bun bootstrap | Q5 | — | Partial |
| Post-theft cloud/K8s use | Stolen-key abuse | — | Native §7 audit logs | GAP — off-endpoint |
Known gaps: The initial trojanized-package pull and the downstream use of stolen cloud/Kubernetes credentials happen off the endpoint (in the registry and in the cloud control plane) — those require dependency auditing and cloud/K8s/GitHub audit-log review (§7), not EDR telemetry. CI/CD runners frequently have no Falcon sensor, which is the single biggest coverage risk for this campaign; deploy sensors to runners or compensate with runner egress control. File hashes are unenumerated pending the IC3 FLASH PDF.
Hunt Summary Ticket
TITLE: TeamPCP — Software Supply-Chain Credential-Theft Campaign (FBI FLASH-20260702-01) SEVERITY: Critical (active, 1,000+ orgs, cloud/K8s credential theft) SCOPE: CI/CD runners, developer workstations, build/artifact servers using Trivy/KICS/LiteLLM/Telnyx SDK HYPOTHESIS: A trojanized dependency harvested cloud/SSH/K8s creds and exfiltrated them to TeamPCP infra QUERIES: Q1 C2 IPs | Q2 lookalike domains | Q3 cred harvest | Q4 GitHub exfil | Q5 Bun bootstrap | Q6 scanner spawns shell DO FIRST: Block IPs/domains (Custom IOC); run Q1+Q2 fleet-wide; inventory Trivy/KICS/LiteLLM/Telnyx versions FINDINGS: <record hits> GAPS: package pull + stolen-key use are off-endpoint; CI runners may lack a sensor; 27 FLASH hashes not yet imported ACTIONS: Rotate ALL pipeline secrets; pin/rebuild images; egress-restrict runners; review cloud/GitHub audit logs OWNER: HuntPack VERSION: v0.2 · 2026-07-08
Changelog
table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.References
| Tier | Source | Used for | Access date |
|---|---|---|---|
| 1 | FBI FLASH-20260702-01 (IC3) | Campaign confirmation, IOCs, mitigations | 2026-07-08 |
| 2 | SecurityAffairs — FBI TeamPCP report | Trojanized packages, malware families, IP/domain IOCs, exfil repos | 2026-07-08 |
| 2 | gbhackers — trojanized updates steal cloud tokens/SSH/K8s secrets | Credential targets, delivery vector | 2026-07-08 |
| 2 | Cybernews — 1,000+ firms hit | Scale, extortion/leak-site context | 2026-07-08 |
| 2 | HSToday — FBI warns of TeamPCP supply-chain attacks | Corroboration | 2026-07-08 |