GeckoFlag, kendi sunucunuzda çalışan bir yazılımdır. Proje bilgilerinizi gönül rahatlığıyla emanet edebilmeniz için geliştirici her sürümde güvenlik testlerini bizzat yürütür ve bu testlerin kapsamını ve sonuçlarını bu sayfada yayımlar.
Bu sayfa, geliştiricinin kendi yaptığı testlerin kaydıdırBağımsız bir kuruluş tarafından verilmiş bir sertifika veya yapılmış bir denetim değildir. Neleri test ettiğimizi de birlikte yayımladığımız için, GeckoFlag'i kullanmaya karar verirken bu bilgilerden yararlanabilirsiniz.
- Tasarımdaki önlemler
- Her sürümde yapılan testler
- En son sürümün test sonuçları
- Test edilmeyen alanlar
- Güvenlik açığı bildirme
- Dağıtım dosyalarının doğrulanması
- Önerilen ayarlar
Tasarımdaki güvenlik önlemleri
GeckoFlag aşağıdaki önlemleri standart olarak içerir. Hepsi herhangi bir ayar gerektirmeden etkindir.
Parola koruması
Parolalar düz metin olarak saklanmaz; bcrypt ile özetlenerek (hash) saklanır. Parola sıfırlama belirteçleri de özetlenerek saklanır ve parola sıfırlama talebi sayısı sınırlandırılır.
Oturum açma denemelerinin sınırlandırılması
Başarısız oturum açma denemeleri hem hesap bazında hem de bağlantı kaynağı IP adresi bazında sayılır; belirli bir sayı aşıldığında oturum açma geçici olarak kısıtlanır. Bu, kaba kuvvet saldırılarını ve çok sayıda hesabı hedef alan saldırıları engeller.
CSRF koruması
Tüm form gönderimlerinde bir belirteç doğrulanır ve harici sitelerden kullanıcı adına yapılan sahte işlemler engellenir.
XSS koruması
Görevler, yorumlar, Wiki ve notlar gibi zengin metin içerikleri, HTML Purifier ile yalnızca izin verilen etiketler bırakılarak kaydedilir ve görüntülenir. Bağlantılarda yalnızca http ve https'ye izin verilir. Yapay zekânın ürettiği metinler de kaydedilmeden önce aynı işlemden geçirilir.
SQL enjeksiyonu koruması
Veritabanı işlemlerinde CakePHP 5'in ORM'si ve hazırlanmış ifadeler (prepared statements) kullanılır.
Host üst bilgisinin doğrulanması
Parola sıfırlama, davet ve bildirim e-postalarındaki bağlantılar, isteğin Host üst bilgisine göre değil, kayıtlı alan adına göre oluşturulur. Sahte bir Host üst bilgisiyle e-postadaki bağlantılar harici bir adrese yönlendirilemez.
Dosyaların saklanması
Görev görselleri ve proje dosyaları genel klasörün dışında saklanır ve yalnızca görüntülemek isteyen kişinin projenin üyesi olduğu doğrulandıktan sonra sunulur. PHP gibi çalıştırılabilir uzantılara sahip dosyalar kabul edilmez.
API anahtarının şifrelenmesi
Yapay zekâ özellikleri için kullanılan Claude API anahtarı şifrelenerek veritabanında saklanır.
Claude entegrasyonu API token’ları
Claude entegrasyonu varsayılan olarak kapalıdır ve yalnızca bir yönetici özelliği açıp her kullanıcı için izin verdiğinde kullanılabilir. Her API token’ının yalnızca karma (hash) değeri saklanır ve bir son kullanma tarihi belirlenebilir. Parola değiştirildiğinde token’lar geçersiz olur. API de ekranlarla aynı yetkileri kontrol eder; salt okunur token’lar hiçbir şeyi değiştiremez.
IP adresi kısıtlaması
Yöneticiler, erişime izin verilen IP adreslerini sınırlandırabilir.
Kurulum sihirbazının kapatılması
Kurulum tamamlandıktan sonra kurulum sihirbazı ekranına erişilemez.
Özel klasörlerin korunması
Yapılandırma, günlük ve kaynak kod gibi klasörlere doğrudan erişim Apache'de standart olarak engellenir (Nginx için önerilen ayarlara bakın).
Güncelleme öncesi otomatik yedekleme
Yazılım güncellemesinden önce otomatik olarak bir yedek oluşturulur.
Güncelleme dosyalarının imza doğrulaması
Resmî güncelleme dosyaları geliştiricinin dijital imzasını (Ed25519) taşır. Güncellemeden önce imza ve tüm dosyaların içeriği karşılaştırılır; değiştirilmiş dosyalar veya resmî olmayan güncelleme dosyaları uygulanmaz.
Görsel yüklemelerinin doğrulanması
Profil fotoğrafı, küçük resim ve logo gibi görsellerin biçimi dosyanın içeriğine göre belirlenir ve görseller rastgele bir dosya adıyla kaydedilir. Görsellerin saklandığı klasörlerden görsel dışındaki dosyalar sunulmaz (Apache'de). SVG kabul edilmez.
Güvenlik üst bilgileri
Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy ve Permissions-Policy üst bilgileri gönderilerek tıklama korsanlığı (clickjacking) ve bilgilerin harici sitelere sızması önlenir. HTTPS ile çalıştırıldığında Strict-Transport-Security de gönderilir; böylece tarayıcı her zaman HTTPS ile bağlanır.
Oturum yönetimi
Her oturum açışta oturum yeniden oluşturulur. Yetki değişiklikleri, hesap silme ve parola değişiklikleri, oturumu açık olan ekranlara da hemen yansır. E-posta adresini ve parolayı değiştirmek için mevcut parolanın girilmesi gerekir.
Her sürümde yapılan güvenlik testleri
Yeni bir sürüm yayımlanmadan önce aşağıdaki testler yapılır. Testler, canlı ortamla aynı yapılandırmaya sahip bir test ortamında yürütülür; yayındaki hizmetlere veya müşterilerimizin sunucularına uygulanmaz. En son sürümde yapılanlar “En son sürümün test sonuçları” bölümünde yer almaktadır.
| Kategori | Test içeriği | Kullanılan araçlar ve standartlar | Sıklık |
|---|---|---|---|
| Bağımlı kütüphaneler | Kullanılan kütüphanelerde bilinen güvenlik açığı olup olmadığını kontrol etme ve kullanılan kütüphanelerin listesini (SBOM) oluşturma | composer audit, OSV-Scanner, CycloneDX | Her sürümde |
| Statik analiz | Girdilerin tehlikeli işlemlere ulaştığı yolların (XSS, SQL enjeksiyonu vb.) kaynak koddan tespit edilmesi | Psalm (taint analizi), PHPStan (seviye 5), Semgrep | Her sürümde |
| Gizli bilgi sızıntısı | Kaynak kodda veya dağıtım dosyalarında parola ya da API anahtarı bulunup bulunmadığı | gitleaks | Her sürümde |
| Dinamik tarama | Yönetici ve normal kullanıcı olarak oturum açılmış durumda gerçek saldırı istekleri gönderilerek tepkilerin kontrol edilmesi | Nuclei | Her sürümde |
| Yetki testleri | Üyesi olunmayan projelerin görevlerine, dosyalarına ve notlarına, URL'deki ID değiştirilerek erişilip işlem yapılıp yapılamadığı | Otomatik testler (PHPUnit), manuel kontrol | Her sürümde |
| Dosya yükleme | Çalıştırılabilir dosyaların, görsel gibi gösterilen dosyaların, dosya yolunu manipüle eden ZIP dosyalarının vb. reddedilip reddedilmediği | Kod incelemesi, manuel kontrol | Her sürümde |
| XSS | Görev açıklamalarına, yorumlara, Wiki'ye ve yapay zekânın ürettiği metinlere saldırı dizeleri girilerek betiklerin çalışmadığının kontrol edilmesi | Kod incelemesi, manuel kontrol | Her sürümde |
| Sunucu yapılandırmasına göre kontrol | Apache ve Nginx'te ve genel klasörün farklı yerleşimlerinde yapılandırma dosyalarına ve günlüklere doğrudan erişilip erişilemediği | Manuel kontrol | Her sürümde |
| Claude entegrasyonu uzantısı | Uzantının kullandığı kütüphanelerdeki bilinen güvenlik açıkları, API token’ının işlenmesi ve isteklerin gönderildiği yerlere ilişkin kısıtlamalar | npm audit, gitleaks, kod incelemesi | Her uzantı sürümünde |
| Kontrol listesiyle öz değerlendirme | Kimlik doğrulama, oturum, girdi doğrulama, hata işleme vb. konuların madde madde kontrol edilmesi | OWASP ASVS 5.0 Seviye 1 referans alınarak, IPA (Japonya): “How to Secure Your Website” | Her ana sürümde |
| Resmî web sitesi | geckoflag.com'un HTTPS yapılandırması ve güvenlik üst bilgileri | SSL Labs, Mozilla Observatory | Ayda bir |
“Yüksek” veya “Orta” önem derecesinde bir sorun bulunursa, düzeltilip yeniden test edilene kadar sürüm yayımlanmaz. “Düşük” düzeydeki sorunlar incelenir ve ya düzeltilir ya da etkisinin olmama nedeni kayda geçirilir.
Bağımlı kütüphanelerin güncellenmesine ilişkin politika
GeckoFlag'in kullandığı kütüphanelerdeki (CakePHP vb.) bilinen güvenlik açıkları her sürümde kontrol edilir. GeckoFlag'i etkileyen bir güvenlik açığı bulunursa, düzeltilmiş sürüm aşağıdaki süreler hedeflenerek yayımlanır.
- Önem derecesi “Kritik” ve “Yüksek”: Kamuya duyurulmasından itibaren 14 gün içinde
- Önem derecesi “Orta”: Kamuya duyurulmasından itibaren 30 gün içinde
- Önem derecesi “Düşük”: Bir sonraki sürümde (en geç 90 gün içinde)
GeckoFlag'in kullanım şeklinde etkisi olmayan güvenlik açıkları için de bir sonraki sürümde düzeltilmiş sürüme güncelleme yapılır. Geliştirme amaçlı kütüphaneler dağıtım dosyalarına dahil edilmez.
En son sürümün test sonuçları: v1.11.0
Bu testte v1.10.0’dan bu yana yapılan değişiklikler (Claude entegrasyonu, zengin metinde yazı ve arka plan renkleri ile ayırıcılar vb.) incelendi; ayrıca önceki sürümlerden beri var olan sorunlar da düzeltildi. v1.10.0 veya daha eski bir sürüm kullanıyorsanız v1.11.0’a güncellemenizi öneririz.
| Test | Kullanılan araçlar (sürüm) | Bulgular (Yüksek / Orta / Düşük) | Yapılan işlem |
|---|---|---|---|
| Bağımlı kütüphaneler | GitHub Advisory Database, FriendsOfPHP security-advisories (2026-10-28 itibarıyla veriler; 89 paket) | 0 / 0 / 0 | Dağıtım dosyalarındaki kütüphanelerde bilinen bir güvenlik açığı yoktur. Yalnızca geliştirmede kullanılan kütüphanelerdeki bilinen açıklar v1.11.0’da güncellenerek giderildi (geliştirme kütüphaneleri dağıtım dosyalarına dahil edilmez) |
| Statik analiz ve kod incelemesi | Psalm 5.26.1 (taint analizi), PHPStan 2.1.17 (seviye 5), Semgrep 1.182.1, manuel kod incelemesi (v1.10.0’dan bu yana yapılan değişiklikler: Claude entegrasyonunun API’si ve token’ları, zengin metin, oturumun açık kalması, yazılım güncellemeleri; ayrıca tüm ekranlardaki bağlantı çıktısı) | 1 / 1 / 3 | “Yüksek” ve “Orta” bulgular ile 2 “Düşük” bulgu v1.11.0’da düzeltildi. Kalan 1 “Düşük” bulgu yalnızca kullanıcının kendi işlemleriyle ortaya çıkar ve etkisinin sınırlı olduğu doğrulandı. “Yüksek” bulgu önceki sürümlerde de mevcuttu |
| Gizli bilgi sızıntısı | gitleaks 8.24.2 | 0 / 0 / 0 | Hem kaynak kod hem de dağıtım dosyaları kontrol edildi. 2 tespitin ikisi de yanlış pozitifti (harici kütüphanelerdeki örnek dizeler vb.) |
| Düzeltmelerin doğrulanması | Test ortamında (PHP 8.3, MariaDB 10.11, Apache 2.4, Nginx 1.24, Chromium) çalışma kontrolü | — | Her bulgu için, düzeltme öncesindeki sorunun artık yeniden oluşmadığı doğrulandı |
| Dinamik tarama | Nuclei v3.11.1 (şablonlar v10.5.1); oturum açmadan, yönetici ve üye olarak yapıldı | 0 / 0 / 0 | Sorun yok |
| Yetki testleri | PHPUnit 12.5 (454 otomatik test. Önceki kontrollere ek olarak, Claude entegrasyonu API’sinin token olmadan, salt okunur token ile, izin verilmeyen kullanıcılardan ve özellik kapalıyken gelen istekleri reddettiği ve kullanıcının üyesi olmadığı projelere asla ulaşmadığı doğrulandı) | 0 / 0 / 0 | Sorun yok |
| Sunucu yapılandırmasına göre kontrol | Manuel (Apache 2.4 ve Nginx 1.24’te genel klasörün 2 farklı yerleşimi; yapılandırma dosyaları, günlükler, oturumlar, saklanan dosyalar vb. için 39 URL) | 0 / 0 / 1 | v1.11.0’da düzeltildi: eski sürümlerin dosya klasörüne (files) doğrudan erişim artık Apache’de de tamamen reddediliyor. Başka sorun yok |
| Kontrol listesi | OWASP ASVS 5.0 Seviye 1 (70 madde) | Kapsamdaki 56 maddeden 50'si karşılanıyor | Bu sefer gözden geçirilmedi (v1.10.0 sonucu geçerliliğini koruyor) |
| Claude entegrasyonu uzantısı | npm audit, gitleaks 8.24.2, mcpb validate, manuel kod incelemesi (geckoflag-1.0.0.mcpb) | 0 / 0 / 0 | Dağıtım dosyasındaki kütüphaneleri etkileyen bilinen bir güvenlik açığı yoktur. API token’ının nasıl işlendiği ve isteklerin gönderildiği yerlere ilişkin kısıtlamalar (yalnızca HTTPS, yönlendirmeler izlenmez) kontrol edildi |
Önceki sürümler dahil tüm sürümlerin test sonuçları “Önceki test sonuçları” sayfasında yer alır.
Test edilmeyen alanlar
Yukarıdaki testlerin aşağıdaki sınırlamaları vardır. GeckoFlag'i kullanmayı değerlendirirken lütfen bunları da göz önünde bulundurun.
- Bağımsız bir test yaptırılmamıştır. Dış uzmanlar tarafından kaynak kod incelemesi veya sızma testi şu anda yapılmamaktadır.
- Sizin sunucu ortamınız test kapsamı dışındadır. Güvenlik düzeyi; işletim sistemi, web sunucusu, PHP ve veritabanının yapılandırmasına ve güncellik durumuna göre büyük ölçüde değişir.
- Tüm barındırma ortamlarında doğrulama yapılmamıştır. Test edilen yapılandırmalar, “En son sürümün test sonuçları” bölümünde listelenenlerle sınırlıdır.
- Harici hizmetler kapsam dışındadır. Yapay zekâ özelliklerinin kullandığı Anthropic API'si, Claude entegrasyonunun kullandığı Claude masaüstü uygulaması veya e-posta gönderim sunucuları gibi hizmetlerin güvenliği, ilgili sağlayıcılarına bağlıdır.
- Otomatik araçların tespit edemediği sorunlar. Araçların tespit etmediği türdeki sorunlar (iş mantığındaki hatalar vb.) manuel testlerle tamamlanmaktadır, ancak her şeyin kapsanması mümkün değildir.
Bir güvenlik açığı bulursanız
GeckoFlag'de güvenlik açığı olduğunu düşündüğünüz bir sorun bulursanız, bunu herkese açık bir ortamda paylaşmak yerine lütfen doğrudan aşağıdaki iletişim kanalına bildirin. Tüm bildirimler doğrudan geliştirici tarafından incelenir.
Bildirim kanalı: İletişim formunda talep türü olarak “Güvenlik açığı bildirimi”ni seçerek bize ulaşın
Bildiriminizde yer almasını istediğimiz bilgiler
- Etkilenen sürüm ve sorunun bulunduğu ekran veya özellik
- Yeniden oluşturma adımları (mümkün olduğunca)
- Olası etkiler
- Kullandığınız sunucu ortamı (PHP, web sunucusu vb.)
Ricamız
- Doğrulamayı yalnızca kendi yönettiğiniz bir ortamda yapın; başkalarının işlettiği GeckoFlag kurulumlarına veya geckoflag.com'a yönelik saldırı niteliğinde işlemler yapmayın.
İsterseniz, düzeltilmiş sürümün güvenlik bilgilerinde teşekkür olarak adınıza yer veririz.
Dağıtım dosyalarının SHA-256 değerleri
İndirdiğiniz dosyanın resmî dosyayla aynı olup olmadığını aşağıdaki değerle karşılaştırarak doğrulayabilirsiniz.
| Dosya | SHA-256 |
|---|---|
| GeckoFlag - 1.11.0.zip | 33354ac588c4cb4de2953c3c26a484953c2bb886f38196ba4bcf4fe629648399 |
| geckoflag-1.0.0.mcpb | 44f2c6dfc9f437856d0680920a327820d757a14116064faa6e46ad8a961d0747 |
Doğrulama yöntemi: Windows'ta PowerShell'de Get-FileHash dosya_adı -Algorithm SHA256, macOS ve Linux'ta shasum -a 256 dosya_adı komutunu çalıştırın.
Güvenli kullanım için önerilen ayarlar
GeckoFlag'in güvenliği, kurulduğu sunucunun ayarlarına da bağlıdır. Aşağıdaki ayarları öneriyoruz.
- Dosyaları yükledikten sonra kurulumu hemen tamamlayın: Kurulum tamamlanana kadar, URL'yi bilen herkes kurulum ekranını açabilir. Dosyaları yerleştirdikten sonra kurulumu hemen tamamlayın.
- HTTPS ile çalıştırın: Oturum açma bilgileri ve proje içerikleri şifrelenerek iletilir. Birçok paylaşımlı hosting hizmetinde ücretsiz SSL sertifikası kullanılabilir. Bir kez HTTPS ile açıldıktan sonra tarayıcı o adrese sonraki 1 yıl boyunca HTTPS ile bağlanır (v1.10.0 ve sonrası). HTTPS kullanmayı bırakmayı planlıyorsanız buna dikkat edin.
- Genel klasörü (belge kökü) webroot olarak ayarlayın: Böylece yapılandırma dosyaları ve günlükler web üzerinden görülemeyen bir konumda kalır.
- Nginx kullanıyorsanız ayarları ekleyin: Nginx'te .htaccess çalışmaz. Ayrıca özel klasörlere erişimi engelleyin ve görsel yükleme klasöründe (webroot/img) PHP'nin çalışmamasını sağlayın. Yapılandırma örneği için kılavuza (Kurulum adımları) bakın.
- En son sürüme güncelleyin: Güvenlik düzeltmeleri en son sürüme dahil edilerek sunulur. Güncelleme dosyalarını resmî siteden edinin ve SHA-256 değerini doğrulayın. v1.10.0 ve sonrasında, güncellemeden önce imza da otomatik olarak doğrulanır.
- PHP ve veritabanını desteklenen sürümlerde tutun: Desteği sona ermiş PHP sürümleri için düzeltme yayımlanmaz.
- Yönetici hesaplarını koruyun: Uzun ve tahmin edilmesi zor parolalar kullanın ve yönetici yetkisini yalnızca ihtiyacı olan kişilere verin.
- Şirket içi kullanımda IP kısıtlamasını kullanın: “Ayarlar” bölümünden erişebilecek IP adreslerini sınırlandırabilirsiniz.
- Düzenli olarak yedek alın: Veritabanını ve yüklenen dosyaları sunucudan ayrı bir yerde saklayın.