Kodu analizi yapmaya nasıl başlanır?
Analizciler, “Sadece kod okuyarak” kod incelemesine başlamanızı tavsiye eder. Aslında bu gerçekten de başlamanın en iyi yoludur. Ancak, bir süredir kod analizi yapan çoğu kişinin sıklıkla unuttuğu son derece önemli bir ayrıntıdan yoksundur:
Hangi kodla başlamalıyım?
Kod incelemesine girerken ilk adım, birkaç iyi hedef bulmaktır. Çok sert başlamak ve cesaretinizi kırmak istemediğiniz için bu çok önemlidir. Basit bir şeyle başlamalı ve güveninizi arttırmalısınız. Bazı insanlar Kubernetes’in kaynak kodunu gözden geçirerek başlayabilir.
Anlayışınızı geliştirmek ve hayal kırıklığına uğramadan ilerlemeye devam etmek için küçük parçalarla başlamak iyidir. En sevdiğiniz dille veya kendinize en çok güvendiğiniz dille başlamaya çalışın ve özgüveninizi artırın.
CVE’leri İnceleyin
Örneğin, kullandığınız birkaç açık kaynaklı yazılımın güvenlik posta listelerini takip edebilirsiniz. Apache kuruluşunun posta listesini (yalnızca Apache httpd’yi değil, tüm Apache projelerini kapsayan) ve Ruby-on-Rails güvenlik posta listesi harika başlangıç noktalarıdır. Apache posta listesi size hem yazılım, hem güvenlik açıkları hem de diller açısından çeşitlilik sağlayacaktır. Ruby-on-Rails posta listesi, başlamanızı kolaylaştıran son derece iyi belgelenmiş sorunlar sağlayacaktır.
Kütüphaneleri İnceleyin
Eksiksiz yazılımın aksine, kütüphaneler genellikle yalnızca bir sorunu çözmeye çalışan küçük kod tabanlarıdır. Kütüphanelerin bir başka avantajı da, belirli bir dilde genellikle birden fazla kütüphane bulunmasıdır. Bu, aynı şeyin birden çok uygulamasını incelemenize ve bunları karşılaştırmanıza olanak tanır. Bir uygulamada hangi kontrollerin eksik olabileceğini görmeyi kolaylaştırır. JWT gibi şeyler için kitaplıklar (birkaçını burada bulabilirsiniz ), Oturum yönetimi, dosya işleme/yükleme genellikle ilk hedeflerdir. Güveniniz arttığında SAML veya OAuth2 uygulamaları gibi daha güçlü hedeflere geçebilirsiniz.
Kütüphanelerde kendinizi geliştirdikten sonra ve daha zor hedefler seçmek istediğinizde, klasik yazılıma geçebilirsiniz. Bir yazılım için tüm kod tabanını gözden geçirmek sinir bozucu olabilir, bazı ortak özelliklerle başlamak, çalışmanızın yoğunluğunu artırdıkça işleri kolaylaştırabilir. Örneğin, tüm kod tabanını gözden geçirmek ve hüsrana uğramak yerine, kullanıcı kaydını, şifre sıfırlamayı, şifre depolamayı, dosya yüklemelerini gözden geçirmek iyi bir tercih olacaktır.
Ardından, zor hedeflere (WordPress, PHPMyAdmin, Tomcat, Apache Httpd…) atlamak yerine, daha yumuşak, daha az olgun kod tabanları bulmak, çalışmanızda size yardımcı olabilir. Yine, en aşina olduğunuz dille başlayın. Bu dilde savunmasız kalıpları izole etme konusunda yetkin olduğunuzu hissettiğinizde, diğer dillerdeki kod tabanlarına geçebilir ve bu kalıpları uygulayabilirsiniz.
Başarılı Olduğunuzu Nasıl Anlarsınız?
Son olarak, başarıyı doğru bir şekilde ölçtüğünüzden emin olun. İlerlemenizi, güvenlik açıklarını keşfedip keşfetmediğinize göre ölçemezsiniz. Bulunacak hiçbir şey olmayabilir. Bunun yerine kodu anlama seviyenizi, bildiğiniz ve izole edebileceğiniz kalıpların miktarını ve karmaşıklığını, yeni bir kod tabanına yaklaşmanın sizin için ne kadar kolay olduğunu ölçmeye çalışın. Aynı şekilde, hız ilerlemenin büyük bir göstergesi değildir. Kodu okumada hızlı olabilirsiniz, ancak anlamadıysanız veya bir şeyi kaçırırsanız, gerçekten gelişmezsiniz. Her şey nicelikten çok nitelikle ilgilidir, özellikle de okurken. Pek çok yetenekli kod analisti, genellikle aynı 50 satırlık kodu okumak için saatler harcadıklarını ve saat başına bu kod satırı sayısının önemli olmadığını söyleyecektir.