# Memeriksa komunikasi jaringan aplikasi mobile

Sumber diperiksa. Metode: https://kompli.id/metodologi/.

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.

URL kanonis: https://kompli.id/panduan/keamanan/pemeriksaan-jaringan-mobile/
Sumber diakses: 2026-10-01
Diperbarui: 2026-10-02
Penulis: Kompli
Sumber diperiksa: 2026-10-02


## 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](/unduhan/lab-verifikasi-aplikasi-v1.zip). 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:

```sh
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](/template/catatan-verifikasi-keamanan-aplikasi/). Periksa [penyimpanan lokal](/panduan/keamanan/pemeriksaan-penyimpanan-mobile/) dan [hak akses API](/panduan/keamanan/keamanan-api-akses-data/) secara terpisah.

Penjelasan pemeriksaan diringkas dari OWASP MAS dengan perubahan bahasa; bagian adaptasi mengikuti [CC BY-SA 4.0](https://creativecommons.org/licenses/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](/panduan/keamanan/mengelola-sertifikat-tls/). 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](/unduhan/lab-keamanan-aplikasi-v1.zip) 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](https://creativecommons.org/licenses/by/4.0/). Fixture dan hasil Kompli memakai CC0 1.0.
## Sumber rujukan

- [OWASP MASVS v2.1.0 — rilis resmi](https://github.com/OWASP/masvs/releases/tag/v2.1.0) — MASVS 2.1.0, kelompok NETWORK; contoh tidak mengklaim seluruh kontrol atau pinning diperiksa.
- [OWASP MASTG-TEST-0235 — konfigurasi Android yang mengizinkan cleartext](https://mas.owasp.org/MASTG/tests/android/MASVS-NETWORK/MASTG-TEST-0235/) — MASTG-TEST-0235: konfigurasi cleartext pada manifest dan Network Security Config.
- [OWASP MASTG-TEST-0283 — pemeriksaan identitas host server](https://mas.owasp.org/MASTG/tests/android/MASVS-NETWORK/MASTG-TEST-0283/) — MASTG-TEST-0283: validasi identitas host dan verifier yang menerima semua nilai.
- [OWASP MASTG-TEST-0282 — evaluasi kepercayaan sertifikat TLS](https://mas.owasp.org/MASTG/tests/android/MASVS-NETWORK/MASTG-TEST-0282/) — MASTG-TEST-0282: evaluasi kepercayaan sertifikat; contoh menjalankan koneksi ke CA tidak dipercaya.
- [OWASP MASTG-TEST-0322 — pengecualian ATS iOS](https://mas.owasp.org/MASTG/tests/ios/MASVS-NETWORK/MASTG-TEST-0322/) — Metode iOS diperiksa 2 Oktober 2026; contoh parsial simulator, bukan seluruh test suite.

## Perlu membahas kebutuhan tim Anda?

Ceritakan sistem yang dikelola dan kebutuhan pengamanan tim Anda.

[Konsultasikan kebutuhan Anda](https://kompli.id/konsultasi/?topik=keamanan)

## Bacaan terkait

- [Keamanan aplikasi mobile: persiapan rilis Android dan iOS](https://kompli.id/panduan/keamanan/keamanan-aplikasi-mobile/)
- [Memeriksa penyimpanan data aplikasi mobile](https://kompli.id/panduan/keamanan/pemeriksaan-penyimpanan-mobile/)
- [Catatan verifikasi keamanan aplikasi](https://kompli.id/template/catatan-verifikasi-keamanan-aplikasi/)
- [Keamanan API: akses pengguna, tenant, token, dan batas penggunaan](https://kompli.id/panduan/keamanan/keamanan-api-akses-data/)

