[Bahasa] Penyimpanan Data (Passcode) tidak aman pada aplikasi Pocket Expense untuk iOS versi <= 4.5.1

In the name of Allah, the Most Gracious, the Most Merciful.


I. ABSTRACT

Di dalam kehidupan sehari-hari, sering kali seseorang mengalami kesulitan dalam mengatur pola keuangannya dengan tepat. Pengaturan ini sendiri pada umumnya dapat berupa pencatatan aktivitas pemasukan ataupun pengeluaran baik yang sudah lalu maupun yang akan datang. Di era yang serba digital seperti sekarang ini, pencatatan secara manual tentunya telah menjadi kendala tersendiri yang sudah pasti akan sulit terwujud bagi sebagian besar orang. Selain karena tidak begitu efektif dalam hal pencatatan dan pencarian, proses secara manual ini pun memiliki hambatan tersendiri dikarenakan sulitnya untuk melindungi catatan yang ada dari adanya penggunaan tanpa izin.

Dengan melihat kebutuhan dalam mengatasi kendala yang ada inilah, beberapa developer maupun perusahaan bermunculan untuk membuat dan menawarkan berbagai perangkat lunak yang dapat membuat penggunanya dapat dengan mudah mengatur pola keuangan mereka. Spending Tracker, Money Monitor, ataupun Pocket Expense hanyalah beberapa perangkat lunak yang terbilang cukup terkenal dan menjajaki pencarian utama untuk kata kunci “money” ataupun “account” pada iTunes Indonesia. Beberapa developer atau perusahaan pun menyadari pentingnya data yang ada sehingga mereka juga menawarkan perlindungan yang dinilai dapat menjaga kerahasiaan penggunanya. Pada umumnya, perlindungan ini berupa PIN yang secara umum juga dikenal sebagai Passcode.

Pada topik ini, penulis akan membahas mengenai kelemahan akan keamanan (Passcode) yang ditawarkan oleh “Pocket Expense” (http://www.appxy.com/pocket-expense/) yang telah penulis laporkan ke pihak developer pada July 7th, 2014 GMT+7 lalu.


II. INTRODUCTION

Passcode merupakan suatu kebutuhan pasti bagi setiap orang yang ingin menjaga kerahasiaan akan suatu hal yang dianggap perlu untuk dirahasiakan. Berdasarkan pengertian dari OxfordDictionaries, Passcode berarti “A string of characters used as a password, especially to gain access to a computer or smartphone”. Di lain sumber, passcode pun dapat disamakan sebagai password yang juga merupakan suatu mekanisme yang umum dipakai dalam penunjukan suatu identitas. Passcode dan Password ini sendiri pun dinilai sebagai suatu hal yang umumnya dibuat oleh pengguna.

Secara garis besar, perbedaan di antara keduanya (baik passcode maupun password) terletak dari sisi karakter yang dimasukan. Bila pada passcode pengguna diharuskan hanya memasukan angka, maka pada password, pengguna dapat memasukan campuran dari alphabet, angka, maupun simbol.

Mari kita langsung masuk ke inti dari topik ini. Seperti yang telah dijelaskan sebelumnya, Pocket Expense merupakan salah satu aplikasi yang menawarkan kemudahan untuk penggunanya mengatur pola keuangan. Appxy selaku developer pun menawarkan fitur penggunaan passcode yang hanya dapat diperoleh penggunanya bila telah membeli pro version dari aplikasi terkait.

Sesuai dengan pembahasan di bagian abstrak, pada aplikasi ini, penulis mendapati bahwa seorang Attacker dapat memperoleh passcode dari aplikasi Pocket Expense yang telah diatur oleh penggunanya dalam melindungi data yang ada. Tentunya, dengan memanfaatkan passcode ini, Attacker akan dapat menggunakannya untuk login ke dalam aplikasi terkait atau bahkan memanfaatkannya untuk login ke iDevice milik pengguna. Mengapa demikian? Karena pada umumnya, seseorang akan menggunakan passcode yang sama sebagai suatu penunjuk identitas di berbagai sistem yang memiliki fitur login dengan passcode. Terlebih lagi, passcode pada Pocket Expense juga berjumlah 4 digit seperti halnya milik iDevice yang dikeluarkan oleh Apple (bila pengguna hanya mengaktifkan simple passcode pada iDevice miliknya).

Sekedar informasi, penulis menggunakan Pocket Expense versi 4.5.1. yang merupakan 1 versi sebelum versi 5.2.1 yang telah dikeluarkan oleh Appxy setelah penulis melaporkan kerentanan pada passcode yang ada.

Figure 1. Pocket Expense version for iOS

III. AFFECTED VERSION AND CONDITION

Versi dari Pocket Expense yang memiliki celah keamanan ini yaitu versi 4.5.1. Berikut ini merupakan kondisi yang memungkinkan Attacker untuk membaca passcode dari Pocket Expense:

  1. iDevice tidak perlu berada dalam keadaan ter-jailbreak.
  2. iDevice tidak perlu berada dalam keadaan stand by. Dengan kata lain, celah ini juga dapat dimanfaatkan walau iDevice yang ada sedang dalam keadaan ter-lock oleh passcode untuk iDevice itu sendiri.
  3. Penulis mencoba di Pocket Expense untuk iPhone dan iPad dengan iOS versi 6.1.3 dan 7.1.1.

IV. PROOF OF CONCEPT

1. Hubungkan iDevice yang memiliki Pocket Expense di dalamnya dengan PC.
2. Akses direktori “Applications” pada iDevice dengan iExplorer tools seperti iFunBox.
3. Masuk ke aplikasi “Expense“.

Figure 2. Pocket Expense Application Sandbox

4. Masuk ke dalam direktori “Documents” dan kita akan melihat beberapa file yang salah satu di antaranya merupakan file ber-format sqlite..

Figure 3. SQLite Files on Documents Folder

5. Buka file “PocketExpense1.0.0.sqlite” dengan SQLiteBrowser atau semacamnya.

Figure 4. Pocket Expense Database Structure

6. Setelah itu, akses ke table “ZSETTING” dan perhatikan bagian “ZPASSCODE”. Anda akan melihat bahwa “passcode” yang digunakan untuk melindungi data dari Pocket Expense ini tersimpan secara plaintext dan dapat diakses walaupun iDevice tidak dalam keadaan ter-jailbreak.

Figure 5. Insecure Passcode Storage of Pocket Expense – iPad version

Figure 6. Insecure Passcode Storage of Pocket Expense – iPhone Version (iOS 6)

Figure 7. Pocket Expense v. 4.5.1.

V. RESPONSE FROM DEVELOPER

Belum terdapat respon dari pihak developer terhadap email yang berisikan kerentanan dari aplikasi Pocket Expense yang telah penulis kirimkan pada July 7th, 2014 lalu. Namun uniknya, pihak developer telah memperbaiki dan meng-update kedua aplikasi mereka (untuk iPhone dan iPad) di App Store per July 16th, 2014. Hal yang sangat disayangkan adalah, pengguna Pocket Expense berbayar pada versi 4.5.1 tidak akan mendapatkan update terkait kerentanan yang ada dan bahkan versi ini telah dihilangkan oleh pihak developer. Dengan kata lain, pengguna diharuskan untuk membeli kembali aplikasi yang telah dibuat yang sekarang telah menjadi versi 5.

Namun sisi positif dari hal ini adalah, pengguna sudah tidak perlu mengkhawatirkan kendala yang ada.

Figure 8. Bug Report to Developer

VI. SUMMARY AND RECOMMENDATION

Secara umum, dengan memanfaatkan kerentanan ini, tentunya Attacker akan dapat meraih akses ke dalam data yang tersimpan di dalam aplikasi terkait. Selain itu, kerentanan ini pun dapat membahayakan pengguna iDevice yang terbiasa menyamaratakan value dari passcode yang ada.

Sebagai contoh, passcode yang digunakan oleh pengguna pada aplikasi Pocket Expense ini yaitu 5566. Bukan tidak mungkin bila pengguna pun menggunakan simple passcode yang sama pada iDevice mereka yang berarti akan dapat mengakibatkan penyalahgunaan dengan dampak yang lebih besar.

Dengan melihat status yang ada terkait hal ini, maka rekomendasi yang dapat diterapkan oleh para pengguna bila tidak hendak membeli versi terbaru dari aplikasi ini adalah:

  1. Mematikan fitur “simple passcode” apabila memang pengguna lebih terbiasa menggunakan satu jenis kombinasi untuk keseluruhan identitas.
  2. Bila tetap ingin menggunakan “simple passcode”, maka pengguna dianjurkan untuk membedakan antara passcode untuk login ke iDevice dengan passcode untuk login ke aplikasi Pocket Expense.

Dan bila pengguna tidak memiliki keberatan untuk membeli versi terbarunya, tentu hal ini sudah tidak menjadi kekhawatiran tersendiri mengingat bahwa Pocket Expense sudah tidak lagi menyimpan value dari “passcode” sesuai dengan yang dipaparkan pada paper sederhana ini.


VII. ADDITIONAL INFORMATION

1. Penulis menggunakan Pocket Expense berbayar dengan versi 4.5.1 untuk iPad dan iPhone yang penulis beli dari App Store pada April 2014 lalu.

Figure 9. Purchase Date and Purchase History

2. Logo dari versi berbayar Pocket Expense dibedakan dengan versi gratis nya. Bila pada versi gratis logonya berwarna merah, maka pada versi berbayar, logonya berwarna biru.

3. Pocket Expense berbayar untuk iPad (v.4.5.1) sudah tidak memperoleh update. Hal ini dapat dilihat dengan membuka daftar aplikasi kita pada perangkat lunak iTunes dan mencoba mengakses Pocket Expense di App Store melalui daftar yang sudah di-download.

Figure 10. Show in iTunes Store

4. Penulis tidak mengetahui secara pasti jadwal release versi 5 berbayar nya karena bila merujuk terhadap versi 5 berbayar di App Store, jadwalnya release nya per bulan Mei 2014. Sedangkan perbaikan untuk versi gratis nya muncul per 16 July 2014 yang melompat dari versi 4.5.1 ke versi 5.

Silakan untuk mengunduh langsung bentuk .pdf dari tulisan ini untuk dapat membacanya dengan lebih nyaman:
[English Version] Insecure Data (Passcode) Storage at Pocket Expense for iOS version <= 4.5.1 (translated by vky[at]firstsight.me)
[Indonesian Version] Insecure Data (Passcode) Storage at Pocket Expense for iOS version <= 4.5.1

Share

You may also like...