· kaynak dev.to (home feed)
Kimlik doğrulamasız portlar, pano sızıntıları ve pickle modeller: yerel yapay zeka kurulumlarının riskleri
Bir dev.to analizü, yerel yapay zeka geliştirmedeki üç kör noktayı ortaya koyuyor: kimlik doğrulaması olmadan 0.0.0.0'a bağlı inference sunucuları, pano yapıştırma kazalarıyla sızan API anahtarları ve kod çalıştırabilen pickle formatındaki model dosyaları.

dev.to'da yayımlanan bir yazı, mühendislerin büyük dil modellerini ve görüntü üreticilerini doğrudan kendi makinelerinde çalıştırdıklarında neleri gözden kaçırdıklarını inceliyor. Apple Silicon Mac'lerde Ollama, LM Studio, vLLM ve Gradio tabanlı Stable Diffusion arayüzleri etrafında kurulu iş akışlarından bahseden yazar, hiçbir şeyin makineden çıkmadığı için var sayılan gizlilik varsayımının üç yaygın noktada çöktüğünü savunuyor: ağ bağlama (network binding), pano ve model dosyası formatları.
Inference sunucularının 0.0.0.0'a bağlanması
Yazıya göre, inference'ı bir telefondan veya ikinci bir dizüstü bilgisayardan test etmek isteyen geliştiriciler, rutin bir şekilde OLLAMA_HOST=0.0.0.0 ayarlamayı veya --host 0.0.0.0 parametresini geçmeyi öneren çevrimiçi rehberleri takip ediyor. Bu ayar, hizmeti yalnızca hedeflenen cihaza değil, tüm yerel ağa açıyor ve etkilenen araçlar kimlik doğrulaması olmadan geliyor. Yazarın belirttiğine göre Ollama'da hiç yerleşik API kimlik doğrulaması yok; vLLM ve Gradio ise API anahtarı veya auth seçenekleri sunsa da bunlar gündelik yerel kurulumlarda nadiren yapılandırılıyor. Yazıda adı geçen varsayılan portlar şunlar: Ollama için 11434, LM Studio için 1234, Gradio ve Stable Diffusion WebUI için 7860, vLLM için 8000.
Bir ofis ağında, ortak çalışma alanında veya ele geçirilmiş IoT cihazları bulunan bir ev ağında bunun pratik sonucu, aynı alt ağdaki herkesin makineye düz HTTP istekleri gönderebilmesi. Yazı several kötüye kullanım senaryosu sıralıyor: GPU işlem gücünü ele geçirip dizüstü bilgisayar pilini tüketen ağır batch işleri çalıştırmak, SSD'yi dolduran çok gigabaytlık model indirmeleri zorlamak, DELETE API aracılığıyla yerel model ağırlıklarını silmek ve özel uç noktalardan prompt geçmişini okumak. Önerilen varsayılan, hizmetleri 127.0.0.1'e bağlı tutmak ve dinleyicileri sudo lsof -i -P | grep LISTEN gibi bir komutla denetlemek.
Pano yapıştırma kazaları
İkinci kör nokta, API anahtarları etrafındaki kopyala-yapıştır döngüsü. Bir geliştirici, OpenAI, Anthropic, Hugging Face, AWS veya GitHub token'ını web panosundan kopyalayıp yerel bir .env dosyasına yapıştırmak ister, sonra kas hafızasıyla onu Slack'e veya herkese açık bir sohbet kutusuna yapıştırır. Yazıya göre otomatik tarayıcılar açığa çıkan token'ları saniyeler içinde yakalıyor ve bu, yetkisiz API kullanımına dönüşebiliyor. Bir karşı önlem olarak yazar, pano içeriğini OpenAI sk-proj-, Anthropic sk-ant-, GitHub ghp_ ve Hugging Face hf_ önekleri ile AWS, Gemini ve SSH özel anahtar formatları gibi bilinen anahtar yapılarıyla desen eşleştiren ve yanlışlıkla yapıştırmadan önce uyaran yerel bir denetleyiciyi anlatıyor. Yazıda tarif edilen denetleyici, giden trafik olmadan tamamen cihaz üzerinde çalışıyor.
Pickle formatındaki model dosyaları kod çalıştırabiliyor
Üçüncü risk, tedarik zincirinden geliyor. .pkl, .pickle ve .pt dosyalarında kullanılan Python'un Pickle serileştirmesi, çalıştırılabilir bytecode paketleyebiliyor ve torch.load() ile bir dosya yüklemek, yazıya göre o kodu sormadan çalıştırıyor. Bir model hub'ına yüklenen arka kapılı bir checkpoint, ağırlıklar yüklenir yüklenmez ters kabuk (reverse shell) açabilir, SSH anahtarlarını, AWS kimlik bilgilerini ve tarayıcı çerezlerini çalabilir ya da kalıcı kötü amaçlı yazılım kurabilir. SafeTensors ve GGUF tam olarak bu özelliği ortadan kaldırmak için oluşturuldu: yalnızca tensor değerlerini ve metadata'yı saklıyorlar ve hiçbir çalıştırılabilir yapı taşımıyorlar. Modern modellerin çoğu SafeTensors ile geliyor, ancak Hugging Face ve Civitai'deki eski checkpoint'ler ve topluluk yüklemeleri hâlâ sıkça Pickle kullanıyor; bu yüzden yazar, mümkün olduğunca SafeTensors veya GGUF'yi tercih etmeyi ve ağırlıkları indirirken dosya uzantılarına dikkat etmeyi öneriyor.
Yazar, denetimleri otomatikleştiren bir araç yayımlıyor
Yazı aynı zamanda yazarın macOS uygulaması RoamSwitch için bir sürüm duyurusu işlevi görüyor. 1.5.1'den 1.5.3'e kadar olan sürümlerin, 0.0.0.0'a bağlanan yapay zeka inference portlarını algılamayı ve macOS paket filtresi aracılığıyla otomatik kalkan sağlamayı, pano sırrı denetleyicisini, Pickle formatındaki model dosyalarını işaretleyen bir İndirilenler klasörü izleyicisini ve Claude Desktop veya Cursor gibi agent'ların port maruziyetini düz İngilizceyle sorgulamasını sağlayan salt okunur bir Model Context Protocol sunucusunu eklediği bildiriliyor. Sunucu değiştirici araçlar sunmadığı için yazar, kandırılarak sistem durumunun değiştirilemeyeceğini savunuyor. Bu yetenek iddiaları ürünün geliştiricisinin kendisinden geliyor, ancak temeldeki analiz araçtan bağımsız olarak geçerli.
Neden önemli
Yerel inference, tam da gizlilik ve kontrol vaadi nedeniyle çekici; ancak bu vaat, bu araçların kendilerinin zorunlu kılmadığı yapılandırma seçeneklerine tamamen bağlı. Başarısızlık modları sessiz: Ne bir giriş istemi ne de bir hata mesajı var, sadece yerel ağa görünür bir dinleyici daha. Pickle sorunu bunu daha da büyütüyor, çünkü dosyayla birlikte seyahat ediyor ve ağ ayarlarını tamamen görmezden geliyor. Yazının önerdiği temel hijyen basit: Varsayılan olarak loopback bağlamayı kullanın, dinleyen portları düzenli aralıklarla kontrol edin, yüklemeden önce model dosyası formatlarını doğrulayın ve panoyu canlı sırlar içeriyormuş gibi düşünün.
- #local-ai
- #security
- #ollama
- #safetensors
- #developer-tools
İlgili yazılar
- MCP tarayıcısının path-traversal kuralı, 9.1 puanlı bir RCE dahil 2026'daki tüm yazma tarafı MCP CVE'lerini kaçırdı
- Apple Vision OCR yerel bir 27B VLM'den 300 kat hızlı çalışıyor ama tablo yapısını yok ediyor
- BrowserSkill, yapay zeka ajanlarınıza zaten oturum açtığınız tarayıcıyı kullanma imkanı veriyor