Full Disclosure mailing list archives

Vulnerability found in SplashID 5.5


From: "Chase,Philip B" <pbc () PHHP UFL EDU>
Date: Fri, 21 Jan 2011 10:52:45 -0500

I submitted this vulnerability report about the password database SplashID to cert.org in early November 2010.  CERT 
bounced it back saying they were too busy.  No big deal, so I sent it to the product's vendor, SplashData, on 
11/5/2010.  I worked with SplashData for a few weeks to help them understand the problem.  We had some differences of 
opinion on what needed to be done to protect their customer's data.  After more than 2 months I have still not seen any 
updates to their product.  With all that in mind it seems time to go public with the vulnerability and my exploit of 
it.  

I'd like to thank Shawn Merdinger for his advice on this report.  David Cortes and Kevin Hanson provided invaluable 
assistance in testing.

Philip

Philip Chase * pbc () phhp ufl edu * 352-273-6190
University of Florida, College of Public Health & Health Professions

----------------------------------------------------------------------

Vulnerability Description

SplashID is a multi-platform password manager from SplashData.  The vulnerability I found is in SplashID version 5.5 
for iPhone and SplashID Lite 4.6 for iPhone.  

In normal operation SplashID is supposed to protect secret information using 256-bit Blowfish encryption (see 
http://www.splashdata.com/splashid/blowfish.htm).  Upon launch the user is presented with a password dialog.  Incorrect 
passwords do not allow access to the data.  If the correct password is entered a list of entries in the database is 
displayed and the secrets are accessible.  SplashID has an option to maintain a record of the valid password entry-if 
not the password itself-for a configurable amount of time after exiting the program.  As the iPhone OS does not fully 
support multitasking, this credentials-caching is a valuable usability feature.  It is also makes exploiting the 
vulnerability quite easy.

The vulnerability is a failure in the application's design to use the password as either an encryption key or a 
passphrase to decrypt the encryption key.  One can exploit this vulnerability to decrypt all of the secret information 
in a Splash ID database without the password.  

The exploit is a fairly trivial matter.  It requires a copy of the SplashID database with the secret information, file 
system access to a jail-broken iPhone and a copy of SplashID.  An ssh deamon on the iPhone expedites the exploit but is 
not strictly required.  To gain access to the secrets execute the following steps:

1. Copy the SplashID database of interest to the file system of a jail-broken phone with an installed and running 
OpenSSH deamon:

# scp SplashIDDataBase.db root@192.168.1.102:/var/root/

2. ssh into the phone, index the file system, locate the active database, and erase or move your existing 
SplashIDDataBase.db file:

$ ssh  root@ 192.168.1.102 
root@192.168.1.102's password: 
joes-iPhone:~ root# updatedb 
joes-iPhone:~ root# locate SplashIDDataBase.db 
/private/var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Library/SplashID/Backup/SplashIDDataBase.db 
/private/var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Library/SplashID/SplashIDDataBase.db 
/private/var/root/SplashIDDataBase.db 
joes-iPhone:~ root# mkdir backup
joes-iPhone:~ root# mv 
/private/var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Library/SplashID/SplashIDDataBase.db backup/ 

3. On the iPhone Home screen, launch SplashID.  A copy of the sample database will be created for you. Still in 
SplashID, go to Tools, Set Password and set a simple password.  I used 'cat' in all of my tests.  Splash ID will tell 
you it is encrypting the database.  Still in Tools, go to Security Options and set Lock on Exit or Sleep to 10 minutes. 
 This is the only value I tested, but the precise value is probably irrelevant as long as it is not 'immediately'.

4. Return to the SplashID mainscreen and press Lock.  You will see the lock screen and a prompt to enter your password 
to unlock.

5. Unlock the sample database with your simple password.  Press the iPhone Home button to leave SplashID.  You now have 
10 minutes to attack a SplashID database.

6. Return to your ssh session and copy the database you want to attack into the standard database location:

joes-iPhone:~ root# cp backup-20101102/SplashIDDataBase.db 
/private/var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Library/SplashID/SplashIDDataBase.db

7. Launch SplashID from the iPhone home screen.  The database will open without a password entry and all secrets in the 
database will be accessible.

There are multiple  methods to acquire the SplashIDDatabase.db file with the desired secrets..  Exact copies of the 
SplashIDDatabase.db file exist within the iTunes backup.  If the attacker can gain access to the computer with the 
iTunes and that backup is not encrypted (the default), a full text search tool such as grep can locate the SplashID 
database file.  The name is obfuscated within the backup, but grep easily finds it with a search like "grep -i -R 
splash *" on the iTunes backup directory.  The md5sum of the iTunes backup files matches that of the corresponding file 
on the iPhone.

An iPhone with openssh installed presents an easy point of attack if the passwords for the root and mobile accounts 
have not been changed from their default of 'alpine'.  If these are not changed the attacker only needs the IP address 
of the iPhone and about 2 minutes when the phone is unlocked to locate and copy the file off for offline attack.  

Stealing the iPhone would give the attacker an opportunity to jailbreak the phone, install openssh, and transfer the 
file off  to another phone on which the attack can be performed.  While this attack is not very time consuming an 
attack on a phone that had already been jail-broken would be even faster.  Pass codes on iPhones can be defeated by 
attacking the phone with jailbreak tools or forensic analysis tools.  

Protection against this vulnerability would require a multi-faceted approach.  Encrypt of the iTunes backup or placing 
the iTunes backup on an encrypted disk partition removes one point of attack.  Using a passcode makes the attack on a 
stolen phone more difficult.  Setting of passwords for users root and mobile is a must to prevent a remote attack  
Disabling the sshd when not in use is advisable.  That said, loss of the phone means the secrets stored in SplashID 
will be accessible to the determined attacker.

Vulnerable System Configurations

The systems tested were an iPhone 2G and an iPhone 3GS both running iOS 3.1.3.  Attacks on both phones were done using 
SplashID 5.5.  This is the current release as of 2-Nov-2010.  The source databases were made on SplashID 5.5 and 
SplashID Lite 4.6.  Each phone was able to access the secrets in the SplashID database from the other phone without 
using the corresponding password.  

The iTunes backup tests were against a backup made with iTunes 10.0.1.22 (current as of 2-Nov-2010) on a computer 
running Windows XP SP3.  

No other configurations were tested.  

Vulnerability Discovery

This vulnerability was discovered during a restore of a SplashID database to a freshly upgraded phone.  Having only an 
rsync backup of the phone I had to restore data by hand via scp.  I happened to execute the attack steps by accident as 
I made a temporary database, locked it, unlocked it, located it in the file system, replaced it with the copy from 
backups, and then accessed it.  This worked on a freshly installed OS that had never seen the password for the 
SplashIDDatabase.db file.  

Impact

A person who can gain access to the SplashIDDatabase.db file can reveal all secrets stored within it.

_______________________________________________
Full-Disclosure - We believe in it.
Charter: http://lists.grok.org.uk/full-disclosure-charter.html
Hosted and sponsored by Secunia - http://secunia.com/


Current thread: