Skip to content

Security tr

Hammad Maqbool edited this page Oct 29, 2026 · 1 revision

English · 简体中文 · 繁體中文 · Español · العربية · Français · Português (Brasil) · Deutsch · हिन्दी · 日本語 · 한국어 · Русский · Bahasa Indonesia · Türkçe · Italiano · Tiếng Việt

docxi güvenliği: sorun bildirme ve güvenilmeyen girdileri işleme

Bu sayfa, bir güvenlik sorununun nasıl bildirileceğini ve uygulamanız kullanıcı girdisini docxi'ye aktarırken bilmeniz gereken güvenlik noktalarını açıklar.

Güvenlik açığı bildirme

Lütfen güvenlik sorunlarını herkese açık issue'larda bildirmeyin. Bunun yerine projenin bakımını yapanlara e-posta gönderin. Adresler docxi.gemspec dosyasındadır. docxi sürümünü ve sorunu yeniden üretmenin kısa bir yolunu ekleyin.

0.0.x sürümünden yükseltin

docxi 0.0.x, görsel yolu dizelerini Kernel#open yöntemine aktarır. Kernel#open, | ile başlayan bir dizeyi kabuk komutu olarak çalıştırır; bu yüzden bir görsel yolunu kontrol eden bir saldırgan sunucunuzda komut çalıştırabilir. 0.1.0, dosyaları File.open ile açar ve URL'leri URI#open ile indirir. İkisi de komut çalıştırmaz.

Güvenilmeyen girdiler

Metin vermek güvenlidir. Metin, tablo içerikleri ve diğer dizeler XML metni veya öznitelik değeri olarak yazılır ve nokogiri bunları kaçışlar. Kullanıcı girdisi belgeye öğe ekleyemez.

Görsel kaynakları dikkat gerektirir. add_media şunları kabul eder:

Kaynak docxi'nin yaptığı
Kendi açtığınız bir IO Onu okur
Bir dosya yolu O dosyayı sunucunuzun diskinden okur
Bir http, https veya ftp URL'si Onu sunucunuzdan indirir

Kullanıcı yolu seçebiliyorsa, sunucunuzdaki okunabilir herhangi bir dosyanın, örneğin yapılandırma dosyalarının veya anahtarların, belgeye gömülmesini sağlayabilir. Kullanıcı URL'yi seçebiliyorsa sunucunuz o adrese istek gönderir ve bu, iç adreslere erişebilir (sunucu taraflı istek sahteciliği, SSRF). Kendi açtığınız bir IO verin veya yalnızca bilinen yollara ve sunuculara izin verin.

Köprüler URL nereyi gösteriyorsa oraya gider. Kullanıcıların verdiği URL'leri add_hyperlink yöntemine vermeden önce kontrol edin.

Sürümler nasıl korunur

  • Sürümler, GitHub Actions'tan RubyGems'in güvenilir yayınlama (trusted publishing) özelliğiyle yayımlanır; bu yüzden depoda hiçbir API anahtarı saklanmaz.
  • Gem meta verileri rubygems_mfa_required ayarını içerir; bu yüzden kişisel bir API anahtarıyla yapılan gönderimler çok faktörlü kimlik doğrulama gerektirir.

İlgili sayfalar


← Wiki ana sayfası · README

Clone this wiki locally