Panduan / Keamanan informasi

Memeriksa komunikasi jaringan aplikasi mobile

Alamat HTTPS belum cukup: aplikasi perlu menolak koneksi yang tidak memenuhi validasi sertifikat dan identitas tujuan. Contoh Android lokal memperlihatkan perbedaan konfigurasi, hasil runtime dan bukti permintaan yang diterima server.

Di halaman ini

Apa yang harus dibuktikan pada koneksi aplikasi?

Koneksi yang sah perlu tetap berfungsi, sementara koneksi dengan identitas atau sertifikat tidak sesuai perlu ditolak. Melihat URL diawali HTTPS belum menjawab apakah aplikasi benar-benar memvalidasi tujuan.

Catat API, domain, SDK, WebView dan protokol yang digunakan. Pisahkan pemeriksaan konfigurasi dari pengamatan saat fitur dijalankan. Server, izin akses data dan integrasi pihak lain memiliki lingkup tersendiri; izin menguji aplikasi tidak otomatis memberi izin menguji semua penerimanya.

Rujukan dan lingkungan contoh

Contoh memakai MASVS 2.1.0 sebagai rujukan kelompok NETWORK. Halaman MASTG yang diperiksa 1 Oktober 2026: TEST-0235 untuk konfigurasi cleartext, TEST-0283 untuk validasi identitas host dan TEST-0282 untuk evaluasi sertifikat. Halaman MASTG berkembang terus; catat tanggal serta ID, bukan hanya “MASTG terbaru”.

Unduh source dan hasil lab verifikasi 1.0. Lingkungan yang dijalankan: emulator 37.1.11.0, Android 17/API 37, build CP31.260623.009, arm64-v8a; app target API 36, SDK/Build Tools 36, JDK 17.0.20, Node 24.21.0 dan LibreSSL 3.3.6 untuk sertifikat lab.

Server hanya mendengar di loopback host. Emulator mencapainya melalui 10.0.2.2. Empat endpoint memakai data buatan; CA lab hanya dipercaya untuk alamat itu dalam konfigurasi aplikasi. Trust store perangkat tidak diubah. Tidak ada kredensial, private key produksi atau pengujian server Kompli.

Siapkan empat keadaan koneksi

Endpoint lab Hasil yang diharapkan
HTTP tanpa TLS, port 18080 Ditolak oleh konfigurasi app; tidak ada permintaan baru yang membawa NETWORK_DEMO.
CA lab dipercaya, identitas sesuai, 18443 Terhubung dan mendapat 200. Ini kontrol positif agar semua koneksi tidak sekadar diblokir.
CA tidak dipercaya, 18444 Ditolak sebelum permintaan HTTP diproses.
CA lab dipercaya, identitas salah, 18445 Ditolak meskipun rantai sertifikat dipercaya. Sertifikat memakai nama wrong.lab.invalid, bukan tujuan IP.

Paket membuat sertifikat lab berumur dua hari saat build; bangun ulang jika kedaluwarsa. Contoh ini belum menguji kasus sertifikat kedaluwarsa atau pencabutan sertifikat.

Jalankan build bad dan fixed

README menjelaskan build, server, pemasangan APK dan perintah manual. Script berikut menjalankan kedua build, mencatat file/log, memeriksa endpoint dan mengulang build fixed:

python3 run-mobile.py --sdk /path/to/android-sdk --serial emulator-5580 --out ./out --confirm-disposable-emulator

Build bad sengaja mengizinkan cleartext dan memiliki hostname verifier yang menerima semua nilai. Build fixed menolak cleartext serta memakai pemeriksaan identitas bawaan. Evaluasi CA tetap aktif pada kedua build; masalah hostname dan kepercayaan CA diperiksa secara terpisah.

Hasil yang tercatat pada 1 Oktober 2026

  • HTTP: bad mendapat 200. Server membaca byte GET /?marker=NETWORK_DEMO HTTP/1.1 tanpa TLS. Fixed menghasilkan IOException; tidak ada permintaan HTTP baru pada server.
  • Endpoint sah: bad, fixed dan retest fixed semuanya mendapat 200.
  • CA tidak dipercaya: kedua build ditolak dengan SSLHandshakeException; tidak ada permintaan HTTP yang diproses endpoint tersebut.
  • Identitas salah: bad mendapat 200. Fixed dan retest ditolak dengan SSLPeerUnverifiedException; endpoint hanya menerima permintaan dari build bad.

Gunakan dua sisi bukti: hasil client dan permintaan yang benar-benar diterima server. Kegagalan koneksi saja dapat berasal dari server mati, port salah atau jaringan putus. Kontrol positif di atas membantu membedakannya dari penolakan validasi.

Marker dalam query sengaja buatan untuk memperlihatkan lalu lintas. Jangan memakai token atau data pelanggan dalam URL uji. HTTPS tidak menghilangkan data yang dicatat pada log aplikasi, server atau perantara yang berwenang membuka koneksi.

Batas pemeriksaan dan langkah berikutnya

Ini pemeriksaan konfigurasi/source fixture dan koneksi melalui HttpURLConnection/HttpsURLConnection. Catatan byte berasal dari soket HTTP server lokal; bukan packet capture seluruh perangkat atau pemeriksaan semua komunikasi. Tidak dilakukan hooking API, penilaian lengkap MASTG, pinning, WebView, SDK, protokol non-HTTP, seluruh versi TLS atau pengujian perangkat fisik. Contoh iOS berikut mempunyai lingkup tersendiri.

Tidak ditemukannya permintaan pada empat endpoint ini tidak membuktikan aplikasi nyata bebas dari kebocoran lain. Uji seluruh alur yang disepakati, identifikasi tujuan serta data SDK, dan periksa client berbeda yang dipakai aplikasi. Penonaktifan validasi TLS tidak dijadikan solusi untuk koneksi yang gagal.

Simpan build, versi perangkat, konfigurasi trust lab, URL buatan, hasil yang diharapkan/aktual serta batas di catatan verifikasi. Periksa penyimpanan lokal dan hak akses API secara terpisah.

Penjelasan pemeriksaan diringkas dari OWASP MAS dengan perubahan bahasa; bagian adaptasi mengikuti CC BY-SA 4.0. Fixture dan hasil adalah contoh orisinal Kompli, tanpa klaim kesesuaian seluruh MASVS.

Pengujian client perlu terhubung dengan pemeliharaan sertifikat pada layanan. Jika sertifikat server kedaluwarsa, perbaiki titik TLS-nya; jangan melonggarkan validasi mobile.

Contoh iOS: HTTP lokal dan TLS yang tidak dipercaya

Fixture di lab keamanan aplikasi 1.0 dijalankan 2 Oktober 2026 pada iPhone 17 simulator, iOS 26.5 (23F77), arm64, Xcode 27.0 (27A266a). URLSession hanya menghubungi endpoint loopback buatan. Runner membuat sertifikat self-signed dua hari dan tidak menambahkannya ke trust store. Jalankan dengan perintah iOS pada README.

Rujukan MASTG-TEST-0322 membahas pemeriksaan pengecualian App Transport Security (ATS) pada Info.plist. ATS mempunyai lingkup API tertentu; jangan menganggap pemeriksaan plist saja membuktikan semua koneksi terenkripsi.

Kasus Hasil yang dicatat
Baseline HTTP bad 200; server menerima IOS_NETWORK_DEMO melalui HTTP.
Baseline tanpa pengecualian ATS Endpoint localhost masih menerima HTTP pada run ini. Menghapus NSAllowsArbitraryLoads saja belum memenuhi harapan penolakan endpoint lokal tersebut.
Fixed dengan pemeriksaan scheme HTTP ditolak oleh fungsi aplikasi sebelum task dibuat; kode KompliLabSchemePolicy 1, tanpa permintaan baru ke server. Retest mengulang keadaan itu.
TLS self-signed tidak dipercaya Bad, fixed dan retest menghasilkan NSURLErrorDomain -1202, tanpa permintaan HTTP yang diterima endpoint TLS.

Pemeriksaan scheme bukan pemeriksaan sertifikat. Fixed tetap memakai validasi URLSession bawaan; tidak memakai delegate yang menerima semua sertifikat. Rujukan endpoint TLS ini hanya self-signed yang tidak dipercaya: belum ada kontrol positif TLS dipercaya atau kasus hostname salah pada iOS. Endpoint HTTP yang hidup menjadi bukti server tersedia, bukan bukti endpoint TLS dipercaya bekerja.

Simpan hasil client, pengecualian plist dan permintaan server dalam satu catatan. Error -1202 di lab tidak membuktikan semua TLS/SDK/WebView atau pinning benar. Hasil HTTP lokal ini juga bukan bukti bahwa ATS membiarkan semua domain publik. Log server bukan packet capture seluruh simulator.

observed-ios-baseline.json menjaga bukti sebelum pemeriksaan scheme; observed-ios.json memuat hasil akhir. Tidak ada TLS key, app binary atau sertifikat pribadi pada ZIP. Perangkat fisik, WebView, low-level networking, semua versi TLS, pinning serta masa berlaku sertifikat tetap belum diuji.

Penjelasan ATS diringkas dari OWASP MAS dengan perubahan bahasa; halaman yang ditinjau mencantumkan CC BY 4.0. Fixture dan hasil Kompli memakai CC0 1.0.

Unduh artikel (.md)

Sumber rujukan

  1. OWASP MASVS v2.1.0 — rilis resmi ↗OWASP Foundation; repositori resmi proyek · MASVS 2.1.0, kelompok NETWORK; contoh tidak mengklaim seluruh kontrol atau pinning diperiksa.
  2. OWASP MASTG-TEST-0235 — konfigurasi Android yang mengizinkan cleartext ↗OWASP Foundation; metode pengujian teknis · MASTG-TEST-0235: konfigurasi cleartext pada manifest dan Network Security Config.
  3. OWASP MASTG-TEST-0283 — pemeriksaan identitas host server ↗OWASP Foundation; metode pengujian teknis · MASTG-TEST-0283: validasi identitas host dan verifier yang menerima semua nilai.
  4. OWASP MASTG-TEST-0282 — evaluasi kepercayaan sertifikat TLS ↗OWASP Foundation; metode pengujian teknis · MASTG-TEST-0282: evaluasi kepercayaan sertifikat; contoh menjalankan koneksi ke CA tidak dipercaya.
  5. OWASP MASTG-TEST-0322 — pengecualian ATS iOS ↗OWASP Foundation; pemeriksaan Info.plist dan kebutuhan validasi runtime · Metode iOS diperiksa 2 Oktober 2026; contoh parsial simulator, bukan seluruh test suite.

Baca naskah lengkap untuk melihat syarat dan pengecualiannya. Sesuaikan dengan layanan dan bidang usaha Anda.

Perlu membahas kebutuhan tim Anda?

Ceritakan sistem yang dikelola dan kebutuhan pengamanan tim Anda.

Konsultasikan kebutuhan Anda