Web Security Scanner mengidentifikasi kerentanan keamanan di aplikasi web App Engine, Google Kubernetes Engine (GKE), dan Compute Engine Anda. Alat ini akan meng-crawl aplikasi Anda, mengikuti semua link dalam cakupan URL awal, dan mencoba menggunakan input pengguna dan pengendali peristiwa sebanyak mungkin. Saat ini, Web Security Scanner hanya mendukung URL dan IP publik yang tidak berada di balik firewall.
Web Security Scanner saat ini mendukung lingkungan standar App Engine dan lingkungan fleksibel App Engine, instance Compute Engine, dan resource GKE.
Web Security Scanner dirancang untuk melengkapi proses desain dan pengembangan aman yang sudah ada. Agar tidak mengganggu Anda dengan positif palsu (PP), Web Security Scanner hanya mengambil tindakan yang berada di bawah pelaporan dan tidak menampilkan pemberitahuan dengan tingkat keyakinan rendah. Fitur ini tidak menggantikan peninjauan keamanan manual, dan tidak menjamin aplikasi Anda bebas dari cacat keamanan.
Jenis pemindaian
Web Security Scanner menyediakan pemindaian kerentanan web yang terkelola dan kustom untuk aplikasi web yang dilayani oleh App Engine, GKE, dan Compute Engine publik.
Pemindaian terkelola
Pemindaian yang dikelola Web Security Scanner dikonfigurasi dan dikelola oleh Security Command Center. Pemindaian terkelola otomatis berjalan seminggu sekali untuk mendeteksi dan memindai endpoint web publik. Pemindaian ini tidak menggunakan autentikasi dan mengirimkan permintaan GET saja sehingga tidak mengirimkan formulir apa pun di situs yang aktif.
Pemindaian terkelola berjalan terpisah dari pemindaian kustom.
Jika Security Command Center diaktifkan pada tingkat organisasi, Anda dapat menggunakan pemindaian terkelola untuk mengelola deteksi kerentanan aplikasi web dasar secara terpusat untuk project di organisasi Anda, tanpa harus melibatkan tim project satu per satu. Ketika temuan ditemukan, Anda dapat bekerja sama dengan tim tersebut untuk menyiapkan pemindaian khusus yang lebih komprehensif.
Jika Anda mengaktifkan Web Security Scanner sebagai layanan, temuan pemindaian yang terkelola akan otomatis tersedia di halaman Kerentanan Security Command Center dan laporan terkait. Untuk mengetahui informasi tentang cara mengaktifkan pemindaian terkelola Web Security Scanner, lihat mengonfigurasi Security Command Center.
Pemindaian terkelola hanya mendukung aplikasi yang menggunakan port default, yaitu 80 untuk koneksi HTTP dan 443 untuk koneksi HTTPS. Jika aplikasi Anda menggunakan port non-default, lakukan pemindaian khusus.
Pemindaian kustom
Pemindaian kustom Web Security Scanner memberikan informasi terperinci tentang temuan kerentanan aplikasi, seperti library usang, pembuatan skrip lintas situs, atau penggunaan konten campuran.
Anda menentukan pemindaian kustom di level project.
Temuan pemindaian kustom tersedia di Security Command Center setelah Anda menyelesaikan panduan untuk menyiapkan pemindaian kustom Web Security Scanner.
Pindai temuan
Bagian ini menjelaskan Web Security Scanner menemukan jenis dan standar kepatuhan yang relevan.
Pendeteksi dan kepatuhan
Web Security Scanner mendukung kategori dalam Sepuluh Teratas OWASP, sebuah dokumen yang menentukan peringkat dan memberikan panduan perbaikan untuk 10 risiko keamanan aplikasi web yang paling penting, seperti yang ditentukan oleh Project Keamanan Aplikasi Web (OWASP) Open Web.
Pemetaan kepatuhan disertakan sebagai referensi dan tidak disediakan atau ditinjau oleh OWASP Foundation.
Fungsi ini hanya dimaksudkan agar Anda dapat memantau pelanggaran kontrol kepatuhan. Pemetaan tidak disediakan untuk digunakan sebagai dasar, atau sebagai pengganti, audit, sertifikasi, atau laporan kepatuhan produk atau layanan Anda dengan tolok ukur atau standar peraturan atau industri.
Untuk mengetahui informasi selengkapnya tentang kepatuhan, lihat Menilai dan melaporkan kepatuhan terhadap tolok ukur keamanan.
Jenis temuan
Pemindaian khusus dan terkelola Web Security Scanner mengidentifikasi jenis temuan berikut. Pada paket Standar, Web Security Scanner mendukung pemindaian kustom untuk aplikasi yang di-deploy dengan URL dan IP publik yang tidak berada di balik firewall.
Kategori | Menemukan deskripsi | 10 Teratas OWASP 2017 | 10 Top OWASP 2021 |
---|---|---|---|
Accessible Git repository
Nama kategori di API: |
Repositori Git ditampilkan secara publik. Untuk mengatasi temuan ini, hapus
akses publik yang tidak disengaja ke repositori GIT.
Tingkat harga: Standar |
A5 | A01 |
Accessible SVN repository
Nama kategori di API: |
Repositori SVN ditampilkan secara publik. Untuk mengatasi temuan ini, hapus
akses publik yang tidak disengaja ke repositori SVN.
Tingkat harga: Standar |
A5 | A01 |
Cacheable password input
Nama kategori di API: |
Sandi yang dimasukkan pada aplikasi web dapat disimpan dalam cache browser biasa, bukan
penyimpanan sandi yang aman.
Tingkat harga: Premium |
A3 | A04 |
Clear text password
Nama kategori di API: |
Sandi dikirimkan dalam teks yang jelas dan dapat disadap. Untuk
mengatasi temuan ini, enkripsi sandi yang ditransmisikan melalui
jaringan.
Tingkat harga: Standar |
A3 | A02 |
Insecure allow origin ends with validation
Nama kategori di API: |
Endpoint HTTP atau HTTPS lintas situs hanya memvalidasi akhiran header permintaan Origin
sebelum menampilkannya di dalam header respons Access-Control-Allow-Origin . Untuk mengatasi temuan
ini, validasi bahwa domain root yang diharapkan adalah bagian dari nilai header Origin sebelum
menampilkannya dalam header respons Access-Control-Allow-Origin . Untuk karakter pengganti subdomain, tambahkan titik ke domain root, misalnya .endsWith(".google.com") .
Tingkat harga: Premium |
A5 | A01 |
Insecure allow origin starts with validation
Nama kategori di API: |
Endpoint HTTP atau HTTPS lintas situs hanya memvalidasi awalan header permintaan Origin
sebelum menampilkannya di dalam header respons Access-Control-Allow-Origin . Untuk mengatasi temuan ini, validasi bahwa domain yang diharapkan sepenuhnya cocok dengan nilai header Origin sebelum menunjukkannya di header respons Access-Control-Allow-Origin —misalnya, .equals(".google.com") .
Tingkat harga: Premium |
A5 | A01 |
Invalid content type
Nama kategori di API: |
Resource yang dimuat tidak cocok dengan header HTTP Content-Type respons. Untuk mengatasi temuan ini, tetapkan header HTTP X-Content-Type-Options
dengan nilai yang benar.
Tingkat harga: Standar |
A6 | A05 |
Invalid header
Nama kategori di API: |
Header keamanan mengalami kesalahan sintaksis dan diabaikan oleh browser. Untuk mengatasi
temuan ini, setel header keamanan HTTP dengan benar.
Tingkat harga: Standar |
A6 | A05 |
Mismatching security header values
Nama kategori di API: |
Header keamanan memiliki nilai duplikat yang tidak cocok, yang mengakibatkan perilaku yang tidak ditentukan. Untuk mengatasi temuan ini, setel header keamanan HTTP dengan benar.
Tingkat harga: Standar |
A6 | A05 |
Misspelled security header name
Nama kategori di API: |
Header keamanan salah eja dan akan diabaikan. Untuk mengatasi temuan ini,
setel header keamanan HTTP dengan benar.
Tingkat harga: Standar |
A6 | A05 |
Mixed content
Nama kategori di API: |
Resource ditayangkan melalui HTTP di halaman HTTPS. Untuk menyelesaikan temuan
ini, pastikan semua resource disalurkan melalui HTTPS.
Tingkat harga: Standar |
A6 | A05 |
Outdated library
Nama kategori di API: |
Library yang memiliki kerentanan umum terdeteksi. Untuk mengatasi temuan
ini, upgrade library ke versi yang lebih baru.
Tingkat harga: Standar |
A9 | A06 |
Server side request forgery
Nama kategori di API: |
Kerentanan pemalsuan permintaan sisi server (SSRF) terdeteksi. Untuk mengatasi temuan ini, gunakan
daftar yang diizinkan untuk membatasi domain dan alamat IP yang dapat diminta aplikasi web.
Tingkat harga: Standar |
Tidak berlaku | A10 |
Session ID leak
Nama kategori di API: |
Saat membuat permintaan lintas-domain, aplikasi web menyertakan ID sesi pengguna
dalam header permintaan Referer -nya. Kerentanan ini memberikan akses domain penerima ke ID sesi, yang dapat digunakan untuk meniru identitas atau mengidentifikasi pengguna secara unik.
Tingkat harga: Premium |
A2 | A07 |
SQL injection
Nama kategori di API: |
Potensi kerentanan injeksi SQL terdeteksi. Untuk mengatasi temuan ini, gunakan kueri berparameter agar input pengguna tidak memengaruhi struktur kueri SQL.
Tingkat harga: Premium |
A1 | A03 |
Struts insecure deserialization
Nama kategori di API: |
Penggunaan versi Apache Struts yang rentan telah terdeteksi. Untuk mengatasi temuan ini, upgrade Apache Strut ke versi terbaru.
Tingkat harga: Premium |
A8 | A08 |
XSS
Nama kategori di API: |
Kolom dalam aplikasi web ini rentan terhadap serangan pembuatan skrip lintas situs (XSS). Untuk mengatasi temuan ini, validasi dan hindari data tidak tepercaya
yang disediakan pengguna.
Tingkat harga: Standar |
A7 | A03 |
XSS angular callback
Nama kategori di API: |
String yang disediakan pengguna tidak di-escape dan AngularJS dapat menginterpolasinya. Untuk
mengatasi temuan ini, validasi dan hindari data tidak tepercaya yang disediakan pengguna
yang ditangani oleh framework Angular.
Tingkat harga: Standar |
A7 | A03 |
XSS error
Nama kategori di API: |
Kolom dalam aplikasi web ini rentan terhadap serangan pembuatan skrip lintas situs. Untuk mengatasi temuan ini, validasi dan hindari data tidak tepercaya
yang disediakan pengguna.
Tingkat harga: Standar |
A7 | A03 |
XXE reflected file leakage
Nama kategori di API: |
Kerentanan XML External Entity (XXE) terdeteksi. Kerentanan ini dapat menyebabkan aplikasi web membocorkan file pada host. Untuk mengatasi temuan ini, konfigurasikan parser XML untuk melarang
entity eksternal.
Tingkat harga: Premium |
A4 | A05 |
Prototype pollution
Nama kategori di API: |
Aplikasi ini rentan terhadap polusi prototipe. Kerentanan ini muncul jika properti objek Object.prototype dapat diberi nilai yang dapat dikontrol penyerang. Nilai yang ditanam di prototipe ini
secara universal diasumsikan sebagai pembuatan skrip lintas situs, atau kerentanan sisi klien yang serupa, serta bug logika.
Tingkat harga: Standar |
A1 | A03 |
Peringatan Penggunaan
Peran IAM untuk Security Command Center dapat diberikan di tingkat organisasi, folder, atau project. Kemampuan Anda untuk melihat, mengedit, membuat, atau memperbarui temuan, aset, dan sumber keamanan bergantung pada tingkat akses yang diberikan kepada Anda. Untuk mempelajari peran Security Command Center lebih lanjut, lihat Kontrol akses.
Hal penting lainnya yang perlu diketahui saat menggunakan Web Security Scanner:
- Karena Web Security Scanner mengalami peningkatan berkelanjutan, pemindaian di masa mendatang mungkin akan melaporkan masalah yang tidak dilaporkan oleh pemindaian saat ini.
- Beberapa fitur atau bagian dari aplikasi Anda mungkin tidak diuji.
- Web Security Scanner mencoba mengaktifkan setiap kontrol dan input yang ditemukannya.
- Jika Anda menampilkan tindakan perubahan status yang izinnya dimiliki akun pengujian Anda, Web Security Scanner kemungkinan akan mengaktifkannya. Hal ini dapat menyebabkan hasil yang tidak diinginkan.
- Web Security Scanner memiliki batas 15 pemindaian per project. Karena pemindaian dijalankan secara serentak, pengguna yang mencapai batas ini disarankan untuk menambahkan beberapa URL awal per pemindaian, atau menambahkan pemindaian ke berbagai project yang belum mencapai batas.
Siapa yang dapat menjalankan pemindaian keamanan?
Untuk mengetahui informasi tentang peran Identity and Access Management (IAM) yang tersedia untuk Web Security Scanner, lihat Kontrol Akses.
Berapa lama waktu yang diperlukan untuk pemindaian keamanan?
Pemindaian keamanan tidak langsung dijalankan. Fungsi ini diantrekan, lalu dieksekusi nanti, mungkin beberapa jam kemudian, tergantung beban sistem. Setelah pemindaian mulai dieksekusi, waktu yang diperlukan akan bergantung pada ukuran aplikasi Anda. Penerapan besar dengan banyak URL dapat memerlukan waktu beberapa jam untuk diselesaikan.
Pembatasan target
Web Security Scanner memiliki filter yang membatasi target pemindaian ke instance App Engine tertentu tempat pemindaian dibuat. Memasukkan URL untuk project App Engine yang berbeda atau domain luar akan menghasilkan pesan error.
Pemindaian untuk Compute Engine dan GKE dibatasi untuk domain yang memetakan ke alamat IP eksternal statis yang dicadangkan untuk project yang sama dan alamat IP eksternal statis yang dimiliki oleh project yang sama. Untuk mengetahui petunjuk tentang cara melakukan reservasi alamat IP untuk project, lihat link berikut:
Compute Engine: Memesan alamat IP eksternal statis
App Engine tidak menyediakan cara untuk memetakan alamat IP statis ke aplikasi. Namun, Anda dapat menggunakan Cloud Load Balancing dan grup endpoint jaringan serverless untuk memesan alamat IP statis untuk load balancer Anda, yang kemudian mengarahkan traffic ke aplikasi Anda. Untuk mengetahui informasi tentang harga, lihat Harga alamat IP eksternal.
Dalam project Anda, Web Security Scanner akan otomatis mencoba untuk menghindari URL logout dan lokasi umum lainnya yang dapat berpengaruh buruk pada pemindaian. Namun, yang perlu memastikan, Anda dapat menggunakan setelan pemindaian untuk mengecualikan URL secara manual.
Validasi
Konfigurasi pemindaian divalidasi saat dibuat dan sebelum setiap pemindaian. Web Security Scanner memeriksa setelan Security Command Center dan kredensial autentikasi aplikasi Anda untuk memastikan pemindaian dikonfigurasi dengan benar dan dapat berhasil login ke aplikasi Anda. Parameter konfigurasi, termasuk kecepatan pemindaian maksimum, juga diperiksa untuk memastikan parameter tersebut berada dalam rentang yang didukung.
Anda harus mengatasi error sebelum pemindaian dibuat atau diperbarui. Aplikasi yang diubah setelah konfigurasi awal dapat menghasilkan error selama pemindaian. Misalnya, jika domain tidak lagi mengarah ke alamat IP yang dimiliki project, resource tidak akan dipindai dan error akan dilaporkan di halaman konfigurasi pemindaian.
Praktik terbaik
Karena Web Security Scanner mengisi kolom, menekan tombol, mengklik link, dan melakukan tindakan pengguna lainnya, Anda harus menggunakannya dengan hati-hati, terutama jika memindai resource produksi. Web Security Scanner berpotensi mengaktifkan fitur yang mengubah status data atau sistem Anda, dengan hasil yang tidak diinginkan.
Contoh:
- Dalam aplikasi blog yang memungkinkan komentar publik, Web Security Scanner dapat memposting string pengujian sebagai komentar di semua artikel blog Anda.
- Di halaman pendaftaran email, Web Security Scanner mungkin menghasilkan email uji dalam jumlah besar.
Berikut adalah beberapa teknik yang dapat Anda gunakan, secara terpisah atau kombinasi, untuk menghindari hasil yang tidak diinginkan:
- Jalankan pemindaian di lingkungan pengujian. Siapkan lingkungan pengujian dengan membuat project App Engine terpisah dan memuat aplikasi serta data Anda di sana. Jika menggunakan Google Cloud CLI, Anda dapat menentukan project target sebagai opsi command line saat mengupload aplikasi.
- Gunakan akun pengujian. Buat akun pengguna yang tidak memiliki akses ke data sensitif atau operasi berbahaya, dan gunakan akun tersebut saat memindai aplikasi. Banyak aplikasi menyajikan alur kerja khusus saat pengguna login untuk pertama kali, seperti menyetujui persyaratan dan membuat profil. Karena alur kerja yang berbeda, akun pengujian untuk pengguna awal dapat memiliki hasil pemindaian yang berbeda dari akun pengguna yang sudah mapan. Sebaiknya pindai dengan akun yang ada dalam status pengguna normal, setelah alur pertama selesai.
- Blokir elemen antarmuka pengguna individual yang tidak ingin diaktifkan
dengan menerapkan class CSS
inq-no-click
. Pengendali peristiwa yang disertakan ke elemen ini tidak diaktifkan selama crawling dan pengujian, terlepas dari apakah keduanya merupakan JavaScript inline, ditambahkan menggunakanaddEventListener
, atau dilampirkan dengan menetapkan properti pengendali peristiwa yang sesuai. - Gunakan data cadangan. Pertimbangkan untuk membuat cadangan data sebelum memindai.
- URL yang dikecualikan. Anda dapat menentukan pola URL yang tidak akan di-crawl atau diuji. Untuk mengetahui informasi tentang sintaksis, lihat Mengecualikan URL.
Sebelum memindai, lakukan audit dengan cermat pada aplikasi Anda untuk menemukan fitur yang dapat memengaruhi data, pengguna, atau sistem di luar cakupan pemindaian yang diinginkan.
Langkah selanjutnya
- Memulai Web Security Scanner.