Modern bir uygulama büyük ölçüde başkalarının paketlerinden oluşur. Her paket, yayına aldığımız koddur; bu yüzden bir bağımlılıktaki bilinen açık, tek satırını bile biz yazmamış olsak da ürünümüzdeki bir açıktır.
GitHub Dependabot, depolarımızın tam bağımlılık grafiğini tarar ve şu iki durumdan biri gerçekleştiğinde uyarı üretir: GitHub Advisory Database'e yeni bir güvenlik açığı yayımlandığında, ya da bir commit bir paketi veya sürümünü güncelleyerek bağımlılık grafiğimiz değiştiğinde. Yalnızca GitHub'ın incelediği bültenler uyarı tetikler.
Bir düzeltme mevcut olduğunda Dependabot uyarıda durmaz. Bağımlılığı, düzeltmeyi içeren minimum sürüme güncelleyen bir pull request'i otomatik olarak açar ve bu pull request'i ilgili uyarıya bağlar. Bu pull request, diğer her değişiklikle birebir aynı inceleme ve CI kontrollerinden geçer — güvenlik düzeltmeleri için daha az denetlenen özel bir yol yoktur.
Dependabot, varsayılan olarak kendi commit'lerini imzalar; böylece her otomatik güncelleme, bir insan katkıda bulunanın imzalı commit'i kadar doğrulanmış yazarlık taşır.
Bunun anlamına gelmediği şey
Dependabot, bağımlılıklardaki bilinen açıkları — yani kamuya açıklanmış ve GitHub Advisory Database'e incelenerek eklenmiş olanları — bulur. Bizim yazdığımız kodu incelemez ve henüz kimsenin bildirmediği bir kusuru bulamaz. Yeni açıkların keşfedilip yayımlanması da zaman alır; bu yüzden bir açığın var olması ile onu kapsayan bir bültenin yayımlanması arasında her zaman bir pencere vardır. Dependabot'u genel güvenlik duruşumuz için bir hüküm değil, tek bir katman olarak görüyoruz.