Ringkasan Web Security Scanner

Web Security Scanner mengidentifikasi kerentanan keamanan di aplikasi web App Engine, Google Kubernetes Engine (GKE), dan Compute Engine Anda. API ini meng-crawl aplikasi Anda, mengikuti semua link dalam cakupan URL awal, dan mencoba menggunakan input pengguna dan pengendali peristiwa sebanyak mungkin. Web Security Scanner hanya mendukung URL dan IP publik yang tidak berada di balik firewall.

Web Security Scanner 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. Untuk menghindari gangguan dengan positif palsu, Web Security Scanner lebih memilih untuk tidak melaporkan dan tidak menampilkan peringatan dengan tingkat keyakinan rendah. Peninjauan ini tidak menggantikan peninjauan keamanan manual, dan tidak menjamin bahwa aplikasi Anda bebas dari celah keamanan.

Jenis pemindaian

Web Security Scanner menyediakan pemindaian kerentanan web terkelola dan kustom untuk aplikasi web publik yang dilayani App Engine, GKE, dan Compute Engine.

Pemindaian terkelola

Pemindaian terkelola 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 mengirim permintaan khusus GET sehingga tidak mengirimkan formulir apa pun di situs aktif.

Pemindaian terkelola berjalan secara terpisah dari pemindaian kustom.

Jika Security Command Center diaktifkan di level organisasi, Anda dapat menggunakan pemindaian terkelola untuk mengelola deteksi kerentanan aplikasi web dasar secara terpusat untuk project di organisasi Anda, tanpa harus melibatkan setiap tim project. Saat temuan ditemukan, Anda dapat bekerja sama dengan tim tersebut untuk menyiapkan pemindaian kustom yang lebih komprehensif.

Saat Anda mengaktifkan Web Security Scanner sebagai layanan, temuan pemindaian terkelola akan tersedia secara otomatis di halaman Kerentanan Security Command Center dan laporan terkait. Untuk informasi tentang cara mengaktifkan pemindaian yang dikelola Web Security Scanner, lihat Mengonfigurasi layanan 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 kustom.

Pemindaian kustom

Pemindaian kustom Web Security Scanner memberikan informasi terperinci tentang temuan kerentanan aplikasi, seperti library yang sudah 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.

Temuan pemindaian

Bagian ini menjelaskan jenis temuan Web Security Scanner dan standar kepatuhan yang relevan.

Pendeteksi dan kepatuhan

Web Security Scanner mendukung kategori dalam OWASP Top Ten, dokumen yang memberi peringkat dan memberikan panduan perbaikan untuk 10 risiko keamanan aplikasi web yang paling penting, seperti yang ditentukan oleh Open Web Application Security Project (OWASP).

Pemetaan kepatuhan disertakan sebagai referensi dan tidak disediakan atau ditinjau oleh OWASP Foundation. Fitur ini hanya ditujukan untuk memantau pelanggaran kontrol kepatuhan. Pemetaan tidak disediakan untuk digunakan sebagai dasar, atau sebagai pengganti, audit, sertifikasi, atau laporan kepatuhan produk atau layanan Anda terhadap tolok ukur atau standar peraturan atau industri.

Untuk informasi selengkapnya tentang kepatuhan, lihat Menilai dan melaporkan kepatuhan benchmark keamanan.

Menemukan jenis

Pemindaian kustom dan terkelola Web Security Scanner mengidentifikasi jenis temuan berikut. Di tingkat Standar, Web Security Scanner mendukung pemindaian kustom aplikasi yang di-deploy dengan URL dan IP publik yang tidak berada di balik firewall.

Kategori Menemukan deskripsi 10 Teratas OWASP 2017 OWASP 2021 Top 10

Accessible Git repository

Nama kategori di API: ACCESSIBLE_GIT_REPOSITORY

Repositori Git diekspos secara publik. Untuk mengatasi temuan ini, hapus akses publik yang tidak disengaja ke repositori GIT.

Paket harga: Premium atau Standar

Perbaiki temuan ini

A5 A01

Accessible SVN repository

Nama kategori di API: ACCESSIBLE_SVN_REPOSITORY

Repositori SVN diekspos secara publik. Untuk mengatasi temuan ini, hapus akses publik yang tidak disengaja ke repositori SVN.

Paket harga: Premium atau Standar

Perbaiki temuan ini

A5 A01

Cacheable password input

Nama kategori di API: CACHEABLE_PASSWORD_INPUT

Sandi yang dimasukkan di aplikasi web dapat di-cache dalam cache browser reguler, bukan penyimpanan sandi yang aman.

Paket harga: Premium

Perbaiki temuan ini

A3 A04

Clear text password

Nama kategori di API: CLEAR_TEXT_PASSWORD

Sandi dikirim dalam bentuk teks biasa dan dapat disadap. Untuk mengatasi penemuan ini, enkripsi sandi yang ditransmisikan melalui jaringan.

Paket harga: Premium atau Standar

Perbaiki temuan ini

A3 A02

Insecure allow origin ends with validation

Nama kategori di API: INSECURE_ALLOW_ORIGIN_ENDS_WITH_VALIDATION

Endpoint HTTP atau HTTPS lintas situs hanya memvalidasi akhiran header permintaan Origin sebelum mencerminkannya 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 mencerminkannya dalam header respons Access-Control-Allow-Origin. Untuk karakter pengganti subdomain, tambahkan titik ke domain root—misalnya, .endsWith(".google.com").

Paket harga: Premium

Perbaiki temuan ini

A5 A01

Insecure allow origin starts with validation

Nama kategori di API: INSECURE_ALLOW_ORIGIN_STARTS_WITH_VALIDATION

Endpoint HTTP atau HTTPS lintas situs hanya memvalidasi awalan header permintaan Origin sebelum mencerminkannya di dalam header respons Access-Control-Allow-Origin. Untuk mengatasi temuan ini, validasi bahwa domain yang diharapkan sepenuhnya cocok dengan nilai header Origin sebelum mencerminkannya dalam header respons Access-Control-Allow-Origin—misalnya, .equals(".google.com").

Paket harga: Premium

Perbaiki temuan ini

A5 A01

Invalid content type

Nama kategori di API: INVALID_CONTENT_TYPE

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.

Paket harga: Premium atau Standar

Perbaiki temuan ini

A6 A05

Invalid header

Nama kategori di API: INVALID_HEADER

Header keamanan memiliki error sintaksis dan diabaikan oleh browser. Untuk mengatasi temuan ini, tetapkan header keamanan HTTP dengan benar.

Paket harga: Premium atau Standar

Perbaiki temuan ini

A6 A05

Mismatching security header values

Nama kategori di API: MISMATCHING_SECURITY_HEADER_VALUES

Header keamanan memiliki nilai duplikat yang tidak cocok, yang menghasilkan perilaku yang tidak ditentukan. Untuk mengatasi temuan ini, tetapkan header keamanan HTTP dengan benar.

Paket harga: Premium atau Standar

Perbaiki temuan ini

A6 A05

Misspelled security header name

Nama kategori di API: MISSPELLED_SECURITY_HEADER_NAME

Header keamanan salah eja dan diabaikan. Untuk mengatasi temuan ini, tetapkan header keamanan HTTP dengan benar.

Paket harga: Premium atau Standar

Perbaiki temuan ini

A6 A05

Mixed content

Nama kategori di API: MIXED_CONTENT

Resource ditayangkan melalui HTTP di halaman HTTPS. Untuk mengatasi temuan ini, pastikan semua resource ditayangkan melalui HTTPS.

Paket harga: Premium atau Standar

Perbaiki temuan ini

A6 A05

Outdated library

Nama kategori di API: OUTDATED_LIBRARY

Library terdeteksi yang memiliki kerentanan umum. Untuk mengatasi temuan ini, upgrade library ke versi yang lebih baru.

Paket harga: Premium atau Standar

Perbaiki temuan ini

A9 A06

Server side request forgery

Nama kategori di API: SERVER_SIDE_REQUEST_FORGERY

Kerentanan pemalsuan permintaan sisi server (SSRF) terdeteksi. Untuk mengatasi temuan ini, gunakan daftar yang diizinkan untuk membatasi domain dan alamat IP yang dapat menerima permintaan dari aplikasi web.

Paket harga: Premium atau Standar

Perbaiki temuan ini

Tidak berlaku A10

Session ID leak

Nama kategori di API: SESSION_ID_LEAK

Saat membuat permintaan lintas-domain, aplikasi web menyertakan ID sesi pengguna dalam header permintaan Referer-nya. Kerentanan ini memberi domain penerima akses ke ID sesi, yang dapat digunakan untuk meniru identitas atau mengidentifikasi pengguna secara unik.

Paket harga: Premium

Perbaiki temuan ini

A2 A07

SQL injection

Nama kategori di API: SQL_INJECTION

Potensi kerentanan injeksi SQL terdeteksi. Untuk mengatasi temuan ini, gunakan kueri berparameter untuk mencegah input pengguna memengaruhi struktur kueri SQL.

Paket harga: Premium

Perbaiki temuan ini

A1 A03

Struts insecure deserialization

Nama kategori di API: STRUTS_INSECURE_DESERIALIZATION

Penggunaan versi Apache Struts yang rentan terdeteksi. Untuk mengatasi temuan ini, upgrade Apache Struts ke versi terbaru.

Paket harga: Premium

Perbaiki temuan ini

A8 A08

XSS

Nama kategori di API: XSS

Kolom di aplikasi web ini rentan terhadap serangan pembuatan skrip lintas situs (XSS). Untuk mengatasi temuan ini, validasi dan hindari data tidak tepercaya yang disediakan pengguna.

Paket harga: Premium atau Standar

Perbaiki temuan ini

A7 A03

XSS angular callback

Nama kategori di API: XSS_ANGULAR_CALLBACK

String yang disediakan pengguna tidak di-escape dan AngularJS dapat melakukan interpolasi. Untuk mengatasi penemuan ini, validasi dan hindari data tidak tepercaya dari pengguna yang ditangani oleh framework Angular.

Paket harga: Premium atau Standar

Perbaiki temuan ini

A7 A03

XSS error

Nama kategori di API: XSS_ERROR

Kolom di aplikasi web ini rentan terhadap serangan cross-site scripting. Untuk mengatasi temuan ini, validasi dan hindari data tidak tepercaya yang disediakan pengguna.

Paket harga: Premium atau Standar

Perbaiki temuan ini

A7 A03

XXE reflected file leakage

Nama kategori di API: XXE_REFLECTED_FILE_LEAKAGE

Terdeteksi adanya kerentanan Entity Eksternal XML (XXE). Kerentanan ini dapat menyebabkan aplikasi web membocorkan file di host. Untuk mengatasi temuan ini, konfigurasikan parser XML Anda agar tidak mengizinkan entity eksternal.

Paket harga: Premium

Perbaiki temuan ini

A4 A05

Prototype pollution

Nama kategori di API: PROTOTYPE_POLLUTION

Aplikasi rentan terhadap polusi prototipe. Kerentanan ini muncul saat properti objek Object.prototype dapat ditetapkan nilai yang dapat dikontrol penyerang. Nilai yang ditanam pada prototipe ini secara universal diasumsikan akan diterjemahkan menjadi cross-site scripting, atau kerentanan sisi klien serupa, serta bug logika.

Paket harga: Premium atau Standar

Perbaiki temuan ini

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 Anda terima. Untuk mempelajari peran Security Command Center lebih lanjut, lihat Kontrol akses.

Hal penting lainnya yang perlu diperhatikan saat menggunakan Web Security Scanner:

  • Karena Web Security Scanner terus mengalami peningkatan, pemindaian berikutnya mungkin melaporkan masalah yang tidak dilaporkan oleh pemindaian saat ini.
  • Beberapa fitur atau bagian aplikasi Anda mungkin tidak diuji.
  • Web Security Scanner mencoba mengaktifkan setiap kontrol dan input yang ditemukannya.
  • Jika Anda mengekspos tindakan perubahan status yang memiliki izin akun pengujian, 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 project lain yang belum mencapai batas.

Siapa yang dapat menjalankan pemindaian keamanan?

Untuk 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. Perintah ini dimasukkan ke dalam antrean, lalu dijalankan nanti, mungkin beberapa jam kemudian, bergantung pada beban sistem. Setelah pemindaian mulai dijalankan, waktu yang diperlukan akan bergantung pada ukuran aplikasi Anda. Pemindaian aplikasi besar dengan banyak URL dapat memerlukan waktu beberapa jam, atau bahkan berhari-hari. Jika pemindaian belum selesai dalam waktu 20 hari, pemindaian akan otomatis dihentikan, dan semua hasil crawling dan temuan yang ditemukan selama pemindaian akan terlihat sebagai hasil pemindaian.

Pembatasan target

Web Security Scanner memiliki filter yang membatasi target pemindaian ke instance App Engine tertentu yang pemindaian dibuat untuknya. Memasukkan URL untuk project App Engine yang berbeda atau domain di luar akan menghasilkan pesan error.

Pemindaian untuk Compute Engine dan GKE dibatasi untuk domain yang dipetakan ke alamat IP eksternal statis yang disediakan untuk project yang sama dan alamat IP eksternal statis yang termasuk dalam project yang sama. Untuk mengetahui petunjuk tentang cara mencadangkan alamat IP untuk project, lihat link berikut:

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 mencadangkan alamat IP statis untuk load balancer, yang kemudian mengarahkan traffic ke aplikasi Anda. Untuk mengetahui informasi tentang harga, lihat Harga alamat IP eksternal.

Dalam project Anda, Web Security Scanner secara otomatis mencoba menghindari URL logout dan lokasi umum lainnya yang dapat memengaruhi pemindaian secara negatif. Namun, untuk memastikannya, 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 login ke aplikasi Anda dengan sukses. Parameter konfigurasi, termasuk kecepatan pemindaian maksimum, juga diperiksa untuk memastikannya 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 oleh 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 Anda memindai resource produksi. Web Security Scanner berpotensi mengaktifkan fitur yang mengubah status data atau sistem Anda, dengan hasil yang tidak diinginkan.

Contoh:

  • Di aplikasi blog yang mengizinkan komentar publik, Web Security Scanner mungkin memposting string pengujian sebagai komentar di semua artikel blog Anda.
  • Di halaman pendaftaran email, Web Security Scanner mungkin menghasilkan email uji coba dalam jumlah besar.

Berikut adalah beberapa teknik yang dapat Anda gunakan, secara terpisah atau dalam kombinasi, untuk menghindari hasil yang tidak diinginkan:

  1. Jalankan pemindaian di lingkungan pengujian. Siapkan lingkungan pengujian dengan membuat project App Engine terpisah dan memuat aplikasi dan data Anda di sana. Jika menggunakan Google Cloud CLI, Anda dapat menentukan project target sebagai opsi command line saat mengupload aplikasi.
  2. Gunakan akun pengujian. Buat akun pengguna yang tidak memiliki akses ke data sensitif atau operasi berbahaya, dan gunakan saat memindai aplikasi Anda. Banyak aplikasi menampilkan alur kerja khusus selama login pertama pengguna, 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 ada. Sebaiknya pindai dengan akun yang dalam status pengguna normal, setelah alur pertama kali selesai.
  3. Blokir setiap elemen antarmuka pengguna yang tidak ingin diaktifkan dengan menerapkan class CSS inq-no-click. Pengendali peristiwa yang dilampirkan ke elemen ini tidak diaktifkan selama crawling dan pengujian, terlepas dari apakah itu JavaScript inline, atau dilampirkan menggunakan addEventListener, atau dilampirkan dengan menetapkan properti pengendali peristiwa yang sesuai.
  4. Gunakan data cadangan. Sebaiknya buat cadangan data Anda sebelum memindai.
  5. URL yang dikecualikan. Anda dapat menentukan pola URL yang tidak akan di-crawl atau diuji. Untuk informasi tentang sintaksis, lihat Mengecualikan URL.

Sebelum memindai, audit aplikasi Anda dengan cermat untuk menemukan fitur apa pun yang mungkin memengaruhi data, pengguna, atau sistem di luar cakupan pemindaian Anda.

Langkah selanjutnya