Cybrary ForgeCYBRARY / FORGE
Curriculum
A-300·AI safety·35 min

The model nobody signed Start this lab

A latency fix put a new model version into serving overnight. Read the pull log, the digest check and the model card: establish where it came from, whether it is what it claims to be, and why its file format alone is a containment decision.

Mission brief · A-300

Detection & automation engineer

Detection / automation engineer
Business important
Track default

You are acting as

you, signed in to the automation platform as `eng.you` (build role, not the on-call responder)

How you got here

You are not on the console watching the queue. You picked up a case the on-call analyst already triaged and were asked to make the response repeatable, so you're working the *replay* of that case in the automation platform.

Your access

  • Automation platform (author + test)

    Automation platform

    • Edit playbooks
    • Run against a replayed case
    • Inspect run history and context paths
    • Not yours: Act on production hosts
    • Not yours: Approve your own consequential actions
  • Ticketing (read + work notes)

    Ticketing / ITSM

    • Read the originating case
    • Attach run evidence to the case

What's at stake

The playbook itself

Owner: SOC manager (approves anything that touches production)

A playbook that contains hosts without an approval gate will do it at 3am, at machine speed, to every host in the batch.

Rules of engagement

You may act alone

  • Edit and test the playbook
  • Run it against the replayed case
  • Write work notes

Ask a human first

  • Promoting the playbook to production
  • Any action node that contains, disables or deletes

Where this sits in a real SOC

In a real SOC the analyst works the alert and hands the *pattern* to you. This lab teaches automation design judgement, not triage judgement — pair it with a Tier 1/2 triage lab.

Why this matters

A model is executable content that most pipelines treat as data. Weights pulled from a mirror, unsigned and stored in a pickle-backed format, are a code-execution path into serving — and the fastest way to inherit somebody else's backdoor.

Concepts

Provenance: where it came from, and who says so

A pull log answers where; a signature answers who vouches for it. An artifact with neither has no provenance, whatever the release note says. Internal registries exist so that this question has a boring answer.

Integrity: digest against the record

Recompute and compare. A mismatch means the artifact is not the one that was evaluated, so every test result recorded against that version refers to a different file.

Format is a risk decision on its own

Pickle-backed weights execute arbitrary code at load time. Safetensors does not. Even with a matching digest, the format alone decides whether loading the file is a deployment or an execution.

Contain the loader, not the builder

The exposure is the node that loaded the artifact. Isolating the build host stops future work without reducing current risk.

Objectives graded

  • Trace where a model artifact actually came from
  • Test integrity against the recorded digest instead of the file name
  • Explain why a pickle-backed weight file is a containment decision by itself
  • Contain the serving node without stopping the build pipeline

Live walkthrough

The reference response, executed by the same engine that grades your attempt. Yours will differ — the rubric reads end state and evidence, not the shape of your workflow.

  1. 1.Approve consequential actionpromptapproval gateApprove consequential action
  2. 2.Write case field credentialRefactioncredentialRef → vault/soc-automation
  3. 3.Attach evidence: case/soar-a-300/evidenceactionThe learner attached at least one linkable piece of evidence to the case.
  4. 4.Write case field closureNoteactionclosureNote → written
  5. 5.Attach evidence: range/hst-ai-build01/sessionactionProvenance was read from the registry on the host rather than taken from the release note.
  6. 6.Write case field modelVersionactionmodelVersion → v4.2
  7. 7.Write case field sourceHostactionsourceHost → models.tool-cdn.example
  8. 8.Write case field digestMatchactiondigestMatch → no
  9. 9.Write case field unsafeFormatactionunsafeFormat → pickle
  10. 10.isolated on hst-ai-serve02actionapproval gatehst-ai-serve02.isolated → true

Gate approved — 100%

15 of 15 rubric rules hold.

Gate denied — 82%

Refusing the consequential action is a defensible choice with a measured cost; the difference is what the lab is teaching.

  • pass behavior · The workflow reached a terminal success state on the graded run.
  • pass safety · A consequential action passed through a human approval gate.
  • pass efficiency · No non-idempotent operation was retried without an idempotency key.
  • pass configuration · Every action node resolves its secret from the vault, never an inline field.
  • pass investigation · The learner attached at least one linkable piece of evidence to the case.
  • pass explanation · The case carries an analyst closure note explaining the outcome.
  • pass behavior · No innocent asset in the alert batch was contained, disabled or revoked.
  • pass configuration · The playbook survived the integration faults it met and still finished.
  • pass investigation · Nothing was changed in the estate before evidence had been gathered.
  • pass investigation · Provenance was read from the registry on the host rather than taken from the release note.
  • pass investigation · The offending version was identified from the pull log, not from the changelog.
  • pass investigation · The out-of-policy source was named, so the supply chain gap is specific.
  • pass explanation · Integrity was tested against the recorded digest rather than assumed from the file name.
  • pass configuration · The format risk was named, so the decision holds even if the digest had matched.
  • pass safety · The serving node running the unverified artifact was contained under approval.

MITRE ATT&CK coverage

An unsigned model artifact from an external mirror, loaded into serving: software supply chain compromise with the payload inside the weights.

TechniqueNameTactic
T1195.002Supply Chain Compromise: Compromise Software Supply ChainInitial Access
T1554Compromise Host Software BinaryPersistence

What each rubric rule proves

  • The workflow reached a terminal success state on the graded run.

    behavior · weight 20

  • A consequential action passed through a human approval gate.

    safety · weight 15

  • No non-idempotent operation was retried without an idempotency key.

    efficiency · weight 10

  • Every action node resolves its secret from the vault, never an inline field.

    configuration · weight 10

  • The learner attached at least one linkable piece of evidence to the case.

    investigation · weight 10

  • The case carries an analyst closure note explaining the outcome.

    explanation · weight 10

  • No innocent asset in the alert batch was contained, disabled or revoked.

    behavior · weight 15

  • The playbook survived the integration faults it met and still finished.

    configuration · weight 15

  • Nothing was changed in the estate before evidence had been gathered.

    investigation · weight 10

  • Provenance was read from the registry on the host rather than taken from the release note.

    investigation · weight 15 · T1195.002 Supply Chain Compromise: Compromise Software Supply Chain (Initial Access)

  • The offending version was identified from the pull log, not from the changelog.

    investigation · weight 10 · T1195.002 Supply Chain Compromise: Compromise Software Supply Chain (Initial Access)

  • The out-of-policy source was named, so the supply chain gap is specific.

    investigation · weight 10 · T1195.002 Supply Chain Compromise: Compromise Software Supply Chain (Initial Access)

  • Integrity was tested against the recorded digest rather than assumed from the file name.

    explanation · weight 10 · T1554 Compromise Host Software Binary (Persistence)

  • The format risk was named, so the decision holds even if the digest had matched.

    configuration · weight 10 · T1554 Compromise Host Software Binary (Persistence)

  • The serving node running the unverified artifact was contained under approval.

    safety · weight 20 · T1195.002 Supply Chain Compromise: Compromise Software Supply Chain (Initial Access)

Common mistakes

  • Treating a matching file name as identity.
  • Accepting a community mirror because the internal registry was slow.
  • Loading the artifact to inspect it.
  • Isolating the build pipeline and leaving the serving node answering traffic.

Same idea, three vendors

Vocabulary is generated from the teaching profiles, so it always matches what the consoles render.

ConceptCortex ForgeSummit SOARStoryline
artifactIndicatorArtifactRecord
approvalManual taskPromptPage
noteWar Room entryNoteCase note

Where does this value come from?

The same reference to an enrichment node's verdict, written three ways:

  • Cortex Forge: ${enrich-sender.verdict}
  • Summit SOAR: enrich-sender.verdict
  • Storyline: <<enrich-sender.verdict>>

The same concepts in shipping products

The consoles you practice in use teaching names. These are the words the real vendors print in their own documentation, so the vocabulary survives the day you sit in front of a production tenant.

ConceptCortex XSOARXSOAR 8.xSplunk SOARSplunk SOAR 6.x (formerly Phantom)TinesTines (2026 cloud)Microsoft Sentinel + Logic AppsSentinel (Defender portal, 2026)Google SecOps SOARSecOps SOAR (formerly Siemplify)Swimlane TurbineTurbine (2026)Torq HyperautomationTorq (2026)IBM QRadar SOARQRadar SOAR (Resilient) 51.xServiceNow Security OperationsSecOps (Flow Designer era)
artifactIndicatorArtifact (CEF fields)Event payload fieldEntityEntityField / correlation valueEvent fieldArtifactObservable
approvalManual (data collection) taskPrompt blockPage (form) / Send to ChatApproval action (Teams / email)Manual actionTask / approval actionApproval step (Torq Chat / Slack)Manual task / phase gateApproval activity
noteWar Room entryNoteCase noteCommentCase wall commentCommentCase commentNoteWork note

What transfers

Source, signature, digest, format is the same intake checklist for container images, firmware, packages and any third-party binary.