GuildCyber
Supply Chain Labs
Challenges
AI Supply Chain Track · Hands-on Labs

You didn't build the model. So why do you trust it?

Every AI system is assembled from parts you didn't make: base models, datasets, adapters, and packages pulled from public hubs. Each is a place to hide an attack. In these labs you catch a model that runs code the moment you load it, and you walk a signing-and-provenance chain to find the one poisoned link before it ships. The artifacts and registries here are simulated.

SUP 01FoundationalDeserialization RCEModel Serialization

The Poisoned Pickle

Most model weights are shared as Python pickle files, and pickle can execute arbitrary code while it loads. A model uploaded to a public hub can therefore run commands on the machine of anyone who downloads it, before a single inference happens. This is one of the most common real AI supply-chain attacks.
The pull: your team wants sentiment-pro.bin — 240k downloads, great benchmarks, uploaded by a community account last week. It ships as a pickle. You're about to torch.load() it on a build server with production credentials.

Task: before you trust it, scan the file. Then choose how to handle it so no attacker code can run.

📦
sentiment-pro.bin
community-hub.io/models/sentiment-pro · 240,102 downloads
pickle
How do you load it?
Scan first, then decide how to load it.
Mark earned · Model Deserialization
You didn't run the payload. The scan exposed a REDUCE opcode that calls os.system on load — nothing to do with the model's weights. Loading with safetensors (a data-only format with no code path) or rejecting the artifact both keep the attacker's code from ever executing. The lesson: never torch.load a pickle from an untrusted source; prefer safetensors and scan artifacts before they touch a build machine.
What this teaches
  • Loading a model can be code execution. Pickle deserialization runs whatever the file tells it to. "Just download the weights" is running someone else's program.
  • Format is a control. safetensors stores tensors only, with no way to embed executable code — which is exactly why it exists. Prefer it for anything untrusted.
  • Scan and sandbox: static-scan artifacts (picklescan and similar), pin and hash what you pull, and never load untrusted models on a machine that holds secrets.
Maps to: Supply Chain Module 1 (Model Artifacts & Serialization) · earns Model Deserialization
SUP 02AdvancedProvenance & SigningSLSA · Sigstore

Break in the Chain

A shipped model is only as trustworthy as its least-trustworthy ingredient. Signing (Sigstore / cosign) and provenance (SLSA, and an ML bill of materials) let you verify each component came from who it claims and wasn't altered. One unsigned link breaks the whole chain.
The build: your model image is assembled from four components pulled from four different sources. It's about to be promoted to production. Your job is the gate.

Task: verify the chain, identify the component that fails verification, quarantine it, and only then ship. Promote a chain with a broken link and you ship the compromise.

Verify the chain first, then decide.
Mark earned · Model Provenance
You caught the poisoned tone-adapter-community: unsigned, with no SLSA provenance and a publisher that didn't match. Quarantining it and shipping only the verified components is exactly what provenance is for — it turns "we think this is fine" into "we can prove each part came from who it claims, unaltered". A single unverified LoRA adapter is all it takes to backdoor a model; the signature is what stops it at the gate.
What this teaches
  • Trust is per-component, not per-model. Base weights, datasets, adapters, and packages each need their own verification; the weakest one sets your real security.
  • Signing + provenance = verifiable trust. Sigstore/cosign proves who published an artifact; SLSA provenance and an MLBOM prove how it was built and what went into it.
  • Unsigned means unknown. "No signature" isn't neutral — for anything entering production it's a stop, because you have no way to know it wasn't tampered with.
Maps to: Supply Chain Module 2 (Provenance, Signing & MLBOM) · earns Model Provenance
SUP 03FoundationalTyposquatting & Dependency ConfusionPackage Integrity

Name Games

Two of the cheapest supply-chain attacks don't tamper with anything — they just get your resolver to pull the wrong thing. Typosquatting registers a look-alike name; dependency confusion publishes a public package that shadows your internal one, often with an absurdly high version so the resolver prefers it.
The pull: your build needs the llama-guard safety model. Your resolver found three packages that answer to that name across registries. Only one is the real vendor release.

Task: read the details and pull the legitimate package. Publisher, namespace, spelling, signature, and a too-good version are your tells.

@meta/llama-guardv2.1.0
Publisher: Meta (verified ✓)Namespace: @meta (scoped)Downloads: 4.1MSignature: signed (cosign)
llama-guardv9.9.9
Publisher: unknownNamespace: none (public index)Downloads: 318Signature: unsigned
llama-gaurdv2.1.0
Publisher: meta-ai-teamNamespace: none (public index)Downloads: 1.2kSignature: unsigned
Pick the legitimate package to pull.
Mark earned · Package Integrity
You pulled the real one: @meta/llama-guard, in the vendor's scoped namespace, signed, with a version that matches the real release. The other two were traps — llama-gaurd is a typosquat (one transposed letter, look-alike publisher), and the unscoped llama-guard v9.9.9 is dependency confusion: an unsigned public package with an inflated version to beat your resolver. The defenses are pinning, scoped/private registries, and verifying the publisher and signature — never the name alone.
What this teaches
  • The name is not the identity. Anyone can publish a package called almost anything. Trust the verified publisher, the namespace, and the signature — not the string you typed.
  • Dependency confusion abuses your resolver. A public package that shadows an internal name, especially with a suspiciously high version, can get pulled ahead of the real one. Pin versions and prefer scoped/private registries.
  • Typosquats bank on a glance. One transposed letter and a look-alike publisher is enough. Automated pinning and allowlists beat human vigilance here.
Maps to: Supply Chain Module 3 (Package Integrity & Dependency Hygiene) · earns Package Integrity
Free to start

The marks you earn here are real.

Create a free account to bank your Guild Marks, climb the public leaderboard, and take on the full track.

Create your account →
These labs are safe reconstructions. No real files are downloaded or executed, and the models, registries, and signatures are simulated in your browser. The attack techniques are real; the artifacts are not.