Directus'ta CVSS 9.2'lik açık, public WebSocket'te başarısız kimlik doğrulama tüm koleksiyonlara yetkisiz erişim veriyor
Headless CMS Directus'un 12.1.0 öncesi sürümlerinde, public modda açık WebSocket REST bağlantısına gönderilen geçersiz token izin denetimini tamamen devre dışı bırakıyor (CVE-2026-126539). Düzeltme 12.1.0 sürümünde.
CVE-2026-126539Veritabanlarının önüne API ve yönetim paneli koymak için yaygın kullanılan açık kaynak headless CMS Directus'ta kritik bir authorization bypass açığı NVD'ye girdi. 11 Kasım'da yayımlanan CVE-2026-126539 (CVSS 3.1: 8.1, CVSS 4.0: 9.2), 12.1.0 öncesi tüm Directus sürümlerini kapsıyor. Proje, açığı kendi bildiriminde (GHSA-97xr-jchp-xm3c) daha önce duyurmuş ve 12.1.0 sürümüyle kapatmıştı; CVE kaydı ve GitHub Advisory Database girdisi ise bu hafta geldi.
Proje bildirimine göre sorun, WebSocket REST erişimi public modda açık olan kurulumlarda ortaya çıkıyor. Bağlı bir sokete gönderilen başarısız auth mesajı, istemcinin public rolüne ait yetki bağlamını "boş" bir bağlamla değiştiriyor ve bağlantıyı açık bırakıyor. Directus bu boş bağlamı güvenilir iç çağrılara ayırdığı için, aynı soket üzerinden gelen sonraki items istekleri hiçbir izin denetimine takılmadan çalışıyor. Sonuç olarak kimliği doğrulanmamış bir saldırgan, public role verilen izinlerden bağımsız olarak kullanıcı tanımlı tüm koleksiyonlarda kayıt okuyabiliyor, ekleyebiliyor, değiştirebiliyor ve silebiliyor. Bildirim, public modda bir istemcinin access token süresi dolup yeniden doğrulama yapılmadığında da aynı durumun oluşabildiğini belirtiyor. Açık CISA KEV kataloğunda değil; aktif istismar bildirimi de yok.
Etkilenen ve düzeltilmiş sürümler
| Ürün | Etkilenen | Düzeltilmiş sürüm |
|---|---|---|
| Directus (npm directus, Docker imajı) | 12.1.0 öncesi tüm sürümler | 12.1.0 |
Sürüm aralığı Directus proje bildirimi ve GitHub Advisory kaydından alınmıştır. Açık yalnızca WebSocket REST erişiminin public modda yapılandırıldığı kurulumlarda istismar edilebilir; ancak bu ayarı daha önce kimin, ne zaman değiştirdiği bilinmiyorsa yükseltme ertelenmemeli.
Beni etkiliyor mu? Önce çalışan Directus sürümünü, ardından WebSocket ayarlarını kontrol edin. Docker ile çalışan kurulumlarda imaj etiketine bakmak yeterli:
docker ps --format "{{.Image}}" | grep -i directusNode.js ile doğrudan kurulan sunucularda proje klasöründe:
grep '"version"' node_modules/directus/package.jsonWebSocket REST yapılandırmasını ortam değişkenlerinde arayın (değer public ise ve sürüm 12.1.0'dan eskiyse kurulum risk altındadır):
grep -i "WEBSOCKETS" .envDocker Compose kullanıyorsanız aynı aramayı docker-compose.yml dosyasında yapın. Yönetim panelindeki Ayarlar › Erişim Politikaları bölümünde Public rolüne verilen izinleri de gözden geçirin; açık bu izinleri atladığı için "public rolde hiçbir şeye izin yok" olması tek başına koruma sağlamaz.