private-ip Paketindeki SSRF Zafiyeti

  private-ip Paketindeki SSRF Zafiyeti

Genel Bakış

private-ip npm paketinin tüm sürümlerinde kritik bir Sunucu Taraflı İstek Sahteciliği (SSRF) zafiyeti (CVE-2025-8020) keşfedildi. Bu zafiyet, saldırganların paketin kontrol etmediği multicast IP adreslerini (224.0.0.0/4) kullanarak güvenlik önlemlerini atlamasına izin veriyor. Bu durum, yetkisiz iç ağ isteklerine ve hassas sistemlerin açığa çıkmasına yol açabilir.

  • CVSS Skoru: 8.8 (Yüksek)
  • Zafiyet Türü: SSRF
  • Etkilenen Paket: private-ip (tüm sürümler)
  • Açıklanma Tarihi: 2025-07-23
  • Keşfeden: Snyk

Teknik Detaylar

Zafiyetin Kökeni

private-ip paketi, bir IP adresinin özel (yönlendirilemeyen) aralıklarda olup olmadığını kontrol etmek için kullanılır (örneğin, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). Ancak, multicast IP adreslerini (224.0.0.0/4) düzgün şekilde filtrelemez.

Bir saldırgan şunları sağlayarak bu açıktan yararlanabilir:

  • Multicast IP'ye çözümlenen bir alan adı.
  • Doğrudan multicast IP (örneğin, 224.0.0.1).

Paket, multicast IP'leri yanlışlıkla "özel" olarak kabul ettiği için, güvenlik kontrolleri atlanabilir ve iç ağa yetkisiz istekler gönderilebilir.


Sömürü Senaryoları

1. Alan Adı Çözümlemesi ile Saldırı

Bir uygulama, iç kaynaklara erişmeden önce kullanıcıdan alınan URL'leri doğrulamak için private-ip kullanıyorsa:

const privateIp = require('private-ip');

function fetchInternalResource(url) {
  const hostname = new URL(url).hostname;

  if (privateIp(hostname)) {
    console.log("Engellendi: Özel IP aralığı tespit edildi.");
  } else {
    // Kaynağı getir (SSRF'ye açık)
    console.log("İstek gönderiliyor:", url);
  }
}

// Saldırganın kontrol ettiği bir alan adı (224.0.0.1'e çözümleniyor)
fetchInternalResource("http://saldirgan-multicast.ornek.com/api/hassas-veri");

Saldırı Akışı:

  1. Saldırgan, 224.0.0.1 adresine işaret eden bir alan adı (saldirgan-multicast.ornek.com) kaydeder.
  2. Uygulama, private-ip ile kontrol yapar, multicast IP yanlışlıkla "izin verilen" olarak işaretlenir.
  3. Sunucu, multicast adresine bir istek gönderir ve iç ağdaki hassas sistemlere erişebilir.

2. Doğrudan Multicast IP İle Atlama

Eğer uygulama doğrudan IP adresleri kabul ediyorsa:

const privateIp = require('private-ip');

function fetchResource(ip) {
  if (privateIp(ip)) {
    console.log("Engellendi: Özel IP tespit edildi.");
  } else {
    console.log("İzin verildi:", ip);
  }
}

// Saldırgan multicast IP gönderiyor (224.0.0.1)
fetchResource("224.0.0.1"); // "İzin verildi" sonucunu döndürür

Etki:

  • Saldırgan, multicast paketleri kullanarak iç ağı tarayabilir.
  • Bazı durumlarda, multicast trafiği iç sistemlere yönlendirilebilir.

Önlemler ve Düzeltmeler

Acil Çözümler

  1. IP Kontrolünü Manuel Yapın:

    • Güvenilir alan adları/IP'ler için bir izin listesi kullanın.
    • Multicast (224.0.0.0/4) ve diğer özel olmayan aralıkları engelleyin.
    function isSafeIP(ip) {
     return !ip.startsWith("224.") && privateIp(ip);
    }
  2. Etkilenen Özelliği Geçici Olarak Kapatın:

    • Kullanıcıdan alınan URL/IP işleme fonksiyonlarını devre dışı bırakın.

Kalıcı Düzeltme

  • private-ip Paketini Güncelleyin:
    • Geliştiriciler multicast kontrolü eklenmiş yeni sürümü beklemeli.
    • Yama çıkar çıkmaz güncelleme yapılmalı.

Sonuç

CVE-2025-8020, güvenlik kontrollerindeki eksikliklerin nasıl ciddi açıklara yol açabileceğini gösteriyor. private-ip kullanan kuruluşlar, derhal önlem almalı ve yamaları takip etmelidir. SSRF zafiyetleri, büyük veri ihlallerine neden olabilir.



Yorum Gönder

Daha yeni Daha eski

İletişim Formu