Information Exposure (IEX) Examples
CVE-2007-5172
This vulnerability is listed in [1] and discussed in [2, 3].
BF Taxonomy
IEX 1 of password leads to ATN leads to IEX 2.
Cause:
Improper
Details (error message displays password)
Attributes:
Information:
Credentials (password)
Information State:
Stored
Channel:
Legitimate (connection error message)
ATN (to be described in a subsequent publication)
Cause:
Failure to Properly Protect Sensitive Data (password)
Attributes:
Information:
Any (user data)
Information State:
Stored
Use:
Direct (valuable on its own)
Consequences:
Any
IEX
consequence.
Analysis (based on [1–3): CVE-2007-5172 Description: “Quicksilver Forums before 1.4.1 allows remote
attackers to obtain sensitive information by causing unspecified connection errors, which reveals the
database password in the resulting error message." [1].
CVE-2003-0243
This vulnerability is listed in [30] and discussed in [5, 6].
BF Taxonomy
IEX 1 of password leads to ATN leads to IEX 2.
Cause:
Program
Behavior (different responces for correct vs incorrect password)
Attributes:
Information:
Credentials (password)
Channel:
Side (response inconsistency -- message replies allow brute force password
guessing)
ATN (to be described in a subsequent publication)
Cause:
Failure to Properly Protect Sensitive Data (password)
Attributes:
Information:
Any (user data)
Information State:
Stored
Use:
Direct (valuable on its own)
Consequences:
Any
IEX
consequence.
Analysis (based on [4-6]): CVE-2004-0243 Description: “AIX 4.3.3 through AIX 5.1,
when direct remote login is disabled, displays a different message if the password is correct, which allows
remote attackers to guess the password via brute force methods." [4].
CWE-203 Description: “The product behaves differently or sends different responses in a way that exposes
security-relevant information about the state of the product, such as whether a particular operation was
successful or not." [5].
“For example, the message reply for an incorrectly guessed password might be "Incorrect userid or password"
whereas a correct guess would yield a message such as "Remote logins for this account are not allowed".” [6]
CVE-2004-1602
This vulnerability is listed in [7] and discussed in [8-10].
BF Taxonomy
IEX 1 of username leads to IEX 2 of password leads to ATN leads to
IEX 3
Cause:
Program
Behavior (different time for valid vs invalid username)
Attributes:
Information:
Credentials (username)
Information State:
Stored
Channel:
Covert (timing inconsistency -- server response timing allows finding valid
usernames)
Consequences: IEX 2 (of password)
Cause:
Failure to Properly Protect Sensitive Data (username).
Attributes:
Information:
Credentials (passwords)
Information State:
Stored
ATN (to be described in a subsequent publication)
Cause:
Failure to Properly Protect Sensitive Data (password)
Attributes:
Information:
Any (user data)
Information State:
Stored
Use:
Direct (valuable on its own)
Consequences:
Any
IEX
consequence.
Consequences:
Any
IEX
consequence.
Analysis (based on [7-10]): Using execution path timing analysis
attack at the ProFTPD login procedure, an attacker can determine “which user names are valid, which are
special, and which ones do not exist on the remote system” [9]. The timing attack on the
username is followed by a brute force attack on the password when the username is already known as a result
of the timing attack
CVE-2017-5753 and CVE-2017-5715 (Spectre)
BF Taxonomy
Cause:
Hardware
Behavior (caching results in reduced access time, and this outcome of speculative execution
based on the wrong branch is not undone.)
Attributes:
Information:
Any (user’s data)
Information State:
Stored
Channel:
Side (cache based timing)
Consequences:
Any
IEX
consequence.
Analysis (based on [11-21]): The attacker uses a cache timing channel using
Flush+Reload [16], [17] and Evict+Reload [17], [18]. This is based on the fact that access to cached data requires less time.
Mis-training of the processor by the attacker results in the processor’s speculative execution based on a
wrong branch. This execution affects the cache in a certain way, and timing can be used to recover
information about the cache state, which exposes user’s data.
CVE-2017-5754 (Metltdown)
This vulnerability is listed in [22] and discussed in [20-24].
BF Taxonomy
Cause:
Hardware
Behavior (CPU out of order execution and caching allows overcoming memory isolation –
discrepancy detected is between access time to cache memory and access time to non-cache memory, and this
outcome of out of order execution of forbidden access
is not undone.)
Attributes:
Information:
Any (e.g. passwords stored in password manager or browser, personal photos,
emails, instant messages and even business-critical documents)
Information State:
Stored
(in kernel-memory registries of other processes or virtual machines in the cloud)
Channel:
Covert (out of order execution and cache-based timing)
Consequences:
Any
IEX
consequence.
Analysis (based on information in [19-24]): Meltdown overcomes the OS memory
isolation, which ensures user programs cannot access each other’s memory or kernel memory. “It breaks all
security guarantees provided by address space isolation as well as para-virtualized environments and, thus,
every security mechanism building upon this foundation.” [23]
A crucial observation is that in this attack, speculative execution enables access by the processor to
memory that the attacker is not allowed to access. This is done before that forbidden access is blocked.
Later, because the forbidden access had to be blocked, its effects are undone, excluding caching. Because
caching was not undone, the effect on cache state can be measured using access time measurement [4], [11], [12].
The attacker runs code that implements a covert timing channel. That code transmits values over that
channel using indirect addressing and out of order execution, and also recovers the transmitted values using
time measurements.
The operation of the timing covert channel can be explained using the toy example in [4],
which includes the following line that will never be reached:
“access(
probe_array
[data * 4096]);”
Here data is secret information that is not accessible to the attacker. However, the hardware, not knowing
whether the above instruction will be executed, executes it out of order so that the outcome to be available
in case its execution will be needed.
In the Meltdown attack, as in the toy example, out of order execution of an instruction results in data
being accessed, in anticipation of the possibility that its execution will be needed. This can happen even
when access by the attacker’s code will never be done. As in the toy example, the attacker uses instructions
that are executed out of order by the processor, and this results in indirect access to cache lines with
access addresses that depend on the secret value that is not accessible to the attacker. This includes the
possibility of selecting access or no access depending on the secret value: for each bit of the secret
value, access if the bit value is 0, and no access if the bit value is 1
[4].
At the other end of the covert channel, access time measurement can be used to determine whether a
particular cache line was accessed, in order to find out whether the transmitted bit was a 0
or
a 1
.
A timing covert channel is established using the Flush+Reload technique in [16]. It is
based on the observation that access time depends on whether an address was cached. Therefore, access time
measurements are used to determine which addresses were cached. Access time to the addresses that were
cached is lower. The cached addresses are used to compute the secret value. For example, in the toy example
the secret value is the cached address divided by 4096. In Meltdown, the attacker controls and has access to
both the transmitting end and the receiving end of the covert timing channel.
Access time measurements are done as follows: Let S be a set of addresses. All addresses in S are accessed,
and access time is measured for each one of them. This enables finding all addresses in S that were cached,
because the measured access time to each one of them is much lower than the measured access time to each
address in S that was not cached.