FlawOpen

flawopen.com/Incidents/polyfill-io-supply-chain-incident-june-2024

● Polyfill.io service · CWE-829 · June 2024 · Tinggi
Riset Keamanan · FlawOpen

Serangan rantai pasok Polyfill.io (2024)

Insiden 2024: polyfill.io mengalihkan sebagian pengunjung. Hapus rujukan CDN; tidak ada CVE yang ditetapkan.

💡 Penjelasan Sederhana (ELI5)

Bayangkan restoran meletakkan botol minuman dari pemasok luar di setiap meja. Jika pemasok mengubah isinya, pelanggan yang meminumnya dapat terdampak meski restoran tidak mengubah menu.

Konsep Kunci & Istilah

Dynamic User-Agent Polyfilling
Menyajikan bundel JavaScript yang disesuaikan bergantung pada header browser klien, membuat hash Subresource Integrity (SRI) menjadi mustahil.
Conditional Payload Evasion
Menganalisis Referer HTTP, ukuran layar, user-agent, dan alat pengembang untuk memberikan skrip bersih kepada pengembang sambil menyerang pengguna seluler yang sebenarnya.
Domain Ownership Transfer Risk
Bahaya bawaan dari menyematkan skrip pihak ketiga dari domain yang dapat diperoleh, kedaluwarsa, atau ditransfer tanpa persetujuan.
Subresource Integrity (SRI)
Mekanisme kriptografi browser yang memvalidasi hash skrip sebelum dieksekusi.

Pemetaan kerangka kerja

  • Referensi CWE untuk kelemahan yang dijelaskan dalam panduan ini: CWE-829

Kronologi Insiden

Februari 2024

Sansec melaporkan perubahan pemilik domain dan akun GitHub; Fastly menawarkan alternatif sebagai langkah pencegahan.

25 Juni 2024

Sansec menerbitkan analisis dan memperkirakan paparan lebih dari 100 ribu situs berdasarkan pengukurannya sendiri.

26–27 Juni 2024

Cloudflare mengumumkan penulisan ulang otomatis ke mirror-nya; domain kemudian ditangguhkan. Hapus referensi lama dan jangan bergantung pada penulisan ulang sementara.

Alur Serangan Langkah demi Langkah

Langkah 1

Perubahan kendali

Sansec melaporkan bahwa domain dan akun GitHub berpindah pemilik pada Februari 2024. Fastly menawarkan alternatif sebagai langkah pencegahan sebelum respons berbahaya dilaporkan. Fastly kemudian menyatakan bahwa mereka mengetahui serangan tersebut saat laporan Sansec diterbitkan; alternatif yang ditawarkan pada Februari merupakan langkah pencegahan, bukan bukti bahwa mereka sudah mengetahui aktivitas berbahaya saat itu.

Langkah 2

Situs memuat CDN

Halaman yang merujuk cdn.polyfill.io membuat browser mengambil dan menjalankan JavaScript yang dikembalikan dalam konteks halaman tersebut.

Langkah 3

Pengalihan bersyarat teramati

Sampel yang dianalisis Sansec mengalihkan sebagian pengunjung seluler berdasarkan kondisi tertentu. Ini menjelaskan sampel tersebut, bukan semua respons CDN.

Langkah 4

Mitigasi dan respons

Cloudflare menerapkan penulisan ulang ke mirror-nya; Fastly menawarkan alternatif terpisah. Sansec melaporkan iklan Google Ads pada sebagian situs niaga ditolak, bukan penalti pencarian organik secara menyeluruh.

Kode Sumber: Rentan vs Aman

IMPLEMENTASI RENTAN
<!-- VULNERABLE: Direct 3rd-party CDN script without integrity verification -->
<!DOCTYPE html>
<html>
<head>
  <title>Production Web App</title>
  <!-- Polyfill CDN serves arbitrary dynamic code controlled by third party -->
  <script src="https://cdn.polyfill.io/v3/polyfill.min.js?features=default,Array.prototype.flat"></script>
</head>
<body>
  <h1>Welcome</h1>
</body>
</html>
PERBAIKAN AMAN & KUAT
<!-- Build this file from a reviewed, version-pinned dependency. -->
<script defer src="/assets/vendor/polyfills.min.js"></script>

Daftar Periksa Penguatan Sistem Rekayasa

Sumber