Ana içeriğe geç

A08:2021 – Software and Data Integrity Failures icon

Faktörler

CWEs Mapped Max Incidence Rate Avg Incidence Rate Avg Weighted Exploit Avg Weighted Impact Max Coverage Avg Coverage Total Occurrences Total CVEs
10 16.67% 2.05% 6.94 7.94 75.04% 45.35% 47,972 1,152

Genel Bakış

2021 için yeni bir kategori; doğrulama yapmadan software update’ler, kritik veriler ve CI/CD pipeline’larıyla ilgili varsayımlara odaklanır. Common Vulnerability and Exposures/Common Vulnerability Scoring System (CVE/CVSS) verilerinde en yüksek ağırlıklı impact’lerden birine sahiptir. Dikkate değer Common Weakness Enumerations (CWEs) arasında CWE-829: Inclusion of Functionality from Untrusted Control Sphere, CWE-494: Download of Code Without Integrity Check ve CWE-502: Deserialization of Untrusted Data bulunur.

Açıklama

Software ve data integrity hataları; integrity ihlallerine karşı koruma sağlamayan code ve infrastructure ile ilgilidir. Örneğin bir uygulamanın, güvenilmeyen kaynaklardan, repository’lerden ve content delivery network’lerden (CDN) plugin, library veya module’lere dayanması. Güvensiz bir CI/CD pipeline, yetkisiz erişim, malicious code veya sistem compromise riskini artırabilir. Son olarak, birçok uygulamada artık auto-update fonksiyonu vardır; burada update’ler yeterli integrity doğrulaması olmadan indirilir ve daha önce trusted olan uygulamaya uygulanır. Saldırganlar potansiyel olarak kendi update’lerini yükleyip tüm kurulumlara dağıtılmasını ve çalıştırılmasını sağlayabilir. Başka bir örnek; object’lerin veya verilerin attacker’ın görüp değiştirebileceği bir yapıya encode veya serialize edilmesi; bu, insecure deserialization’a karşı savunmasızdır.

Nasıl Önlenir

  • Software veya verinin beklenen kaynaktan geldiğini ve değiştirilmediğini doğrulamak için dijital imza (digital signature) veya benzeri mekanizmalar kullanın.

  • npm veya Maven gibi library ve dependency’lerin trusted repository’lerden tüketildiğinden emin olun. Risk profiliniz yüksekse, vet edilmiş internal known-good bir repository barındırmayı düşünün.

  • OWASP Dependency Check veya OWASP CycloneDX gibi bir software supply chain security aracı kullanarak bileşenlerin bilinen zafiyetler içermediğini doğrulayın.

  • Software pipeline’ınıza malicious code veya configuration sokulma olasılığını en aza indirmek için code ve configuration değişiklikleri için bir review süreci sağlayın.

  • CI/CD pipeline’ınızın build ve deploy süreçlerinden geçen code’un integrity’sini korumak için uygun ayrıştırma (segregation), configuration ve access control’e sahip olduğundan emin olun.

  • İmzalanmamış veya encrypt edilmemiş serialized veriyi, integrity check veya digital signature olmaksızın untrusted client’lara göndermeyin; serialized verinin kurcalanmasını (tampering) veya replay’ini tespit edecek bir mekanizma kullanın.

Örnek Saldırı Senaryoları

Senaryo #1 İmzasız update: Birçok ev router’ı, set-top box, device firmware’i ve diğerleri firmware update’lerini signed olarak doğrulamaz. Unsigned firmware, saldırganlar için büyüyen bir hedeftir ve yalnızca kötüleşmesi beklenir. Çoğu zaman remediation mekanizması yoktur; bir sonraki versiyonda düzeltmek ve eski versiyonların kullanım dışı kalmasını beklemekten başka çare olmaz.

Senaryo #2 SolarWinds malicious update: Devlet aktörlerinin update mekanizmalarını hedef aldığı bilinmektedir; yakın geçmişte dikkat çeken örnek SolarWinds Orion saldırısıdır. Software’ı geliştiren şirketin secure build ve update integrity süreçleri vardı; yine de bunlar atlatıldı ve birkaç ay boyunca 18.000’den fazla kuruluşa yüksek hedefli malicious bir update dağıtıldı; bunların yaklaşık 100 kadarı etkilendi. Bu, türünün en kapsamlı ve en önemli ihlallerinden biridir.

Senaryo #3 Insecure Deserialization: Bir React uygulaması bir dizi Spring Boot microservice’i çağırıyor. Fonksiyonel programlama yaklaşımıyla code’u immutable tutmak istiyorlar. Çözüm olarak user state’i serialize edip her istekte ileri-geri taşıyorlar. Bir saldırgan, “rO0” Java object imzasını (base64 içinde) fark ediyor ve Java Serial Killer aracını kullanarak application server üzerinde remote code execution elde ediyor.

References

List of Mapped CWEs

CWE-345 Insufficient Verification of Data Authenticity

CWE-353 Missing Support for Integrity Check

CWE-426 Untrusted Search Path

CWE-494 Download of Code Without Integrity Check

CWE-502 Deserialization of Untrusted Data

CWE-565 Reliance on Cookies without Validation and Integrity Checking

CWE-784 Reliance on Cookies without Validation and Integrity Checking in a Security Decision

CWE-829 Inclusion of Functionality from Untrusted Control Sphere

CWE-830 Inclusion of Web Functionality from an Untrusted Source

CWE-915 Improperly Controlled Modification of Dynamically-Determined Object Attributes