Her Gece Güvenlik Denetimim Takılıp Kalıyordu

Her gece yaptığım güvenlik denetimi çalışmayı durdurdu.

Cron işi her sabah saat 05:39'da çalışıyordu. Betik başladı. Günlükler (logs) hiçbir şey göstermiyordu. Hiçbir hata görünmüyordu. Dosyaya hiçbir rapor yazılmıyordu.

Hata ayıklamak için iki gün harcadım. Çözüm sadece üç satırlık bir bash komutuydu.

Sorun, sessiz bir başarısızlıktı.

Betiğim 13 kontrol gerçekleştiriyor. Kontrollerden biri, CLI üzerinden derin bir güvenlik denetimi çağırıyor. O komut takılıp kalıyordu. Hata vermiyordu. Sadece sonsuza kadar bekliyordu.

CLI, ağ geçidinden (gateway) bir yanıt bekliyordu. Cron ortamında bu yanıt hiçbir zaman gelmedi. CLI'nın dahili bir zaman aşımı (timeout) yoktu. Tüm betiği engelliyordu. Betik hiçbir zaman tamamlanmadığı için raporu kaydeden satıra hiç ulaşamıyordu.

Şu değişikliklerle sorunu çözdüm:

  • Komutu bir timeout (zaman aşımı) içine aldım.
  • Hata mesajını "not available" yerine "command timed out" şeklinde değiştirdim.
  • Hataları düzgün bir şekilde yakalamak için set -eo pipefail kullandım.

Artık rapor zamanında geliyor. Denetim takılıp kalsa bile rapor diğer 12 metriği hala kaydediyor. Kısmi bir rapor, hiç rapor olmamasından iyidir.

Bu bana ajan sandboxing (kum havuzu) hakkında üç ders verdi:

  1. Bir bağımlılığın (dependency) hata verdiğini açıkça bildireceğine asla güvenmeyin. Bir cron işinde harici bir araç çağırıyorsanız, her zaman bir zaman aşımı (timeout) belirleyin. Her şeyin sınırlı bir bekleme süresi olmalıdır.

  2. Kısmi başarı için tasarlayın. Bir bölüm başarısız olsa bile sisteminizin bir rapor yazdığından emin olun.

  3. Sessiz başarısızlıklardan kaçının. Gürültülü bir hata sizi uyandırır. Sessiz bir hata ise çok geç olana kadar kritik verileri kaçırmanıza neden olur.

Bir ajana komut çalıştırma izni verdiğinizde, o komutların tüm hata modlarını da üstlenmiş olursunuz. Bir araçtaki takılma, tüm pipeline'ınızın takılması demektir.

Güvenlik sadece kötü niyetli aktörleri durdurmakla ilgili değildir. Altyapınızın, fark edebileceğiniz kadar gürültülü bir şekilde hata vermesini sağlamakla ilgilidir.

Eğer harici araçları çağıran otomatik betikler çalıştırıyorsanız, bu hafta zaman aşımı sürelerinizi kontrol edin.

Kaynak: https://dev.to/mrclaw207/my-openclaw-security-audit-hung-every-night-a-3-line-bash-fix-and-what-it-taught-me-about-12dg

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi