πŸš€ Submit a Challenge β€” SecDim AppSec Village CTF at DEF CON 34 and Win a ROG Xbox Ally

Patriot Bug

4h 20mBeginnerJavaC#JavaScriptPythonGoTypeScript

A security bug in the Patriot surface-to-air system killed 28 U.S. Army soldiers. Let's find out why this bug happened and how to avoid it.

Topics

  1. Numeric Imprecision

    Lesson15m

    Back in 1991, a problem happened when a Patriot surface-to-air system couldn't shoot down a scud missile and tragically caused the loss of 28 U.S. soldiers. They discovered the reason was a software mistake. The bug was in the radar part of the Patriot system. It used numbers with decimals (float numbers) to guess where the scud was in the sky. But these numbers got cut short because they had to fit into a small space. Also, the radar's timekeeping was a little off by a fraction of a second. These two things mixed up, making the system wrongly figure out where the scud was flying. This kind of bug could show up in any program that deals with decimal numbers in a not-so-safe way.

  2. Float Overflow

    Lab40m

    Let’s head to the lab to discover, debug, and fix this vulnerability within an actual application.

  3. Lessons learnt

    Lesson5m

    We saw how a small mistake caused big trouble in the Patriot system. Numeric imprecision bugs can show up in any program, even causing issues like sensitive information getting out in Chrome. Usually, security problems come up when our program faces a weird situation it can't manage. This is when attackers can use our program to cause harm.