Yazılım projelerinde en yaygın tedarik zinciri saldırılarının çoğu, sıfır-gün (zero-day) açıklarından değil, öngörülebilir risklerden kaynaklanıyor. Örneğin; haftalık 50 milyon indirmeye sahip, ancak tek bir bakımcı tarafından yönetilen ve uzun süredir bakımı yapılmayan bir paket aniden el değiştirdiğinde ortaya çıkan güvenlik açıkları bunlara örnek. Geleneksel araçlar bu riskleri genellikle tespit edemiyor çünkü henüz CVE kaydı bulunmuyor. İşte tam da bu noktada proof-of-commitment aracı devreye giriyor.
Bu araç, bağımlılıklarınızı davranışsal sinyaller üzerinden değerlendirerek risk seviyelerini otomatik olarak belirliyor. Bu sinyaller arasında; bakımcı sayısı, indirme trendleri, bakım aktivitesi ve geçmişte yaşanan güvenlik olayları yer alıyor. Peki bunu CI boru hattınıza nasıl entegre edebilirsiniz? İşte iki basit yöntem.
GitHub Action ile Otomatik Güven Denetimi (Önerilen Yöntem)
GitHub Action kullanarak bağımlılıklarınızı otomatik olarak tarayabilir ve her Pull Request (PR) için risk raporu oluşturabilirsiniz. İşte adım adım kurulum:
- Projenizin
.github/workflows/klasörüne yeni bir workflow dosyası oluşturun. Örneğin,supply-chain-audit.yml. - Aşağıdaki yapılandırmayı kullanın:
# .github/workflows/supply-chain-audit.yml
name: Supply Chain Audit
on:
pull_request:
paths:
- 'package.json'
- 'package-lock.json'
- 'bun.lock'
- 'requirements.txt'
- 'pyproject.toml'
push:
branches: [main]
workflow_dispatch: {}
jobs:
audit:
name: Dependency Audit
runs-on: ubuntu-latest
permissions:
pull-requests: write # PR yorumları için gerekli
steps:
- uses: actions/checkout@v4
- name: Commit Supply Chain Audit
uses: piiiico/proof-of-commitment@main
with:
fail-on-critical: false # Kritik paketlerde merge engellemeyi devre dışı bırak
max-packages: '20' # Yalnızca en önemli 20 paketi denetle
comment-on-pr: true # Sonuçları PR yorumuna ekleBu basit yapılandırma ile araç, bağımlılıklarınızı otomatik olarak algılayacak ve her PR’de ilgili riskleri yorum olarak paylaşacaktır. Kritik paketler tespit edildiğinde merge işlemini engellemek için fail-on-critical: true seçeneğini kullanabilirsiniz.
Çıktıların Anlaşılması
Araç, her PR için aşağıdaki gibi bir yorum oluşturur:
## Commit Supply Chain Audit
| Paket | Skor | Risk | Haftalık İndirme | Bakımcılar |
|----------|------|-----------|------------------|------------|
| axios | 42 | KRİTİK | 101M | 2 |
| lodash | 71 | ORTA | 54M | 4 |
| chalk | 58 | YÜKSEK | 413M | 1 |
| zod | 89 | DÜŞÜK | 18M | 2 |
| react | 94 | DÜŞÜK | 70M | 8 |
⚠️ 1 KRİTİK paket bulundu. Birleştirmeden önce inceleyin.Bu tablo, bağımlılıklarınızın davranışsal risklerini gösterir. Skorlar 0-100 arasında değişir ve dört risk kategorisine ayrılır:
- 80-100 (DÜŞÜK): Güçlü davranışsal sinyaller
- 60-79 (ORTA): Bazı risk sinyalleri — büyük versiyon yükseltmelerinden önce gözden geçirin
- 40-59 (YÜKSEK): Birden fazla risk sinyali — alternatifleri değerlendirin veya versiyonu sabitleyin
- 0-39 (KRİTİK): Ciddi yapısal risk — yalnızca bir bakımcı, yüksek indirme sayısı ve zayıf aktivite
CLI ile Herhangi Bir CI Ortamında Kullanım
GitHub Actions dışında GitLab CI, CircleCI veya Buildkite gibi CI ortamlarında da bu aracı kullanabilirsiniz. İşte birkaç örnek:
GitLab CI:
supply-chain-audit:
stage: test
script:
- npx proof-of-commitment --file package.json
only:
changes:
- package.json
- package-lock.jsonCircleCI:
jobs:
supply-chain-audit:
docker:
- image: cimg/node:lts
steps:
- checkout
- run:
name: Bağımlılıkları denetle
command: npx proof-of-commitment --file package.jsonHerhangi bir shell betiği:
npx proof-of-commitment --file package.json
npx proof-of-commitment --file requirements.txt # Python projeleri içinCLI aracı, kritik paketler bulunduğunda sıfır olmayan bir çıkış kodu ile çalışır. Bu sayede herhangi bir CI ortamında doğal olarak entegre olabilir.
README Dosyanıza Canlı Güven Rozeti Ekleyin
Projenizin README dosyasına canlı güven rozeti ekleyerek bağımlılık risklerini sürekli olarak izleyebilirsiniz. Örneğin:
!Commit Trust Score- npm paketleri için: `
- PyPI paketleri için: `
Bu rozetler, sürekli olarak güncellenen skorları görüntüler ve ekibinize anında geri bildirim sağlar.
Neden Davranışsal Skorlar CVE Taramalarından Daha Önemli?
Geleneksel güvenlik araçları genellikle CVE veritabanlarına dayalı çalışır. Ancak, birçok tedarik zinciri saldırısı henüz CVE kaydı olmayan paketlerden kaynaklanır. Örneğin, yüksek indirme sayısına sahip ancak yalnızca bir bakımcı tarafından yönetilen bir paket, bakımcının projeden ayrılması durumunda savunmasız hale gelir.
proof-of-commitment aracı, yapısal risk sinyallerini değerlendirerek bu tür senaryoları tespit eder. Bu sayede projelerinizdeki gelecekteki riskleri proaktif olarak önleyebilirsiniz.
Sonuç: Tedarik Zinciri Güvenliğini Basitleştirin
Tedarik zinciri saldırıları artık sıradan hale geldi. Ancak, bu saldırıları önlemek için karmaşık araçlara veya uzun süreli kurulumlara ihtiyacınız yok. Sadece 5 dakika içinde CI boru hattınıza güven skoru ekleyerek projelerinizin güvenliğini önemli ölçüde artırabilirsiniz. Hem otomatik hem de manuel yöntemlerle kullanabileceğiniz bu araç, bağımlılıklarınızın davranışsal risklerini sürekli olarak izlemenizi sağlar. Tek yapmanız gereken, projenizin ihtiyaçlarına uygun yöntemi seçmek ve riskleri minimize etmek.
Yapay zeka özeti
CI boru hattınıza bağımlılık güven skoru ekleyerek tedarik zinciri saldırılarını 5 dakikada önleyin. GitHub Action ve CLI yöntemlerini keşfedin.