Güvenli bir kodlama felsefesi oluşturma


EY’nin en son “teknoloji nabzı” anketi, teknoloji yöneticilerinin %78’inin bugünün siber güvenlik tehditleri hakkında bir yıl öncesine göre daha fazla endişe duyduğunu bildiriyor. 254 BT yöneticisinin katıldığı çevrimiçi ankete göre, BT bütçelerini artırdıklarını söyleyen BT liderleri, çoğunlukla siber güvenliğe öncelik verecek bir planları olduğunu (%74) bildiriyor.

EY batı bölgesi siber güvenlik lideri Ayan Roy, siber güvenlik bütçesinin %7 ila %10’unun yazılım geliştirme sürecinde güvenliği artırmaya, yazılım geliştirme ekibinin bütçesinin %4 ila %7’sinin ise geliştirmede siber güvenliği iyileştirmeye harcandığını söylüyor işlem.

Siber güvenlik harcamalarının artmasının iyi bir nedeni var. Teknolojideki ilerlemenin hem iş üretkenliği üzerinde hem de bilgisayar korsanlarının kuruluşlara ve bireylere nasıl saldırabileceklerini geliştirme becerileri üzerinde olumlu bir etkisi vardır.

Örneğin yapay zekayı (AI) ve ChatGPT gibi büyük dil modellerinin potansiyelini ele alalım. Pek çok güvenlik araştırmacısı gibi, Darktrace baş ürün sorumlusu Max Heinemeyer de yapay zeka destekli siber saldırıların hızlanmasını takip ediyor. “Saldırganlar, süreçlerini otomatikleştirmek ve saldırılarını ölçeklendirmede daha verimli hale gelmek için makine öğrenimini kullanabilir” diyor.

Ancak yapay zekanın siber saldırıları otomatikleştirmek için kullanılmasının diğer tarafı, yapay zeka tabanlı test araçlarının, yazılım geliştirme ekiplerinin olası sorunları manuel testten çok daha hızlı belirlemesine yardımcı olabilmesidir. Kalabalık testi platformu Unguess’e göre, testlerin %80’i yazılımın halihazırda sahip olduğu kontrolleri tekrarlamaktan ibarettir; bazı insan odaklı görevlerin otomatikleştirilmesi zaman kazandırabilir. Hatalar otomatik olarak belirlenebilir ve sistem kendi başına test mantığını oluşturup testleri gerçekleştirebilir.

Yapay zeka, tahmine dayalı modeller sayesinde çeşitli test parametrelerini de belirleyebilir ve bir test planı oluşturabilir. Unguess’in kurucu ortağı ve test otomasyonu lideri Edoardo Vannutelli’ye göre, yapay zeka ile testleri otomatikleştirerek çok sayıda veriyi incelemek, yeniden kullanılabilir test senaryoları kullanmak ve kapsamlı test sonuçları üretmek mümkün.

“AI algoritmaları, akıllı veri kümeleri oluşturmak için kod tabanları, kullanıcı girdileri ve geçmiş test bilgileri dahil olmak üzere büyük hacimli verileri analiz edebilir. Bu veri kümeleri, çok çeşitli senaryoları kapsayabilir ve potansiyel güvenlik açıklarını belirleyerek test kapsamını ve doğruluğunu artırabilir” diyor.

Güvenliği kodlayıcılara geri kaydırın

Tasarım gereği güvenlik ilkeleri, güvenli kodlama için bir başlangıç ​​noktası sunar. EY’den Roy, güvenliğin yazılım geliştirmeye dahil olmaya başladığını söylüyor: “Sola kaydırma, önde gelen bir uygulamadır; burada amaç, yazılım geliştirme ekiplerinin güvenliği sonradan akla gelen bir şey olarak değil, yaşam döngüsünün erken safhalarında – tipik olarak gereksinimler ve tasarım aşamasında – dahil etmesidir. ”

Örneğin, yazılım geliştiricilerin bir kod parçasına yapılan herhangi bir girdinin yalnızca bilinen – ve doğrulanmış – bir kaynaktan gelmesine izin verildiğini kontrol etmesi gerekir. Chartered Institute for IT’de (BCS) gönüllü olan Petra Wenham, güvenli kod geliştirirken uygulamanın okuduğu girdi verilerinin sıkı sınır ve içerik denetimine tabi olduğunu söylüyor. Girdi uyumlu değilse, verilerin tamamen yok edilmesi gerektiğini söylüyor.

Bu tür kontroller arabellek taşma hatalarını en aza indirmeye yardımcı olur. Bu, yürütülebilir kod bir yazılım uygulamasının bir giriş verisi alanına enjekte edildiğinde meydana gelir. Uygulama verileri doğrulamazsa, enjekte edilen kodun yetkisiz eylemler gerçekleştirmesini sağlayacak şekilde başarısız olabilir.

Benzer şekilde, Wenham’ın da belirttiği gibi, bir kod parçasının çıktıları yalnızca kodun içinden gelmelidir. Çıktı verileri yalnızca doğrulanmış hedeflere gönderilmeli ve tahsis edilenin dışında bellek kullanmasına izin verilmemelidir.

Kodun çalıştığı işletim sisteminin (OS) bellek kullanımının tahsis edilmesinden, izlenmesinden ve kontrol edilmesinden sorumlu olduğunu söylüyor. Güvenlik açısından bakıldığında, rolü, bir kod parçasının diğer kod parçalarına ayrılan belleği ihlal etmesini engellemektir.

“İşletim sistemi yalnızca doğrulanmış (sertifikalı veya işaretli) kodun çalışmasına izin vermelidir; doğrulanmamış kod izole edilmelidir [and] koşması engellendi,” diye ekliyor Wenham.

Dijitalleştirme ve güvenli kodlama arasındaki bağlantı

Faroe Adaları, yazılımının tüm AB güvenlik standartlarına uygun olduğu anlamına gelen Danimarka, Estonya ve İzlanda’daki sayısallaştırma çabalarından ve girişimlerinden yararlanmıştır.

Janus Læarsson, Faroe Adaları Ulusal Dijitalleştirme Programı’nın baş mimarıdır. Faroe Adaları’nın dijitalleşme stratejisi, devlet hizmetlerini modernize etmek ve vatandaşlarına daha iyi ve daha hızlı deneyimler sunmak için bir dijital altyapı oluşturmayı içeriyor. Læarsson, mevcut yetenek eksikliği sorununa sınırlı zaman ve bütçe eklenmesiyle, BT ekibinin yüksek koda bir alternatif sağlayabilecek ve harici geliştiricilerin geliştirme sürecini yönlendirmesine ve desteklemesine izin verebilecek bir yazılım geliştirme yaklaşımına ihtiyacı olduğunu söylüyor.

OutSystems, geliştirici ekiplerinin Faroe Adaları’nın ulusal dijitalleştirme girişimini güçlendirecek kadar karmaşık ve yeterince güvenli bir sistem oluşturma sürecine katılmasını sağlamak için düşük kod platformu olarak seçildi. Læarsson için, OutSystems gibi düşük kodlu bir yazılım geliştirme platformunun faydalarından biri, düşük kodlu uygulamalar oluştururken kullandığı kitaplıklar için güvenlik yamalarıyla düzenli olarak güncellenmesidir.

Læarsson, güvenli kodlamayı tartışırken şunları söylüyor: “Kriterlerin tanımından kodlama ve sürüme kadar – kalite güvence süreçlerimiz, yaptığımız her uygulama ve güncellemede yüksek standartları zorlamamıza ve sürdürmemize yardımcı olan hem otomatik hem de manuel testleri içerir. Geliştirdiğimiz yazılım, uygulamaların temel tasarım özelliklerine ne kadar etkili bir şekilde uyduğundan tüm güvenlik, erişilebilirlik, ölçeklenebilirlik ve güvenilirlik standartlarını karşılayıp karşılamadığına kadar hem işlevsel hem de yapısal kalite standartları açısından test edilir.”

Akran incelemesi, kalitesini sağlamak için kodun derinlemesine teknik ve mantıksal satır satır incelemesini yapmak için kullanılır. Læarsson, Ulusal Dijitalleşme Programı kapsamında şunları söylüyor: “Düşük kodlu geliştirme projelerimiz, her ekibin her sprint için hikayeler ve görevler oluşturduğu ve bunlar için belirli kriterler tanımladığı scrum ekiplerine bölünmüştür.”

Bu hikayeler, insanların belirli bir yazılım işlevselliği parçasının rolünü anlamalarını sağlar. “Hikayeler tamamlandığında, hikayeleri belirleyen aynı analistler tarafından test edilirler. Demoların bir parçası olarak, paydaşların da söz hakkı vardır ve nihai olarak ayrıntıları onaylayabilir veya reddedebilir. Vatandaş portalı veya iş sicil portalı gibi ana bileşenler piyasaya sürüldüğünde, paydaşlar analistlerimiz tarafından belirlenen test senaryolarını yürütür,” diyor Læarsson.

Güvenlik paydaşları

ISACA Gelişmekte Olan Eğilimler Çalışma Grubu’nun bir üyesi olan Ed Moyle’a göre, paydaşları dahil etmek, yazılım geliştirme projelerinin olması gerektiği kadar güvenli olmasını sağlamanın önemli bir parçasıdır.

“Bu sürecin herhangi bir aşamasında yer alan paydaşların izledikleri süreçlere, eğitimlerine, farkındalıklarına ve diğer birçok faktöre bağlı olarak riskleri ortaya çıkarmaları veya azaltmaları için birçok olası yol vardır” diyor. “Mümkün olan her yerde, projeye dahil olan tüm paydaşların endişelerini dikkate alacak şekilde yazılım riskini azaltmak, yönetmek ve hafifletmek için riske duyarlı bir program tasarlanmalıdır.”

Moyle, BT liderlerinin risk azaltma sonuçlarını destekleyen paydaşların ihtiyaç duyduğu eylemleri desteklemeyi hedeflemesini tavsiye ediyor. Ancak kodlama, kapsamlı bir uygulama güvenliği stratejisinin yalnızca bir yönüdür.

Moyle, “Kodlama, yazılım geliştirme ve piyasaya sürme sürecinde tartışmasız en görünür adım olsa da odaklanmamız gereken tek yer de değil” diye ekliyor. “Risk yönetimi çabaları tüm yaşam döngüsünü içermelidir.”

Bu, bir BT projesinin güvenliğinden sorumlu olanların tüm yaşam döngüsünü bütünsel olarak anlaması ve hesaba katması gerektiği anlamına gelir. Bunun da ötesinde, daha fazla paydaşa ulaşmayı öneriyor. “Planlamanızı, yine de bir çıkarı olan geliştirme dışındaki alanları içerecek şekilde genişletin. Test personelini, iş analistlerini, proje ve ürün yöneticilerini, destek ekiplerini, satış, pazarlama, İK ve hukuk departmanını dahil edin ve onlara vekalet edin – onları inşa ettiğiniz şeyin güvenliğini önemseyen bir şemsiye altına getirin” diye ekliyor.

Moyle ayrıca uygulama geliştirme projelerini siber saldırılara karşı sağlamlaştırmayı düşünen BT karar vericilerini yazılım geliştirme sürecinin dört alanını değerlendirmeye teşvik ediyor:

  1. Olgunluk – süreçlerin, çalışanların yıpranmasına karşı dirençli ve sonuçların tutarlı olması için olgun olduğundan emin olun.
  2. Şeffaflık – ürünlerimizin güvendiği bileşenlerin ve kitaplıkların tedarik zincirinde şeffaflık sağlayın (ve bu şeffaflığı müşterilere sağlayabilmek).
  3. Uyumluluk – yazılım geliştirmede kullanılan çeşitli (ticari ve açık kaynak) lisanslarla uyumluluğu sağlayın.
  4. Tasarım sadeliği – tasarımın kolayca anlaşılmasını ve değerlendirilmesini sağlayın.

Bununla birlikte, pratik bir mesele olarak yazılım riskini etkileyebilecek ve etkileyebilecek hususlar söz konusu olduğunda, bunların “buzdağının sadece görünen kısmı” olduğunu söylüyor ve ekliyor: “Aşağıdakileri de kolayca dahil edebilirsiniz: amaca uygunluk, tasarım titizlik, desteklenebilirlik, test kapsamı, kod kalitesi, pazara sürüm süresi ve yazılımımızı tasarlama, geliştirme, test etme, dağıtma, sürdürme, destekleme ve nihayetinde kullanımdan kaldırma şeklimizle ilişkili riskleri etkileyen çok sayıda başka şey.

Yazılım geliştirme projelerinde ve programlarında yer alanlar için güvenlik, geliştirici ve BT operasyon ekiplerinin zihniyetine sağlam bir şekilde yerleştirilmelidir. Otomatik testler ve yapay zeka, programlama hatalarını belirlemek için kullanılabilse de, yeni bir özellik veya veri akışı eklemenin veya bir uygulama programlama arabirimi sunmanın sonuçlarını anlamak sonradan düşünülmemelidir.



Source link