qub'da güvenlik

Yürürlük tarihi: 23 Eylül 2026 Sürüm: 1.1 — uygulama-doğruluk incelemesi


Araştırmacılar için — hızlı başvuru:

Tüm detaylar §12 (Koordine Edilmiş Açıklama) kısmında bulunmaktadır.


Biz Kimiz

qub.social, VSPRY AUSTRALIA PTY LIMITED (ABN 41 631 026 330), Level 38, 71 Eagle Street, Brisbane QLD 4000, Avustralya tarafından işletilmektedir. "qub", "biz", "bize" ve "bizim" ifadeleri bu kuruluşu ifade eder.

Güvenlik iletişimi: [SECURITY] konu öneki ile support@qub.social.


1. Yaklaşımımız

qub güven altyapısıdır. Güvenli değilse ürün değersizdir, bu yüzden güvenlik bir özellik değil — alt yapıdır. Bu sayfa, somut terimlerle, yığınımızı, verilerinizi ve mühürlü içeriğin bütünlüğünü nasıl koruduğumuzu açıklar.

Doğrulanabilir bir zamansal taahhüdün değeri, internetin daha fazlası makine tarafından üretildikçe artar. Doğrulanmış bir depolama işlemi veya şeffaflık günlüğü çivisi, şifreli metnin en geç blok zamanında mevcut olduğunu gösterebilir; mühürlenmiş eser ise içeriğin bütünlüğünü, drand-turu bağlamını ve herhangi bir yazarlık imzasını ayrı olarak kanıtlar. Bu iddiaları ayrı tutmak, bu sayfanın tabi tutulduğu standarttır.

Bize güvenmenizi istemiyoruz. Bize gereken güvenin mümkün olduğunca küçük olmasını tasarlıyoruz ve güvenin gerekli olduğu yerde tam olarak neyin güvenildiğini ve neden olduğunu açıklıyoruz.

Her tasarım kararını yönlendiren üç ilke:


2. Tehdit Modeli

2.1 Neye Karşı Korunuyoruz

2.2 Korunamadığımız Şey

Sınırlarımız konusunda dürüstüz. qub aşağıdakilere karşı savunma yapamaz:


3. İstemci Tarafı Kriptografi

Varsayılan tarayıcı mesaj akışında, içerik şifrelemesi yükleme isteğinden önce gerçekleşir. İki açık yol farklıdır: Builder /api/v1/seal kasıtlı olarak düz metni ve çağrı yapanın oluşturduğu K'yı Worker'a bellek içinde mühürleme için gönderir ve anlaşma hazırlama/ortak imzalama, imzalanmış yapılandırılmış anlaşmayı hizmete gönderir, böylece ikili öğeyi tamamlayabilir. Hiçbir istisna, tarayıcı yolundaki uçtan uca şifreleme ile karıştırılmamalıdır.

3.1 Zaman Kilidi Şifrelemesi

qub tlock kullanır — gelecekteki bir drand beacon turuna anahtarlanmış kimlik tabanlı şifreleme. Şifreleme, drand ağının kamu anahtarını kullanarak tarayıcınızda ilerler; şifre çözme anahtarı, hedef tura ulaşıldığında yalnızca drand ağı tarafından kamuya açık olarak serbest bırakılır. Hiç kimse, bizim de dahil olmak üzere, şifre çözme anahtarını önceden yeniden oluşturamaz.

quicknet zincirini hedefliyoruz:

quicknet zincirinin kamu anahtarı ve genesis zamanı istemciye derlenmiştir. Çalışma zamanında zincir parametrelerini getirmeyiz, bu yüzden kötü niyetli bir düğüm kontrol ettiğimiz bir zinciri değiştiremez.

3.2 Simetrik Şifreleme

tlock şeması bir AES-256-GCM içerik anahtarını sarar. AES-GCM kimlik doğrulamalı şifreleme sağlar: şifreli metindeki tek bir bit çevrilirse, sessizce bozulmuş düz metin üretmek yerine şifre çözme başarısız olur.

3.3 Kanonik Serileştirme

Protokol yapıları, deterministik CBOR (RFC 8949 §4.2 çekirdek deterministik kodlama) kullanılarak serileştirilir. Aynı mantıksal yapıyı kodlayan iki uygulama, özdeş CBOR üretir. Tam mühürlenmiş yükler değil deterministik: tlock ve dış-sarma şifrelemesi taze rastgelelik kullanır. Gövde hash'i ham gövde baytları üzerinde hesaplanır, oysa kanonik kodlama çevresindeki imzalı/iletilen yapıları belirsizlikten uzak yapar.

CBOR kodlayıcısını hem istemci hem de sunucu uygulamalarımız için el ile yazdık, jenerik bir serileştirme kütüphanesine güvenmek yerine — gereksinim doğruluk, ergonomi değil — ve her iki uygulamada da çalışan özellik testleri onların aynı fikirde olduğunu doğrular.

Bir regresyon testi, kanonik ağ formatının protokol-primitif qub_id alan anahtarının ötesinde herhangi bir qub-marka bayt dizisi içermediğini doğrular. Ağ formatı kasıtlı olarak marka-agnostiktir — uyumlu herhangi bir izleyici (bizim veya bir üçüncü tarafın), hangi dağıtımın mühürlediğinden bağımsız olarak kalıcı depolamadan herhangi bir qub'u oluşturabilir. Test, bir gelecek değişikliğinin kazara kalıcı depolamada olduğunda yeniden yazılamayan baytlara bir marka referansı pişirmesini önleyen bir tetikleyicidir.

3.4 Gövde Hash'leme ve Açıklama Öncesi Bütünlük

Her mühürlenmiş yük, ham gövde baytlarının SHA3-256 özetini taşır. Özet, içine bağlanır qub_id ve yazar imzalama etkinleştirildiğinde, V2 imza girişine. Bir görüntüleyici, şifre çözme işleminden sonra bunu yeniden hesaplar ve uyumsuzluğu reddeder.

32 baytlık içerik tanımlayıcısı qub_id protokol sürümü, içerik türü, oluşturulma ve kilit açma zaman damgaları, isteğe bağlı sonuç zaman damgası (veya sıfır işareti), hedef drand turu, gövde hash’i ve isteğe bağlı NFC-normalize edilmiş başlığın SHA3-256’sı kapsayan 108 baytlık bir ön görüntüden türetilir. Bir geçit veya CDN, herhangi bir bağlı alanı tutarlı bir şekilde değiştiremez ve yine de yeniden türetmeyi geçemez. Başlıklar 100 NFC kod noktası ile sınırlıdır ve paylaşılan düşmanca/kontrol kod noktası sınıfı için reddedilir (bidi geçersiz kılmaları, sıfır genişlikli karakterler, tag bloğu, BOM, C0, C1 ve DEL dahil).

3.5 İmzalama (ML-DSA-65)

Yazarlık imzalaması ML-DSA-65 (FIPS 204) kullanır, NIST-standartlaşmış post-kuantum bir imza şeması. İmzalama için post-kuantum bir primitif seçmemizin kasıtlı nedeni, mühürlü içeriğin kalıcı olmasıdır: bugün doğrulayan bir imza, on yıllar sonra, büyük ölçekli kuantum bilgisayarları pratik hale geldikten sonra bile doğrulamaya devam etmelidir.

İmzalama anahtarları tarayıcıda oluşturulur. Yerel gizli anahtar, IndexedDB depolamasından önce çıkarılamaz bir WebCrypto anahtarı altında sarılır. Hesap kapsamlı cihazlar arası kurtarma özelliği kullanılıyorsa, AEAD ile şifrelenmiş taşınabilir bir anahtar bloğu sunucu tarafında depolanır; gizli anahtarın şifrelenmiş metni değiştirilemez hesap kimliğine bağlanır ve servis genel zarfı doğrular, ancak gizli materyali çözemez. Ham özel anahtar baytları sunucuya gönderilmez. Genel anahtarlar ve doğrulama kayıtları doğrulama ve kimlik gösterimi için saklanır.

Aynı tarayıcı içi tlock şifre çözme qub gömme içinde de uygulanır: mühürlü bir qub üçüncü taraf bir sayfada <qub-embed> aracılığıyla oluşturulduğunda, şifre çözme hâlâ izleyicinin tarayıcısındaki gömme iframe'inde gerçekleşir. Gömme güven modelini değiştirmez — düz metin asla bir qub sunucusunda şifresi çözülmez.

3.6 Kamuya Atıf — Katılımcı

Yaratıcı açıkça birini eklemeyi seçmediği sürece mühürlü qub'lar yaratıcısına zincir üstü hiçbir işaret taşımaz. Bir qub mühürlediğinde, referans uygulaması yalnızca tarih seçici adımında "Kamuya atıf" etkinleştirildiğinde bir Author depolama etiketi (imzalama kamu anahtarının 64 karakterlik onaltılık parmak izi) yayar. Düğme kapalıyken — varsayılan — hiçbir Author etiketi yazılmaz ve qub kalıcı depolamada atıfsızdır: depolamada hiçbir şey yüklemeyi handle'ınıza, e-postanıza veya diğer qub'larınıza bağlamaz. Düğme açıkken, parmak izi onay zinciri §6.3 / §10 aracılığıyla @handle'ınıza çözümlenir ve izleyici geri sayımı açıklamadan önce "@{handle} tarafından mühürlendi" gösterir.

Bu, her zaman açık bir Author etiketinin yaratacağı numaralandırma riskine karşı kasıtlı bir korumadır: bir yaratıcının parmak izini öğrenen bir üçüncü taraf, aksi takdirde kalıcı depolamayı etikete göre grep'leyebilir ve o yaratıcının tüm tarihsel çıktısını yeniden oluşturabilir. Katılımcı atıf bu kanalı kapatır — yalnızca yaratıcının atfetmeyi açıkça seçtiği qub'lar kalıcı depolamada bir parmak izi altında görünür.

/u/{handle} profil sayfası bir doğrulanmış-kimlik kartıdır — handle, isteğe bağlı görünen ad + URL, "doğrulanmış e-posta" rozeti (adres yok) ve kriptografik parmak izinin kısa biçimi. Bir yaratıcının qub'larını listelemez. Bir yaratıcıdan belirli bir qub'u görmek isteyen ziyaretçiler, o qub'un teslim URL'sini doğrudan takip eder.

3.7 Dış Şifreleme Sarmalayıcı

Zaman kilidi şifrelemesinin matematiksel olarak mümkün olmasının ardından—bağlı tur için drand imzası yayınlandıktan sonra—yalnızca kanonik zaman kilidi katmanı, bir indeksleyicinin keşfedilebilir qub'ları toplu olarak çözmesini sağlar. Özel teslimat, zaman kilidi ile şifrelenmiş baytların etrafına ek bir simetrik katman ekleyerek bu kanalı kapatır (Protokol §13). Genel teslimat, bildirim, gömme ve keşif bağlantılarının gizli bir parça olmadan çalışabilmesi için kasayı kasıtlı olarak atlar.

Sarmalayıcı, NIST-standartlaşmış kimlik doğrulamalı bir şifre olan AES-256-GCM'i kullanır ve her qub için tarayıcınızın CSPRNG'si tarafından üretilen taze bir 256-bit anahtar K kullanır. K, qub'un qub_id'sine kimlik doğrulamalı ek veri olarak bağlanır, böylece bir qub'dan bir anahtar farklı bir qub'u şifresini çözmek için yeniden kullanılamaz.

K, varsayılan özel tarayıcı akışında sunucularımıza asla ulaşmaz. Paylaşım bağlantısının URL parçasına kodlanmıştır (https://qub.social/c/<tx_id>#<base64url(K)>). Tarayıcılar URL parçalarını sunuculara iletmez—RFC 3986 parçayı isteğin dışına yerleştirir—bu nedenle qub.social, depolama ağ geçitleri, CDN'ler ve istek izleme, bu akışta K konusunda kördür. Saklanan OuterWrapper tanınabilir yapılandırılmış CBOR'dur, ancak doğrulanmış şifreli metin alanı içteki kısmı gizler SealedQub yapı ve K olmadan açılamaz.

Net sonuçlar:

Worker'ın sunucu tarafı /api/v1/seal uç noktası (yapay zeka ajanları ve diğer API çağırıcıları tarafından kullanılır), çağırıcının K'yı bir CSPRNG ile üretmesini, yerel olarak saklamasını ve wrapper_key_b64url olarak sağlamasını gerektirir. Worker, bu açıkça güvenilen yolda hem düz metni hem de K'yı zorunlu olarak bellekte görür, ancak hiçbirini kalıcı kılmaz. Zorunlu bir Idempotency-Key, kaybolan bir yanıtın ikinci bir faturalandırılan qub oluşturmasını önler; bu sırada çağırıcının sakladığı K, yeniden oynatılan parçasız URL ile birleştirilebilir. Bu, varsayılan tarayıcı yolundan farklıdır; orada yaratıcı kurtarmayı açıkça etkinleştirmedikçe K, Worker'a asla ulaşmaz.


4. İletim ve Uç

4.1 TLS

Tarayıcı trafiği qub'a Cloudflare kenarında HTTPS üzerinden sunulmaktadır. Yanıtlar HTTP Katı Taşıma Güvenliği ayarlarmax-age=63072000; includeSubDomains; preload). Tam olarak müzakere edilen TLS sürümü ve şifreleme paketi, uygulama kodu tarafından belirtilmek yerine aktif edge yapılandırması tarafından yönetilir. Ayrı olarak erişilebilir bir origin sunucusu sağlamıyoruz.

4.2 İçerik Güvenliği

Derlenmiş istemci, katı içerik-türü ve önbellek başlıkları ile sunulur. SPA kabuğu tek bir kaynaktır. Analitik veya reklam için üçüncü taraf betikleri gömmüyoruz. Üründeki iki üçüncü taraf temas noktası dar bir şekilde kapsamlıdır: satın alma akışı, Stripe tarafından barındırılan ödeme (https://checkout.stripe.com/…) için tam sayfa yönlendirmesi ile SPA'yı tamamen terk eder — Stripe'ın UI'si bizim kaynağımızda asla yürütülmez ve kart verisini asla görmeyiz — ve mühürleme akışı, gizliliği koruyan bir CAPTCHA alternatifi olan Cloudflare'in Turnstile widget'ını yükler, Cloudflare onu kendi sandboxed iframe içinde oluşturur. Hiçbir taraf sayfanın geri kalanını okuyamaz.

The qub gömülü iframe (şuradan sunulmuş qub.social/embed/{tx_id} ve üçüncü taraf sitelere yüklendi embed.js) kendi İçerik-Güvenlik-Politikasını taşır. Onun connect-src izin verilenler listesi 'self', https://qub.social, https://arweave.net, https://ar-io.dev, https://permagate.io, https://api.drand.sh, ve https://drand.cloudflare.com. iframe şu şekilde çalışır sandbox="allow-scripts allow-top-navigation-by-user-activation" (değil allow-same-origin): ana sayfa DOM'unu okuyamaz ve ana sayfayı yalnızca bir kullanıcı eyleminden sonra gezinebilir.

4.3 CORS ve Getirme Kapsamı

Tarayıcı istemcisi yalnızca aşağıdakilere getirme istekleri yapar:

Gömmenin hedefleri CSP'si tarafından uygulanır. Ana SPA'nın amaçlanan hedefleri kod ve yapılandırmada sabittir ve tarayıcı ve entegrasyon kontrolleriyle test edilir; Alt Kaynak Bütünlüğü ağ hedefi kontrolü değildir.

Gömme, depolanan baytları izin verilen qub/storage kaynakları üzerinden alır, özel yükleri URL parçasından aldığı K ile tarayıcıda açar ve iki izin verilen drand kaynağından açılma zamanı tur imzalarını alır. Ana SPA, dört uç noktalı yedekleme setini kullanır config/drand-endpoints.json (drand.cloudflare.com, api.drand.sh, api2.drand.sh, ve api3.drand.sh) böylece bir uç nokta arızası açığa çıkmayı engellemez. Gömülü CSP, açık listesindeki bağlantılar dışındaki bağlantıları reddeder.


5. Sunucu Tarafı Altyapı

5.1 Sunucusuz Uç

API'miz tamamen uç noktadaki yönetilen sunucusuz bir çalışma zamanında çalışır. VM'ler, konteynerler ve yönettiğimiz kalıcı sunucu süreçleri yoktur. Bu, sorumlu olduğumuz saldırı yüzeyini önemli ölçüde azaltır: yamamamız gereken bir OS, bir web sunucusu veya bir uygulama çalışma zamanı işletmiyoruz.

Ayrı bir genel-CORS ara yazılımı uygulanır Access-Control-Allow-Origin: * aşağıda uygulanan yol setine: /embed.js, /embed/v1.js, her şey altında /embed/; /api/v1/telemetry; /api/v1/openapi.json; her şey altında /api/v1/qub/ (baytlar, meta veriler, kanıt, katılım, bildirim ve push alt rotaları dahil); altındaki her şey /api/v1/log/; genel olarak arama işlemlerini ele alır /api/v1/handle/; ve kamusal avatar altında okur /api/v1/identity/avatar/. Kalkış öncesi izinleri GET, POST, ve OPTIONS ile Content-Type istek başlığı. Bu önek tabanlı yüzey, gömücünün şu anda yaptığı çağrılardan daha geniştir, bu yüzden bu öneklerin altındaki her işleyici kendi doğrulamasını, kimlik doğrulamasını, hız sınırlarını ve kötüye kullanım kontrollerini uygulamaya devam etmelidir. Diğer API yolları qub.social-restricted CORS politikasını korur.

5.2 Depolama

Varsayılan tarayıcı mesaj akışı, qub altyapısında düz metni saklamaz. Oluşturucu /api/v1/seal metin düzeyi ve K'yı bellekte işler ancak hiçbirini saklamaz. Pact hazırlama aşaması, imzalanmış yapılandırılmış pact'i, birlikte imzalanana, geri çekilene veya süresi dolana kadar saklamak zorundadır. İsteğe bağlı iyileştirme, daha sonra kurtarılabilmesi için bir teslimat yeteneğini (tam fragman taşıyan bağlantıyı) saklar. Bu nedenle, tüm depolama katmanını “yalnızca meta veri” olarak tanımlamıyoruz.

5.3 Sırlar

Gizli bilgiler (cüzdan imzalama, sağlayıcı belirteçleri ve HMAC anahtarları) kaynak kontrol yerine platform gizli/ortam bağlamaları aracılığıyla sağlanır. Çalışma zamanı bileşenleri yalnızca ihtiyaç duydukları bağlamaları alır. Döndürme ve örtüşme prosedürleri bileşenlere özgüdür; tek bir evrensel otomatik veya denetlenen döndürme mekanizması iddia etmiyoruz.

5.4 Günlükleme ve Telemetri

Her API isteği üzerine yapılandırılmış JSON günlükleri yazılır ve X-Request-Id yanıt başlığında bir ilişkilendirme kimliği yüzeylenir. İstemci telemetrisi anonimdir — cihaz tanımlayıcı yok, IP adresi yok, içerik önizlemesi yok. Olaylar bellekte tamponlanır ve en iyi çaba temelinde akıtılır; başarısız bir akıtma atılır, yeniden denenmez. Telemetri, ürünü etkilemeden ağ katmanında devre dışı bırakılabilir olacak şekilde tasarlanmıştır.


6. Kimlik Doğrulama

6.1 Sihirli Bağlantı Oturum Açma

Oturum açma, e-posta gelen kutunuza iletilen tek kullanımlık, HMAC imzalı bir belirteç kullanır. Bağlantı 15 dakika geçerlidir ve kullanım atomik olarak talep edilir, bu nedenle eşzamanlı veya tekrar edilen kullanım kapalı olarak başarısız olur. Başarılı olursa tarayıcı opak bir yanıt alır. __Host-qub_session ile kurabiye Secure, HttpOnly, SameSite=Strict, ve Path=/ özellikler.

Oturumların 30 günlük boşta kalma sınırı ve 90 günlük mutlak sınırı vardır, 24 saat sonra döner ve 120 saniyelik kayıp yanıt tolerans süresi için yalnızca hemen önceki nesli kabul eder. Hassas hesap değişiklikleri, önceki 10 dakika içinde kimlik doğrulaması gerektirir. HMAC imzalama sırrı bir platform bağlamıdır; yalnızca meta veriyi okuma, kendi başına geçerli bir jeton üretmez.

6.2 API Anahtarları (Geliştirici Katmanı)

Geliştirici API anahtarları kolay tanınma ve grepability için qub_sk_ önekini kullanır. Her anahtar:

Yönetici anahtar yönetimi uç noktaları ayrı bir yönetici kimlik bilgisinin arkasında kapatılır.

6.3 E-posta Onayı (Yazarlık İmzalaması)

Bir e-posta adresini bir imzalama anahtarına bağlamak şunları gerektirir:

  1. Özel imzalama anahtarına sahip olma (bir meydan okumayı imzalarsınız)
  2. E-posta gelen kutusuna sahip olma (e-posta ile teslim edilen 6 haneli bir kodu girersiniz)

Tek başına ikisi de yetersizdir. İptal kendi hesabınızda imzalı bir kayıttır ve hemen yürürlüğe girer; onayı getiren izleyiciler iptal edilmiş durumu görür ve buna göre görüntüler.


7. Ödemeler

Kart girişi ve işleme, Stripe tarafından barındırılan ödeme ekranı içinde çalışır. Kart numaralarını, son kullanma tarihlerini veya CVC’leri asla almayız. Ancak Stripe müşteri ve abonelik kimlik bilgilerini, abonelik durumunu ve hak/API anahtarı kayıtlarındaki dönem verilerini saklarız, böylece erişim, yenilemeler, ölçümleme, iptaller ve iadeler uzlaştırılabilir. Stripe'ın gizlilik ve güvenlik beyanları, ödeme verilerinin işlenmesini yönetir.

Mühürleme uç noktası, yetki kaydını cihaz tanımlayıcısıyla ve oturum açmış kullanıcılar için bağlı kimlikle çapraz kontrol eder. Bir yetki, kullanıcı sihirli bağlantı oturum açma yoluyla açıkça geri yüklemeden cihazlar arasında yeniden kullanılamaz.


8. Kötüye Kullanım Direnci

8.1 Bot Tespiti

Mühürleme akışı, izleme için çerez kullanmayan ve reklam için parmak izi almayan gizliliği koruyan bir CAPTCHA alternatifi tarafından kapatılır. Başarısız bir meydan okuma, herhangi bir mühürleme tarafı işleme başlamadan önce uç Worker'ımız tarafından reddedilir.

8.2 Hız Sınırlaması

Hız sınırları birden çok katmanda uygulanır:

Sayaçlar ve atomik iddialar, uç noktanın tutarlılık gereksinimlerine göre KV, Kalıcı Nesneler ve platform hız sınırı bağlamları arasında dağıtılır. Hız sınırına takılan istekler 429 döner; yeniden deneme penceresi hesaplayabilen uç noktalar şunları içerir Retry-After.

8.3 İçerik Moderasyonu

Varsayılan tarayıcı-yükleme yolu gövdeyi tarayamaz: yalnızca istemci tarafından mühürlenmiş eseri alır. Builder /api/v1/seal güzergah düz metni geçici olarak görür ve anlaşma aşaması yapılandırılmış terimleri sonlandırmaya kadar tutar, ancak bu güven istisnaları genel bayt-görmez yükleme yolunu bir içerik tarayıcısına dönüştürmez. Operasyonel moderasyon bir reddetme listesi izleyici katmanında: bir engellenmiş qub, saklanan yük hala erişilebilir olsa bile izleyicimiz tarafından reddedilir. Engelleme, zaten yayınlanmış kalıcı baytları, şeffaflık-günlüğü kayıtlarını veya kalıcı ağ verilerini geri çekmez.

Kötüye kullanım raporları, raporlayıcının IP'sinin tek yönlü bir hash'i kullanılarak hız sınırlandırılır; bu amaçla IP'leri açık olarak saklamıyoruz.


9. Tedarik Zinciri ve Yapım Bütünlüğü

9.1 Araç Zinciri Sabitlemesi

Derleyici ve çalışma zamanı sürümleri depo yapılandırmasında sabitlenmiştir ve bağımlılıklar, gönderilmiş kilit dosyaları aracılığıyla çözülür. CI, üretilmiş dosyanın güncelliğini ve tekrarlanabilirliğe duyarlı değişmezlikleri kontrol eder. Desteklenen tüm makinelerde her temiz derlemenin bit-bit aynı olduğunu iddia etmiyoruz.

9.2 Lintler ve Statik Analiz

Çalışma alanı, en sıkı lint gruplarımızı deny seviyesinde etkinleştirir. CI her uyarıyı — belgeleme bağlantı uyarıları dahil — bir yapım başarısızlığı olarak ele alır. Bu kasıtlıdır: lint sıkılığını ince regresyonlar için bir tetikleyici olarak kullanıyoruz.

9.3 CI Kapıları

CI iş akışı, biçimlendirme ve sıkı linter kontrollerini; Rust, WASM/tarayıcı, Worker, embed ve API testlerini; tür kontrolünü; kod kapsamını; mutasyon/kalıp kontrollerini; bağımlılık ve iş akışı statik analizini; i18n anahtarları, kapsam, sapma ve zararlı karakter kontrollerini; üretilmiş doküman/API/bilgi tabanı güncelliğini; doküman envanteri ve dahili bağlantı kontrollerini; stil sayfası ve paket bütçelerini; ve OpenAPI doğrulamasını kapsar. Bazı maliyetli mutasyon işleri her push sırasında çalıştırılmak yerine planlanmıştır.

Tek bir gerekli ci Herhangi bir gerekli iş başarısız olursa roll-up kırmızı olarak kalır. Korunan dal ve dağıtım iş akışları, daha küçük bir güvenlik kapısını çoğaltmak yerine bu sonucu kullanır.

9.4 Mutasyon Testi

Haftalık bir iş, güvenlik açısından kritik saf modüllere karşı mutasyon testi yürütür: hash'leme, kanonik CBOR, mühürleme, kilit açma, ağ formatı yeni türleri, protokol tipi doğrulayıcılar ve handle ad alanı. Mutasyon testi "test paketimiz incelikle yanlış kodu yakalıyor mu?" sorusuna yanıt verir — bir mutasyon uygulanmış uygulama hâlâ tüm testleri geçiyorsa, bir test kapsamı boşluğumuz olduğunu biliyoruz ve bunu ele alıyoruz.

9.5 Git Hooks

Yerel hook'lar (pre-commit, pre-push), regresyonların geliştiricinin makinesinden çıkmadan önce yakalanması için CI kapılarını yansıtır. Hook'lar bir depo betiği aracılığıyla yüklenir; iş akışımızda atlanmazlar ve atlanırsa CI yetkili kapıdır.


10. Test

Güvenlik açısından kritik kod üç tür test taşır:


11. Dal ve Yayın Hijyeni

Özellik dalları ilerler staging sadece Bir Kapı 1 çekme isteği aracılığıyla: gerekli ci yeşil, çözülmemiş değişiklik talebi yok, birleştirme çatışması yok ve temiz gözden geçirilmiş bir ağaç; birleştirme sıkıştır ve sil şeklindedir. main sadece Kapı 2'den ilerler staging → main pull request ve birleştirme commit'i ile ataları korur. Doğrudan dal gönderimleri yayın iş akışı değildir.

Staging ve üretim dağıtımları, ilgili korumalı alanlardan tetiklenir staging ve main CI'den sonra dal durumları. Pull-request kodu ve fork kimlik bilgileri dağıtım gizli bilgilerini almaz.

Dağıtım iş akışlarında kullanılan sırlar, CI platformumuz tarafından dağıtım ortamına kapsamlandırılır. Fork'lardan çekme isteği iş akışlarına kullanılabilir değildirler.


12. Koordineli Açıklama

qub'da bir güvenlik açığı bulduğunuza inanıyorsanız, hızlı bir şekilde duymak istiyoruz ve raporu profesyonelce ele almayı taahhüt ediyoruz.

Üç iş günü içinde teslim alındığını onaylıyoruz ve soruşturduğumuz sürece sizi bilgilendiriyoruz. Onayınızla raporlayıcıları yayın notlarında kredilendiriyoruz.

12.1 Güvenli Liman

Araştırmanız yukarıdaki kuralları takip ederse (iyi niyetli soruşturma, diğer kullanıcılara veya hizmete zarar yok, makul açıklama penceresi), size karşı yasal işlem yapmayacağız ve kanun yaptırımından bunu yapmasını istemeyeceğiz. Çalışmanızı yetkili test olarak ele alıyoruz ve böceği bulan kişinin başkası değil siz olmasını tercih ediyoruz.

Bu Güvenli Liman şunlara uygulanır:

qub ekibi üyelerinin sosyal mühendisliğine, hizmet reddi testlerine veya sorunu göstermek için gerekenin ötesinde diğer kullanıcıların verilerine erişmeye uygulanmaz. Bir şeyin Güvenli Liman içinde olup olmadığından emin değilseniz, aynı [SECURITY] konu önekini kullanarak önce sorun.


13. Dürüst Sınırlamalar

Güvenlik bir uygulamadır, bir durum değil. Bazı sınırlamaları doğrudan adlandırmaya değer:


14. Bu Sayfadaki Değişiklikler

Maddi değişiklikler, üstteki yürürlük tarihi güncellenerek not edilir. Bir değişiklik somut bir güvenlik iyileştirmesini yansıttığında, kamu değişiklik günlüğünde kısaca açıklarız. Bir değişiklik bir politika netleştirmesini yansıttığında, neyin ve neden değiştiğini açıklarız.

Bu sayfadaki herhangi bir konu için sorular için, [SECURITY] konu öneki ile support@qub.social adresine e-posta gönderin.


15. Değişiklik Günlüğü

Sürüm Yürürlük tarihi Özet
1.1 23 Eylül 2026 Uygulanan sistemle kriptografik iddialar, teslimat modları, depolama, CSP, oturumlar, API anahtarları, ödemeler, CI ve sürüm iş akışını uzlaştırdı.
1,0 2 Mayıs 2026 İlk yayın.