- vet,
curl | bash tarzı uzak kurulum betiklerinin çalıştırılmasını "indir→incele→çalıştırmayı onayla" sürecine güvenli biçimde dönüştüren bir CLI aracıdır
- Betik değişikliklerini (diff) görüntüleme, shellcheck tabanlı lint (statik analiz), doğrudan onay (inceledikten sonra çalıştırma) gibi katmanlı savunma özellikleri sunar
- Tek bir komutla (
vet https://example.com/install.sh) uzak bir betiği çalıştırmadan önce olası riskleri, kurcalamayı, yazım hatalarını ve zafiyetleri otomatik olarak denetleyebilir
- Kurulumda da kendi içinde hem "indirip inceleme" yöntemini hem de
curl | sh yöntemini destekler; vet’in kendi kurulum kodu da doğrudan incelenebilir
- Geliştirme/operasyon ortamlarındaki güvenlik risklerini önlerken aynı anda otomasyon ve kullanım kolaylığı sağlayan, yüksek güvenilirlikli bir çözümdür
Sorun: Uzak kurulum betiklerinin gelişigüzel çalıştırılması
- Birçok açık kaynak proje ve araç,
curl -sSL https://example.com/install.sh | bash gibi uzak betik tabanlı kurulum yöntemlerini önerir
- Bu yaklaşım, betiğin değiştirilmesi/sunucunun ele geçirilmesi/ağ hataları gibi nedenlerle kötü amaçlı kod çalıştırma, eksik dosya çalıştırma gibi kritik güvenlik riskleri barındırır
vet’in çözümü: Güvenli etkileşimli çalıştırma
Kurulum yöntemi
Güvenli önerilen yöntem (indir → incele → çalıştır)
- 1. Kurulum betiğini indir:
- 2. İndirilen betiğin kodunu doğrudan incele (
less, vim vb. ile):
less install_vet.sh
- 3. İncelemeden sonra kendin çalıştır:
sh install_vet.sh
Hızlı kurulum (güvene dayalı tek satır)
vet’in özellikleri ve avantajları
- Değişiklik algılama (diff): Daha önce çalıştırılan betiklerle karşılaştırıp nelerin yeni değiştiğini görmeyi sağlar
- Otomatik lint (shellcheck entegrasyonu): Kabuk betiklerinde zafiyetleri, yazım hatalarını ve şüpheli kodu otomatik teşhis eder
- Açık yürütme onayı (Confirm): Tek bir tıklama/girdiyle gerçek çalıştırmayı doğrudan kontrol etmeni sağlar
- Betikleri otomatik kaydetme ve geçmiş yönetimi: Sık kullanılan kurulum betiklerini de güvenli biçimde izlemeyi mümkün kılar
- Dahili olarak güvenli kurulum/güncelleme de garanti eder
Sonuç
- vet, hem geliştiriciler hem de operasyon ekipleri için gerekli olan güvenli bir "curl | bash" alternatifi olarak, kurulum otomasyonu ile güvenliği aynı anda hayata geçirir
- "Öylece çalıştırmayın; vet ile doğrulayıp sonra çalıştırın!"
1 yorum
Hacker News yorumları
# shellcheck disable=pragma’ları eklerse ne olacağını merak ediyorum# shellcheck disable=kodu eklemelerini tespit eder. Bu değişikliğin kendisi zaten bir uyarı işaretiinstall.shkaynağını doğrudan görebilirsin.netrcdesteği,VET_TOKENortam değişkeni ve ileride HashiCorp Vault gibi secret manager entegrasyonları var. İlgileniyorsanız GitHub issue altında görüşlerinizi duymak isterim. Geri bildirim için teşekkürlerless, ya dabatkuruluysa daha iyi vurgulama sunan bir pager), yanlışlıkla değişiklik yapılmasını önlemek için editör açmıyor. ShellCheck bir sorun bulursa bunu terminalde renkli şekilde hemen gösteriyor. Sonrasında incelemeye devam edilip edilmeyeceğini[y/N]biçiminde doğrudan soruyor. Örnek: Güzel öneri, teşekkürlercurl | bashkalıbı gibi otomatik çalışmaması biraz üzücü. Windows’ta kullanıcı bir şey kurmaya çalıştığında dosyayı otomatik tarayan özellikler varcurl | bashkalıbı beni hep tedirgin etti; betik değiştiğinde diff gösteren, shellcheck çalıştıran ve kullanıcıdan açık izin isteyen bir araca ihtiyaç olduğunu hissettim. Bu yüzden vet’i yaptım. Kurulumda da aynı ilkeleri uyguladım. Kurulum betiğini mutlaka okumanızı öneririm. Geri bildirimlere açığım. Repo: https://github.com/vet-run/vetwget -qO- https://getvet.shile indirildiğinde sunucutext/htmldönüyor). Hatta doğrudan install.sh dosyasını almayı önermeyi tercih ederim. Geri bildirim istemene yanıt olarak, “şöyle de yapılabilir” diye bir bash ipucu paylaşıyorum: Bu yöntem, bash bir şey çalıştırmaya her kalktığında izin istiyor. Uzun betiklerde yorucu olabilir; bu yüzden güvenli gördüğün komutları whitelist’e alabilir ya da “remember” benzeri bir seçenekle özelleştirebilirsin.sudoile ilgili olarak, kötü amaçlı yazılımlar önce zararsız görünen bir komuttasudoçalıştırıp kimlik bilgilerini önbelleğe alabilir, sonra da hiçbir uyarı vermeden daha sonra yenidensudokullanabilir. Bilinmeyen programları çalıştırmadan öncesudo -kile oturum önbelleğini temizlemek daha güvenli olur