In circumstances where an application holds important data client-side in
tokens (cookies, URLs, data files, and so forth) that data can be
manipulated. If client or server-side application components reinterpret
that data as authentication tokens or data (such as store item pricing or
wallet information) then even opaquely manipulating that data may bear fruit
for an Attacker. In this pattern an attacker undermines the assumption that
client side tokens have been adequately protected from tampering through use
of encryption or obfuscation.
Attack Execution Flow
Explore
Enumerate information passed to client
side:
The attacker identifies the parameters used as
part of tokens to take business or security
decisions
Attack Step Techniques
ID
Attack Step Technique Description
Environments
-1
Use WebScarab to reveal hidden fields while
browsing.
env-Web
1
Use a sniffer to capture packets
env-ClientServer env-Peer2Peer
env-CommProtocol
2
View source of web page to find hidden
fields
env-Web
3
Examine URL to see if any opaque tokens are
in it
env-Web
4
Disassemble or decompile client-side
application
env-ClientServer
env-Peer2Peer
5
Use debugging tools such as File Monitor,
Registry Monitor, Debuggers, etc.
The attacker determines the protection mechanism
used to protect the confidentiality and integrity of
these data tokens. They may may be obfuscated or a
full blown encryption may be used.
Depending on the nature of the application, the
attacker now cycles through values of each parameter
and observes the effects of this modification in the
data returned by the server
Attack Step Techniques
ID
Attack Step Technique Description
Environments
1
Use network-level packet injection tools
such as netcat
Detailed error message
describing problem with token, received from
server
Security Controls
ID
Type
Security Control Description
1
Detective
Unexpected/invalid
token/parameter value in application logs on
server
2
Corrective
Reset session upon
receipt of unexpected/invalid token/parameter
value
Attack Prerequisites
An attacker already has some access to the system or can steal the client
based data tokens from another user who has access to the system.
For an Attacker to viably execute this attack, some data (later
interpreted by the application) must be held client-side in a way that can
be manipulated without detection. This means that the data or tokens are not
CRCd as part of their value or through a separate meta-data store
elsewhere.
Typical Likelihood of Exploit
Likelihood: Very High
Methods of Attack
Modification of Resources
Examples-Instances
Description
With certain price watching websites, that aggregate products
available prices, the user can buy items through whichever vendors has
product availability, the best price, or other differentiator. Once a
user selects an item, the site must broker the purchase of that item
with the vendor. Because vendors sell the same product through different
channel partners at different prices, token exchange between price
watching sites and selling vendors will often contain pricing
information. With some price watching sites, manipulating URL-data
(which is encrypted) even opaquely yields different prices charged by
the fulfilling vendor. If the manipulated price turns out higher, the
Attacker can cancel purchase. If the Attacker succeeded in manipulating
the token and creating a lower price, he/she proceeds.
Description
Upon successful authentication user is granted an encrypted
authentication cookie by the server and it is stored on the client. One
piece of information stored in the authentication cookie reflects the
access level of the user (e.g. "u" for user). The authentication cookie
is encrypted using the Electronic Code Book (ECB) mode, that naively
encrypts each of the plaintext blocks to each of the ciphertext blocks
separately. An attacker knows the structure of the cookie and can figure
out what bits (encrypted) store the information relating to the access
level of the user. An attacker modifies the authentication cookie and
effectively substitutes "u" for "a" by flipping some of the
corresponding bits of ciphertext (trial and error). Once the correct
"flip" is found, when the system is accessed, the attacker is granted
administrative privileges in the system. Note that in this case an
attacker did not have to figure out the exact encryption algorithm or
find the secret key, but merely exploit the weakness inherent in using
the ECB encryption mode.
Description
Archangel Weblog 0.90.02 allows remote attackers to bypass
authentication by setting the ba_admin cookie to 1.
Related Vulnerabilities
CVE-2006-0944
Attacker Skills or Knowledge Required
Skill or Knowledge Level: Medium
If the client site token is obfuscated.
Skill or Knowledge Level: High
If the client site token is encrypted.
Resources Required
The Attacker needs no special hardware-based resources in order to conduct
this attack. Software plugins, such as Tamper Data for Firefox, may help in
manipulating URL- or cookie-based data.
Probing Techniques
Description
Tamper with the client side data token and observe the effects it has
on interaction with the system.
Description
This attack is in and of itself a trial-and-error-based probing
technique.
Solutions and Mitigations
One solution to this problem is to protect encrypted data with a CRC of
some sort. If knowing who last manipulated the data is important, then using
a cryptographic "message authentication code" (or hMAC) is prescribed.
However, this guidance is not a panecea. In particular, any value created by
(and therefore encrypted by) the client, which itself is a "malicous" value,
all the protective cryptography in the world can't make the value 'correct'
again. Put simply, if the client has control over the whole process of
generating and encoding the value--then simply protecting its integrity
doesn't help.
Make sure to protect client side authentication tokens for confidentiality
(encryption) and integrity (signed hash)
Make sure that all session tokens use a good source of randomness
Perform validation on the server side to make sure that client side data
tokens are consistent with what is expected.