THT DUYURU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

chat
Seçenekler

JAVA ve Güvenlik Özellikleri

CmcEagle - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2013
Nereden:
Spain
Yaş:
33
Mesajlar:
136
Konular:
111
Teşekkür (Etti):
1
Teşekkür (Aldı):
12
Ticaret:
(0) %
23-06-2013 18:00
#1
JAVA ve Güvenlik Özellikleri
JAVA, ilk versiyonunun yayınlandığı 1995 yılından beri güvenlik camiasının gündeminde olmayı başarıyor. Peki ardı arkası kesilmeyen sıfır gün (zero day) açıklıklarının ve onları takip eden kritik yama güncellemelerinin altında ne yatıyor? Bu yazıda, önce JAVA teknolojisi ve güvenlik özelliklerinden bahsedilecek ve ardından son kullanıcılar için güvenlik açıklarından korunma yöntemlerine değinilecektir.
JAVA

JAVA nesne tabanlı bir programlama dilidir. Çalışabilmesi için bir çok programlama dilinde olduğu gibi yazıldıktan sonra derlenmesi gerekir. JAVA'yı diğer programlama dillerinden faklı kılan şey ise platform bağımsız yapısıdır. Java bu yapıya sahip olabilmek için, Sanal Makine (Virtual Machine) adında bir teknoloji kullanır. Bu sanal makine yapısı JAVA kodundan derlenerek elde edilen "BYTE CODE" denilen dosyayı alır ve kullanıcının çalıştırmak istediği makinenin anlayacağı şekilde yorumlar.[1] JAVA'yı platform bağımsız hale getiren bu teknoloji, çoğu kişiyi JAVA ile yazılmış programların (tek başına çalışamadığı için) uygulama olmadığı sanrısına düşürmektedir. Halbuki JAVA uygulamaları yerelde çalıştırıldığı zaman, bilgisayarda çalışan diğer uygulamalarla aynı haklara sahip olmaktadır. Bu sebeple JAVa uygulaması bilgisayardaki dosyalara erişip bunları değiştirebilir veya silebilir, bilgisayara takılı webcam printer gibi donanımlara erişebilir hatta RAM belleği kullanabilir. Bu durum onu sanıldığının aksine zararlı yazılım açısından en az diğer uygulamalar kadar tehlikeli kılmaktadır.
Şekil -1 JAVA programların üretilme ve çalıştırılma süreci.
JAVA APPLET

İnternet'te HTML ve JavaScriptin üstesinden gelemeyeceği daha interaktif web uygulamaları için, web tarayıcısının içinde ama web tarayıcısından bağımsız ayrı bir uygulama olarak çalışan JAVA programlarına "JAVA APPLET" denir. JAVA programı bir web sunucusuna yerleştirilir. Üzerinde Java appleti bulunan bir sayfa ziyaret edildiğinde, applet bilgisayara indirilir ve çalıştırılır.
Şekil -2 JAVA appletlerin çalışma süreci.
İşte JAVA appletler, bu özellikleri sayesinde saldırganların ilgisini çekmektedirler. Bu konuyu örneklendirerek biraz daha açıklayalım.
Bir saldırganın, sosyal mühendislik ile hedef bilgisayarda zararlı bir uygulama çalıştırmak istediğini varsayalım. Bunun için klasik bir yöntem kullanan saldırganın izleyeceği yol aşağıdaki gibidir:
  1. Kurban, zararlı web sitesine yönlendirilir.
  2. Kurbanın zararlı uygulamayı indirmesi sağlanır.
  3. Kurbanın indirilen zararlı uygulamayı çalıştırması sağlanır.
Şimdi de saldırganın zararlı bir JAVA applet kullandığı duruma bakalım.
  1. Kurban, zararlı web sitesine yönlendirilir. JAVA applet bilgisayara iner ve çalışır.
Yukarıdaki örnekte de açıkça görüldüğü gibi JAVA applet ağ üzerinden çalışmak için tasarlanmış platform bağımsız bir mimaridir ve bu durum JAVA'yı güçlü kıldığı ölçüde güvenlik risklerini de beraberinde getirir. Bu nedenle JAVA mimarisinde güvenlik mekanizmalarının kullanımı büyük önem arz etmektedir.
JAVA' nın Güvenlik Özellikleri

Web teknolojilerinde bir kaynak güvenilirliğini ispat edene kadar güvensiz kabul edilmelidir. Bu durumda karşıdan gelen JAVA applete de güvenilir olduğunu ispatlayana kadar güvenilmemelidir. İşte bu sebeple JAVA appletler için bir güvenilir kod imzalama mekanizması vardır.
Yerel kullanıcı tarafından çalıştırılan bir JAVA uygulaması tüm kaynaklara kısıtlama olmaksızın erişebiliyorken güvenilir olarak imzalanmamış bir JAVA applet, JAVA sanal makinası tarafından kısıtlanarak sadece oyun alanı (sand box) denilen alanda çalıştırılır ve birçok kaynağa erişimi engellenir. Uygulama bazı kaynaklara erişim için "güvenilir" imzası almış olsa bile program, bu erişim haklarının dışında başka bir kaynağa erişemeyecektir.[2]
Şekil -3 JAVA güvenlik yapısının blok diyagramı
Bu yapı uzaktan kusursuz gibi görünse de yıllardır sömürülmekte olan 2 temel sorunu barındırır.
Bunlardan ilki insan faktörüdür. JAVA teknolojisinde güvenilmeyen bir uygulama yetkisi dışında bir kaynağa erişmek istediğinde, çoğu zaman doğrudan engellenmez ve kullanıcıya bu duruma müsade edip etmeyeceği sorulur. Yapılan araştırmalar gösteriyor ki İnternet'te sörf yapan kişiler genellikle karşılarına çıkan uyarıları okumadan aksiyon almaktadırlar. Bu da bir çok zararlı yazılımın kullanıcılar tarafından bilgisayarlara bulaştırıldıkları manasına gelmektedir.
Şekil -4 Güvenilmeyen bir uygulama çalıştırılmak istendiğinde çıkan uyarı ekranı.
Bu sorunun kısmen de olsa önüne geçmek için 11.12.2012 tarihinde "Java SE 7 Update 10" sürümü ile birlikte bazı ek güvenlik özellikleri yayınlanmıştır. Denetim masasından ayarlanabilen bu özellikler sayesinde tarayıcı ekranında çıkan uyarılar kapatılıp güvenilmeyen uygulamanın çalışması direkt olarak engellenebilmektedir.
Güvenilmeyen appletlere ait kodların çalıştırılması engellenmek için
Control Panel\All Control Panel Items\Java\Advanced ekranında Enable - hide warning and don't run untrusted code seçeneği işaretlenmelidir.
Şekil -5 Java güvenlik kontrollerinin yapılması.
İkinci en büyük sorun ise uygulamadaki açıklıkların sömürülmesidir ki, sanal korsanlar yukarıda anlatılan avantajlarından dolayı JAVA üzerine yoğunlaşmakta ve çeşitli yöntemlerle sürekli yazdıkları zararlı yazılımların oyun alanını (sand box) atlatarak yetkisi dışında kaynaklara erişmesinin ve daha güçlü başka saldırılar için zemin hazırlamasının yollarını bulmaktadırlar. Sadece son 3 ay içerisinde JAVA ile ilgili 84 güvenlik açıklığı rapor edildiği [3] ve geliştiricilerin son bir yıl içerisinde 100'ün üzerinde güvenlik düzeltmesi yayınladığı [4] göz önüne alındığında korsanların ve geliştiricilerin sürekli bir çaba içerisinde oldukları anlaşılabilir.
Şekil -6 JAVA'da tip karışıklığını sömüren bir saldırının blok diyagramı. [5]
Yukarıda verilen bilgilerden sonra hangi platformda olursa olsun sistemlerde çalışan JAVA yorumlayıcı eklentilerinin güncel tutulmasının gerekliliği tartışılmaz bir gerçektir.
Kritik açıklıklara karşı önlem olarak JAVA eklentilerini sürekli en güncel şekilde tutmak için Control Panel\All Control Panel Items\Java\Update ekranında Check for Updates Automatically seçeneği seçili olarak ayarlanmalıdır.
Şekil -6 JAVA otomatik güncelleme ayarlarının yapılması.
Güvenlik özelliklerini ayarlayıp JAVA yı güncel tutmanın son kullanıcıları büyük oranda koruduğu söylenebilir, ancak yine de tam bir korumadan bahsetmek maalesef mümkün değildir. Çünkü tehlikeli saldırıların, bütün bu durumlarda bile işe yarayabilen sıfır gün açıklıkları kullanılarak yapıldığını biliyoruz.
Sektörde tanınmış güvenlik umzanlarının bu konuda da sık sık dile getirdiği görüşleri hemen hemen aynıdır. JAVA web açıklıklarından korunmanın en önemli yollarından biri JAVA'nın tarayıcı eklentilerinin gerektiği zamanlarda geçici süreliğine açılması; diğer tüm zamanlarda kapalı tutulmasıdır.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler