CyberFlow Logo CyberFlow BLOG
Postgresql Pentest

PostgreSQL Extension'larıyla Siber Güvenlik Risklerini Yönetmek

✍️ Ahmet BİRKAN 📂 Postgresql Pentest

PostgreSQL extension'larıyla ilgili güvenlik risklerini anlamak ve yönetmek için gerekli adımları keşfedin.

PostgreSQL Extension'larıyla Siber Güvenlik Risklerini Yönetmek

PostgreSQL extension'ları, siber güvenlik risklerini artırabilir. Bu blog yazısında, extensionların tespiti ve olası tehlikelerine dair bilgi alacaksınız.

Giriş ve Konumlandırma

Siber güvenlik alanında, veritabanlarının güvenliği endişeleri her geçen gün artmaktadır. Özellikle, PostgreSQL gibi popüler veritabanı yönetim sistemleri, kullanıcıların ihtiyaçlarını karşılamak üzere çeşitli uzantılar (extension) sunmaktadır. Ancak, bu uzantılar sundukları işlevsellik nedeniyle aynı zamanda önemli güvenlik riskleri de taşıyabilirler. Bu yazıda, PostgreSQL uzantılarının güvenlik risklerini nasıl yönetebileceğimiz ve bu bağlamda dikkat edilmesi gereken noktaları ele alacağız.

PostgreSQL Uzantıları ve Güvenlik

PostgreSQL, modüler yapısı sayesinde kullanıcılara çeşitli uzantılar yükleyerek veritabanı işlevselliklerini artırma imkanı sunar. Ancak, her uzantı güvenli bir şekilde tasarlanmamıştır. Bazı uzantılar, özellikle dış sistemlerle etkileşim veya direkt dosya erişimi gibi yetenekler taşıdığında risk yüzeyi oluşturmaktadır. Örneğin, uzantının sağladığı düşük seviyeli fonksiyonlar, kötü niyetli bir kullanıcı tarafından istismar edilerek uzaktan komut çalıştırma (RCE) saldırılarına kapı aralayabilir.

Bu bağlamda, uzantıların sadece adının bilinmesi yeterli değildir. Uzantıların neler yapabildiğini doğru bir şekilde anlamak, potansiyel riskleri belirlemek adına kritik önem taşır. İlk adım olarak, sistemde yüklü olan uzantıları tespit etmek gerekir. Bunu yapmak için şu SQL sorgusunu kullanabiliriz:

SELECT extname, extversion FROM pg_extension;

Bu sorgu, sistemde kurulu olan uzantıları ve versiyon bilgilerini listeleyecektir. Yüklü uzantılar üzerinden yapılan bir analiz, hangi uzantıların yüksek risk taşıdığına dair ilk ipuçlarını verebilir.

Neden Önemli?

PostgreSQL uzantılarının güvenliği, siber güvenlik ve penetrasyon testi (pentest) uygulamaları açısından kritik öneme sahiptir. Penetrasyon testleri sırasında, uzantıların yetenekleri ve bunların potansiyel riskleri analiz edilir. Yanlış yapılandırılmış uzantılar, aşırı yetki verilmiş kullanıcı rolleri veya gereksiz kurulu uzantılar, saldırıya açık yüzeyler oluşturabilir.

Örneğin, bir veritabanında superuser (üst düzey kullanıcı) olarak tanımlanmış bir rol, potansiyel olarak tüm uzantıları yükleyip çalıştırma yetkisine sahiptir. Bu tür rollerin denetlenmesi ve hangi kullanıcıların bu tür ayrıcalıklara sahip olduğu kesinlikle göz önünde bulundurulmalıdır. Böylece, yetkisiz erişimlerin ve potansiyel istismarların önüne geçilmesi sağlanabilir.

Eğitim İçeriğine Hazırlık

Bu bölümde bahsedilen unsurlar, siber güvenlik süreçlerinde dikkate alınması gereken temel bileşenlerdir. Uzantıların yönetimi, doğru yapılandırmalar ve rol denetimleri üzerine odaklanarak güçlü bir güvenlik politikası oluşturmak mümkün olacaktır. Okuyucular, aşağıdaki adımlar aracılığıyla PostgreSQL uzantıları kaynaklı güvenlik risklerini değerlendirmeye başlayabilirler:

  1. Uzantıları Tespit Etme: Hangi uzantıların yüklü ve kullanılabilir olduğunu belirlemek için SQL sorguları kullanımı.
  2. Risk Değerlendirmesi: Yüksek risk oluşturan bileşenlerin ve fonksiyonların tanımlanması.
  3. Rol Denetimi: Superuser ve diğer kritik rollere sahip kullanıcıların incelenmesi.
  4. Sıkılaştırma Önlemleri: Gereksiz uzantıların kaldırılması ve oluşturulan yetkilerin sınırlandırılması.

Yukarıdaki adımlar, PostgreSQL uzantılarıyla yönetilen siber güvenlik risklerini etkili bir şekilde yönetmeye yönelik temel bir çerçeve sunmaktadır. Siber güvenlik uzmanları için bu bilgilerin kavranılması ve uygulanması, veritabanı güvenliğini artırmada kilit bir rol oynayacaktır.

Teknik Analiz ve Uygulama

PostgreSQL Extension'larıyla Siber Güvenlik Risklerini Yönetmek

Siber güvenlik alanında, veri tabanı yönetim sistemleri özellikle dikkat gerektiren yapılar olarak ön plana çıkmaktadır. PostgreSQL, geniş bir modüler yapı sunarak, çeşitli extension’lar ile kabiliyetlerini artırmaktadır. Ancak bu extension’lar, birbirinden farklı riskler barındırabilir. Bu bölümde, PostgreSQL extension’larının güvenlik risklerini yönetmek üzere yapılması gereken temel analiz ve uygulamalar üzerinde durulacaktır.

Yüklü Extension'ları Tespit Etme

PostgreSQL veritabanınıza yüklenmiş olan extension’ları belirlemek için öncelikle aşağıdaki sorguyu kullanmalısınız:

SELECT extname, extversion FROM pg_extension;

Bu sorgu, sistemde yüklü olan extension’ların isimlerini ve sürümlerini listeleyecektir. Bu adım, mevcut risk faktörlerini tanımlamak adına kritik bir başlangıçtır. Örneğin, "dış sistem etkileşimi" ya da "yüksek düzeyde yetkilendirme" gibi kabiliyetler sunan bir extension, veri tabanınız açısından potansiyel bir tehdit oluşturabilir.

Risk Yüzeyi Oluşturan Bileşenler

Extension'ların sağladığı özellikler, çoğu zaman doğrudan adlarından değil, sundukları yeteneklerden kaynaklanmaktadır. Bu nedenle, hangi bileşenin ne yaptığını anlamak için ilgili documentation’lara göz atılmalıdır. Özellikle, veri tabanınıza herhangi bir zararlı yazılım veya kötü niyetli kod yüklenmemesi adına, riske neden olan bileşenler tespit edilmelidir.

Kullanılabilir Extension'ları İnceleme

Kurulum için mevcut olan extension’ları kontrol etmek de aynı derecede önemlidir. Kullanılabilir extension’ları listelemek için şu sorguyu kullanabilirsiniz:

SELECT name, comment FROM pg_available_extensions;

Bu sorgu, sistemde yüklenebilecek olan extension’ların isimlerini ve açıklamalarını gösterecektir. Yanlışlıkla kurulmaya açık olabilecek extension’lar da risk oluşturabilir, bu yüzden bu adım da göz ardı edilmemelidir.

Extension Kurma Komutu

Extension kurulum süreci, özel bir ayrıcalıktır. Yüklenebilir extension ile ilgili bir örnek görmek gerekirse, aşağıdaki komut yapısını kullanabilirsiniz:

CREATE EXTENSION extension_name;

Extension kurulumundaki yetkilendirmeyi kısıtlamak, gereksiz erişimleri engelleyebilir. Bu nedenle, "CREATE EXTENSION" yetkisini yalnızca yetkili kullanıcılarla sınırlandırmalısınız.

Riskli Dil Bileşenlerini Tespit Etme

PostgreSQL'de kullanılan dillerin güvenliği de analize dahil edilmelidir. Sistemde tanımlı olan procedural dilleri görmek için:

SELECT lanname FROM pg_language;

Bu komut, hangi dillerin kullanıldığını gösterir. Native fonksiyonlar genellikle daha dikkat gerektirdiğinden, bu dillerin kullanımını kısıtlamanız önerilir.

Risk Göstergeleri

Extension ve fonksiyon güvenliği incelenirken aşağıdaki noktalara dikkat edilmelidir:

  • Var olan extension'ların hangi dillerde yazıldığını görmek, riskli yapılar tespit etmek için önemlidir.
  • Çok yüksek ayrıcalıklara sahip superuser rolleri kontrol edilmeli ve gerektiğinde kısıtlanmalıdır.

Superuser rolleri listelemek için şu sorguyu kullanabilirsiniz:

SELECT rolname FROM pg_roles WHERE rolsuper = true;

Superuser hesabının kimlerde olduğunu bilmek, çoğu zaman kontrolsüz yönetim alanlarını ortaya çıkarır.

Defansif Sıkılaştırma

Extension kaynaklı uzaktan komut çalıştırma risklerini azaltmak için hedef, gereksiz komponentleri kaldırmak ve düşük seviyeli kabiliyetleri sınırlandırmaktır. Ayrıca, güçlü ayrıcalıkların sıkı denetimi sağlanmalıdır. Bunun için, gerekli komponentler dışında hiçbir extension'ı sistemde tutmamak önemlidir.

Sonuç

PostgreSQL extension'ları, sağlam bir veri tabanı yönetim sistemi tecrübesi sunarken aynı zamanda yakından takip edilmesi gereken riskler barındırmaktadır. Yüksek yetkilere sahip sistem bileşenlerinin dikkatle incelenmesi, potansiyel siber tehditlerin önüne geçilmesine yardımcı olacaktır. Bu bağlamda, yukarıda bahsedilen analiz ve işlemlerin düzenli olarak tekrarlanması ve güncellenmesi önerilir.

Risk, Yorumlama ve Savunma

Yüklü Extension’ların Tespit Edilmesi

First step in PostgreSQL extension tabanlı risk analizi, sistemde hangi PostgreSQL extension’larının kurulu olduğunu belirlemektir. Yüksek risk taşıyan bileşenler, dış sistem etkileşimi, dosya erişimi veya gelişmiş fonksiyon kabiliyeti sunan extension’lardır. Bu nedenle, kurulu extension’ların listesini çıkarmak ilk adımdır. Örnek bir sorgu aşağıdaki gibi olabilir:

SELECT extname, extversion FROM pg_extension;

Bu sorgu ile sistemde yüklü olan extension’ların isimleri ve versiyonları elde edilir. Yüksek riskli bileşenlerin ileri analizi için bu liste, sistem güvenliği açısından kritik bir başlangıç noktasıdır.

Risk Yüzeyi Oluşturan Bileşenler

Extension kaynaklı güvenlik riskleri çoğunlukla yalnızca extension adlarından değil, onların sağlayabileceği kabiliyetlerden de gelmektedir. Örneğin, gereksiz kurulu extension’lar, kullanılmadığı halde sistemde varlığını sürdürebilir ve potansiyel bir saldırı yüzeyi oluşturabilir. Bu bağlamda, kurulu ve kurulabilir durumda olan extension’ların birlikte incelenmesi, potansiyel riskleri daha iyi değerlendirebilmek için önemlidir.

Kullanılabilir Extension’ların İncelenmesi

Sadece mevcut extension’lar değil, aynı zamanda mevcut ama kurulu olmayan extension’ların da incelenmesi gerekmektedir. Bu, yanlış yetkilendirilmiş ortamlarda kritik bir risk oluşturabilir. Aşağıdaki sorgu, kullanılabilir extension’ları ve açıklamalarını listeleyecek şekilde tasarlanmıştır:

SELECT name, comment FROM pg_available_extensions;

Bir güvenlik denetiminde, bu iki listeyi karşılaştırmak ve kullanıma ihtiyaç olmayan veya kullanılmayan extension’ları kaldırmak gerekli adımlardandır.

Riskli Dil Bileşenlerini Tespit Etme

Extension kurulumunu etkileyen temel bir faktör, kullanıma açık olan procedural veya native dillerin varlığıdır. Düşük seviyeli diller, örneğin C dili, yüksek güvenlik risklerine yol açabilir. Bu dillerin uzaktan kontrolü, sistemin bütünlüğünü tehdit eden komut çalıştırma risklerini artırmaktadır. Aşağıdaki sorgu ile sistemde tanımlı olan diller tespit edilebilir:

SELECT lanname FROM pg_language;

Belirli dillerin yüksek risk potansiyeli taşıdığı göz önünde bulundurularak, bu dillerle çalışan extension ve fonksiyonların etkisi ayrıntılı bir şekilde incelenmelidir.

En Yüksek Yetki Seviyesi ve Superuser Rolleri

Extension güvenliği açısından dikkat edilmesi gereken bir diğer nokta, en yüksek ayrıcalık seviyelerine sahip hesapların nakız çıkmasıdır. Aşağıdaki sorgu ile sistemdeki superuser rolleri listelemek mümkündür:

SELECT rolname FROM pg_roles WHERE rolsuper = true;

Superuser hesapları, çoğu kritik bileşenin kurulumu ve yönetimi için son derece önemlidir; bu nedenle, bu hesapların kimlerde olduğunu ve hangi rol ve izinlere sahip olduklarını gözden geçirmek gereklidir.

Extension Sahiplerini ve Yetkili Rolleri İnceleme

Extension kaynaklı riskleri azaltmak için, extension’ların sahiplerini ve güçlü ayrıcalıklara sahip rolleri incelemek önemlidir. Aşağıdaki sorgu, extension’ların sahiplik bilgisini göstererek potansiyel güvenlik açıklarını belirleyecek bir temel sunmaktadır:

SELECT extname, extowner FROM pg_extension;

Bu uzun vadeli analiz, kontrolsüz yönetim alanlarını ortaya çıkararak, gerekli önlemlerin alınmasına olanak sağlar.

Profesyonel Önlemler ve Hardening Önerileri

Extension kaynaklı uzaktan komut çalıştırma risklerini en aza indirmek için şu önerilere dikkat edilmelidir:

  1. Gereksiz extension’ların kaldırılması: Kullanılmayan veya gereksiz olan extension’ların sistemden çıkarılması.
  2. Düşük seviyeli dillerin sınırlandırılması: Bu dillerin erişim ve kullanımının kısıtlanması; mümkünse bu dillerle çalışan extension’ların devre dışı bırakılması.
  3. Ayrıcalıkların gözden geçirilmesi: CREATE EXTENSION gibi güçlü yetkilerin yalnızca gerekli yöneticilere verilmesi ve kontrolsüz kabiliyetlerin minimize edilmesi.
  4. Regüler inceleme (Routine Review): Native veya yüksek etkili fonksiyonların düzenli olarak incelenmesi ve bu kontrollerin kaydedilmesi.

Sonuç Özeti

PostgreSQL extension’ları ile yapılan siber güvenlik analizi, dikkatli bir risk değerlendirmesi ve yorumlama süreci gerektirmektedir. Doğru yapılandırmalar sağlandığında, sistemlerin güvenliği artırılabilir. Ancak, yanlış yapılandırmalar ve gereksiz yetkilendirmeler, potansiyel olarak büyük güvenlik açıklarına neden olabilir. Risklerin yönetilmesi, sıkı bir denetim ve düzenli incelemelerle sağlanmalıdır.