Kesan
Penyerang boleh mencuri data sensitif dan disahkan daripada pengguna aplikasi yang terdedah [S2]. Jika pengguna melawat tapak web hasad semasa log masuk ke apl yang terdedah, tapak hasad itu boleh membuat permintaan silang asal kepada API apl dan membaca respons [S1][S2]. Ini boleh membawa kepada kecurian maklumat peribadi, termasuk profil pengguna, token CSRF atau mesej peribadi [S2].
Punca Punca
CORS ialah mekanisme berasaskan HTTP-header yang membolehkan pelayan menentukan asal (domain, skema atau port) yang dibenarkan untuk memuatkan sumber [S1]. Kerentanan biasanya timbul apabila dasar CORS pelayan terlalu fleksibel atau kurang dilaksanakan [S2]:
- Pengepala Asal Tercermin: Sesetengah pelayan membaca pengepala
Origindaripada permintaan pelanggan dan menggemakannya kembali dalam pengepala responsAccess-Control-Allow-Origin(ACAO) [S2]. Ini dengan berkesan membolehkan mana-mana tapak web mengakses sumber [S2]. - Kad Liar Tersalah konfigurasi: Walaupun kad bebas
*membenarkan mana-mana sumber untuk mengakses sumber, ia tidak boleh digunakan untuk permintaan yang memerlukan bukti kelayakan (seperti kuki atau pengepala Kebenaran) [S3]. Pembangun sering cuba memintas perkara ini dengan menjana pengepala ACAO secara dinamik berdasarkan permintaan [S2]. - Menyenarai putih 'null': Sesetengah aplikasi menyenarai putih asal
null, yang boleh dicetuskan oleh permintaan diubah hala atau fail setempat, membenarkan tapak berniat jahat untuk menyamar sebagai asalnulluntuk mendapatkan akses ZXCVFIXVIBETOVIZBEXVKV. - Ralat Penghuraian: Kesilapan dalam pemadanan regex atau rentetan semasa mengesahkan pengepala
Originboleh membenarkan penyerang menggunakan domain sepertitrusted-domain.com.attacker.com[S2].
Adalah penting untuk ambil perhatian bahawa CORS bukanlah perlindungan terhadap Pemalsuan Permintaan Silang Tapak (CSRF) [S2].
Pembetulan Konkrit
- Gunakan Senarai Putih Statik: Elakkan menjana pengepala
Access-Control-Allow-Originsecara dinamik daripada pengepalaOriginpermintaan [S2]. Sebaliknya, bandingkan asal permintaan dengan senarai kod keras domain dipercayai [S3]. - Elakkan Asal 'null': Jangan sekali-kali masukkan
nulldalam senarai putih asal-usul yang dibenarkan [S2] anda. - Hadkan Bukti Kelayakan: Hanya tetapkan
Access-Control-Allow-Credentials: truejika benar-benar perlu untuk interaksi silang asal khusus [S3]. - Gunakan Pengesahan yang Betul: Jika anda mesti menyokong berbilang asal, pastikan logik pengesahan untuk pengepala
Originadalah teguh dan tidak boleh dipintas oleh subdomain atau domain yang kelihatan serupa [S2].
Bagaimana FixVibe mengujinya
FixVibe kini memasukkan ini sebagai semakan aktif berpagar. Selepas pengesahan domain, active.cors menghantar permintaan API asal yang sama dengan asal penyerang sintetik dan menyemak pengepala respons CORS. Ia melaporkan asal usul sewenang-wenangnya, CORS yang mempunyai kelayakan kad liar dan CORS yang terbuka luas pada titik akhir API bukan awam sambil mengelakkan hingar aset awam.
