Weblate tehdit modeli

Scope: Core Weblate web application, its interactions with user browsers, backend components (web server, WSGI, database, datastore, Celery), and integration with external VCS.

Assumptions: Standard Weblate deployment with typical components (nginx/Apache, granian/Gunicorn/uWSGI, PostgreSQL, datastore, Celery) and user roles (Unauthenticated, Translator, Project Manager, Administrator).

Sistem açıklaması ve kapsamı

Weblate, Django üzerine kurulmuş açık kaynaklı internet temelli bir yerelleştirme platformudur. Çevirileri yönetmek için Git depolarıyla sıkı bir şekilde bütünleşir ve otomasyon, internet kancaları ve sürüm denetimi sistemi eşitlemesi için sürekli bütünleştirme/sürekli geliştirme tarzı özellikler sunar.

Varlıklar:

  • Gizlilik: Çeviri dizgeleri, sürüm denetimi sistemi bütünleştirmesi için API anahtarları/kimlik bilgileri, kullanıcı kimlik bilgileri (parolalar, iki adımlı doğrulama parolaları), kullanıcı kişisel verileri (e-posta adresi, ad), oturum kodları, denetim günlükleri, özel proje verileri.

  • Bütünlük: Çeviri dizgesi içeriği, sürüm denetimi sistemi depo bütünlüğü, proje ve bileşen yapılandırmaları, kullanıcı izinleri, denetim günlükleri.

  • Kullanılabilirlik: Weblate internet arayüzü, sürüm denetimi sistemi bütünleştirmesi, veri tabanı erişimi, arka planda görev işleme.

  • Özgünlük/İnkar etmeme: Çeviri işleme geçmişi, çeviriler için kullanıcı ilişkilendirmeleri, idari işlemlerin denetim günlükleri.

Kavramsal veri akışı çizimi

digraph translations { graph [fontname = "sans-serif", fontsize=10]; node [fontname = "sans-serif", fontsize=10, margin=0.1, height=0, style=filled, fillcolor=white, shape=note]; edge [fontname = "sans-serif", fontsize=10, dir=both]; "External user (browser)" -> "Web server (nginx/Apache)" [label="HTTPS"]; "Web server (nginx/Apache)" -> "Weblate application (WSGI, Celery)" [label="Internal API"]; "Weblate application (WSGI, Celery)" -> "Database (PostgreSQL)" [label="Database access"]; "Weblate application (WSGI, Celery)" -> "Datastore (Valkey/Redis)" [label="Key/value access"]; "Weblate application (WSGI, Celery)" -> "Internal VCS repository" [label="Filesystem access"]; "Weblate application (WSGI, Celery)" -> "External VCS repository" [label="Git/API"]; "Weblate application (WSGI, Celery)" -> "Logging (SIEM)" [label="GELF"]; }

Güven sınırları

  • İnternet ↔ Site sunucusu: İlk savunma hattı ile etkileşime giren herkese açık internet trafiği.

  • Site sunucusu ↔ Weblate uygulaması: Ters vekil sunucusu/site sunucusu ile uygulama mantığı arasındaki iletişim.

  • Weblate uygulaması ↔ Veri tabanı Kalıcı ve ön belleğe alınmış verilere erişen uygulama mantığı.

  • Weblate uygulaması ↔ Günlük kaydı: Günlük kayıtlarını oluşturan uygulama mantığı.

  • Weblate uygulaması ↔ İç sürüm denetimi sistemi deposu: Sürüm denetimi sistemi deposunun yerel kopyasıyla etkileşime giren uygulama mantığı.

  • Weblate uygulaması ↔ Dış sürüm denetimi sistemi deposu: Weblate dış kod barındırma platformlarına ulaşıyor.

  • Kimliği doğrulanmış kullanıcı ↔ Kimliği doğrulanmamış kullanıcı: İnternet uygulaması içinde farklı ayrıcalık düzeyleri.

Tehdit tanımlama

Bileşen/Etkileşim

STRIDE tehdit kategorisi

Tehdit açıklaması

Olası etki

Site sunucusu (nginx/Apache)

DoS

Hizmet reddi: Saldırganın site sunucusunu istek yağmuruna tutarak Weblate kopyasının kullanılmasını engellemesi.

Çevirinin uygunluğunun kaybolması.

Bilgilerin açığa çıkması

Yapılandırmanın açığa çıkması: Yanlış yapılandırılmış sunucunun hassas dosyaları (yapılandırma dosyaları, kişisel anahtarlar gibi) açığa çıkarması.

Kimlik doğrulama bilgilerinin açığa çıkması, iç mimari.

Kurcalama

Kötü amaçlı istek ekleme: Saldırganın HTTP üst bilgilerine veya istek gövdelerine kötü amaçlı veriler eklemesi.

Arka uç tarafından doğru şekilde işlenmez ise SQL enjeksiyonu, XSS veya diğer eklemeler için potansiyel.

Weblate uygulaması

Taklitçilik

Kullanıcı kimliğine bürünme: Saldırganın gerçek bir kullanıcının oturumuna erişim kazanması (oturumu ele geçirme, ele geçirilmiş kimlik doğrulama bilgileri gibi yollarla).

Yetkisiz çeviri, depoya erişim.

(WSGI/Celery)

Kurcalama

Yetkisiz çeviri değişikliği: Kötü niyetli kullanıcı veya kötüye kullanılan güvenlik açığı, çevirilerin, proje yapılandırmalarının veya sürüm denetimi sistemi bütünleştirme ayarlarının değiştirilmesine izin vermesi.

Yanlış çeviriler, bozulmuş yapım, sürüm denetimi sistemi internet kancaları ile kaynakların tükenmesi.

Kurcalama

VCS bütünleştirmesini değiştirme: Saldırganın Weblate ile sürüm denetimi sistemi arasındaki etkileşimi değiştirmesi (temizlenmemiş ise hazırlanmış depo adresleri ile kötü amaçlı komutlar ekleyerek kaynakların tükenmesine yol açmak gibi).

Hedef projelere kod ekleme, veri sızıntısı.

Reddetme

İlişkilendirilmemiş değişiklikler: Kötü amaçlı değişikliklerin, sorumlu kullanıcı veya sistem ile doğru ilişkilendirme olmadan yapılması.

Denetim ve hesap verilebilirlikte zorluk.

Bilgilerin açığa çıkması

Hassas verilerin sızması: SQL enjeksiyonu, güvenli olmayan API uç noktaları veya hatalar ile hassas verilerin (diğer kullanıcıların çevirileri, sürüm denetimi sistemi kimlik doğrulama bilgileri, sunucu bilgileri gibi) açığa çıkması.

Gizlilik ihlali, fikri mülkiyet hırsızlığı.

Bilgilerin açığa çıkması

Sürüm denetimi sistemi kimlik doğrulama bilgilerinin açığa çıkması: Sürüm denetimi sisteminin Weblate kimlik doğrulama bilgilerine (SSH anahtarları, kodlar) bir saldırgan tarafından erişilmesi.

Bütünleşik kod depolarına doğrudan erişim.

DoS

Kaynakların tükenmesi: Bir saldırgan tarafından tetiklenen aşırı arka plan görevleri veya verimsiz veri tabanı sorgularının sistemin yavaşlamasına veya çökmesine neden olması.

Weblate kullanılamaz.

Yetkilerin artırılması

Rolün yükseltmesi: Normal bir çevirmenin yönetici yetkileri kazanması.

Tüm sisteme sızılması.

Yetkilerin artırılması

Komut ekleme: Depo adreslerinde veya eklentilerinde hatalı giriş doğrulaması nedeniyle keyfi kodların yürütülmesi.

Sistemin ele geçirilmesi, veri sızıntısı.

Veri tabanı/Veri depolama alanı

Kurcalama

Verilerin bozulması: Veri tabanına doğrudan erişim, çeviri dizgelerinin, kullanıcı verilerinin veya yapılandırmanın değiştirilmesi.

Sistem arızası, veri bütünlüğü kaybı.

Bilgilerin açığa çıkması

Önemli verilere erişim: Veri tabanına/Veri depolama alanına izinsiz erişilmesi ile depolanan tüm verilerin (kimlik doğrulama bilgileri, çeviri belleği, kullanıcı profilleri) açığa çıkması.

Büyük veri ihlali.

DoS

Veri tabanı tükenmesi: Saldırganın veri tabanını veya veri depolama alanını sorgularla doldurması ile tüm belleği veya bağlantıları tüketmesi.

Weblate kullanılamaz.

Sürüm denetimi sistemi bütünleştirmesi

Kurcalama

Weblate tarafından kötü amaçlı işlemeler: Ele geçirilmiş Weblate ile kötü amaçlı değişikliklerin yukarı akış deposuna gönderilmesi.

Kötü amaçlı yazılımların/arka kapıların hedef projelere sokulması.

Reddetme

Sahte işlem ilişkilendirmesi: Weblate tarafından yanlış bir kullanıcı ile ilişkilendirilmiş değişikliklerin işlenmesi (bir yöneticinin bir çevirmen adına rızası olmadan bir işlem yapmaya zorlaması gibi).

Hesap verebilirlik sorunları.

Kullanıcı etkileşimi

Taklitçilik

Oltalama/sosyal mühendislik: Saldırganın, kullanıcıları Weblate veya ilişkili sürüm denetimi sistemi hesaplarının kimlik doğrulama bilgilerini açıklamaları için kandırması.

Hesap ele geçirilmesi.

(Site kullanıcı arayüzü)

Kurcalama

Siteler arası betik dosyası oluşturma (XSS): Çevirilere veya kullanıcı profillerine eklenen kötü amaçlı betik dosyalarının diğer kullanıcıların tarayıcılarında yürütülmesi.

Oturumun ele geçirilmesi, kimlik doğrulama bilgilerinin hırsızlığı, tahrifat.

Bilgilerin açığa çıkması

Tıklama çalma/Kullanıcı arayüzünü giydirme: Saldırganın Weblate üzerine kötü niyetli kullanıcı arayüzü ögeleri yerleştirerek kullanıcıları istenmeyen işlemler için kandırması.

Yetkisiz işlemler, veri değişiklikleri.

Bilgilerin açığa çıkması

Kullanıcı arayüzündeki hassas veriler: Yetkilendirme kusurları nedeniyle kullanıcı arayüzündeki hassas verilerin (başka bir kullanıcının e-posta adresi gibi) istenmeyen şekilde açığa çıkması.

Gizlilik ihlali.

Etki azaltma yöntemleri

  • Kimlik doğrulama ve yetkilendirme:
    • Güçlü parola ilkeleri. Ayrıntılı bilgi almak için: Parola güvenliği.

    • Zorunlu iki adımlı doğrulama. Ayrıntılı bilgi almak için: İki adımlı doğrulama.

    • Güçlü oturum yönetimi.

    • En az yetkiyi uygulamak için rol temelli erişim denetimi (RBAC) (çevirmenler yalnızca çevirileri düzenleyebilir, proje yapılandırmalarını değiştiremez gibi) Ayrıntılı bilgi almak için: Erişim denetimi.

    • Dış kimlik hizmeti sağlayıcılarla bütünleştirme (SAML, OAuth, LDAP). Ayrıntılı bilgi almak için: Kimlik doğrulama.

  • Giriş doğrulaması ve çıktı kodlaması:
    • Ekleme saldırılarını (SQL enjeksiyonu, komut ekleme, XSS) önlemek için tüm kullanıcı girişlerinin (formlar, API istekleri, sürüm denetimi sistemi adresleri) sıkı bir şekilde doğrulanması.

    • XSS saldırılarını önlemek için internet kullanıcı arayüzünde görüntülenen ve kullanıcı tarafından verilen tüm veriler için bağlama duyarlı çıktı kodlaması.

  • Sürüm denetimi sistemi bütünleştirmesi güvenliği:
    • Sürüm denetimi sistemi kimlik doğrulama bilgileri için en az yetki ilkesi (olabildiğinde salt okunur erişim, kodlar için sınırlı kapsamlar gibi).

    • Sürüm denetimi sistemi kimlik doğrulama bilgilerinin güvenli depolanması.

    • Sürüm denetimi sisteminden gelen tüm verilerin sıkı bir şekilde temizlenmesi ve doğrulanması (dosya adları, dal adları, görüntülenebilecek işleme iletileri gibi).

    • Git/Mercurial komutlarının güvenli yürütülmesi (kullanıcı denetimli giriş ile kabuk yürütülmesinin önlenmesi).

  • Veri koruması:
    • Duran hassas verilerin şifrelenmesi.

    • Aktarım sırasında verilerin şifrelenmesi (tüm HTTP/S ve sürüm denetimi sistemi iletişimi için TLS/SSL).

    • Veri tabanı sağlamlaştırma (Weblate kullanıcısı için en az yetki, güçlü parolalar).

  • Sistem sağlamlaştırma:
    • İşletim sistemi, Weblate ve tüm bağımlılıkların düzenli olarak yamanması.

    • İşletim sistemindeki Weblate kullanıcı hesabı için en az yetki ilkesi.

    • Ağı parçalara ayırma (veri tabanı ve veri depolama alanını herkese açık erişimden ayırmak gibi).

    • WAF (web uygulaması güvenlik duvarı) kullanımı.

  • Günlük kaydı ve izleme:
    • Güvenlikle ilgili tüm etkinliklerin (oturum açılışları, başarısız oturum açma girişimleri, izin değişiklikleri, kritik yapılandırma değişiklikleri, sürüm denetimi sistemi işlemleri) kapsamlı denetim kaydı.

    • Güvenlik olayları için merkezi günlük kaydı ve uyarı. Örnek: Graylog günlük yönetimi.

  • Güvenli geliştirme uygulamaları:
    • Güvenlik odaklı kod incelemeleri.

    • Statik uygulama güvenliği sınaması (SAST) ve Dinamik uygulama güvenliği sınaması (DAST). Ayrıntılı bilgi almak için: Weblate kaynak kodları.

    • Bağımlılık güvenlik açığı taraması. Ayrıntılı bilgi almak için: Bağımlılıklar.

    • Düzenli güvenlik denetimleri ve sızma testleri.

  • Hata işleme:
    • Hassas iç bilgileri açığa çıkarmayan genel hata iletileri.