Ringkasan Web Security Scanner

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: ACCESSIBLE_GIT_REPOSITORY

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

Tingkat harga: Standar

Perbaiki temuan ini

A5 A01
Accessible SVN repository

Nama kategori di API: ACCESSIBLE_SVN_REPOSITORY

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

Tingkat harga: Standar

Perbaiki temuan ini

A5 A01
Cacheable password input

Nama kategori di API: CACHEABLE_PASSWORD_INPUT

Sandi yang dimasukkan pada aplikasi web dapat disimpan dalam cache browser biasa, bukan penyimpanan sandi yang aman.

Tingkat harga: Premium

Perbaiki temuan ini

A3 A04
Clear text password

Nama kategori di API: CLEAR_TEXT_PASSWORD

Sandi dikirimkan dalam teks yang jelas dan dapat disadap. Untuk mengatasi temuan ini, enkripsi sandi yang ditransmisikan melalui jaringan.

Tingkat harga: 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 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

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 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

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.

Tingkat harga: Standar

Perbaiki temuan ini

A6 A05
Invalid header

Nama kategori di API: INVALID_HEADER

Header keamanan mengalami kesalahan sintaksis dan diabaikan oleh browser. Untuk mengatasi temuan ini, setel header keamanan HTTP dengan benar.

Tingkat harga: 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 mengakibatkan perilaku yang tidak ditentukan. Untuk mengatasi temuan ini, setel header keamanan HTTP dengan benar.

Tingkat harga: Standar

Perbaiki temuan ini

A6 A05
Misspelled security header name

Nama kategori di API: MISSPELLED_SECURITY_HEADER_NAME

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

Tingkat harga: Standar

Perbaiki temuan ini

A6 A05
Mixed content

Nama kategori di API: MIXED_CONTENT

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

Tingkat harga: Standar

Perbaiki temuan ini

A6 A05
Outdated library

Nama kategori di API: OUTDATED_LIBRARY

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

Tingkat harga: 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 diminta aplikasi web.

Tingkat harga: 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 memberikan akses domain penerima ke ID sesi, yang dapat digunakan untuk meniru identitas atau mengidentifikasi pengguna secara unik.

Tingkat 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 agar input pengguna tidak memengaruhi struktur kueri SQL.

Tingkat harga: Premium

Perbaiki temuan ini

A1 A03
Struts insecure deserialization

Nama kategori di API: STRUTS_INSECURE_DESERIALIZATION

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

Tingkat harga: Premium

Perbaiki temuan ini

A8 A08
XSS

Nama kategori di API: XSS

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

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 menginterpolasinya. Untuk mengatasi temuan ini, validasi dan hindari data tidak tepercaya yang disediakan pengguna yang ditangani oleh framework Angular.

Tingkat harga: Standar

Perbaiki temuan ini

A7 A03
XSS error

Nama kategori di API: XSS_ERROR

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

Perbaiki temuan ini

A7 A03
XXE reflected file leakage

Nama kategori di API: XXE_REFLECTED_FILE_LEAKAGE

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

Perbaiki temuan ini

A4 A05
Prototype pollution

Nama kategori di API: PROTOTYPE_POLLUTION

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

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 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:

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:

  1. 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.
  2. 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.
  3. 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 menggunakan addEventListener, atau dilampirkan dengan menetapkan properti pengendali peristiwa yang sesuai.
  4. Gunakan data cadangan. Pertimbangkan untuk membuat cadangan data sebelum memindai.
  5. 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