• Tidak ada hasil yang ditemukan

ag guvenligi

N/A
N/A
Protected

Academic year: 2021

Membagikan "ag guvenligi"

Copied!
30
0
0

Teks penuh

(1)

Bil438 AĞ GÜVENLĠĞĠ

28 Mayıs, 2011

INTEGER OVERFLOW ve SQL

ENJEKSĠYON SALDIRILARI

(2)
(3)

Integer Overflow Nedir?

 Günümüz sistemlerinde, 32 veya 64 bitlik işlemciler

kullanılmaktadır. Herhangi bir aritmetik işlem sonucunda bu 32 veya 64 bitlik alana sığmayacak boyutta bir integer oluşması durumuna integer overflow denir.

 Tehlikesiz gibi gözükse de integer overflow birçok

(4)

Integer Overflow Tehlikeli

midir?

Integer overflow oluştuktan sonra tespit

edilemez.

Sonucun yanlış olduğunu uygulamaya

anlatmanın bir yolu yoktur. Bunun için

oluşmasına izin vermemek gerekir ve

kodlarımızı buna göre yazmamız gerekir.

Integer overflow‟ın doğrudan bir tehlikesi yoktur

fakat başka hataların oluşmasına sebep olabilir.

Örneğin buffer overflow gibi.

(5)

Integer Overflow Saldırısı(1)

Asağıda integer overflow yaratması

muhtemel bir kod kesimi bulunmaktadır.

Ancak bu kod sistemi, saldırılara açık hale

getirmemektedir.Ancak durum her zaman

böyle değildir.

(6)

Integer Overflow Saldırısı(2)

 Aşağıdaki kod kesiminde, a=b=2^31+1 olduğunu

varsayarsak, x=2 olacaktır.Daha sonra bu x değişkeni 6. satırda “malloc” fonksiyonuna parametre olarak

gönderildiğinde, programcının beklentisi olan 2^32+2 byte‟lık değil sadece 2 byte‟lık bir yer alacaktır.Bu da 7. satırdaki bellek erişimi p[a](p[2^31+1])‟ nın yetkisi

(7)

Integer Overflow Saldırısı(3)

 Bir saldırgan, kullanıcıdan alınan a ve b değerleri

üzerinde çalışarak önemli bellek bölgelerine erişebilir hatta zarar verebilir.

 Güvenli öncelikli programlarda, program maksimum yetki

ile çalıştığından, kritik bellek bölgeleri programın adres uzayında bulunacaktır. Bu da saldırganın belleğe

yerleştirdiği herhangi bir kod parçasına istediği gibi erişebilmesine ve çalıştırabilmesine neden olacaktır.

(8)

Yaşanmış Integer Overflow

Saldırıları

En bilindik saldıralardan bir tanesi, Linux,

BSD, MacOS X and Windows üzerinde

çalışan Gaim isimli anlık mesajlaşma

programı üzerinde gerçekleşmiştir.

 Kullanıcıdan alınan veri manipule edilerek,Calloc() ile

alınan 0 byte‟lık veri alanına while döngüsü içerisinde sürekli 4GB‟lık veri kopyalanmasına neden

olunmustur.

(9)

Integer Overflow

Saldırılarından Korunma

 Kullanıcının erişip değiştirme yetkisi olan verilerde

aritmetik bir işlem yapılmadan önce verinin büyüklüğünün kontrol edilmesi gerekmektedir

 Birçok uygulama için bu zahmetli bir işlemdir.Birçok farklı fonksiyon arasında paylaşılan verilerde sürekli büyüklük kontrolü yapmak çok maliyetlidir.

 Analiz tabanlı araçlar kullanmak bir diğer korunma

yöntemidir.Ancak problemin doğası gereği bu araçların prosedürler arası hareket eden bu verileri kontrol

(10)
(11)

SQL Enjeksiyon Nedir??? (1)

bir web uygulaması üzerinden arka plandaki

veritabanında çalıştırılması için SQL

komutlarının gönderilmesidir.

saldırganların veri çalma/değiştirmede

kullandıkları web saldırı metodlarından biridir.

Web uygulamasındaki login formu gibi

kullanıcı girişlerinin SQL sorgusunda

kullanıldığı yerlerde SQL komutları eklenmesi

ile veritabanına yetkisiz erişim sağlar

(12)

SQL Enjeksiyon Nedir??? (2)

Web uygulaması geliştirimindeki bir açıktır,

veri tabanı ya da web sunucusu açığı

değildir.

Çoğu programcı halen daha bu problemin

farkında değillerdir.

Birçok alıştırma ve demodaki örnek şablonlar bu

saldırıya açıktır

Daha da kötüsü internetteki birçok çözüm bu

(13)

Ne Sıklıkla Karşılaşılır? (1)

Özellikle frameworkler ve ORM (Object

Relational Mapping) gibi ekstra veritabanı

katmanlarının popülerleşmesi ile eskisine göre

bugünlerde biraz daha az görülmektedir ama

hala daha sıklıkla karşılaşılmaktadır.

SQL Injection Verizon'un en sık rastlanan 15

güvenlik saldırısı listesinde 3. sıradadır.

Web Uygulama Güvenliği Konsorsiyum'una

(WASC) göre 27 Temmuz 2006 tarihine kadar

medyada rapor edilen hack olaylarının %9'u

(14)

Nerelerde Görülür?

Hemen hemen tüm SQL veritabanları ve

programlama dilleri potansiyel olarak bu saldırıya

acıktır

 Ms SQL Server, ORACLE, DB2, Potgres, Sybase vb.

Aşağıdaki araçlar kullanılarak geliştirilmiş

uygulamalarda görülmektedir.

 ASP,JSP,PHP  XML,XSL ve XSQL  Javascript  API‟s  Ve daha birçoğu

(15)

SQL ENJEKSĠYON TÜRLERĠ

 Web uygulamalarında bir çok işlem için kullanıcıdan alınan veri ile dinamik SQL cümlecikleri oluşturulur.

 Sql enjeksiyon 3 farklı şekilde gerçekleştirilebilir.

1. Meta Karakterlerin doğru şekilde ele alınmamasından

yararlanılarak yapılan enjeksiyon

2. Türlerin doğru şekilde ele alınmamasından yararlanılarak

yapılan enjeksiyon

(16)

1-Meta Karakterlerin doğru şekilde ele alınmamasından yararlanılarak yapılan enjeksiyon(1)

Bu enjeksiyon kullanıcı girdisi meta-karakterler için

kontrol edilmeden SQL cümleciğine sokulduğunda

gerçekleşir.Bu da orijinal SQL cümleciğinin

manipüle edilebilinmesine yol açar.

Bu SQL cümleciği, kullanıcının belirttiği userName

ile ilgili tüm kayıtları getirmesi için tasarlanmıştır.

(17)

Ancak “userName” değişkenine “ ‟ or „1‟=„1 ”

yazılırsa SQL cümleciği şuna dönüşecektir

„1‟=1 her zaman doğru olacağından dolayı,

bu cümlecik bütün “users” tablosunun

dökümünü getirecektir.

1-Meta Karakterlerin doğru şekilde ele alınmamasından yararlanılarak yapılan enjeksiyon(2)

(18)

2-Türlerin doğru şekilde ele alınmamasından yararlanılarak yapılan enjeksiyon

Bu enjeksiyon şekli kullanıcıdan alınan girdinin veri

türü kontrolünden geçirilmeden SQL cümleciğine

sokulmasından kaynaklanır.

Yukarıdaki cümlecikte “a_variable” değişkenine

“1;DROP TABLE `users` ” yazılırsa, programcının

çalıştırmak istediği sorgu değil, saldırganın yazdığı

“DROP TABLE” komutu çalışacak ve tüm “users”

tablosu silinecektir.

(19)

3-Kör(Blind) enjeksiyon (1)

 Genellikle sunucu ve uygulama hata mesajlarının veritabanına ait bilgileri sızdırmayacak şekilde ayarlandığı zaman, yollanan isteklere alınan http cevaplarındaki farklılıklardan yararlanarak hedefe

ulaşmamıza ve istediğimiz sorguları çalıştırmamıza izin veren bir SQL enjeksiyon tipidir.

 Bu amaçla true ve false durumları oluşmasına izin verecek SQL ifadeleri uygulama parametrelerine eklenerek, her iki durum için farklı cevaplar alınması beklenir. Böylece bu farklılıklardan

yararlanılarak çalışan sorgunun başarılı olup olmadığı rahatlıkla

(20)

3-Kör(Blind) enjeksiyon (2)

 Uygulamanın yapısına bağlı olarak SQL Injection

açığından etkilense bile farklı durumlar için (true/false durumları) farklı cevaplar üretmediği veya cevapların değişmediği durumlar ile de karşılaşılabilir. Bu tip

uygulamalarda ise true ve false durumları için cevabın gelme sürelerindeki gecikmeler kullanılarak saldırının hedefine ulaşması sağlanabilir.

 Örneğin yollanan sql sorgusu doğru ve geçerli bir sorgu

ise 5 saniye bekle, değilse bekleme gibi sorgular

oluşturmamıza izin veren fonksiyonlar aracılığı ile SQL enjeksiyon saldırıları gerçekleştirmek mümkündür.

(21)

Gerçek Bir SQL Enjeksiyon

Saldırısı Örneği (1)

 Şekilde, aşağıdaki SQL sorgusunu

çalıştıran bir web sayfası görülmektedir.

SELECT id FROM login WHERE username = '$userName„ AND password = '$password‟

(22)

Gerçek Bir SQL Enjeksiyon

Saldırısı Örneği (2)

 Kullanıcı adı olarak “Bil438" verdiğimizi ve şifre için de

“falan' OR 'x'='x ” yazdığımızı varsayalım.

 Web uygulamasında kullanıcı girişleri doğru olarak

filtrelenmediği için, tek tırnak kullanımı “WHERE” kısmını iki-bileşenli bir sorguya dönüştürdü.

 'x'='x' bölümü ilk bölüm ne olursa olsun şartın doğru

olmasını garantiler.

Bu da saldırganın login form'unu geçerli bir kullanıcı / şifre kombinasyonu bilmesine gerek kalmadan

aşabilmesini sağlar.

SELECT id FROM login WHERE username = „srivinas„ AND password = „mypassword' OR 'x'='x'

(23)

SQL Enjeksiyon'un etkileri

nedir?

 SQL enjeksiyon, veritabanınızı saldırganın eline verip

istediği SQL komutlarını çalıştırmasına, istediği verileri silmesine ve değiştirebilmesine izin vermektedir.

 Arka planda kullanılan veritabanına bağlı olarak SQL

enjeksiyon açıkları saldırgan için değişik seviyelerde veri/sistem erişimi sunar.

 Bazı durumlarda dosyalardan okumak veya dosyalara

yazmak, ya da işletim sisteminde komutlar çalıştırmak mümkün olabilir. Micorosft SQL sunucusu gibi bazı SQL sunucuları stored ve extended prosedürler içerirler. Eğer bir saldırgan bu prosedürlere ulaşabilirse bu tam bir

(24)

SQL Enjeksiyondan Korunma

Yöntemleri (1)

 Güvenlik duvarları ve benzer saldırı tespit mekanizmaları

bu konuda tam bir koruma sağlamayabilir. Web sitenizin herkese açık olması gerektiği için güvenlik

mekanizmaları web trafiğinin veritabanı sunucularınız ile web uygulaması aracılığı ile haberleşmesine izin

verecektir.

 Sunucularınızı, veritabanlarını, programlama dillerini ve

işletim sistemlerinizi güncelleyip yamalarını geçmeniz kritik öneme sahip fakat SQL Enjeksiyon saldırılarını engellemede tam çözüm değildir.

(25)

SQL Enjeksiyondan Korunma

Yöntemleri (2)

 SQL Enjeksiyon saldırılarından korumak 3 bölümlük bir

işlemden oluşur:

1. Sitenizin, SQL Enjeksiyon ve diğer açıklara karşı tam bir

güvenlik denetiminin yapılması ile güvenliğinizin mevcut halinin analiz edilmesi.

2. Web uygulamalarının ve BT altyapısının diğer tüm

bileşenlerinin steril olması için en uygun kodlama standartlarının / tekniklerinin kullanılması

3. Web bileşenlerindeki her değişiklik veya eklemeden

(26)

SQL Enjeksiyondan Korunma

Yöntemleri (3)

Ek olarak, SQL Enjeksiyon ve diğer tüm

saldırı tekniklerinin kontrolünde aklınızda

olması gereken ana ilkeler şunlardır:

“Web sitesinde güvenli olduğunu düşündüğümüz hangi bölümler hack saldırılarına açık?"

"Bir uygulamaya hangi veriyi göndererek normalde yapmaması gereken bir şeyi yaptırabiliriz?".

(27)

SQL Enjeksiyondan Korunma

Yöntemleri (4)

 SQL Enjeksiyon açıklarının kontrolü web sitesinin ve

web uygulamalarının denetimi ile olur. Manuel açık denetimi karmaşık olabilir ve çok zamanınızı alabilir.

 Web uygulamalarını denetlemenin en iyi yolu otomatik

ve keşifsel (heuristic) web güvenlik tarayıcısı kullanmaktır.

 Otomatik web güvenlik tarayıcısı tüm web sitenizi gezer

ve SQL enjeksiyon açıklarını test eder. Hangi

(28)

GreenSQL DB Firewall ile Sql

Injection Önlemi

 GreenSQL, sql injection saldırıları için veritabanlarını koruma altına almak üzere geliştirilmiş bir veritabanı firewall uygulamasıdır.

 MySQL ve PostgreSQL‟ler için destek sunan GreenSQL temel olarak proxy olarak çalışarak gerçek database‟in önünde durur ve web uygulamasından gelen sql bağlantı isteklerini karşılayarak SQL komutlarını inceler ve bir risk scoring matrix kullanarak ilgili sql

cümlelerini analiz ederek aksiyon alır.

 Bu şekilde, web uygulamanızda bir sql injection açığı bulunsa dahi GreenSQL sayesinde açıktan etkilenmemeniz mümkün olabilir.

(29)

Sonuç

Aldığınız güvenlik önlemleri veya yazıp da

kullanmayı bir alışkanlık haline

getiremediğiniz güvenlik politikaları sizi

güvenlik problemlerine karşı koruyabilir mi?

Eğer güvenlik ile ilgili problemleri yönetmeyi

süreç temelli bir güvenlik bilinci içerisinde ele

almıyorsanız hiçbir güvenlik ürünü, bir

(30)

Referanslar

• http://www.eweek.com/c/a/Application- Development/How-to-Defend-Against-Deadly-Integer-Overflow/ • http://www.phrack.org/issues.html?issue=60&id=10#artic le • http://msdn.microsoft.com/en-us/library/ms161953.aspx • http://www.unixwiz.net/techtips/sql-injection.html • http://en.wikipedia.org/wiki/SQL_injection • http://sqlzoo.net/hack/ • http://download.oracle.com/oll/tutorials/SQLInjection/inde x.htm

Referensi

Dokumen terkait

Penelitian ini bertujuan untuk mengetahui pengaruh daya tarik produk pesaing, perilaku mencari variasi terhadap loyalitas konsumen melalui kepuasan konsumen pada

Acharya (2002) menjelaskan bahwa bagaimana seorang anak berupaya mengasimilasi informasi, itu dapat dilihat dalam bentuk dua pendekatan yang saling berhubungan: (1) gaya kognitif

enggunaan ster%i/ masih k%ntr%?ersial. angguan 4erna=asan /iatasi /engan intu&asi en/%trakeal, sementara gagal ginal akut mungkin memerlukan /ialisis. isa ular

Problematika mendasar pengolahan makanan yang dilakukan masyarakat lebih disebabkan budaya pengelohan pangan yang kurang berorientasi terhadap nilai gizi, serta

Namun pendekatan yang diusulkan oleh Zoran dalam sistem perolehan citra, mempunyai satu kekurangan yaitu pendekatan yang digunakan adalah crisp, dengan pendekat- an ini ada

Hal ini berarti 56,1% varians variabel keputusan pembelian (Y) dapat ditentukan oleh variabel kualitas produk (X1), dan sisanya 1 - 0,561 = 0,439 atau sebesar 43,9%

Karena pada saat ditutupnya palang pintu tersebut pada waktu kereta lewat justru menyebabkan penumpukan / antrian kendaraan yang cukup besar, dan pada saat dibuka kembali

Berdasarkan kriteria yang ditentukan dapat dijelaskan bahwa aplikasi Augmented Reality Video Kartun pada modul ilmu pengetahuan sosial memenuhi kriteria valid , sehingga