5 puan yazan GN⁺ 2025-08-05 | 3 yorum | WhatsApp'ta paylaş
  • 3 Ağustos 2025’te DrawAFish! web sitesinde yaklaşık 6 saat süren bir büyük güvenlik ihlali meydana geldi
  • Yönetici parolası sızıntısı, kimlik doğrulaması eksik API ve JWT zafiyeti gibi temel güvenlik açıklarının birleşik şekilde saldırıya açık hale gelmesi tespit edildi
  • Sonuç olarak tüm kullanıcı adları küfürlü ifadelerle değiştirildi, rahatsız edici çizimler onaylandı ve aynı anda mevcut güvenli çizimlerin silinmesi gerçekleşti
  • Manuel kurtarma, kimlik doğrulama mantığının düzeltilmesi ve yedeklerin doğrulanması gibi adımlarla sorun giderildi
  • Temel ders, hızlı geliştirme ("vibe-coding") ve test/kod inceleme eksikliğinin güvenlikte ciddi sonuçlar doğurabileceğiydi

DrawAFish.com Genel Bakış ve 3 Ağustos 2025 Olay Özeti

  • DrawAFish.com kullanıcıların kendi balıklarını çizip diğer kullanıcılarla birlikte bir akvaryumda yüzdürüp eğlenebileceği bir web sitesidir
  • 1 Ağustos 2025’te Hacker News’te birinci sıraya yükselerek büyük ilgi gördü. Geliştirici, Copilot gibi araçlarla özellikleri hızla üreten bir “vibe-coding” yaklaşımı benimsedi
  • Ancak 3 Ağustos 2025’in şafağında ciddi bir güvenlik ihlali meydana geldi
  • Yaklaşık 6 saat boyunca tüm kullanıcı adları kaba ifadelerle değiştirildi, uygunsuz çizimler onaylandı ve genel bir kaos yaşandı
  • Sonuçta bir yönetici olaydan manuel olarak geri döndü

Güvenlik Açıklarının Detaylı Analizi

1. Geçmişte Sızdırılmış 6 Haneli Yönetici Şifresi

  • Geliştirici başlangıçta kendi çocukluk dönemi kullanıcı adı ve şifresini (6 hane) yönetici hesabında kullanmıştı
  • Bu parola, Neopets gibi sitelerin veri sızıntılarıyla zaten internette yayıldığı için herkese açıktı
  • Geliştirici daha sonra Google Auth’a geçtiyse de eski parolayı kaldırmadı ve zafiyet saldırgana karşı açık kaldı
  • Saldırgan, sızdırılmış bilgileri kullanarak yönetici kimlik doğrulamasından geçti ve hakaret içerikli çizimlerin onaylanması ile normal çizimlerin silinmesi gibi kötü niyetli eylemler yaptı

2. Kimlik Doğrulaması Olmayan Kullanıcı Adı Değiştirme API’si

  • Profil backend’i geliştirirken “hızlı geliştirme” adına kimlik doğrulaması kontrolü olmadan kullanıcı adı değiştirme API’si yazıldı
  • Bu sayede pratikte herkes herhangi birinin kullanıcı adını değiştirebilir hale geldi
Reklam

3. Yetersiz JWT Doğrulaması

  • JWT tabanlı kimlik doğrulamada, token ile userId/e-posta eşleşmesi kontrol edilmeden yönetici işlemlerine izin verecek şekilde uygulandı
  • Yani saldırganın elinde yalnızca yönetici doğrulama bilgileriyle alınmış bir token varsa, bu tokenla herkese yönetici yetkisiyle işlem yapılabiliyordu
  • İlginç şekilde, bir Hacker News kullanıcısı bu zafiyeti kullanarak saldırgandan önce uygunsuz içeriği silip acil müdahaleye katkı sağladı

Kurtarma Süreci

  • Geliştirici sabah saat 07:45 civarında durumu fark ederek masaüstünde anında müdahaleye başladı
  • Firebase yedekleri yapılandırılmadığı için yedekleme altyapısına güvenilemedi ve kod hızlıca değiştirerek kimlik doğrulamanın zorunlu olması sağlandı
  • Tüm moderasyon loglarını izleyerek kötü niyetli eylemleri geri almak için bir betik geliştirildi (bu betik de yine vibe-coding ile yazıldı)
  • Acil durumda üçüncü taraf bir hesabın (bir Hacker News kullanıcısının) yönetici yetkisine erişimi de engellendikten sonra, kod tabanı güvenlik refaktörüne dair geri bildirim alındı ve ek yamalar yapıldı

Geliştirme Kültürü ve Dersler

  • Geliştirici, “vibe-coding”, yani hızlı prototipleme ve minimum inceleme kültürünün eğlenceli ve üretken bir süreç sunduğunu, ancak pratikte ciddi güvenlik açıklarına dönüşebileceğini yaşayarak gördü
  • LLM (Copilot) hızlı kod üretiminde çok faydalı olsa da, kod kalitesi ve güvenlik sorumluluğu yine geliştiricinin elindedir
  • Test, kimlik doğrulama mantığı, kod inceleme gibi temel güvenlik süreçlerinin atlanması, küçük projelerin bile dış saldırılara karşı son derece kırılgan olabileceğini kanıtladı

Sonuç ve İçgörüler

  • DrawAFish.com örneği, gerçek servis işletiminde sıkça göz ardı edilen temel güvenlik önlemlerinin önemini gösteriyor
  • Açık kaynak araçlarına ve hızlı geliştirme araçlarına bel bağlansa da, test, kimlik doğrulama, kod inceleme ve parola yönetimi gibi temel konular mutlaka kontrol edilmelidir
  • Beklenmedik ölçekte dikkat (ör. Hacker News üst sıralar) artınca, saldırı yüzeyi ve risk hızlıca genişleyebilir
  • Olay sonrasını şeffaf biçimde belgelemek, benzer başlangıç aşamasındaki girişimcilere veya bireysel geliştiricilere gerçekçi güvenlik dersleri sunuyor

3 yorum

 
crawler 2025-08-06

vibe-coded'in "S"si, "Security"nin kısaltmasıdır.

 
wkbae 2025-08-06

İlginç bir şekilde, bir Hacker News kullanıcısı bu güvenlik açığını kullanarak saldırgandan önce uygunsuz verileri silerek acil müdahaleye katkı sağladı.

 
GN⁺ 2025-08-05
Hacker News yorumları
  • Ben de hızlı çalışmanın gerçekten çok eğlenceli olduğunu düşünüyorum; kod inceleme gibi şeyler olmadan doğrudan push etmek daha keyifli. Ama bu postmortemi görünce yan projelerimin neden bu kadar sık yarıda kaldığını anladım: eninde sonunda sıkıcı gerçek işlere dönüyorum ve o noktada takılıyorum.

  • Bu işin Firebase'le olup olmadığını merak ettim: yalnızca ücretsiz katmanı mı sürekli kullandım, yoksa biri sabah uyandığımda beş haneli bir fatura bırakacak kadar kasıtlı bir saldırı mı yaptı?

  • Ben Slurpyfish olayını doğrudan yaşamış "şanslı" kişilerdense biriyim. Güvenlik tarafında çalıştığım için durumu çok açık bulup gülümsüyorum ama HN'de buna gerçekten yardım edecek birinin yakın zamanda çıkacağını biliyordum. Bu kadar ayrıntılı belgelemeyle paylaşılan bir vibe-coded projenin postmortem olması da çok güzeldi. Son zamanlarda üretimde sadece 'vibe-coded' kodu (IR, Olay Müdahalesi) işimde epey görüyorum; ama bunu bu kadar küçük bir projede bile bu kadar iyi düzenlenmiş görmek etkileyici.

    • İnsanlar sorunun sadece "vibe coding" olduğunu söylüyor ama gerçekte en az iki problem—"test için admin hesabı bırakmak" ve "token doğrulanıp çapraz doğrulama yapılmaması"—AI ya da vibe coding olmasa da sıkça olur.
    • Swastika formunda bir balığın ("Swastikaf") ekran görüntüsü olsa iyi olurdu; gerçek örneğini göremediğim için üzüldüm.
  • Bu postmortem özellikle bir vibe-coded uygulama olduğu için daha da ilgi çekici geldi; acaba Lego House'daki balık yapma sergisinden ilham almış olabilir mi? Geçenlerde orayı ziyaret etmiştim, bir balığın benimkilerle birlikte yüzdüğünü görmek gerçekten bağımlılık yapıcıydı. Lego House Build-a-Fish YouTube videosu

    • Bu sergiyi bilmiyordum; St. Louis Aquarium'daki boyanmış balıkların gerçekten yüzüyormuş gibi görünmesiyle ve 2016 civarında Google'ın Quickdraw'ından esinlenildiği bilgisiyle.
  • Birinin güvenlik açığını kullanarak gerçek bir saldırıyı engellemeye çalışması gerçekten şaşırtıcı.

    • Eskiden de böyle durumlar olmuştu; bazı solucan/exploit’ler zafiyeti kendileri yamayarak kapatmıştı.
    • Birkaç yıl önce FBI'ın EternalBlue exploit’ini durdurmak için benzer şekilde hareket ettiğine dair bir yazı okumuştum (exploit adını tam hatırlamayabilirim).
    • İnsanlar gerçekten inanılmaz birer şey.
  • vibe-coded’in "S" harfi Security’nin kısaltmasıdır.

    • "S" bir yılan... ya da bir ejderhanın kısaltması olabilir.
  • Tamamen yeni bir fikir geliştirmek, doğrudan inşa etmek, çok şey öğrenmek ve başarısız kaldığında profesyonelce utanmak: işte asıl profesyonel budur. Eğer 100 bin dolar da kaybetmemiş, ağın çökmesine izin vermemiş ve işini kaybetmemişsen bir yıl sonra bunları gülerek anımsarsın.

  • Şu an o sitede bir swastika balığı vardı; biri balık biçiminin içine koyarak filtreyi atlatmıştı sorunlu görsel bağlantısı, şu an silinmiş.

    • "Balls" yazılı bir balık da vardı buradan görebilirsin, bence bu kadar da sorunlu değil.
    • O balıkta neredeyse Buda’nın eli hissediliyor.
  • Şu anda kimlik doğrulama olmadan herhangi bir balığa oy verilebiliyor (IP başına dakikada en fazla 20), POST ile şu endpoint kullanılabiliyor Oy API linki {"fishId":"xxxx","vote":"up"}

    • Bunun için bu şekilde tasarladım; bazı balıkları biraz, bazılarını çok sevmenizi istedim, böylece istediğiniz gibi beğeni/olumsuz oy verebiliyorsunuz.
  • Vibe-coded bir web sitesi için postmortem bırakılmış olması gerçekten çok iyi; birçok kişi teknolojiyi aşırı ciddiye alırken bu bakış açısı çok daha hafif ve eğlenceli, küçük bir yan proje açısından da gerçekten ilginç ve anlamlı.