SafeCoreX Logo
Siber Güvenlik

ChatGPT ile Düzenlenen PHP Projesinde Backdoor Skandalı: Bir Barınak Kayıt Sisteminde Ne Bulduk?

Admin
Makalenin Yazarı
Admin admin
@admin
Profil
ChatGPT ile Düzenlenen PHP Projesinde Backdoor Skandalı: Bir Barınak Kayıt Sisteminde Ne Bulduk?

ÖNEMLİ NOT: Bu içerik, SafalinX ekibinin gerçekleştirdiği proje incelemesi sırasında karşılaşılan bir güvenlik vakası üzerinden hazırlanmıştır. Görseller, olayın incelenmesi sırasında alınan ekran görüntülerinden oluşmaktadır.

Yapay zekâ araçları artık yazılım geliştirme süreçlerinin önemli bir parçası haline geldi.

Kod yazdırmak, mevcut projeleri düzenlemek, hataları analiz etmek veya bir PHP uygulamasını yeniden yapılandırmak için bu araçlardan yararlanmak oldukça yaygın.

Fakat burada gözden kaçırılmaması gereken önemli bir konu var:

Yapay zekâ tarafından düzenlenen bir kod veya proje, güvenlik açısından otomatik olarak güvenilir kabul edilmemeli.

Bunu teorik bir ihtimal olarak söylemiyoruz.

Üzerinde çalıştığımız bir PHP projesinde, yapay zekâ ile gerçekleştirilen düzenleme sürecinin ardından web-shell/backdoor niteliğinde değerlendirilen şüpheli dosyalarla karşılaştık.

Üstelik bu proje sıradan bir test uygulaması değildi.

Sistem, barınak kayıt işlemleri ve yönetim süreçleri için geliştirilmiş bir PHP projesiydi.

Olay Nasıl Başladı?

Proje üzerinde çeşitli düzenlemeler yapılması gerekiyordu.

Bu süreçte yapay zekâdan kod düzenleme ve proje üzerinde çalışma konusunda destek aldık. Proje dosyaları analiz edilmek ve gerekli değişiklikler yapılmak üzere yapay zekâya verildi.

İşlemlerin ardından proje bir ZIP paketi halinde değerlendirildi.

İlk bakışta herhangi bir problem görünmüyordu.

PHP dosyaları yerindeydi.

Uygulama açılıyordu.

Mevcut özellikler çalışıyordu.

Ancak daha sonra proje dosyaları üzerinde yapılan kontroller sırasında uygulamanın normal yapısıyla ilişkili görünmeyen bazı dosyalar fark edildi.

Bunların arasında:

  • bash.alfa
  • perl.alfa
  • py.alfa
  • .htaccess
  • ALFA_DATA altında bulunan dosyalar

yer alıyordu.

Asıl güvenlik incelemesi de bu noktadan sonra başladı.

Tespit Edilen Dosyalar Neden Şüpheliydi?

Bir dosyanın alışılmadık bir uzantıya sahip olması tek başına onun zararlı olduğunu kanıtlamaz.

Örneğin .alfa uzantısı görmek doğrudan “bu dosya backdoor” anlamına gelmez.

Ancak güvenlik analizinde yalnızca dosya uzantısına bakılmaz.

Dosyanın;

  • içeriği,
  • bulunduğu dizin,
  • nasıl çağrıldığı,
  • hangi işlemleri gerçekleştirdiği,
  • sunucudaki diğer dosyalarla ilişkisi

birlikte değerlendirilir.

Yaptığımız incelemede söz konusu dosyaların normal uygulama işlevleriyle ilişkili olmadığı ve uzaktan komut çalıştırma amacıyla kullanılabilecek web-shell/backdoor yapılarıyla ilişkili olduğu görüldü.

Bu tür bir yapı gerçekten çalıştırılabiliyorsa, saldırgan açısından ciddi bir güvenlik riski oluşturabilir.

Uygulamanın ve sunucunun sahip olduğu yetkilere bağlı olarak saldırgan;

  • dosyalara erişmeye,
  • dosya oluşturmaya veya değiştirmeye,
  • komut çalıştırmaya,
  • uygulama verilerine ulaşmaya

çalışabilir.

Dolayısıyla konu basit bir “gereksiz dosya” probleminden çıkıp ciddi bir güvenlik incelemesine dönüştü.

Daha Dikkat Çekici Kısım: İnceleme Sonrası Verilen Yanıt

Olayın dikkat çeken bölümlerinden biri, şüpheli dosyalar tespit edildikten sonra yapılan AI görüşmesinde ortaya çıktı.

Elimizdeki ekran görüntüsünde verilen yanıtta şu ifade yer alıyor:

“Sana satışa hazır ve temiz diye verdiğim ZIP'in içinde açıkça zararlı/web-shell dosyaları kalmış.”

Yanıtın devamında bash.alfa, perl.alfa ve py.alfa dosyaları da açıkça belirtiliyor.

Aynı açıklamada .alfa dosyalarının ilk kontrolde tespit edilemediği ve yapılan kontrolün yetersiz kaldığı da ifade ediliyor.

Bu ekran görüntüsü bizim için önemli bir belge niteliğinde.

Ancak burada özellikle altını çizmek istediğimiz bir nokta var:

Bu durum, yapay zekânın kasıtlı olarak sisteme backdoor yerleştirdiğini tek başına kanıtlamaz.

Ortada tespit edilmiş şüpheli dosyalar ve bunlarla ilgili bir AI yanıtı bulunuyor. Bu nedenle olayın teknik açıdan doğru tanımı, AI destekli proje düzenleme sürecinin ardından güvenlik açısından ciddi şüphe oluşturan dosyaların tespit edilmesi şeklinde yapılmalı.

“Çalışıyor” Olması Güvenli Olduğu Anlamına Gelmiyor

Bu olayın en önemli derslerinden biri burada.

Bir yazılımın çalışması, güvenli olduğu anlamına gelmez.

ZIP dosyasının açılması, PHP sayfalarının çalışması veya yönetim panelinin sorunsuz şekilde görüntülenmesi de güvenlik kontrolünün tamamlandığı anlamına gelmez.

Özellikle dışarıdan alınan veya yapay zekâ yardımıyla düzenlenen projelerde dosya seviyesinde inceleme yapılması gerekiyor.

Dosya sistemi

Projede uygulamayla ilgisi olmayan veya kaynağı bilinmeyen dosyalar var mı?

Uygulama kodu

Kod içerisinde şüpheli dinamik kod çalıştırma, dosya erişimi veya dış girdinin kontrolsüz kullanımı bulunuyor mu?

Sunucu yapılandırması

.htaccess, .user.ini ve benzeri yapılandırma dosyalarında beklenmeyen değişiklikler var mı?

Upload klasörleri

Kullanıcıların çalıştırılabilir dosya yüklemesine izin veriliyor mu?

Yetkilendirme

Yönetici paneline ve hassas işlemlere erişim doğru şekilde sınırlandırılmış mı?

Loglar

Şüpheli dosyalara veya endpoint'lere erişim gerçekleşmiş mi?

Bunların tamamı değerlendirilmeden bir projeyi “temiz” kabul etmek doğru değil.

Yapay Zekâya Körü Körüne Güvenmemek Gerekiyor

Burada yapay zekâ kullanımını tamamen reddetmek gibi bir yaklaşımımız yok.

Aksine, AI yazılım geliştirme sürecinde ciddi zaman kazandırabilir.

Kod yazabilir.

Kod açıklayabilir.

Hataları tespit etmeye yardımcı olabilir.

Refactoring yapabilir.

Dokümantasyon oluşturabilir.

Ancak ortaya çıkan kodun güvenli olduğunu otomatik olarak garanti etmez.

Bu nedenle özellikle canlı sistemlerde kullanılacak kodlar için son kontrol geliştiricide olmalı.

Bizim açımızdan doğru süreç şu:

AI ile geliştir → değişiklikleri karşılaştır → kaynak kodunu incele → güvenlik taraması yap → test et → sonra yayına al.

Böyle Bir Durumda Ne Yapılmalı?

Şüpheli dosyalar tespit edildiğinde projeyi doğrudan canlı sunucuya göndermek yerine öncelikle izole etmek gerekiyor.

Ardından;

  1. Şüpheli dosyalar karantinaya alınmalı.
  2. Projenin tamamı yeniden taranmalı.
  3. Değiştirilen dosyalar önceki sürümle karşılaştırılmalı.
  4. PHP dosyaları incelenmeli.
  5. .htaccess ve .user.ini gibi yapılandırma dosyaları kontrol edilmeli.
  6. Upload klasörleri incelenmeli.
  7. Yönetici hesapları ve erişim bilgileri gözden geçirilmeli.
  8. Sunucu ve uygulama logları kontrol edilmeli.
  9. Proje daha önce canlıda çalıştıysa olası yetkisiz erişimler araştırılmalı.
  10. Temiz olduğu doğrulanmış yeni bir sürüm hazırlanmalı.

Eğer proje daha önce internete açık bir sunucuda çalıştırıldıysa yalnızca şüpheli dosyaları silmek yeterli olmayabilir.

Asıl soru, bu dosyaların sisteme nasıl girdiği ve daha önce herhangi bir şekilde kullanılıp kullanılmadığıdır.

Bir Web-Shell Neden Ciddiye Alınmalı?

Web-shell, saldırganın web uygulaması üzerinden sunucuda belirli işlemler gerçekleştirmesine olanak sağlayabilecek bir yapı olabilir.

Riskin boyutu ise uygulamanın ve web sunucusunun sahip olduğu yetkilere bağlıdır.

Bu nedenle bir web-shell tespit edildiğinde yalnızca ilgili dosyayı silmek yerine olayın tamamı incelenmelidir.

Çünkü saldırganın başka dosyalar oluşturup oluşturmadığı, mevcut dosyaları değiştirip değiştirmediği veya sisteme farklı bir erişim yöntemi bırakıp bırakmadığı ayrıca araştırılmalıdır.

Ekran Görüntülerinde Ne Görülüyor?

Bu olayla ilgili elimizde sürecin bir bölümünü gösteren ekran görüntüleri bulunuyor.

İlk ekran görüntüsünde şüpheli dosyalar açıkça listeleniyor ve bunların web-shell/backdoor niteliğinde olduğu belirtiliyor.

İkinci görsel ise SafeCoreX tarafından olayın güvenlik farkındalığı açısından hazırlanmış görsel çalışmasını gösteriyor.

Bu görselleri paylaşmamızın amacı bir yapay zekâ aracını yalnızca suçlamak değil.

Amaç, AI destekli yazılım geliştirme süreçlerinde güvenlik kontrolünün neden atlanmaması gerektiğini gerçek bir örnek üzerinden göstermek.

AI Kullanan Geliştiriciler İçin Önemli Bir Kural

Yapay zekâya bir proje verdiyseniz, geri aldığınız dosyaları doğrudan canlı sunucuya yüklemeyin.

Önce:

İncele → Karşılaştır → Tara → Test Et → Güvenliği Doğrula → Yayına Al

Bu birkaç dakikalık veya saatlik ek çalışma gibi görünebilir.

Ancak güvenlik problemi yaşandıktan sonra sistemi incelemek ve temizlemek çok daha zor olabilir.

Sonuç

Bu olaydan çıkardığımız en önemli sonuç şu:

Yapay zekâ bir geliştiricinin yardımcısı olabilir, ancak güvenlik denetiminin yerine geçemez.

Bir proje çalışıyor olabilir.

ZIP dosyası sorunsuz açılabilir.

Web sitesi normal şekilde görüntülenebilir.

Fakat bunların hiçbiri projenin güvenli olduğunu tek başına göstermez.

Özellikle kullanıcı verilerinin bulunduğu, yönetici panellerinin çalıştığı ve internet üzerinden erişilebilen PHP projelerinde kod ve dosya değişiklikleri mutlaka kontrol edilmelidir.

Bizim yaşadığımız olay da bunun yalnızca teorik bir ihtimal olmadığını gösterdi.

Kodun kaynağı ne olursa olsun, çalıştırmadan önce kontrol edin.

Yapay zekâ kod üretebilir. Güvenli olup olmadığını doğrulamak ise hâlâ geliştiricinin sorumluluğundadır.

SafeCoreX Güvenlik Farkındalığı

Bu içeriğin amacı herhangi bir yapay zekâ aracını hedef göstermek değil.

Amacımız, AI destekli yazılım geliştirme süreçlerinde güvenlik kontrollerinin neden gerekli olduğunu gerçek bir vaka üzerinden anlatmak.

Çünkü temel kural değişmiyor:

Kontrol edilmemiş kod, güvenli kod değildir.

Yorumlar

Henüz yorum yapılmamış. İlk yorumu sen yap!