Lompat ke konten
dokumentasi.id
Commit dd5271a
v2
Star6,4 rb

7

Kebijakan Keamanan dan Pelaporan Kerentanan

Kebijakan keamanan apkleaks sangat ramping: satu berkas berisi sembilan baris dan dua bagian. Bagian pertama mengatur cara melaporkan kerentanan, bagian kedua mengatur cara mengusulkan perbaikan atas proses pelaporan itu sendiri. .github/SECURITY.md:1-9

Kanal Pelaporan dan Tenggat Respons

Kebijakan menetapkan satu kanal masuk, yaitu surel, dan satu tenggat balasan yang tegas. Tidak ada alamat kedua, templat laporan, atau kewajiban enkripsi yang disebut di berkas tersebut.

ButirIsi kebijakan
Alamat laporan[email protected], untuk kerentanan yang dicurigai maupun yang sudah dipastikan
Tenggat responsbalasan diterima "within 48 hours"
Waktu patchsecepat mungkin bergantung kompleksitas, secara historis dalam hitungan hari
Saran perbaikan prosesdiajukan sebagai pull request

Isi tabel diambil langsung dari .github/SECURITY.md:3-5 untuk tiga baris pertama dan dari .github/SECURITY.md:7-9 untuk baris terakhir.

Urutan interaksinya hanya satu arah: laporan masuk lewat surel, balasan keluar dalam 48 jam, lalu patch menyusul bila isu dikonfirmasi.

sequenceDiagram
    autonumber
    actor R as Reporter
    participant M as Maintainer
    participant P as Patch
    R->>M: email ke [email protected]
    Note over R,M: balasan dalam 48 jam
    M->>M: konfirmasi isu dan nilai kompleksitas
    alt isu dikonfirmasi
        M->>P: siapkan patch
        P-->>R: rilis patch historis dalam hitungan hari
    else isu tidak dikonfirmasi
        M-->>R: balasan tanpa patch
    end
    R->>M: pull request berisi saran perbaikan proses
%% fig: Siklus pelaporan kerentanan ke [email protected]
%% desc: Reporter mengirim surel, maintainer membalas dalam 48 jam, lalu patch dirilis bila isu dikonfirmasi.
Fig. 1: Siklus pelaporan kerentanan ke [email protected]Reporter mengirim surel, maintainer membalas dalam 48 jam, lalu patch dirilis bila isu dikonfirmasi.

Riwayat Perbaikan Injeksi Perintah pada decompile

Fungsi decompile seluruhnya hanya sepuluh baris dan hampir semuanya berputar pada penyusunan satu string perintah. apkleaks/apkleaks.py:89-98

Nilai --args diterima sebagai satu string utuh lewat -a/--args, yang membantu menyebut contoh "Disassembler arguments (e.g. --threads-count 5 --deobf)". apkleaks/cli.py:27 String itu baru dipecah di dalam decompile.

Penyusunan perintah berjalan berlapis. Daftar args dimulai dari path jadx, path APK, flag -d, dan direktori sementara. apkleaks/apkleaks.py:90-91 Setelah itu argumen pengguna ditambahkan hasil re.split(r"\s|=", self.disarg), sehingga satu string panjang menjadi banyak elemen. apkleaks/apkleaks.py:92-95 Penggabungan kembali menjadi comm memakai quote dari shlex untuk setiap elemen, lalu kutip tunggal pada hasilnya ditukar menjadi kutip ganda sebelum os.system dipanggil. apkleaks/apkleaks.py:96-98 Import quote itu eksplisit di bagian atas modul. apkleaks/apkleaks.py:15

graph LR
    A["nilai --args dari pengguna"] --> B["re.split pada spasi dan tanda sama dengan"]
    B --> C["quote per argumen"]
    C --> D["replace kutip tunggal menjadi kutip ganda"]
    D --> E["os.system menjalankan comm"]
    style A fill:#f59e0b,color:#000
    style C fill:#2d7d46,color:#fff
    style D fill:#dc2626,color:#fff
    style E fill:#dc2626,color:#fff
%% fig: Penyusunan perintah jadx di decompile
%% desc: Argumen pengguna dipecah, di-quote satu per satu, lalu kutipnya ditukar sebelum os.system mengeksekusi string comm.
Fig. 2: Penyusunan perintah jadx di decompileArgumen pengguna dipecah, di-quote satu per satu, lalu kutipnya ditukar sebelum os.system mengeksekusi string comm.

⚠️ Penggantian kutip tunggal menjadi kutip ganda di baris 97 melemahkan sebagian perlindungan yang baru dipasang quote. Di dalam kutip ganda, $ dan backtick masih ditafsirkan shell, sehingga argumen yang memuat keduanya tetap bisa berubah menjadi perintah lain. Kelas isu ini masuk kanal pelaporan [email protected]. apkleaks/apkleaks.py:96-98

Permukaan Risiko Lain

Selain --args, ada dua titik lain yang menyentuh sumber daya di luar APK: binary disassembler dan berkas hasil.

PermukaanMekanismeKondisi saat ini
Binary jadxwhich("jadx") dipakai bila ada, selain itu path diarahkan ke jadx/bin/jadx di dalam repository apkleaks/apkleaks.py:36bergantung pada binary lokal atau unduhan
Unduhan jadxdependencies mengambil zip dari URL rilis HTTPS tetap lalu memanggil os.chmod(self.jadx, 33268) apkleaks/apkleaks.py:44-53hanya berjalan setelah konfirmasi
Konfirmasi unduhanintegrity menampilkan "Can't find jadx binary." lalu membaca jawaban (Y/n) apkleaks/apkleaks.py:55-60interaktif, satu kali per instalasi
Berkas hasilself.output memakai tempfile.mkstemp bila -o tidak diberikan, dengan suffix .json atau .txt apkleaks/apkleaks.py:33-34lokasi acak di direktori sementara

Perilaku prompt unduhan itu juga tercatat di README: jadx diperlukan sebagai disassembler dan akan ditawarkan untuk diunduh bila belum ada di sistem. README.md:51-53 Rincian pemasangan ada di Instalasi dan Dependensi, sedangkan efek argumen lain pada hasil pemindaian ada di Opsi CLI dan Argumen Disassembler.

Untuk menjaga laporan tetap dapat ditindaklanjuti, sebutkan langkah yang membuat os.system menyusun comm tertentu, misalnya nilai --args yang dipakai. Posisi decompile di antara integrity dan scanning dijelaskan di Siklus Hidup Kelas APKLeaks.