DIVA Android
  • Damn Insecure and Vulnerable App (DIVA)
  • Pendahuluan
    • Persiapan
    • Konfigurasi Burp Suite dengan Android
    • Instalasi Aplikasi DIVA
  • Reversing of APK
    • Decompiling dan Reversing APK
  • Challenges
    • Insecure Logging
    • Hardcoding Issues - Part 1
    • Insecure Data Storage - Part 1
    • Insecure Data Storage - Part 2
    • Insecure Data Storage - Part 3
    • Insecure Data Storage - Part 4
    • Input Validation Issues - Part 1
    • Input Validation Issues - Part 2
    • Access Control Issues - Part 1
    • Access Control Issues - Part 2
    • Access Control Issues - Part 3
    • Hardcoding Issues - Part 2
    • Input Validation Issues - Part 3
Powered by GitBook
On this page
  • Pendahuluan
  • Penjelasan
  • Melihat Source Code
  • Melihat File Temporary
  • Kesimpulan

Was this helpful?

  1. Challenges

Insecure Data Storage - Part 3

Temporary Internal File Storage Risk

PreviousInsecure Data Storage - Part 2NextInsecure Data Storage - Part 4

Last updated 4 years ago

Was this helpful?

Pendahuluan

Android menyediakan opsi untuk menyimpan file sementara (temporary file) secara lokal di dalam penyimpanan internal. Biasanya file ini digunakan untuk mencatat error, log, atau lainnya.

File temporary ini disimpan di dalam direktori aplikasi sandbox, yaitu /data/data/AppPackageName/.

Mungkin saja developer melakukan kesalahan dengan menyimpan data sensitif pada file tersebut.

Penjelasan

Melihat Source Code

InsecureDataStorage3Activity.class
package jakhar.aseem.diva;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.io.File;
import java.io.FileWriter;

public class InsecureDataStorage3Activity extends AppCompatActivity {
  protected void onCreate(Bundle paramBundle) {
    super.onCreate(paramBundle);
    setContentView(2130968613);
  }
  
  public void saveCredentials(View paramView) {
    EditText editText2 = (EditText)findViewById(2131493006);
    EditText editText1 = (EditText)findViewById(2131493007);
    File file = new File((getApplicationInfo()).dataDir);
    try {
      File file1 = File.createTempFile("uinfo", "tmp", file);
      file1.setReadable(true);
      file1.setWritable(true);
      FileWriter fileWriter = new FileWriter();
      this(file1);
      StringBuilder stringBuilder = new StringBuilder();
      this();
      fileWriter.write(stringBuilder.append(editText2.getText().toString()).append(":").append(editText1.getText().toString()).append("\n").toString());
      fileWriter.close();
      Toast.makeText((Context)this, "3rd party credentials saved successfully!", 0).show();
    } catch (Exception exception) {
      Toast.makeText((Context)this, "File error occurred", 0).show();
      Log.d("Diva", "File error: " + exception.getMessage());
    } 
  }
}

Setelah menganalisa source code di atas, terlihat bahwa credentials yang diinputkan user disimpan secara lokal pada file temporary yang di awali kata "uinfo" dan diakhiri kata "tmp".

Melihat File Temporary

Setelah mengetahui bahwa credentials disimpan pada file temporary, silahkan masuk ke direktori aplikasi sandbox dan tampilkan isi dari file tersebut.

cd /data/data/jakhar.aseem.diva/
cat <temporary-file>

Credentials yang disimpan oleh aplikasi bisa terlihat dengan jelas seperti contoh di atas. Ini membuktikan bahwa aplikasi ini tidak menyimpan credentials dengan aman.

Kesimpulan

Menyadari fakta tersebut, terdapat beberapa rekomendasi yang bisa developer lakukan, diantaranya:

  • Tidak menyimpan informasi sensitif apa pun secara lokal termasuk ke dalam file temporary.

  • Lakukan salting + hasing terlebih dahulu pada data sensitif sebelum disimpan.

Bagian aplikasi yang akan kita bahas kali ini memiliki fitur untuk menyimpan credentials milik user. Dengan melakukan lalu menganalisis source code, kita akan mencari tahu bagaimana credentials tersebut disimpan.

Sebagaimana yang kita pelajari , bahwa menyimpan credentials di dalam direktori aplikasi sandbox secara plain text tidaklah aman.

Menggunakan bisa menjadi pilihan untuk menyimpan kunci enkripsi dengan aman bahkan pada rooted device.

reverse engineering
Android Keystore
sebelumnya
Tampilan Soal Insecure Data Storage - Part 3