Masalah Rahsia yang Bersepah
Mengapa rahsia yang dikodkan terus adalah berbahaya.
Masalah Rahsia yang Bersepah ialah pelajaran Cyber Security Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Cyber Security Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Cyber Security Academy merangkumi sejumlah 4 pelajaran.
Apakah Penyebaran Rahsia?
Penyebaran rahsia ialah penyebaran kelayakan sensitif yang tidak terkawal merentasi sesebuah organisasi. Rahsia ialah apa-apa sahaja yang memberikan akses: kunci API, kata laluan pangkalan data, token OAuth, kunci peribadi TLS, kunci SSH dan kunci penyulitan.
Penyebaran berlaku apabila rahsia ini bertaburan di tempat yang tidak sepatutnya:
- Kod sumber dan fail konfigurasi
- Saluran CI/CD dan pemboleh ubah persekitaran
- Imej kontena dan infrastruktur sebagai kod
- Mesej sembang, wiki dan sistem pengurusan tiket
Apabila satu rahsia wujud di banyak tempat, anda kehilangan keupayaan untuk menjejaki, menukar atau membatalkannya dengan pasti.
Secret yang Dikod Keras
Punca utama yang paling biasa ialah secret yang dikod keras, iaitu kelayakan yang ditulis terus ke dalam kod sumber. Cara ini terasa mudah semasa pembangunan, tetapi akhirnya menjadi liabiliti kekal.
Beginilah rupa kata laluan pangkalan data yang dikod keras dalam kod aplikasi:
Sesiapa yang mempunyai akses untuk membaca fail ini kini memiliki kata laluan produksi. Ini termasuk setiap pembangun, setiap pelari integrasi berterusan dan sesiapa sahaja yang kemudiannya mengklon repositori.
# config.py (ANTI-PATTERN - do not do this)
DB_HOST = "prod-db.internal"
DB_USER = "app_service"
DB_PASSWORD = "S3cr3t!Pr0d_2024" # hardcoded - dangerous
API_KEY = "sk_live_4eC39HqLyjWDarjtT1zdp7dc"Mengapa Sejarah Git Tidak Pernah Melupakan
Satu bahaya kritikal secret yang dikod keras ialah sejarah kawalan versi. Walaupun anda memadam secret dalam komit kemudian, secret itu kekal selama-lamanya dalam sejarah Git setiap klon.
Anda boleh mendapatkan semula secret yang bocor daripada sejarah pada bila-bila masa:
Oleh sebab itu, memadam secret daripada komit terkini tidak memulihkan kebocoran. Secret itu mesti dianggap telah terjejas dan digilirkan serta-merta.
# A secret deleted in HEAD is still in history
git log -p --all -S 'S3cr3t!Pr0d_2024'
# Searching all branches and tags reveals it
git grep 'API_KEY' $(git rev-list --all)Malapetaka Repositori Awam
Apabila repositori yang mengandungi secret yang dikod keras dihantar ke hos awam seperti GitHub, bot automatik mengikis kandungannya dalam beberapa saat hingga beberapa minit.
Akibat sebenar termasuk:
- Bil awan melambung kunci AWS yang bocor digunakan untuk melancarkan kelompok perlombongan kripto, lalu menjana caj puluhan ribu dolar semalaman.
- Kebocoran data kelayakan pangkalan data yang terdedah membawa kepada pengeluaran semua data secara tidak sah.
- Pergerakan sisi satu token yang bocor digunakan untuk bergerak lebih jauh ke dalam infrastruktur.
Penyedia awan dan GitHub kini menjalankan pengimbasan secret yang mengesan dan kadangkala membatalkan kunci yang bocor secara automatik, tetapi anda tidak boleh bergantung padanya sebagai jaring keselamatan.
Rahsia dalam Imej Kontena
Kontena memperkenalkan vektor penyebaran yang sukar dikesan. Secret yang dibakar ke dalam imej semasa binaan disimpan dalam lapisan imej dan dihantar ke setiap registri serta hos yang mengambil imej itu.
Kesilapan yang biasa berlaku ialah menyalin masuk fail secret, kemudian memadamkannya dalam lapisan kemudian secret itu masih wujud dalam lapisan terdahulu:
Sesiapa yang mengambil imej itu boleh mengekstrak lapisan tersebut dan membaca kuncinya. Sebaliknya, gunakan secret binaan atau suntikan semasa masa jalan.
# Dockerfile ANTI-PATTERN
COPY id_rsa /root/.ssh/id_rsa
RUN git clone git@github.com:org/private.git
RUN rm /root/.ssh/id_rsa # too late - still in earlier layer
# Inspect layers to recover the deleted secret
docker history --no-trunc myimage:latest
docker save myimage:latest | tar -xf -Pemboleh Ubah Persekitaran Bukan Peti Besi
Memindahkan rahsia keluar daripada kod dan ke dalam pemboleh ubah persekitaran ialah satu peningkatan, tetapi bukan penyelesaian lengkap. Pemboleh ubah persekitaran menyelesaikan pengekodan keras, namun memperkenalkan laluan pendedahan baharu:
- Bocor dalam longgokan ranap dan surih tindanan ralat
- Kelihatan kepada proses lain melalui
/proc/<pid>/environdi Linux - Direkodkan oleh alat penyahpepijatan yang mencetak keseluruhan persekitaran
- Disimpan dalam fail
.envteks biasa yang terserah ke dalam komit secara tidak sengaja
Pemboleh ubah persekitaran boleh diterima untuk konfigurasi yang kurang sensitif, tetapi secret bernilai tinggi hendaklah disimpan dalam pengurus rahsia khusus dengan kawalan akses dan pengauditan.
Masalah Jejari Impak
Penyebaran rahsia menjadikan tindak balas insiden hampir mustahil. Apabila secret berada di merata tempat, dua soalan tidak dapat dijawab:
- Di manakah ia? Anda tidak boleh menggilirkan sesuatu yang tidak dapat anda temui.
- Siapa yang menggunakannya? Tanpa rekod akses terpusat, anda tidak dapat menentukan sejauh mana kebocoran berlaku.
Jejari impak satu kelayakan yang bocor bertambah seiring dengan penyebaran. Kata laluan yang dikongsi dan digunakan semula merentas sepuluh perkhidmatan bermakna satu kebocoran menjejaskan kesemua sepuluh perkhidmatan. Pemusatan serta secret unik yang berjangka hayat pendek mengecilkan jejari ini dengan ketara.
Mengesan Secret Sebelum Komit
Cara paling murah untuk menghentikan kebocoran ialah menghalangnya sebelum masuk ke dalam kawalan versi. Pengimbas secret prakomit memeriksa perubahan yang dipentaskan dan menyekat komit yang mengandungi corak kelayakan.
Alat sumber terbuka yang popular termasuk gitleaks, trufflehog dan detect-secrets. Cangkuk prakomit biasa dijalankan secara setempat:
Gabungkan langkah ini dengan pengimbasan pada pelayan dalam integrasi berterusan supaya pembangun yang memintas cangkuk setempat masih dapat dikesan.
# Scan a repo for secrets with gitleaks
gitleaks detect --source . --verbose
# Scan only staged changes (pre-commit)
gitleaks protect --staged --redact
# Deep-scan full history including dangling commits
trufflehog git file://. --only-verifiedPemulihan Apabila Secret Bocor
Jika secret sampai ke tempat yang tidak sepatutnya, ikuti susunan ini. Penggiliran mesti didahulukan; pembersihan sejarah ialah langkah kedua kerana salinan mungkin sudah wujud.
- 1. Gilirkan batalkan secret yang bocor dan keluarkan secret baharu dengan segera.
- 2. Semak semak rekod akses untuk sebarang penggunaan tanpa kebenaran sepanjang tempoh pendedahan.
- 3. Hapuskan keluarkan secret daripada sejarah (contohnya
git filter-repo) dan lakukan tolak paksa. - 4. Cegah tambahkan pengimbasan dan pindahkan secret ke dalam pengurus supaya perkara ini tidak berulang.
Jangan sekali-kali langkau langkah 1. Secret yang pernah berada di ruang awam telah terjejas, tanpa pengecualian.
Prinsip Keistimewaan Minimum untuk Rahsia
Penyebaran menjadi lebih buruk apabila rahsia mempunyai terlalu banyak keistimewaan dan dikongsi secara berlebihan. Penggunaan keistimewaan minimum mengehadkan kerosakan apabila kebocoran berlaku:
- Berikan setiap perkhidmatan kelayakan sendiri, jangan gunakan kelayakan yang dikongsi.
- Hadkan setiap rahsia kepada keizinan minimum yang diperlukan (baca sahaja berbanding pentadbir).
- Utamakan kelayakan berjangka hayat pendek yang tamat secara automatik.
- Asingkan rahsia mengikut persekitaran; kunci pembangunan tidak boleh memberikan akses produksi.
Amalan ini menukar pencerobohan yang dahsyat menjadi insiden terkawal yang boleh dipulihkan.
Membina Budaya Kebersihan Rahsia
Alat sahaja tidak menyelesaikan masalah penyebaran; budaya yang matanglah yang menyelesaikannya. Organisasi yang matang menganggap pengurusan rahsia sebagai disiplin berterusan:
- Pendirian lalai: tiada secret sama sekali dalam kod sumber.
- Pusatkan storan dalam peti besi terurus dengan kawalan akses dan rekod audit.
- Automatikkan pengimbasan pada setiap peringkat: prakomit, integrasi berterusan dan registri.
- Jadikan penggiliran sebagai rutin, bukan tindakan yang hanya dilakukan ketika kecemasan.
- Latih setiap jurutera untuk mengenal pasti dan melaporkan pendedahan tanpa menyalahkan sesiapa.
Matlamatnya ialah sistem yang menyukarkan kebocoran secret berlaku dan memudahkan pemulihan daripadanya.
Semakan Pantas
Uji pemahaman anda tentang sebab memadam secret yang bocor tidak mencukupi.
Ringkasan: Masalah Penyebaran Rahsia
Anda telah mempelajari sebab rahsia yang berselerak dan dikod keras merupakan antara kelemahan keselamatan yang paling biasa serta paling merosakkan.
- Penyebaran rahsia ialah penyebaran kelayakan yang tidak terkawal merentas kod, saluran paip, imej dan ruang sembang.
- Rahsia yang dikod keras kekal selama-lamanya dalam sejarah Git; memadamnya tidak memulihkan kebocoran.
- Repositori awam dikikis dalam beberapa minit, lalu menyebabkan bil awan melambung dan kebocoran.
- Pemboleh ubah persekitaran dan lapisan imej ialah bekas yang mudah bocor, bukan storan yang selamat.
- Penyebaran membesarkan jejari impak serta menjadikan penggiliran dan tindak balas insiden mustahil.
- Penyelesaiannya: lakukan pengimbasan sebelum komit, gilirkan dahulu apabila berlaku kebocoran, pusatkan rahsia dalam peti besi dan gunakan keistimewaan minimum.
Seterusnya, kita akan memusatkan rahsia dengan betul menggunakan peti besi dan stor secret.
Pelajari Cyber Security Academy dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 76
- Pelajaran
- 303
Soalan Lazim
Adakah pelajaran “Masalah Rahsia yang Bersepah” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Cyber Security Academy, termasuk “Masalah Rahsia yang Bersepah”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Cyber Security Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Masalah Rahsia yang Bersepah”?
Mengapa rahsia yang dikodkan terus adalah berbahaya. Anda berlatih Cyber Security Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Cyber Security Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Cyber Security Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Masalah Rahsia yang Bersepah” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Cyber Security Academy ini?
Ya. Setiap pelajaran Cyber Security Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Masalah Rahsia yang Bersepah
- Peti Besi dan Gedung Rahsia
- Rahsia Dinamik dan Pajakan
- Putaran Kunci dan Pengesanan