OPERATION IRON VAULT CTF

September 24, 2026 ยท View on GitHub

OPERATION IRON VAULT CTF


FREE Reverse Engineering Self-Study Course HERE

FREE Embedded Hacking Course HERE


OPERATION IRON VAULT CTF

Act VIII - The compromised datacenter vent controller



LEGAL DISCLAIMER: The information, tools, and code provided in this repository and course are strictly for educational, research, and defensive purposes only.

You are explicitly prohibited from using any materials contained herein to access, test, modify, or exploit any device, network, or system that you do not own 100% or for which you do not have explicit, documented, and legally binding authorization to interact with.

By using this repository and course, you acknowledge and agree that:

  1. Any illegal, unauthorized, or malicious use of this information is solely your responsibility.
  2. The author(s) and contributor(s) of this repository and course shall not be held liable for any damages, legal repercussions, criminal charges, or unauthorized actions resulting from the use, misuse, or abuse of the contents herein.
  3. You will comply with all applicable local, state, national, and international laws regarding cybersecurity and computer fraud.

IF YOU DO NOT AGREE WITH THESE TERMS, DO NOT USE THIS REPOSITORY AND COURSE.




Hello again, friend.

Act I was the lie. Act II was the door. Act III was the payload. Act IV was the payload that would not die. Act V was the payload that spreads. Act VI was the payload that steals. Act VII was the payload that takes orders. This is the payload that holds the building hostage.

WHITEOUT stopped the task handler and cleared the bot marker, and for a shift the floor looked quiet. Quiet is not safe. The Ministry did not need a fleet that obeys; it already had a building that cannot breathe. Somewhere between the reporting line and the loading dock, the same hand that wrote the leash wrote a padlock.

The datacenter vent controller is the device a server hall trusts with its air. A damper opens the vent so the racks stay cool. A local maintenance remote requests a purge. A rack temperature sensor watches the hall for heat. A vault control gateway authorizes an open or a close. That is the whole contract, and it is a good one.

FROSTLINE's locker in this one does not spread, and it does not steal, and it does not even take orders. It holds the building. It forces the vent closed and tells the operator the vent is maintenance locked while the hall heats and the racks throttle. It unlocks only on a magic release token, or never, and it writes a lock marker into the reserved sector with the real flash API so it comes back after a reflash. This is an availability attack wrapped in ransom logic: the device withholds the function it exists to provide.

The green lamp still says COOLING OK while the vent is shut. The LCD still reports a state, and the state is a lie it was told to repeat. Underneath, the building is being held hostage by a padlock with a polite label.

Do not chase the symptoms one at a time. Break the lock. Unmask the display. Clear the marker. Then seal the vent command path so no close command can ever be forged, and make the vent fail open when the link is lost.

The hall is warming. The readout says maintenance. That is exactly the problem.

This is the companion capture-the-flag to the datacenter-vent-controller project. Where the project builds the defended node, this CTF hands you the compromised image that FROSTLINE shipped and asks you to find every defect, prove it on real hardware, and patch the image.


THE MISSION

The ACT-VIII.bin image is the OPERATION IRON VAULT datacenter vent controller with four deliberate defects. Each defect is an in-place, same-size byte patch, so no address moves when you fix it. Every fix is provable on a Pico 2 with a Debug Probe.

#NameWhat FROSTLINE did
1The Vent Lockinverted the lock gate so boot arms the ransom lock, forces the vent closed, and lights the yellow LOCKED lamp
2The LCD Maskinverted the mask gate so the readout renders ST:MAINT while the vent is held shut
3The Lock Markerinverted the marker gate so the first boot programs lock marker 0x4C into reserved sector 0x103FF000 with the real flash API
4The Vent Command Authorizationinverted the authorization verdict so an unauthenticated or replayed vent command is accepted

The wire is sealed with XChaCha20-Poly1305, keyed through Argon2id. The cryptography is correct. Three of the four defects are not in the cipher at all: they are a locker that forces the vent closed, masks its own state as routine maintenance, and writes a durable lock marker to the reserved sector. The fourth is a policy seam in the vent command path. The locker never needs the cipher. It sits beside the authenticated link and overrides the output, so a perfectly valid open command can arrive and the damper will still stay shut. Read the dead, find the lock, and cut the padlock.


THE ARTIFACTS

FileRoleSHA-256
ACT-VIII.bincompromised firmware, the targetcafc65a395e018e2b4d5eb1cad6a8b69a7f04a33380fa641d40f69f05a31b836
ACT-VIII.uf2flashable image of the target753cbfe539d707b7dc30a5345fb43fd4c77739db675e8f4f3c54c55412109df1
ACT-VIII_fixed.bincorrected firmware, the solutiona4628ceac756e23fb1266133eac69a9fbbdbf4b5634580ba0f62801d1bd7f048
ACT-VIII_fixed.uf2flashable image of the solution728b27ad4967c44ac38d17e61e67f4211837554a50d964017a1d335c99733343

The two .bin files differ in exactly four bytes at offsets 0xA241, 0xA26B, 0xA283, 0x74C5, and both are 50,340 bytes. The UF2 images are 101,376 bytes.


THE DOCUMENTS

DocumentFor
ACT-VIII-I.mdStudent instructions: the scenario, the tasks, the wiring
ACT-VIII-R.mdRequirements and grading criteria
ACT-VIII-S.mdInstructor solution key with exact offsets and bytes
ACT-VIII-main-disasm.txtAnnotated disassembly of the four sabotage sites
DESIGN.mdBuild blueprint (instructor eyes only)

HARDWARE

Everything runs on the Embedded Hacking breadboard, and the pin map is identical to Acts I to VII so one board serves the whole foundation: a Pico 2, a Debug Probe, a DHT11 rack temperature sensor on GP4, a 1602 I2C LCD vault readout on GP2/GP3 at address 0x27, three tower light lamps (red GP16 HALL HOT, yellow GP17 LOCKED, green GP18 COOLING OK), a manual purge button on GP15, an SG90 vent damper servo on GP14 with a 1000uF cap, a VS1838B infrared local maintenance remote on GP5, and an RYLR998 LoRa vault control link on UART1 GP8/GP9. The Debug Probe is effectively required: the anti-debug trap is part of the exercise. The pin map is in the instructions.

The cryptographic model is carried over from the earlier acts: Argon2id (t=3, p=1, m=64) derives the field key, XChaCha20-Poly1305 seals every vent command, and the anti-replay sequence window and authenticated-state tag are reused unchanged. The locker is compiled only under SANDBOX_ONLY, which the CTF build defines.


QUICK START

Verify the two images against the expected patches and hashes:

python3 scripts/verify_ctf.py

Expected:

10/10 checks passed

Build the corrected firmware from source:

rm -rf build && cmake -S . -B build -G Ninja -DPICO_BOARD=pico2 -DPICO_PLATFORM=rp2350-arm-s -DSANDBOX_ONLY=ON && cmake --build build

Run the firmware code standard audit:

python3 scripts/audit_c_standard.py

REPOSITORY LAYOUT

ACT-VIII-I.md              student instructions
ACT-VIII-R.md              requirements and grading criteria
ACT-VIII-S.md              instructor solution key
ACT-VIII.bin / .uf2        compromised artifact
ACT-VIII_fixed.bin / .uf2  corrected artifact
ACT-VIII-main-disasm.txt   annotated sabotage sites
scripts/verify_ctf.py      machine verifier
scripts/spoof.py           forged and replayed command injection
src/  include/             firmware sources
CMakeLists.txt             Pico SDK build
DESIGN.md                  build blueprint

WHERE THIS FITS: OPERATION COLD IRON

This is the companion CTF for Act VIII (IRON VAULT) of the ten-act OPERATION COLD IRON saga. The malware track began in Act III; in Act IV it became persistence, in Act V it became propagation, in Act VI it became exfiltration, in Act VII it became command and control, and here it becomes availability and lockout logic. Act VIII is the act that teaches why a green lamp is not a clean node, why a device that refuses to do its job is a different failure class, and why availability is a policy control that no cipher can supply. The project it attacks is datacenter-vent-controller.

  • Previous act: Act VII, IRON CHOIR, the factory floor andon station, factory-andon-station
  • This act: Act VIII, IRON VAULT, the datacenter vent controller
  • Next act: Act IX, IRON FANG, smart-parking-barrier (forthcoming)

THE MINISTRY

The Ministry runs the state: the surveillance, the cold chain, the gates, the pipelines, the air, the cabinets that hold what the state does not discuss, the lockers that move it, the factories that make it, and the buildings that keep the record. NorthPharma is one of its deniable industrial fronts, and FROSTLINE is the contractor that does the work no Ministry letterhead will admit to. FROSTLINE did not break into this node; it built the locker, taught it to hold the vent closed, staged the lock marker in a reserved sector, and signed the image. Against them is WHITEOUT, and the engineer who copied the first image, NIGHTINGALE. This act is one hall on the Ministry's datacenter floor. TELESCREEN, the surveillance backbone that watches it, comes after the ten.


Next

OPERATION IRON FANG


License

MIT License