When an autoscaler reads an attacker's burst as genuine demand and provisions for it, the service stays up and the bill climbs with it. That is a yo-yo attack, an application-layer failure mode a thorough DDoS test is built to exercise against elastic infrastructure. The attacker sends enough load to trip the autoscaler, stops once new instances come online, waits for the platform to scale back down, and repeats.
Why the target's own elasticity is the vulnerability
A yo-yo attack does not defeat a control; it turns one against its owner. The exposure is the one described in autoscaler exposure: scaling absorbs a flood instead of failing under it, so the attack converts into spend rather than downtime. The load itself is unremarkable, a modest HTTP flood of valid-looking requests; the damage is entirely in what the platform does in response.
What makes the yo-yo variant specific is that it targets the hysteresis in the scaling loop. An autoscaler does not track load instantly. It scales out only after a threshold holds for some period, and scales back in only after a longer cool-down, precisely so normal spikes do not cause thrashing. The attacker measures that cool-down and tunes the burst period to sit inside it: load arrives, capacity is added, the load vanishes before that capacity does any useful work, the capacity is eventually removed, and the next burst restarts the cycle.
Every transition also carries a latency tax. New instances are cold, so they pull container images, warm their JITs, and start with empty connection pools and caches, and the requests that land during a scale-out see elevated latency even though nothing is technically saturated. On a serverless backend the same pattern shows up as concurrency-limit churn and a cold-start penalty on every burst.
Why it matters under attack
This vector is dangerous because it is invisible to the test most teams actually run. A check that asks "did the site stay up?" passes cleanly through a yo-yo attack, because staying up is the mechanism. The damage lands on two axes an uptime check never looks at: the cloud bill, sometimes called economic denial of sustainability, and tail latency, which degrades on every scale transition for as long as the attacker cares to continue.
What a DDoS test measures
A test for a yo-yo attack characterizes the scaling loop as an attack surface. It measures the autoscaler's reaction window in both directions, the scale-out threshold and the scale-in cool-down, then probes whether a burst period can be tuned to sit inside that hysteresis and drive churn indefinitely.
Alongside the timing it records the two costs: the request-latency penalty during each transition, and the spend accrued across cycles against a steady-state baseline. Finally it validates the guardrails that actually bound the damage: a hard max-instance or max-concurrency cap, budget alarms that fire on the spend curve rather than on availability, and authenticating or rate-limiting requests ahead of the scaling boundary so a flood cannot be read as demand in the first place. How to run this without an unbounded cloud bill is set out in running a DDoS test without disrupting production.