|
|
|
|
| |
Charles Schwab operates an online securities trading service. On 25 August 2000 three security problems with this service have been discovered. As of the time of this writing, the flaws still exist.
Through cross-site scripting, an attacker can gain control of the account of a Charles Schwab customer who uses the online trading service. The attacker can choose to either gain interactive use of the service, or to cause the account holder to perform inadvertent unwanted actions on the attacker's behalf.
Additionally, it may be possible to predict a user's login cookie. |
| |
Credit:
The information has been provided by Jeffrey W. Baker.
|
| |
The Schwab trading web site does not properly validate form input. In some places, the form input is echoed back to the user's browser without proper HTML escaping. Therefore, it is possible for an attacker to cause JavaScript code to be executed in the user's browser. The attacker could use this ability to retrieve the HTTP cookie that Schwab uses for user authentication.
As a proof-of-concept, a Schwab user could visit this URL, and their login cookie will be presented to them in a JavaScript alert dialog. The proof-of-concept can be easily modified to instead send the login cookie to an arbitrary HTTP server. The URL is:
https://investing.schwab.com/trading/trdmoesverify/? menu=2&submenu=1&
ADOrderEntryNumber=0&AffirmativeDetermination=0 &prenv=N&numOrders=3
&Symbol0=foo%22><script>alert(document.cookie)
</script><input%20value=%22
&TradeType0=Select+One&Quantity0=&OrderType0= &LimitPrice0=
&Minimum0=&MinimumQuantity0=&TimeLimit0=Day+Only &StopPrice0=
&DoNotReduce0=&AllOrNone0=
(NOTE: URL has been wrapped, it should be on a one line)
There are other locations on the site that exhibit the cross-site scripting problem. For example, the forms at:
https://investing.schwab.com/trading/quotexec/
Typically, the attacker would need to exploit this problem by causing a Schwab user to make an HTTP request while logged on to the Schwab service. The likely vector for such an attack would be a link or image embedded in an email or a message on a stock trading bulletin board. Heavy users of the service are the most vulnerable.
An analysis of the cookies used by Schwab revealed that their login cookie only varied in the first five character positions at each login. The first character was always a hex digit, and the other four were in the range [0-9A-Z]. The author did not attempt a cryptanalysis, but there is a moderate suspicion that it may be possible to predict the login cookie with reasonable success.
User impact:
This bug affects potentially all Schwab users. To defend against this attack, the user should:
1) Disable JavaScript in the browser. However, it's not clear whether the Schwab site relies on JavaScript for proper operation.
2) Do not visit any other web sites, read email, or use bulletin boards while using the Schwab web site.
3) Always log off of the Schwab web site when done using it.
4) Always close and restart the browser before and after using the Schwab web site.
Suggested resolution:
Schwab should examine their programs to ensure proper input validation. Their system should use a form key to ensure that form input comes from the authenticated user interactively.
As an organization, Schwab should strive to fix problems when given five-month advance notice. They should raise their ethical standards to alert their paying customers whenever a system vulnerability is reported.
|
|
|
|
|
|
|
|
|
|