Nasıl Yapay Zeka Hacker’ı Olunur?

Cihan Ozhan
6 min readJan 1, 2023

Yapay zekayı hacklemek ya da yapay zeka ile hacklemek…

Siber güvenlik ve ileri seviye yazılım ile uğraştıkça karşılaşacağınız en temel gerçek %100 güvenliğin mümkün olamayacağıdır. Uzmanlık alanlarımıza göre değişse de, işimiz bir şeyleri hacklemek ya da onun güvenliğini sağlamak, ancak bunun belirli sınırları var. Ne kadar iyi güvenlik sağlasanız da ‘rakibin eli armut toplamıyor’ ;) Tıpkı dövüş sporları gibi, sen rakibe nasıl vuracağını planlarken rakip de aynı şeyi senin için planlıyor ve kendini bunun için hazırlıyor…

Yazılım ve güvenlik araştırmalarına başladığım 2000'li yılların başlarından beri sormaya doyulamayan soru ‘abi nasıl hacker olurum?’ olur. Aynı soruyu güvenlikle ilgilenen tecrübeli herkes defalarca almıştır. Bu makaledeki amacım hacker olmak ya da hack yapmak değil, yapay zekayı hacklemek ya da yapay zeka ile hacklemek başlıklarında kariyer hedefleyenlere yol göstermek!

Yayınladığım bir çok webiner/video kayıtları, sunumlar ve makaleler mevcut. Bunlara erişmek için cihanozhan.com

Konuyu birbirinden farklı olan iki başlıkta inceleyeceğiz. Bunlar;

  • AI Security/Hacking
  • AI for Security/Hacking

İkisi bambaşka konular. İkisini birbirine karıştırmayın. Bu temelleri anlamak için de ‘Yapay Zeka Güvenliği : Giriş’ makalemi okumalısınız.

Önceki makalemi de okuduğunuzu varsaydıktan sonra konumuza geçebiliriz.

AI Security : Yapay Zekayı Hacklemek

Yapay zekayı sihirli bir değnek olarak görenlere müjde: öyle değil!

Günümüzde yapay zekayı machine learning, deep learning vb. şeklinde kategorize ediyoruz. Ve altında sadece yazılım ve algoritma var. Otonom sistemler üzerine çalışırken de, bir AI’ı hacklerken de herhangi bir sihir görmedim. Sizin de bu sihri bulamayacağınıza eminim. Bu nedenle aramakla vakit kaybetmemenizi öneririm. Yazılım ve algoritmaya odaklanın…

Eğer bir AI modeli algoritma ve yazılımdan ibaretse bir kaç on yıldır geçerli olan yazılım güvenlik zaafiyetleri burası için de geçerli midir? Evet, tamamen!

Öncelikle, püf nokta yazılım bilgisi. AI odaklı eğitim arayan ya da kendini geliştirmeye çalışan gençlerde gördüğüm en temel hata yazılım bilgi eksikliği. O AI sihrini arama peşinde koşarken yazılımı önemsiz zannediyorlar, bilmiyorlar. Ve sonra onlarca saatlik kurs izlemeleri, belki yüzlerce saatlik matematik çalışmaları vs. sektörde ilk projeye dahil olduktan sonra hayal kırıklığına uğratabiliyor. Çünkü sektör kod demektir, bir ürün milyonlarca satır koddan ibarettir. Haftalarca anlamak için üzerinde çalışılan matematik algoritması bir ürün için milyon satırlık kod içinde 1-2 satırlık koddan ibaret olabilir. Buradan programlama ve veri bilgisinin önemini anlamanız gerekiyor. Veri içine SQL de girer, CSV, Image, Video, Audio, Frekans, Stream ya da herhangi bir veri formu… Bir resmin ya da videonun anatomisini doğru bilmeden ne onun üzerine AI geliştirebilirsiniz ne de onu hackleyebilirsiniz. Unutmayın, hacking genellikle o şeyi geliştirmekten sonraki seviye olmalıdır. İyi bir mimar bir mimarinin tüm zayıf noktalarını görebilir! Programlama dili olarak ise başlangıçta tercih edilebilecek en ideal dil Python. Bu Python muhteşem, çok hızlı, çok güvenli olduğu için değil. Bu ayrı bir makale konusu olsa da, dediğim gibi ‘en ideal’ doğruları karşılayan dil…

Yazılım odaklı güvenlik zaafiyetlerinde odaklanılması gereken başlıklar şöyle:

  • Static Code Analysis
  • Dynamic Program Analysis
  • Operating System Architecture

Bir AI modelinin güvenlik zaafiyetlerini incelerken önce kod, ortam ve tool zaafiyetlerine bakarız. Bir AI modelinin parametre verisini depolamak(data serialization) için kullanacağınız bir library olan Pickle’daki zaafiyet doğrudan sizin modelinizin zaafiyeti demektir. Ya da production ortamında dokunulmazmış gibi görülen bir ML/DL aracının(TensorFlow, PyTorch vb.) yetkilendirmeye sahip olmadığını bildiğin halde güvenilir olarak görüyorsan ciddi bir zaafiyete hazır olmalısın. TF/PyTorch işini yapabilmesi için tüm işletim sistemi, network, diskler, CPU ve GPU’ya erişebilmek zorundayken, ve ona bu yetkileri vermek zorunda olduğun halde onu başı boş bırakamazsın. Bir AI Hacker konuya manipülasyon amacıyla bakacağı için bu araçların zaafiyetlerini tüm MLOps altyapısına saldırı amacıyla kullanacaktır. Bu saldırının sonucunda AI modelin çalınabilir, AI modelin zehirlenerek predict yaptığın sonuçlar değiştirilebilir ya da daha bir çok olası zarar yaşanabilir.

Bir diğer hata, ‘kapalı network güvenlidir’ yaklaşımı! Kapalı network tabiri, ilgili bilgisayar ağının dışarıdan erişime kapalı olarak çalışması amacıyla kullanılır. Örneğin tamamen otonom çalışan bir araç(insansız otomobil ya da askeri bir kara/hava/deniz aracı vb.) genellikle dışarıdan doğrudan erişime açık olmadığı senaryolara sahip olduğu için o halde hacking saldırısına da maruz kalamaz bakışı… Yanlış! Otonom bir askeri kara aracının network’üne erişmeye ihtiyacımız yok. O araç otonomi sağlayabilmesi için sensörler, kamera, LIDAR ve RADAR ile veri almak zorunda ve bizim hedefimiz dışarıdan alınan bu veri üzerinden hacking saldırısı yapmak. Yani kaçabilirsin ama saklanamazsın durumu söz konusu… Dışarıdan input olarak veri alınması gereken(yani çoğunlukla) senaryodaki bir AI ve otonomi söz konusu olduğunda kapalı network güvenli değildir, hacking’e açıktır. Yani bir AI Hacker input veri, kod ve algoritmaları manipüle edererek yapay zekanın ‘hislerini’ aldatmaya çalışır. O hisler ise ne insanda ne de AI’da güvende değildir.

Bu konuda insan üzerinde de yapılmış binlerce psikoloji deneyi mevcut. İnsanın tüm duyuları, düşünceleri kolaylıkla manipüle edilebilir. Bu durum AI için de geçerlidir.

Static Code Analysis aslında genel yazılım güvenliği konusudur. Bu mobil, web, sistem ya da kod içeren herhangi bir proje için geçerli bir analiz yöntemidir. Bu konuda kendinizi geliştirmeniz şart.

Dynamic Program Analysis de SCA gibi genel yazılım güvenliği konusudur. Temel farkı bir uygulamayı code-time da değil, runtime’da analiz etmeye dayanır. Yani emülatör, lab ya da gerçek bir production ortamında çalışır durumda olan yazılımın çalışır vaziyetteyken pentest’e tabi tutulması. Çalışan yazılımı manipüle etme sürecidir. Bu da gene AI Security için kendinizi geliştirmeniz gereken bir başlık.

Operating System Architecture ister yazılım ister güvenlik ister performans olsun, genel olarak bir alfabe seviyesindeki bilgidir. Ne kadar iyi bilirseniz o kadar daha teknik derinliğinizi arttırabilirsiniz.

Neler Öğrenmeliyim Özeti:

  • İleri seviye yazılım : Python ya da C++ uygun. Başlangıç önerisi Python
  • Güvenli Yazılım Geliştirme
  • Static Code Analysis
  • Dynamic Code Analysis
  • Temel Machine Learning(İstatistik) Algoritmalarına Hakim Olmak
  • Bir Deep Neural Network’ü Sıfırdan Yazabilecek Kadar Hakim Olmak
  • AI Security Araştırmaları : Görebileceğiniz en derin güvenlik alanı.

AI for Security : Yapay Zeka ile Hacklemek

Bu başlık altında çalışmak bir başka güzel, bir başka keyifli, bir başka zor ;)

Genel siber güvenlik domain bilgisine çok daha fazla ihtiyacınızın olduğu alan burası. Çünkü, artık bir hacker ya da güvenlik uzmanının yapacağı işi yapan bir yapay zeka geliştirmek istiyorsunuz demektir.

Bu konuyu ikiye ayırabiliriz:

  • Offensive AI : Siber saldırı için bir yapay zeka geliştirmek
  • Defensive AI : Siber savunma için bir yapay zeka geliştirmek

Ben işim ve girişimim gereği(safebox.ai) her ikisini de yapıyorum, her ikisinden de keyif alıyorum. Ancak burada Defensive AI tarafındaki kariyer gelişimini nasıl yapacağınızdan ve nelere ihtiyacınız olduğundan bahsedeceğim.

Yazılım! Yazılım yoksa burası imkansız bir aşama. Yazılımı 100 satırlık bir script yazmak olarak düşünmeyin. Normal bir yazılımcı ne kadar yazılımcı ise bu alanda çalışacak bir hacker da en az aynı seviyede yazılımcı olmalı. Gene Python gayet yeterli ve işinizi bir çok noktada kolaylaştırıcı olacaktır.

Siber güvenlik domain bilgisi. Örneğin, eğer yapay zeka ile DDoS saldırılarına karşı bir detection ya da yük dengeleyici geliştirmek istiyorsanız doğal olarak DDoS üzerine derinlemesine bilginiz olmalı. Bu domain bilgisi senaryosu her AI projesi için geçerlidir. Bilmediğiniz bir uzmanlık alanıyla ilgili AI projesi geliştiremezsiniz. Belki ancak antrenman seviyesinde geliştirebilirsiniz… Threat Intelligence alanında bir yapay zeka geliştirmek istiyorsanız TI’ye, yazılım, internet, protokoller ve genel istihbarat bilgilerine hakim olmalısınız. Ne sadece bir yazılımcı ne TI’ci ne de yapay zekacı olarak düşünemezsiniz. Bir insan TI çalışması yaparken bir çok farklı geçmiş bilgi ve tecrübesini kullanırken bunun üzerine başarıyı getiren diğer faktörlerden bazıları da araştırma kabiliyeti, içgüdüler, hisler, bazı öngörüler vb. Bunları AI’a ne kadar aktarabilirseniz o kadar başarılı olabilirsiniz. Örneğin SQL Injection saldırısına derinlemesine hakim olmadan çok başarılı bir AI-based SQLi Defender geliştiremeyeceğiniz gibi… Ya da kendiniz bir malware geliştirmeden, malware analizi üzerine kendinizi geliştirmeden AI ile malware detection yapan ürün geliştiremezsiniz. Domain bilgisi bu çalışma alanlarında çok önemli. AI’a işi algoritmik ve programatik olarak tarif etmeniz, öğretmeniz gerekiyor.

AI ile çalışırken karşılaşacağınız temel problemlerden biri hangi zaafiyet için yüzlerce AI algoritmasından hangisini kullanmanız gerektiği olacaktır. Genellikle tek bir algoritma da kullanmayız, birden fazlasını bir arada kullanmak gerekiyor. Bu AI tecrübesi ve buraya hakim olmayı gerektirir. Herkes ChatGPT’den bahsedebilir sektörde, ama onun nasıl geliştirildiğini bilmek, anlamak apayrı bir uzmanlık. AI for Security alanında da çok benzer senaryolarla karşılaşacaksınız.

Neler Öğrenmeliyim Özeti:

  • İleri Seviye Yazılım : Python
  • Siber Güvenlik Domain Bilgisi: Hangi dikeyde proje geliştirecekseniz…
  • İlgili Zaafiyetinin Savunma Bilgi ve Tecrübesi
  • İlgili Zaafiyetler İçin Kullanılan Güvenlik Yazılımlarına Hakim Olmak
  • Temel Machine Learning(İstatistik) Algoritmalarına Hakim Olmak
  • Bir Deep Neural Network’ü Sıfırdan Yazabilecek Kadar Hakim Olmak
  • OWASP

Bu makalenin konusu olan AI Security ve AI for Security’nin kolay bir alan olduğunu söyleyemem. Ancak değer ve önümüzdeki yıllarda global olarak sektörü nasıl domine edeceğini göreceksiniz. ;)

Başarılar.
Cihan Özhan

--

--