Sebagai peminat tegar telefon Android, jika telefon anda tiba-tiba terjatuh, adakah fikiran pertama anda ialah "Ya Tuhanku!" atau wang anda dalam Google Pay atau Paypal tidak selamat? Jika apl yang dimuat turun terbaharu bukan sahaja memaparkan pelbagai iklan yang membosankan tetapi juga pemberitahuan yang tidak dijangka, adakah anda fikir ia mungkin percubaan pancingan data dan segera menyahpasang apl itu?
Bagaimanakah kami boleh memastikan bahawa apl kami menyediakan pengalaman yang selamat untuk pengguna yang mempunyai kesedaran yang tidak mencukupi tentang kelemahan keselamatan Android? Apakah kelemahan keselamatan dalam ekosistem Android? Di manakah kita boleh meneroka teknik ujian keselamatan Android baharu? Bagaimanakah kami boleh menyelaraskan proses ujian keselamatan?
Pertama sekali, kelebihan pembangunan sumber terbuka sistem pengendalian Android juga menyembunyikan isu keselamatan yang wujud dalam pembangunannya, seperti sistem kotak pasir sistem Android (iaitu, mesin maya). Walau bagaimanapun, lapisan asas mempunyai satu demi satu kerentanan, membenarkan program (atau alatan) berniat jahat untuk mendapatkan akses root dan memecahkan sekatan kotak pasir. Sama seperti dalam era PC, tiada sistem pengendalian PC yang benar-benar selamat; dalam era internet mudah alih, tiada sistem pengendalian mudah alih yang benar-benar selamat sama ada. Risiko keselamatan ekosistem sumber terbuka Android adalah seperti loceng penggera berlumuran darah, menyayat hati setiap pembangun Android.
Kedua, risiko keselamatan dalam proses pembangunan APP/SDK Android adalah seperti lubang hitam yang tidak diketahui. Kita tidak pernah tahu di mana titik akhir konfrontasi keselamatan, siapa penyerang, siapa penamat dan bagaimana untuk bertahan terhadap mereka.
Akhir sekali, pada peringkat pengguna, apakah beberapa kelemahan tingkah laku keselamatan yang biasa dan boleh dikenali?
Kedua-dua Apl Android dan SDK mempunyai kelemahan keselamatan sedikit sebanyak. Mungkin suatu hari nanti, aplikasi anda mungkin terjejas oleh salah satu kelemahan keselamatan di atas. Secara kebetulan, semasa menguji Android SDK baru-baru ini, kami menemui kelemahan keselamatan yang berkaitan dengan komponen aplikasi Android. Berdasarkan contoh ini, kaedah, teknik dan proses untuk ujian keselamatan SDK Android diringkaskan.
Ikhtisar Punca Kerentanan
Komponen pilihan aplikasi (selepas ini dirujuk sebagai aplikasi) Android SDK telah membuka port rawak secara setempat untuk memantau sama ada perkhidmatan lapisan Java masih hidup. Walau bagaimanapun, apabila lapisan Java berkomunikasi dengan komponen, ia tidak menyemak parameter input dengan ketat, menyebabkan kemungkinan diisi dengan kod serangan dan serangan berniat jahat apabila memanggil fungsi "sistem()" sistem Linux.
Tangkapan skrin berikut menunjukkan bahawa selepas port simulasi diserang, niat komponen aplikasi mengubah suai kandungan URL semasa komunikasi dan Webview memaparkan kod bercelaru:
Empat komponen aplikasi utama Apl Android: Aktiviti, Penerima, Perkhidmatan dan Pembekal Kandungan, serta peranan keselamatan komponen aplikasi yang berkomunikasi melalui niat untuk IPC, tidak akan dibincangkan secara terperinci di sini. Memanfaatkan kelemahan berkaitan komponen dalam contoh di atas, rajah berikut menunjukkan dimensi serangan yang berkaitan dengan bahagian APP terminal:
Disebabkan persekitaran aplikasi tempatan Android APP, soket rangkaian sememangnya kekurangan mekanisme pengesahan dan kebenaran yang terperinci. Oleh itu, jika pelanggan Android digunakan sebagai pelayan, kod terbalik digunakan untuk mencari nombor port rawak setempat aplikasi dan serangan dihantar secara aktif ke port, bahaya keselamatan berikut akan bersembunyi:
Pelaksanaan arahan tempatan: Apabila nama Pakej aplikasi terbenam ditentukan sebagai aplikasi itu sendiri dan nama Komponen ditentukan sebagai aktiviti aplikasi, sebarang aktiviti aplikasi boleh dimulakan, termasuk aktiviti tidak dieksport yang dilindungi, sekali gus menyebabkan bahaya keselamatan. Sebagai contoh, penafian kelemahan perkhidmatan boleh didapati dengan memulakan beberapa aktiviti yang tidak dieksport satu demi satu melalui permintaan HTTP.
Kawalan arahan untuk mengubah suai kebenaran aplikasi: Masukkan niat untuk memulakan komponen aplikasi Android melalui port soket terbuka, dan kemudian laksanakan operasi seperti memulakan aktiviti dan menghantar siaran dengan kebenaran aplikasi yang diserang. Oleh kerana niat yang disalurkan melalui soket tidak boleh melakukan semakan terperinci pada identiti dan kebenaran pengirim, memintas perlindungan kebenaran yang disediakan oleh Android untuk komponen aplikasi dan boleh memulakan komponen aplikasi yang tidak dieksport dan dilindungi kebenaran, menimbulkan bahaya keselamatan.
Pendedahan maklumat sensitif, kawalan telefon mudah alih: Perkhidmatan setempat membuka port UDP untuk mendengar, dan selepas menerima kata perintah tertentu, ia boleh mengembalikan maklumat sensitif telefon mudah alih. Contohnya, butler telefon bimbit Baidu boleh mengurus secretKey telefon bimbit dari jauh, dan kemudian penyerang tanpa kebenaran boleh mengurus telefon bimbit sepenuhnya melalui rangkaian.
Pengoptimuman Versi Pengerasan Keselamatan Android
Tambah semakan untuk arahan sistem dan penapisan aksara khas dalam kedua-dua lapisan Asli dan Java.
Sulitkan komunikasi soket untuk proses daemon JNI Watchdog.
Tambahkan pengesahan ciri untuk URL, niat dan aktiviti dalam fungsi pemberitahuan setempat untuk mengelakkan ubah hala kepada pautan berniat jahat apabila mengklik pada pemberitahuan.
Tukar lokasi storan nama Pakej dalam storan setempat apl.
Tambahkan fungsi konfigurasi dalam talian.
Ini ialah keperluan penting untuk pengoptimuman pengerasan keselamatan ini.
Jika anda mengikuti ujian sistem konvensional atau ujian prestasi, anda hanya perlu melakukan ujian ke hadapan berdasarkan keperluan yang berubah. Walau bagaimanapun, untuk ujian keselamatan, memastikan keteguhan keselamatan SDK memerlukan ujian khas terbalik, mensimulasikan pelbagai kaedah serangan keselamatan dan mencapah kes ujian untuk titik yang diubah suai.
Data privasi: Keselamatan storan luaran dan keselamatan storan dalaman; semak sama ada nama pengguna, kata laluan, rekod sembang, maklumat konfigurasi dan maklumat peribadi lain disimpan secara setempat dan disulitkan; sahkan integriti maklumat sebelum menggunakannya.
Serangan kebenaran: Semak direktori apl dan pastikan kebenarannya tidak membenarkan ahli kumpulan lain membaca atau menulis; semak jika kebenaran sistem diserang.
Perlindungan kebenaran komponen Android: Halang komponen dalaman apl daripada dipanggil sewenang-wenangnya oleh program pihak ketiga: halang Aktiviti daripada dipanggil oleh program pihak ketiga, cegah rampasan Aktiviti; memastikan penerimaan siaran dan keselamatan penghantaran, hanya menerima siaran yang dihantar oleh apl dan menghalang pihak ketiga daripada menerima kandungan yang dihantar; mencegah memulakan atau menghentikan perkhidmatan secara berniat jahat; semak kebenaran operasi Pembekal Kandungan; jika komponen perlu dipanggil secara luaran, sahkan sama ada sekatan tandatangan telah digunakan pada pemanggil.
Naik Taraf: Semak integriti dan kesahihan pakej naik taraf untuk mengelakkan rampasan.
Perpustakaan pihak ketiga: Jika perpustakaan pihak ketiga digunakan, ikuti kemas kini mereka dan semak keselamatannya.
keselamatan ROM: Gunakan ROM atau ROM rasmi yang disediakan oleh pasukan berwibawa untuk mengelakkan penambahan iklan yang diimplan, Trojan, dsb.
Langkah balas anti-retak: Membalas penyahkompilasi, menjadikannya mustahil untuk menyahkompilasi menggunakan alat penyahkompilasi atau mendapatkan kod nyahhimpun yang betul selepas penyahsusun; mengatasi analisis statik dengan menggunakan pengeliruan dan penyulitan kod; mengatasi penyahpepijatan dinamik dengan menambahkan kod untuk mengesan penyahpepijat dan emulator; menghalang penyusunan semula dengan menyemak tandatangan dan mengesahkan nilai cincangan fail dex yang disusun.
Selepas melengkapkan ujian khas keselamatan dan ujian proses biasa, lakukan ujian regresi bergulir untuk ciri sedia ada apl, keserasian antara versi baharu dan lama serta keserasian dengan versi sistem pengendalian Android yang berbeza.
Berbanding dengan kes ujian prestasi dan kefungsian sistem biasa, kes ujian keselamatan memerlukan pemahaman yang lebih komprehensif tentang ekosistem Android, seperti: meliputi tahap penampilan keselamatan pengguna, tahap serangan tempatan dan jauh sistem aplikasi, dan tahap kerentanan sistem pengendalian, dengan lebih fokus pada mereka bentuk kes ujian pemikiran serangan songsang.
Jika titik permulaan pembangunan ialah pertahanan keselamatan, titik permulaan ujian ialah minda serangan penggodam. Mereka bentuk kes ujian untuk senario serangan dan melaksanakan teknik ujian serangan menentukan keteguhan keselamatan SDK.
Untuk memastikan tahap keselamatan tertinggi untuk aplikasi anda, pertimbangkan untuk menggunakan Ujian Keselamatan Aplikasi WeTest. Perkhidmatan ini menyediakan penilaian menyeluruh tentang isu keselamatan dalam aplikasi, pengesanan kelemahan program tepat pada masanya dan menawarkan contoh pembaikan kod untuk membantu pembaikan kelemahan.
Percayai WeTest untuk melindungi aplikasi anda daripada kemungkinan ancaman dan mengekalkan pengalaman pengguna yang selamat.
Atas ialah kandungan terperinci Cara Melakukan Ujian Keselamatan Apl Android: Panduan untuk Pembangun dan Penguji. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!