DECT (Phone) Interception made Easy


More than a year ago people done serious research on the topic of the DECT security and found significant flaws but since then nothing changed dramatically in the way the industry implements DECT. I guess most people are probably not fully aware of that DECTs insecurity could affect them. In April 2010 experts are now able to recover the DECT standard Cipher key [1,8,9]. Please note that I have done my analysis when the topic was just raised and it’s quite likely that some of the OS specific issues have changed in the meantime.

What’s it all about:

Remember the good old days when people made their calls from a traditional landline and had their tripping hazard all inclusive:

These days people usually got cordless phones which are more convenient but unfortunatelly insecure in utilizing the DECT (Digital Enhanced Cordless Telecommunications) protocol standard as demonstrated [1],[2] by members of the CCC-Chaos Computer Club at the 25C3 Chaos Communication Congress . The hack (The Register reported) is not limited to DECT based phone call eavesdropping, see listed DECT implementations but a strong warning that listening to phonecalls without prior permission is illegal, e.g in Germany even the attempt is punishable up to five years .

DECT implementations:

  • Cordless phones
  • Wireless ISDN access
  • Babyphones
  • Emergency calls
  • Remotely controllable door openers
  • Cordless Credit card terminals (Will probably become less popular in near future)
  • Traffic lights control (Germany) and traffic control systems (UK)
  • Situation in Germany, currently ~ 30.000.000 cordless DECT based phone base stations in use, I do not have UK and US specific stats but there should be also a fairly high number of deployments similar  as worldwide to be expected.


This post describes only basics of the “deDECTed” hack [3] and more details can be found in the Appendix.

DECT implementations do vary on the vendor and DECT “secret key” (UAK) has been made available to vendors which are implementing DECT under a Nondisclosure Agreement. However it appears that encryption in DECT based phones is often not implemented/enabled and even the latest generation of DECT phones which are supposed to use encryption can be intercepted by forwarding traffic to a Voice over Internet Protocol (VOIP) system (e.g. Asterisk Pbx ) which is not supporting the encryption and so DECT is falling back to an insecure communication.

If encryption is not implemented someone only needs a PC,  software and a DECT Controller  to penetrate  the own DECT phone.

The German hacker group initially used a hardware device utilizing Gnu Radio to sniff to the DECT traffic on 1.88 – 1.9 GHz (in comparison Wifi 802.11 b/g is on the 2.4 GHz band and Wifi 802.11a on 5 GHz) but then decided later on to make their “life easier” and wrote a Linux kernel driver and obviously some user space utilities for the “Com-on-Air” PCMCIA based Dect Controller by “Dosch/Ammand” (D/A).

When I looked into getting the card the current prices on Ebay for the Type II cards (ironically D/A is bankrupt since years) have been appx. 10 x more than the card was before the DECT weaknesses report made it to the public and the card main purpose at that time was using it as an IP-DECT solution where the backhaul from the base station is VoIP (H323 or SIP) while the handset loop is still DECT or in other words people just used the Com-On-Air card to extend their VOIP networks through the DECT Controller forwarding calls to their convenient (DECT based) cordless phones.


Com-On-Air Linux Kernel driver:

To get the PCMCIA Type II card working the students wrote their own driver for the card. The code compilation is straight forward, just make sure you got the latest kernel sources and headers in place.  The DECT analysis tools are also in the code framework included and they compile as easy as the driver does. After a successful module load (insmod, modprobe etc.) you will see (lsmod) “com_on_air_cs” kernel module loaded and it will dealing with the DECT controller card under Linux.

[  339.588207] >>> loading com_on_air_cs
[  339.588875] com_on_air_cs: >>>>>>>>>>>>>>>>>>>>>>>>
[  339.588879] com_on_air_cs: card in slot        com_on_air_cs
[  339.588882] com_on_air_cs: prod_id[0]          DECTDataDevice
[  339.588885] com_on_air_cs: prod_id[1]          PCMCIA F22
[  339.590638] com_on_air_cs: ioremap()’d baseaddr 9ab34000
[  339.590664] com_on_air_cs: registered IRQ 3
[  339.630471] com_on_air_cs: valid client.
[  339.630474] com_on_air_cs: type          0x118
[  339.630476] com_on_air_cs: function      0x0
[  339.630478] com_on_air_cs: Attributes    1
[  339.630480] com_on_air_cs: IntType       2
[  339.630483] com_on_air_cs: ConfigBase    0x1020
[  339.630485] com_on_air_cs: Status 0, Pin 0, Copy 0, ExtStatus 0
[  339.630488] com_on_air_cs: Present       1
[  339.630490] com_on_air_cs: AssignedIRQ   0x3
[  339.630492] com_on_air_cs: IRQAttributes 0x12
[  339.630494] com_on_air_cs: BasePort1     0x0
[  339.630496] com_on_air_cs: NumPorts1     0x10
[  339.630498] com_on_air_cs: Attributes1   0x10
[  339.630500] com_on_air_cs: BasePort2     0x0
[  339.630502] com_on_air_cs: NumPorts2     0x0
[  339.630504] com_on_air_cs: Attributes2   0x0
[  339.630506] com_on_air_cs: IOAddrLines   0x0
[  339.630508] com_on_air_cs: has function_config
[  339.630512] com_on_air_cs: get_card_id() = 0
[  339.630514] com_on_air_cs: ———————–

DECT Kismet integration with Kismet plugin in kismet-newcore:

Kismet is a network detector, packet sniffer, and intrusion detection system for 802.11 wireless LANs. The authors of Kismet made it possible to extend the portfolio of the application to understand DECT detection which is quite neat for someone who is frequently using Kismet anyway. Please note that you need to compile Kismet from scratch if you want to use the plugin support as it is only available in the latest kismet-newcore through subversion (svn).

Some DECT specific acronyms:

RFPI = Radio fixed part identity, phone base station id (note that a Ethernet MAC address is 6 and not 5 bytes)
RSSI = Received Signal Strength Indication
FP = Fixed part (e.g. telephone base station)
PP = Portable part (e.g. phone handset itself)
B-FIELD = Actual payload, e.g  voice codec
C-CHANNEL = Contains all  DECT higher layer control
CH = Channel

Kismet Dect plugin:

The help menu of the Kismet (Newcore) DECT plugin shows the basic scan options for phones, basestations and the plugin ability to sort the findings in the order of the users choice. The DECT integration also allows to change channel hop settings and sync on a call and dump it to a local system for example.

Dect Scan Example:

Dect Analysis tool:

The most featurecomplete tool is dect_cli. it can dump pcap formatted captures and is shown in

action below.

There are also other tools available:

coa_syncsniff dumps pcap files on a given channel and RFPI

pcap2cchan dumps C-channel informa

tion from pcap files:

./pcap2cchan dump_2009-02-13_23_46_42_RFPI_00_7e_94_dd_a8.pcap

station: addr:8e ctrl:4c len:c0 crc:9ab2 -> reserved     cc 05 dc 82 64 de 9b 7a ca b8 01 6a 9e c2 11 04 74 d7 fb d4 f9 f6 f0 54 39 73 fc 8c f7 11 10 19 d5 1b 9b 8a ac 12 9d d5 76 55 2e a2 f5 79 aa 4d

pcapstein dumps all B-Fields found in a pcap file

Dect command line interface menu:

DECT command line interface
type “help” if you’re lost

help – this help
fpscan – async scan for basestations, dump RFPIs
callscan – async scan for active calls, dump RFPIs
autorec – sync on any calls in callscan, autodump in pcap
ppscan <rfpi> – sync scan for active calls
chan <ch> – set current channel [0-9], currently 0
band – toggle between EMEA/DECT and US/DECT6.0 bands
ignore <rfpi> – toggle ignoring of an RFPI in autorec
dump – dump stations and calls we have seen
name <rfpi> <name> – name stations we have seen
hop – toggle channel hopping, currently ON
verb – toggle verbosity, currently OFF
stop – stop it – whatever we were doing
quit – well

Example of Base station- and call dump with DECT command line interface:

### stations
00 7e 94 dd a8  ch 7  RSSI 18.53  count   76  first 1234794847  last 1234795069
### calls
00 7e 94 dd a8  ch 7  RSSI 19.20  count    5  first 1234795128  last 1234795129

Example of a call dump processing:

Scan for active calls and sync against DECT phone using “callscan” mode:

### calls
00 7e 94 dd a8  ch 7  RSSI 19.20  count    5  first 1234795128  last 1234795129

Enabling automatic record of calls found using “autorec”:

### got sync
### dumping to dump_2009-02-13_23_46_42_RFPI_00_7e_94_dd_a8.pcap
### stopping DIP


This is the resulting information by extracting from the .pcap capture the raw G.726/G.721 (.ima codecs – ADPCM 4bit per sample) 32 kbps dumps and finally decode them using Sound eXchange into Waveform audio format (.wav).






(.wav file(s) can be listened to in using the favourite audio player)

DECT support in Wireshark:

No support for dissecting DECT was present in the main Wireshark repository however captured DECT data can be analysed further in loading the relevant .pcap files into Wireshark Development unstable version compiled from scratch or by applying the wireshark-1.0.5_dect.patch to wireshark version 1.0.5.

This is a list of software packages you need to have installed prior wireshark compilation to get a succesful build under Linux Ubuntu 8.04 LTS/ 8.10:

  • bison – A parser generator which is compatible with YACC
  • flex – A fast lexical analyzer generator
  • gtk2-engines – theme engines for GTK+ 2.x 9!)
  • libgtk2.0-dev – Development files for the GTK+ library
  • libpcre3-dev – Perl5 compatible regular expression
  • libkrb5-dev – Header and Development Files for MIT Kerberos
  • library – development files
  • libc-ares-dev – library for asyncronous name resolves
  • libsmi2 – A library to access MIB information
  • libsmi2-dev – A library to access MIB information (development files)
  • libgcrypt – LGPL Crypto library – development files
  • libcap-bin – basic utility programs for using capabilities
  • libcap-dev – development libraries and header files for libcap
  • libgeoip-dev – Development files for the GeoIP library
  • libgnutls-dev – the GNU TLS library – development files
  • libssl0.9.8-dbg – Symbol tables for libssl and libcrypto

External antenna connector hardware:

Some people claim operating DECT within the European 1.88 – 1.9  GHz range (similar frequency window as used by Global System for Mobile communications (GSM) in the 1900 MHz band) does allow to receive a reasonable signal from up to 300 meters ( appx. 980 feet) distance.  More EIRP will significantly improve the signalling and hence less noise.

The photo illustration below is for a Wifi card extension but the DECT controller should have a similar circuit board layout so the SMA connector soldering can be easily adapted with use of  a standard GSM 1900 antenna or best a custom made DECT frequency antenna.


  • “Conversations relayed through cordless household phones are far easier to snoop upon than previously suspected.”
  • DECT based phones are a bad choice for using in business.
  • VOIP Security can be eliminated by implementing VOIP->DECT gateways
  • DECT is cracked [7] .


[1] and Cryptanalysis of the DECT Standard Cipher – Full Paper – final version – PDF

[2] 25C3 presentation: (talk-25c3.pdf)

[3] DECT Talk at 25C3 (Video in 720×576 mp4 )

[4] website

[5] Introduction to DECT standardisation

[6] Attacks on the DECT authentication mechanisms (pdf)

[7] DECT encryption cracked

[8] Cryptanalysis of the DECT, Bruce Schneier

[9] 26C3: DECT (part II), ChrisJohnRiley

Open Source, Ubuntu

Terminator for Linux Ubuntu

Have you ever looked for a tool to keep track of your terminal sessions by not loosing conspectus under Linux. Split Screens can help to perceive a much quicker and simultaneous record of what’s going on by contrast with terminal tabs.

Well first there is the built in terminal under Ubuntu, depending on whether using KDE or Gnome you either end up with “Konsole” or  “Gnome-Terminal , which both refuse a split screen like they would be afflicted with a disease by offering such handy feature.

Then there is the option to fire up a Gnu Screen session inside your terminal application which can be very useful to leave a session running in the “background” with closing the terminal or even loosing connectivity. However I felt the split screen feature is a bit stale bread.

Then I found this Multi Gnome Terminal application which won’t compile unless you drag immemorial libraries into your system which I really didn’t prefer either.

Finally a working solution for me:

The Terminator application paves itself on top of your existing Gnome-Terminal and allows split-screens easily. Terminator is available in the Ubuntu repository and can be installed “apt-get install terminator”.

Right mouse button drops you a menu for splitting terminals horizontally or vertically as many you like or if you prefer quick shortcuts it can assist this way just as well :

Ctrl-Shift-E: will split the view vertically.
Ctrl-Shift-O: will split the view horizontally.
Ctrl-Shift-P: will focus be active on the previous view.
Ctrl-Shift-N: will focus be active on the next view.
Ctrl-Shift-W: will close the view where the focus is on.
Ctrl-Shift-Q: will exit terminator.

F11: will make terminator go fullscreen.

Apple iPhone

iPhone business security framework


I recently had the chance to look into Apple’s iPhone [11] security model specifically for the 3G and 3GS version.  As the iPhone acts as a small computing device my concerns are related to the integrity of the device, communication  and the security of data stored locally.  Apple provides an “iPhone Security Overview” [1] which is a good start to find out more about:

Apple iPhone mobile device security features:

Apple Enterprise Management and Security:

  • Supports standards-based servers for mail, calendar and contacts integration. Syncing with IMAP mail servers and search the mail server from the iPhone.
  • CalDAV-compliant calendar servers like iCal Server, Oracle Beehive, Kerio and Zimbra.
  • iPhone 3GS protects data through encryption of information in transmission, at rest on the device, and when backed up to iTunes.
  • Provides secure methods to prevent unauthorised use of the device through passcode policies and restrictions.
  • In the event of a lost or stolen iPhone, you can even clear all data and settings by issuing a remote wipe command from Microsoft Exchange.
  • Network communications stay secure with Cisco IPSec VPN, WPA2 Enterprise Wi-Fi and SSL/TLS on iPhone.
  • Microsoft Exchange users can enforce complex passcodes, camera restrictions and other policies on iPhone to protect corporate data.
  • Certificate-based authentication enables iPhone to connect with corporate servers via Exchange as well as VPN On Demand, making network communications seamless and secure.

Security Configuration Profiles:

  • Establish corporate passcode policies and settings with configuration profiles created and distributed via USB or over the air.
  • With configuration profiles, you can remotely configure your company’s VPN, email and wireless network settings, ensuring that each iPhone is secure and ready for business.
  • For users, installing a configuration profile is as easy as tapping a secure web link or receiving an email with the configuration profile attached. Configuration profiles can be signed and encrypted – and once installed, individual users can be restricted from removing these profiles from their iPhones.


This is the outcome of  the overview and  more research on various details  matched against the security requirements which I would like to see implemented,  so an iPhone can become a reasonable secure mobile network device:

  • Platform Protection
  • OS Patch Management
  • Antivirus Protection
  • Network Traffic Filtering
  • Application Security
  • Data Storage Protection
  • Communication Encryption
  • Wireless Security
  • Manageability of Acceptable Use

Platform Security:

Requirement: iPhone3G(S): Comment:
Application Security: – Runtime Protection (Sandboxing)

– Mandatory Code signing

Separates local Data stored by applications and the code itself from each other and protects from third-party applications. Code signing binds your application framework to Apple).
OS Patch Management Build in update feature for

iPhone OS

Similar to OS X the phone can fetch automatic updates when connected to a network.
Antivirus Protection None built in. Apple claims no need for this. Jailbreaking [2] would make a need for it.
Manageability of Acceptable Use – Password Management and Enforcement

– Remote and local wipe

– Restriction management of:

iTunes Store medias, Use of Safari, Use of YouTube, Use of App Store, Installations of Applications, Use of the camera

This is mostly to restrict the use of the device through a policy. Most of the sync profile updates can only be synced automatically using a Microsoft Exchange server. However profiles can also be manually applied via email attachment or through a download from a website.

Network Security:

Requirement: iPhone3G(S): Comment:
Network Traffic Filtering A built in firewall is not claimed A host based firewall solution is not available through Apples App store.
Communication Encryption – Common Crypto APIs


Solid SSL/TLS support promised.
VPN – Cisco IPSec

– L2TP/IPSec


Solid VPN support promised but I am missing the OpenVPN standard.
Authentication – Password (MSCHAPv2)

– RSASecurID


– x.509 Digital Certificates

– Shared Secret

– X.509 certificates with RSA keys

Common Authentication schemas are supported RSASecureID capability can make the phone becoming a one time security token for 2 and more factor authentication.
Wireless Security – WPA

– WPA2 shared key

– WPA2 Enterprise mode

Solid Authentication and Encryption support for 802.11 b/g wireless networks.

Local Data:

Requirement: iPhone3G(S): Comment:
Data protection – Encrypted configuration

– Encrypted i-Tunes backup

Encrypted profiles can be only read by an Admin.

Broken authentication model [9]

Data encryption – Hardware based Full DIsk Encryption (FDE). Iphone3GS offers hardware-based- encryption and uses AES 256 bit encoding to try to protect all data on the device. Encryption is always enabled and cannot be disabled by users.

However the encryption renders pointless by the FDE key implementation flaw [4]

Password storage Keychain Services Local passwords and logins are stored in an encrypted local safe.


Mobile computing and storage devices are easily lost or stolen, presenting a high risk for unauthorized access and introduction of malicious software to a network [3].

These risks should be mitigated to acceptable levels. A portable -computing device and -electronic storage media that contains confidential, personal, or sensitive information should use encryption or equally strong measures to protect the data while they are in transit or stored.

The Apple iPhone can’t fully satisfy the requirements. People should understand that the iPhone 3GS fails to provide full disk encryption (FDE) which renders useless by how the phone manages the protection of the encryption key [4] and that the authentication model for the FDE is also broken.[see recent update]. Most of automatic sync and update features are built around Microsofts Exchange Server however important security profile management and updates can be achieved by manual interaction of the user without using Exchange.

The iPhone’s operating system is designed to only run software that has an Apple-approved cryptographic signature. This should protect from malicious third-party applications but it certainly  leaves authority and actual security management fully in the hand of Apple.  There is no open Source code involved and applications can only be chosen from Apples apps store. Apples recent removal of random content and apps [5] makes users wonder if the trust in Apple is justifiable.

Restrictions can be overcome by “jailbreaking” the device [2], which involves replacing the iPhone’s firmware with a slightly modified version that does not enforce the signature check. Jailbroken phones are at risk for an iPhone worm and system compromise through malicious applications.

By the time writing there is no way to directly encrypt or sign your email and although there are some more (non security related) caveats like: Java and Flash aren’t supported  and the fact Apple iTunes software latest version is only running on Windows and Apple platforms,  the iPhone still can be used in an efficient way if people understand that there is no secure FDE available and a appropriate policy is in place to cover these facts.

Having this said,  iPhone security really only applies with having a sensible trust in Apples business model,  being the gatekeeper for your own security needs, and when user’s attitude takes into account that the iPhones Hard Disk encryption and Authentication model is useless towards storage protection.

Update 17/05/2010: Apple’s iPhone 3GS broken authentication model:

I uncovered a data protection vulnerability [9], which  I could reproduce on 3 other non jail broken 3GS iPhones (MC 131B, MC132B) with different iPhone OS versions installed (3.1.3-7E18 modem firmware 05.12.01 and version 3.1.2 -7D11, modem 05.11.07) , all passcode (4 digits) protected which means the vulnerability bypasses authentication for various data where people most likely rely on data protection through encryption and do not expect that authentication is not in place.

To clarify, the given file access is read and write !

This is what you get via an auto mount without any PIN (passcode 4 digits) request:

The unprotected iPhone 3GS mounting is “limited” to the DCIM folder under Ubuntu < 10.04 LTS, Apple Macintosh, Windows 2000 SP2 and Windows 7. The way Ubuntu Lucid Lynx handles the iPhone 3GS [6,7,8] allows to get more content (please do make sure that the native Ubuntu system is fully up to date, e.g. “apt-get update, “apt-get upgrade”  – any virtualization based solution will not work as described). I used the Alternate CD with x86 and AMD64 on different hardware.

The “Libimobiledevice” [6] developers probably done just their best to make some  content available under Linux but nevertheless I would still expect that the iPhone 3GS takes ownership and requests an authentication challenge when in the process to be mounted.

Copied contents file structure:

bernd@isopiece:~/Desktop/phonecontents$ ls -R
ApplicationArchives          Downloads       Photos    PublicStaging  Recordings  DCIM                        iTunes_Control  Podcasts  Purchases      Safari



IMG_0433.JPG  IMG_0435.JPG  IMG_0436.JPG  IMG_0437.JPG  IMG_0438.JPG  IMG_0439.JPG  img_1974.jpg


Artwork  Device  iTunes  Music  Ringtones

ArtworkDB  F3001_1.ithmb  F3002_1.ithmb  F3003_1.ithmb  F3005_1.ithmb  F3006_1.ithmb  F3007_1.ithmb  F3012_1.ithmb

HashInfo  SysInfoExtended  Trainer



4H0047X7VSX  linkData

bests.plist  calibration.xml  lastWorkout.xml  latest  preferences.xml  settings.plist

2010-04-19 18;07;04.xml  2010-04-20 17;50;49.xml  2010-04-20 18;02;57.xml  2010-04-21 18;01;51.xml

IC-Info.sidb  iTunesApplicationIDs  iTunesControl  iTunes Library.itlp   iTunesMovies     iTunesPrefs        Rentals.plist    VoiceMemos.plist
IC-Info.sidv  iTunesCDB             iTunesDB       iTunesMoviePlaylists  iTunesPlaylists  iTunesPrefs.plist  Ringtones.plist

./iTunes_Control/iTunes/iTunes Library.itlp:
DBTemp  Dynamic.itdb  Extras.itdb  Genius.itdb  Library.itdb  Locations.itdb  Locations.itdb.cbk

./iTunes_Control/iTunes/iTunes Library.itlp/DBTemp:
Backup  ddd.itdbm

./iTunes_Control/iTunes/iTunes Library.itlp/DBTemp/Backup:

./iTunes_Control/iTunes/iTunes Library.itlp/DBTemp/Backup/iTunes_Control:

./iTunes_Control/iTunes/iTunes Library.itlp/DBTemp/Backup/iTunes_Control/iTunes:
iTunes Library.itlp

./iTunes_Control/iTunes/iTunes Library.itlp/DBTemp/Backup/iTunes_Control/iTunes/iTunes Library.itlp:
Dynamic.itdb  Extras.itdb  Library.itdb  Locations.itdb  Locations.itdb.cbk

F00  F02  F04  F06  F08  F10  F12  F14  F16  F18  F20  F22  F24  F26  F28  F30  F32  F34  F36  F38  F40  F42  F44  F46  F48
F01  F03  F05  F07  F09  F11  F13  F15  F17  F19  F21  F23  F25  F27  F29  F31  F33  F35  F37  F39  F41  F43  F45  F47  F49

AUXM.mp3  BPGL.mp3  CMKZ.mp3  DXEC.mp3  FWQN.mp3  IGUA.mp3  KHDB.mp3  MTCN.mp3  OOZM.mp3  OVLK.mp3  RIDE.mp3  SOAU.mp3  TWFV.mp3  UJHE.mp3  YBIW.mp3
BLXF.mp3  CDIN.mp3  DICJ.mp3  EXLN.mp3  GAZI.mp3  JEXQ.mp3  KYKH.mp3  NEUC.mp3  ORHK.mp3  QWGA.mp3  SNIN.mp3  TAPC.mp3  TZIF.mp3  VTCR.mp3

ACPV.mp3  BZVB.mp3  DNTQ.mp3  FDZE.mp3  GECU.mp3  IMPV.mp3  KJCP.mp3  KWFT.mp3  LKJF.mp3  MSPV.mp3  NQVB.mp3  TOJU.mp3  WKQU.mp3  XBTL.mp3  YNYH.mp3
BZPH.mp3  CBSB.mp3  EEWN.mp3  GDYD.mp3  GXSW.mp3  JHUJ.mp3  KPSS.mp3  LDKQ.mp3  MLZI.mp3  NKQK.mp3  PHDL.mp3  TVVO.mp3  WYCW.mp3  YLIT.mp3







20100517 111440.m4a  20100517 111501.m4a  20100519 122148.m4a  Recordings.db


Contents list of disk usage:

bernd@isopiece:~/Desktop/phonecontents$ du -h
4.0K    ./PublicStaging
920K    ./Safari
4.0K    ./iTunes_Control/Ringtones
107M    ./iTunes_Control/Music/F23
133M    ./iTunes_Control/Music/F39
124M    ./iTunes_Control/Music/F29
122M    ./iTunes_Control/Music/F40
136M    ./iTunes_Control/Music/F47
109M    ./iTunes_Control/Music/F11
98M    ./iTunes_Control/Music/F05
174M    ./iTunes_Control/Music/F27
76M    ./iTunes_Control/Music/F07
130M    ./iTunes_Control/Music/F42
167M    ./iTunes_Control/Music/F06
139M    ./iTunes_Control/Music/F44
104M    ./iTunes_Control/Music/F19
116M    ./iTunes_Control/Music/F46
111M    ./iTunes_Control/Music/F21
164M    ./iTunes_Control/Music/F15
141M    ./iTunes_Control/Music/F25
168M    ./iTunes_Control/Music/F37
121M    ./iTunes_Control/Music/F03
140M    ./iTunes_Control/Music/F38
150M    ./iTunes_Control/Music/F45
132M    ./iTunes_Control/Music/F10
67M    ./iTunes_Control/Music/F20
80M    ./iTunes_Control/Music/F41
135M    ./iTunes_Control/Music/F43
148M    ./iTunes_Control/Music/F48
161M    ./iTunes_Control/Music/F24
96M    ./iTunes_Control/Music/F04
1.5G    ./iTunes_Control/Music/F09
127M    ./iTunes_Control/Music/F02
116M    ./iTunes_Control/Music/F22
147M    ./iTunes_Control/Music/F49
132M    ./iTunes_Control/Music/F18
185M    ./iTunes_Control/Music/F26
168M    ./iTunes_Control/Music/F35
130M    ./iTunes_Control/Music/F17
126M    ./iTunes_Control/Music/F33
275M    ./iTunes_Control/Music/F30
146M    ./iTunes_Control/Music/F34
154M    ./iTunes_Control/Music/F08
132M    ./iTunes_Control/Music/F36
226M    ./iTunes_Control/Music/F12
183M    ./iTunes_Control/Music/F00
121M    ./iTunes_Control/Music/F28
234M    ./iTunes_Control/Music/F31
140M    ./iTunes_Control/Music/F14
98M    ./iTunes_Control/Music/F16
182M    ./iTunes_Control/Music/F32
169M    ./iTunes_Control/Music/F01
197M    ./iTunes_Control/Music/F13
8.3G    ./iTunes_Control/Music
94M    ./iTunes_Control/Artwork
4.5M    ./iTunes_Control/iTunes/iTunes Library.itlp/DBTemp/Backup/iTunes_Control/iTunes/iTunes Library.itlp
4.5M    ./iTunes_Control/iTunes/iTunes Library.itlp/DBTemp/Backup/iTunes_Control/iTunes
4.5M    ./iTunes_Control/iTunes/iTunes Library.itlp/DBTemp/Backup/iTunes_Control
4.5M    ./iTunes_Control/iTunes/iTunes Library.itlp/DBTemp/Backup
4.5M    ./iTunes_Control/iTunes/iTunes Library.itlp/DBTemp
9.0M    ./iTunes_Control/iTunes/iTunes Library.itlp
9.4M    ./iTunes_Control/iTunes
20K    ./iTunes_Control/Device/Trainer/Workouts/Empeds/4H0047X7VSX/latest
44K    ./iTunes_Control/Device/Trainer/Workouts/Empeds/4H0047X7VSX
52K    ./iTunes_Control/Device/Trainer/Workouts/Empeds
56K    ./iTunes_Control/Device/Trainer/Workouts
60K    ./iTunes_Control/Device/Trainer
96K    ./iTunes_Control/Device
8.4G    ./iTunes_Control
4.0K    ./Photos
4.0K    ./Podcasts
2.0M    ./Recordings
8.0K    ./Downloads
4.0K    ./Purchases
55M    ./ApplicationArchives
16K    ./DCIM/.MISC
7.3M    ./DCIM/100APPLE/.MISC
18M    ./DCIM/100APPLE
18M    ./DCIM
8.4G    .

This data protection flaw exposes music, photos, videos, podcasts, voice recordings, Google safe browsing database, game contents… by in my opinion the quickest compromising read/write access discovered so far, without leaving any track record by the attacker. It’s about to imagine how many enterprises (e.g. Fortune 100) actually do rely on the expectation that their iPhone 3GS’s whole content is protected by encryption with a passcode based authentication in place to unlock it.

The contents sample have been collected off a non jail broken iPhone 3GS (with latest iPhone OS installed, all apps fully up to date and immediately “PIN lock” (passcode, 4 digits) enabled, by simply connecting it powered off via USB to a Linux Lucid Lynx PC (10.04) and then switched back on – being automatically mounted with given insecurity and never been attached to the PC before.

Other exposed contents and OS behavior has to be further investigated. The allowed write access could also lead into triggering a buffer overflow.

We already know that iPhone 3GS encryption is broken by the way the encryption key is handled [4].

The newly uncovered vulnerability shows that the Apple’s iPhone 3GS authentication model is somehow or other broken. The iPhone vulnerability was covered in SANS webcast “iPhone Insecurity” by Jim Herbeck [10]: Webcast audio excerpt of iPhone vulnerability.

Apple iPhone Security Overview [1]:

Data Protection:

Protecting data stored on iPhone is important for any environment with a high level of sensitive corporate or customer information. In addition to encrypting data in trans-mission, iPhone 3GS provides hardware encryption for data stored on the device.


iPhone 3GS offers hardware-based encryption. iPhone 3GS hardware encryption uses AES 256 bit encoding to protect all data on the device. Encryption is always enabled, and cannot be disabled by users.

Update 25/05/2010:

Apple’s product security team (case 105700225) still can’t reproduce described auto mounting and believes it could be a “race condition” or “a pairing issue” but is trying to get to the bottom of this issue and I am more than happy to assist, given a total 33.75 million of iPhones have been sold at Q4 2009 [11].

Update 27/05/2010:

Apple could reproduce the as described serious issue and believes to understand why this can happen but cannot provide timing or further details on the release of a fix.

Update 29/05/2010:

To clarify: This is a iPhone vulnerability and not an Ubuntu/Linux/libimobiledevice specific issue. Please see also “News” under [6]. In other words, Ubuntu Lucid Lynx just helped me to uncover the flaw easier.

The reason behind the issue that some people are not able to reproduce the time-of-check-to-time-of-use (TOCTTOU) bug [12] lies in the implementation of the iPhone authentication model, not the OS you tested with. So, this has nothing to do with the OS you used, but with the iPhone itself, and nothing else. People are best of luck to reproduce the flaw in getting the long boot cycle by powering off the iPhone from the non locked state.

Update 31/05/2010:

heise Security did manage to access a full backup of the iPhone by connecting the device to iTunes under Windows, using the flaw I uncovered recently. They could read notes, SMS-messages and even passwords in plaintext.

More info (in German):

Update 01/06/2010:

The H Security explains their associates findings from heise Security in English:

“While with Linux only a few selected folders on the iPhone were displayed, Windows allowed full system access. For instance, it was no problem to create a complete backup using iTunes, including items such as notes, text messages and even plain text passwords.”

Update 03/06/2010:

Please follow the uncertain workaround but take it as an intermediate advice:

Shutdown your iPhone only in the locked state and keep it in locked state when not in use.

Update 05/06/2010:

Please do also use the “encryption” feature with iTunes for your Backup [13].

Update 08/06/2010:

Apple will release iOS 4 which might fix the massive security vulnerability for the iPhone 3G and iPhone 3GS. Please update asap. According to Apple the release date will be on the 21st of June 2010.

Update 21/06/2010:

Apple released today a newer version of the iPhone software (version 4.0 8A293). If you want to update the phone please make sure to get iTunes also updated to the latest version before attempting the software update.

After the first tests done, please bear in mind that I need further investigations followed to provide a more reliable conclusion. So far it turns out that the time-of-check-to-time-of-use (TOCTTOU) bug (race condition) [12] seems to be patched in iOS4. The flaw is no longer reproducible for me in the way described above.

However, I would not call the issue as cleared off for the time being:

Apple security release notes can be found here and Apple is not mentioning anything about the security improvements towards better authentication and/or encryption.

If you read the installation notes during the software update very carefully you will note:

“* Better data protection using the device passcode as an encryption key* (Requires full restore)”

What this means is that unless you go through the Full restore process you will not gain any data protection improvement promised by Apple.

Update 22/06/2010:

Although Apple hasn’t pointed this out so far I would recommend following update procedure for iOS4:

Upgrading your iPhone to the latest version is the normal procedure, however if you read the installation notes during the software update very carefully you will note as mentioned:

Apple: * Better data protection using the device passcode as an encryption key* (Requires full restore)

What this means is that unless you go through the “Full Restore” process you will not gain any data protection improvement promised by Apple.

Please follow this procedure:

1.) Make sure your PC system is connected to a reliable power source.

2.) Get iTunes up to date, use the built in update function (Help -> Check for Updates)

3.) Make a backup of your iPhone data: Connect your iPhone to the computer system and open iTunes. Under ‘Devices’ on the left hand side of the window, right-click on the name you assigned your iPhone and first select ‘Sync’. Once this has been completed follow the same procedure, only this time select ‘Back Up’. Again, once this is finished right click on your iPhone and finally select ‘Transfer Purchases’. Once this has been done your iPhone would be fully backed up onto iTunes locally.

4.) iPhone iOS4 installation Phase 1:

Once you have fully backed up your iPhone go onto ‘Summary’ and select ‘Check for Updates’. The option to update to the latest version (4.0) will appear, select the update option and leave the iPhone to run its system update. The iPhone will require restarting.

5.) iPhone iOS4 installation Phase 2:

Note: If a Backup is available you should not lose any data at all.

Once the iPhone has completed its updates, select ‘Restore’ in the ‘Summary’ section of iTunes. If you have already backed up your iPhone with all the latest changes you’ve made to it (New songs, pictures etc) you won’t need to update the iPhone again, just allow it to run its System Restore, this will reset the iPhone back to its factory settings. Once the process is completed the device will restart and the Apple logo will appear on the screen. After the restore, the iPhone displays the “Connect to iTunes” screen. Keep your device connected until the “Connect to iTunes” screen goes away or you see “iPhone is activated.” If iTunes does not have an Internet connection, you cannot complete this step.

Finally, to restore your device from the previous backup you should be able to see a set of options in iTunes, stating that “An iPhone has been previously synced with this computer” with a list of synced devices, select the backup from which you want to restore your settings and select the continue button to complete the devices restoration.

Update 24/06/2010:

Apple iOS 4 update is disabling your security settings: After the update Apple iOS4 leaves you with no passcode protection and “Erase Data” feature disabled even when you have set this up before the update.

After the iOS4 update make sure under Settings – General – Passcode Lock On:

– Require Passcode is set to “Immediately”

– Simple Passcode is set to “OFF” , I recommend at least 6 characters (numbers and or letters with at least one special character included). This is very important as the passcode will be used to generate your encryption key during the full restore procedure .

– Erase Data is set to “ON”

If you had to change from Simple Passcode “ON” to a more complex passcode follow again the “iPhone iOS4 installation Phase 2” described above. This will generate a new stronger encryption key.

To make it easier, I summarized the iOS4 iPhone update.

Thank you.


[1] iPhone Security Overview: or

[2] Jailbreaking: or

[3] University of Central Florida:

[4] Wired: Encryption key threat:


[5] The Register about verboten iPhone Apps: or

iPhone support in Ubuntu 10.04:

[6] or

[7] or

[8] or

[9] Full disclosure: or

[10] SANS “iPhone Insecurity” Webcast: or

Audio excerpt of the webcast covering the new vulnerability:
iPhone/Linux vulnerability

Jim Herbeck’s Research for the webcast:

PDF slides of the webcast: or

[11] Wikipedia: iPhone: or

[12] Time-of-check-to-time-of-use, race condition: or

[13] iTunes Backup: or