Distributed Denial of Service
The flexibility of Web architecture provides many ways for launching DoS attacks
using puppetnets. An example is shown in Figure 1. The common component
of the attack in all of its forms is an instruction that asks the remote
browser to access some object from the victim. There are several ways of embedding
such instructions in an otherwise legitimate Webpage. The simplest
way is to add an image reference, as commonly used in the vast majority ofWeb
pages. Other ways include opening up pop-up windows, creating new frames
that load a remote object, and loading image objects through JavaScript. We
are not aware of any browser that imposes restrictions on the location or type
of the target referenced through these mechanisms.
We assume that the intention of the attacker is to maximize the effectiveness
of the DDoS attack, at the lowest possible cost, and as stealthily as possible.
An attack may have different objectives: maximize the amount of ingress
traffic to the victim, the egress traffic from the victim, connection state, etc.
Here we focus on raw bandwidth attacks in both directions, but emphasize on
ingress traffic as it seems harder to defend against: the host has full control
over egress traffic, but usually limited control over ingress traffic.
To create a large number of requests to the target site, the attacker can
embed a sequence of image references in the malicious Webpage. This can
be done using either a sequence of IMG SRC instructions, or a JavaScript loop
that instructs the browser to load objects from the target server. In the latter
case, the attack seems to be much more efficient in terms of attack gain, for
example, the effort (in terms of bandwidth) that the attacker has to spend for
generating a given amount of attack traffic. This assumes that the attacker
either targets the same URL in all requests, or is able to construct valid target
URLs through JavaScript without wasting space for every URL. To prevent
client-side caching of requests, the attacker can also attach an invariant