Kötü amaçlı kod nedir? Kötü amaçlı kod nedir Sunucu yazılımına güçlü parolalar koyun

Kötü amaçlı kod, bir web sitesinin normal çalışmasına müdahale eden koddur. Temalara, veritabanlarına, dosyalara ve eklentilere gömülebilir.


Kanalımızda daha fazla video var - SEMANTICA ile internet pazarlamasını öğrenin

Kötü amaçlı kodun çalışmasının sonucu, bazı yararlı içeriğin kaldırılması veya üçüncü taraf bir kaynakta yayınlanması olabilir. Saldırganlar bu sayede içerik hırsızlığını organize edebilir. Yazarın makalelerine sahip genç bir kaynağın bu etkiye maruz kalması özellikle hayal kırıklığı yaratıyor. Daha eski bir kaynaktan içerik çalanın kendisi olduğu izlenimini edinebilirsiniz.

Ayrıca, ücretsiz bir temaya kötü amaçlı kod yerleştirilebilir gizli bağlantılar arama motorlarının erişebildiği üçüncü taraf sayfalarına. Bu bağlantılar her zaman kötü amaçlı olmayacaktır, ancak ana sitenin ağırlığının zarar görmesi garanti edilir.

Tüm zararlı kodların genel amacı web sayfalarını bozmaktır.

Harici olarak, kötü niyetli kod kaotik bir karakter kümesidir. Gerçekte, bu saçmalık, bir dizi komut içeren şifreli bir kodu gizler.

Kötü niyetli kod siteye nasıl giriyor?

Kötü niyetli kodun bir siteye girmesinin iki yolu vardır.

1. Şüpheli ve güvenilir olmayan kaynaklardan dosya ve eklenti indirme. Çoğu zaman, şifrelenmiş bağlantılar siteye bu şekilde girer. Açık kod nadiren siteye bu şekilde girer.

2. ardından penetrasyon. Bu yöntem daha tehlikeli olarak kabul edilir, çünkü bir web sayfasını hacklemek yalnızca "tek seferlik" bir kodu değil, aynı zamanda kötü amaçlı bir programın (kötü amaçlı yazılım) öğelerini içeren tüm yapıları da aktarmayı mümkün kılar.

Böyle bir kodu yok etmek çok zordur, çünkü. silindikten sonra geri yüklenebilir.

Kötü amaçlı kod için web sitesi kontrolü

Bu sinsi yapıların sadece aktif temada değil, herhangi bir kaynak dosyasında da görünebileceği unutulmamalıdır. Onları bulmanın birkaç yolu vardır:

  • Manuel olarak. Bunu yapmak için, mevcut tüm dosyaların içeriğini yedeğin virüs bulaşmamış sürümleriyle karşılaştırmanız gerekir. Farklı olan her şey kaldırılmalıdır.
  • Güvenlik eklentileri ile. Özellikle WordPress, Wordfence Security eklentisini sunar. Fazladan kod içeriği için sayfa dosyalarını tarama seçeneği vardır.
  • Barındırma desteği yardımıyla. Site sahibi, kaynağı antivirüs programıyla tarama talebiyle onlarla iletişime geçme hakkına sahiptir. Sonuç olarak, virüslü dosyaların varlığını yansıtan bir rapor sunarlar. Bu dosyalar, normal bir metin düzenleyici kullanılarak gereksiz yapılardan temizlenebilir.
  • Siteye SSH erişimi aracılığıyla. Aramanın kendisi şu komutlar kullanılarak gerçekleştirilir:

/geçerli sayfa dizini bul -tür f -iname "*" -exek -"eval" () \; > ./eval.log

/geçerli sayfa dizini bul -tür f -iname "*" -exek-"base64" () \; > ./base64.log

/geçerli sayfa dizini bul -type f -iname "*" -exek -"file_get_contents" () \; > ./file_get_contents.log

Yürütmelerinin bir sonucu olarak, şüpheli dosyalar hakkında bilgi elde edilecektir. Bu dosyaların listesi, geçerli dizinde saklanan günlüğe yazılacaktır.

  • değerlendirme işlevini kullanarak bir siteyi kötü amaçlı kod için kontrol etme. Bu php işlevi, şifrelenmiş bile olsa herhangi bir kodu yürütür. Argümanlardan biri olarak, kodlama türü bu işleve girdi olarak verilir (genellikle base64_decode veya str_rot13). Kötü amaçlı kodun anlamsız bir Latin karakterleri kümesi gibi görünmesi, popüler kodlamaların kullanımı sayesindedir.

Sayfa düzenleyiciyi açın.

functions.php dosyasının içeriğini panoya kopyalayın.

Herhangi birine yapıştırın Metin düzeltici(not defteri).

Eval komutunu bulun.

  • Kötü amaçlı kodu kaldırmadan önce, işlevin girdi olarak hangi parametreleri beklediğini analiz edin. Çünkü parametreler şifrelenmiş biçimde alınır, kod çözücüler kullanılarak şifrelerinin çözülmesi gerekir. Girdi parametresini tanıdıktan sonra, functions.php dosyasının metninde gelecekteki konumuna karar verebilirsiniz.

Kötü amaçlı kodu kaldırma

Kötü amaçlı kod tespit edildikten sonra, bir metin dosyasında normal bir satır olarak silinmesi yeterlidir.

Kötü amaçlı kod koruması

Sitede kötü niyetli kodun görünmesini önlemek için bir dizi önleyici tedbirin izlenmesi gerekmektedir.

Yalnızca kanıtlanmış yazılımları kullanın:

  • Dağıtımları yalnızca güvenilir kaynaklardan indirin.
  • Zamanla, sunucu yazılımı güncellemesini çalıştırın.
  • Düzenli sunucu güvenlik denetimleri gerçekleştirin.
  • Eski hata ayıklama komut dosyalarını kaldırın.

Sunucu yazılımında güçlü parolalar belirleyin:

  • Farklı durumdaki sayıları ve harfleri içeren 12 karakterlik bir yapı oluşturun.
  • Her hizmet için kendi benzersiz şifrenizi oluşturun.
  • Şifrelerinizi 3 ayda bir değiştirin.

Kullanıcı girişinin kontrolünü elinize alın:

  • İçeriği sayfa koduna dahil edilecek olan giriş alanlarında HTML biçimlendirme filtreleri ayarlayın.
  • İzin verilen aralıkla uyumluluk için giriş verilerinin sunucu tarafında bir doğrulaması düzenleyin.
  • WAF'ı kullanın. Web Uygulaması Güvenlik Duvarı, sitenizi bilgisayar korsanlarının saldırılarına karşı korumak için güçlü bir araçtır.

Kaynağınıza erişim haklarını sınırlayın.

Web sitesi motorunuzun yönetim araçlarına ve veritabanlarına erişimi engelleyin veya kısıtlayın. Ayrıca, ayar dosyalarına ve çalışma kodunun yedek kopyalarına erişimi engelleyin.

Kötü niyetli kodun bu şekilde sızması, en çok kullanıcı dosyalarını indirme yeteneğinin uygulandığı sitelerde görülür.

1. Botlara karşı koruma düzenleyin. Bu amaçlar için, birçok CMS özel eklentilerle donatılmıştır;

2. Kullanıcı girişi doğrulamasını ayarlayın:

  • t> yapısının içine JavaScript kodunun eklenmesini önleyin.
  • Güvenli HTML etiketlerinin bir listesini tutun ve bu listede yer almayan yapıları filtreleyin.
  • Kullanıcılar tarafından gönderilen bağlantıları analiz edin.
  • Bunun için var Özel servis Güvenli Tarama API'si gibi. Bir belgenin güvenliğini URL ile kontrol etmenizi sağlar.

Kötü amaçlı kodun yanlışlıkla yerleştirilmesi nasıl önlenir?

  • Kullandığınız yazılımı dikkatlice izleyin:

CMS kitaplıklarını ve uzantılarını yalnızca güvenilir kaynaklardan ve en iyisi de resmi sitelerden indirin.

Sitenizin motoruna koyacağınız standart dışı uzantıların kodunu inceleyin.

  • Reklamları çok dikkatli yerleştirin:

Sitenizde yalnızca güvenilir reklamcılar tarafından sunulan reklamlar yayınlayın.

Sayfanıza statik içerik eklemeye çalışın.

dikkat bağlı programlar gizli bloklarla.

Kötü amaçlı yazılımların web siteleri aracılığıyla dağıtılması

Costin Rayu, Kaspersky Lab

Giriş. Siber suç: trendler ve gelişim

Son birkaç yılda internet tehlikeli bir yer haline geldi. Başlangıçta nispeten az sayıda kullanıcı için oluşturulmuş olmasına rağmen, yaratıcılarının beklentilerinin çok ötesine geçti. Bugün dünyada 1,5 milyardan fazla internet kullanıcısı var ve teknoloji daha erişilebilir hale geldikçe sayıları sürekli artıyor.

Suçlular da bu eğilimi fark ettiler ve interneti kullanarak suç işlemenin (artık siber suç olarak adlandırılıyor) çok sayıda önemli avantajı olduğunu çok çabuk anladılar.

İlk olarak, siber suç çok riskli değildir: jeopolitik engelleri olmadığı için kolluk kuvvetlerinin suçluları yakalaması zordur. Ayrıca, uluslararası soruşturma ve davaların yürütülmesi çok maliyetli olduğundan, bu tür işlemler genellikle yalnızca özel durumlarda gerçekleştirilir. İkincisi, siber suç basittir: İnternette bilgisayarları hacklemek ve virüs yazmak için çok sayıda "talimat" vardır ve hiçbir özel bilgi veya deneyim gerekmez. Bunlar, siber suçu gerçekten kapalı bir ekosistem olan milyarlarca dolarlık bir sektör haline getiren iki ana faktördür.

Hem bilgi güvenliği şirketleri hem de yazılım üreticileri sürekli olarak siber suçlarla mücadele ediyor. Amaçları, İnternet kullanıcılarına güvenilir koruma sağlamak ve güvenli bir ortam oluşturmaktır. yazılım. Saldırganlar ise alınan karşı önlemlere karşı koymak için sürekli olarak taktik değiştiriyor ve bu da iki farklı eğilimin ortaya çıkmasına neden oluyor.

İlk olarak, kötü amaçlı yazılım sıfır gün güvenlik açıkları kullanılarak dağıtılır, örn. Yamaların henüz oluşturulmadığı güvenlik açıkları. Bu tür güvenlik açıklarının yardımıyla, böyle bile bilgisayar sistemleri hangisinde hepsi En son güncellemeler, ancak özel koruyucu çözümler yoktur. Sıfırıncı gün güvenlik açıkları değerli bir maldır (kullanımları potansiyel olarak ciddi sonuçlara yol açabilir), karaborsada onbinlerce dolara satılırlar.

İkinci olarak, hassas bilgileri çalmak ve karaborsada satmak için özel olarak tasarlanmış kötü amaçlı programların sayısında keskin bir artış görüyoruz: kredi kartı numaraları, banka bilgileri, eBay veya PayPal gibi sitelere erişim için kullanılan parolalar ve hatta çevrimiçi. -oyunlar, örneğin World of Warcraft.

Siber suçun artmasının bariz nedenlerinden biri, her zaman yeni siber suç teknolojilerinin yaratılmasının arkasındaki itici güç olacak olan karlılığıdır.

Siber suçluların ihtiyaçları için gerçekleştirilen geliştirmelere ek olarak, kötü amaçlı yazılımların Dünya çapında Ağ. Bu on yılın başlarında Melissa gibi e-posta solucanlarının neden olduğu salgın hastalıkların ardından, birçok güvenlik şirketi çabalarını kötü amaçlı ekleri etkisiz hale getirebilecek çözümler geliştirmeye odakladı. Bu bazen tüm yürütülebilir eklerin iletilerden kaldırılmasına neden oluyordu.

Ancak son zamanlarda Web, kötü amaçlı yazılım dağıtımının ana kaynağı haline geldi. Kötü amaçlı yazılımlar web sitelerine yerleştirilir ve ardından kullanıcıları manuel olarak çalıştırmaları için kandırılır veya virüs bulaşmış bilgisayarlardaki açıklardan yararlanma yoluyla otomatik olarak yürütülür.

Kaspersky Lab olarak bizler, bunu artan bir endişeyle izliyoruz.

İstatistik

Son üç yıldır, hangi noktada kötü amaçlı yazılım dağıtım noktaları haline geldiklerini belirlemek için sözde temiz web sitelerini (100.000 ile 300.000 arasında) izliyoruz. Yeni etki alanları kaydedildikçe izlenen sitelerin sayısı istikrarlı bir şekilde arttı.

Tablo, yıl boyunca izlenen web sayfalarının kaydedilen maksimum bulaşma oranını göstermektedir. Virüs bulaşmış sitelerin payındaki keskin bir artış açıktır: 2006'da yaklaşık yirmi bin siteden her site virüs bulaştıysa, 2009'da yüz elli siteden her site zaten virüs bulaşmıştı. Etkilenen sitelerin yüzdesi, bu son rakam civarında dalgalanıyor ve bu, bir doygunluk noktasına ulaşıldığını gösterebilir: virüs bulaşmış olabilecek tüm web siteleri virüs bulaşmış olabilir. Ancak, yeni güvenlik açıkları keşfedildikçe veya saldırganların yeni web sitelerini etkilemesine izin veren yeni araçlar ortaya çıktıkça sayıları artar veya düşer.

Aşağıdaki iki tablo, 2008 ve 2009 yıllarında web sitelerinde en sık karşılaşılan kötü amaçlı yazılımlara ilişkin verileri göstermektedir.

İlk 10 Kötü Amaçlı Yazılım - 2008

İlk 10 Kötü Amaçlı Yazılım - 2009

2008'de çok sayıda vakada Trojan-Clicker.JS.Agent.h Truva Atı bulundu. Bunu %1'in altında bir farkla Trojan-Downloader.JS.Iframe.oj takip ediyor.


Sayfaya Trojan-Clicker.JS.Agent.h bulaştı

Kodu çözülmüş Trojan-Clicker.JS.Agent.h

Trojan-Clicker.JS.Agent.h, kötü amaçlı kod enjekte etmek için 2008'de kullanılmış ve hala (2009'da) kullanılmakta olan bir mekanizmanın tipik bir örneğidir. Sayfaya, ayrıştırmayı zorlaştırmak için genellikle gizlenmiş küçük bir JavaScript kodu parçası eklenir. Yukarıdaki şekilde gösterilen kodda şaşırtma, kötü amaçlı kodu oluşturan ASCII karakterlerinin onaltılık kodlarıyla değiştirilmesinden ibarettir. Şifresi çözüldüğünde, kod genellikle açıklardan yararlanmaların bulunduğu siteye yönlendiren bir iframe'dir. Açıklardan yararlanmalar birçok farklı sitede barındırıldığı için bağlantının işaret ettiği IP adresi değişebilir. Kötü amaçlı bir sitenin ana sayfası genellikle IE, Firefox ve Opera için güvenlik açıkları içerir. En sık kullanılan ikinci kötü amaçlı yazılım olan Trojan-Downloader.JS.Iframe.oj da benzer şekilde çalışır.

2009'da kötü amaçlı yazılımların web sayfaları aracılığıyla dağıtıldığı iki ilginç olay yaşandı. İlk durumda, ilk olarak Temmuz 2008'de keşfedilen ve 2009'da yaygınlaşan Net-Worm.JS.Aspxor.a kötü amaçlı yazılımından bahsediyoruz. Bu kötü amaçlı yazılım ile özel yardımcı program kötü amaçlı iframe'ler enjekte ettiği web sitelerinde SQL güvenlik açıklarını bulur.

Bir başka ilginç durum da Gumblar kötü amaçlı yazılımıdır. Adını, istismarları dağıtmak için kullandığı Çin etki alanından almıştır. Bir web sitesine atılan gizlenmiş JavaScript'teki "gumblar" dizesi, siteye virüs bulaştığının kesin bir işaretidir.


Gumblar kodunu bir web sitesi sayfasına yerleştirme örneği

Kod gizlemenin ardından, Gumblar kötü amaçlı kodu şöyle görünür:


Gumblar çözülmüş kod

"gumblar.cn" alanı kapatıldı, ancak bu, siber suçluların yeni alanlardan kötü niyetli saldırılara devam etmesini engellemedi.

Enfeksiyon yolları ve dağıtım yöntemleri

Şu anda, web sitelerine kötü amaçlı yazılım bulaştırmanın üç ana yolu vardır.

İlk popüler yöntem, web sitesinin kendisinin güvenlik açıklarından yararlanmaktır. Örneğin, sitenin sayfalarına kötü amaçlı kod eklemenizi sağlayan SQL kodunun tanıtımı. ASPX veya Trojan gibi saldırı araçları, bu yöntemin nasıl çalıştığını gösterir: aynı anda binlerce IP adresine toplu tarama yapmak ve kötü amaçlı kod enjekte etmek için kullanılabilirler. Bu tür saldırıların izleri genellikle web sunucusu erişim günlüklerinde görülebilir.

İkinci yöntem, web sitesi geliştiricisinin bilgisayarına, HTML dosyalarının oluşturulmasını ve yüklenmesini izleyen ve ardından bu dosyalara kötü amaçlı kod enjekte eden kötü amaçlı yazılım bulaştırmayı içerir.

Son olarak, başka bir yöntem, bir web sitesi geliştiricisinin veya bir barındırma hesabına erişimi olan başka bir kişinin bilgisayarına şifre çalan bir Truva Atı (Ransom.Win32.Agent.ey gibi) bulaştırmaktır. Böyle bir Truva Atı, FileZilla ve CuteFtp gibi popüler ftp istemcilerinden topladığı FTP hesaplarının parolalarını aktarmak için genellikle sunucuyla HTTP aracılığıyla iletişim kurar. Sunucuda bulunan kötü amaçlı yazılım bileşeni, alınan bilgileri veritabanına yazar. SQL verileri. Ardından, yine sunucuda bulunan özel bir program, tüm FTP hesaplarında oturum açma prosedürünü gerçekleştirir, dizin sayfasını çıkarır, Truva atı bulaşmış kodu buraya ekler ve sayfayı geri yükler.

İkinci durumda, barındırma sağlayıcısının hesap bilgileri saldırganlar tarafından bilindiğinden, sitelere yeniden bulaşma sıklıkla meydana gelir: web sayfası geliştiricileri enfeksiyonu kendileri fark eder veya site ziyaretçilerinden öğrenir, sayfayı kötü amaçlı koddan temizler ve ertesi gün sayfa yeniden virüslendi.


Bir web sayfasının yeniden bulaşması örneği (*.*.148.240)

Diğer bir yaygın durum, aynı güvenlik açığı veya barındırma hesabı verileri hakkındaki bilgilerin aynı anda farklı siber grupların eline geçmesi ve aralarında bir mücadelenin başlamasıdır: her grup bir web sitesine kendi kötü amaçlı yazılımını bulaştırmaya çalışır. İşte böyle bir duruma bir örnek:


Bir web sitesine (*.*.176.6) farklı kötü amaçlı yazılımlarla çoklu bulaşma örneği

06/11/2009 tarihinde izlediğimiz web sitesi temizdi. 07/05/2009 tarihinde, Trojan-Clicker.JS.Agent.gk'ye kötü amaçlı yazılım bulaştı. 15.07.2009 tarihinde, web sitesine başka bir kötü amaçlı yazılım, Trojan-Downloader.JS.Iframe.bin bulaştı. On gün sonra siteye başka bir program bulaştı.

Bu durum oldukça yaygındır: web sitelerine, kodları birbiri ardına yerleştirilen farklı kötü amaçlı yazılımlar aynı anda bulaşabilir. Bu, erişim verileri farklı siber grupların eline geçtiğinde olur.

Aşağıda, bir web sitesine kötü amaçlı kod bulaştığında yapılması gereken bir dizi işlem yer almaktadır:

  • Barındırma sunucusuna kimin erişebileceğini ayarlayın. Güncel veritabanına sahip bir internet güvenlik programı ile bilgisayarlarını kontrol etmeye başlayın. Algılanan tüm kötü amaçlı yazılımları kaldırın
  • Yeni, güçlü bir barındırma parolası belirleyin. Güçlü şifre seçimini zorlaştırmak için semboller, sayılar ve özel karakterlerden oluşmalıdır
  • Etkilenen tüm dosyaları temiz kopyalarla değiştirin
  • Virüslü dosyaları içerebilecek tüm yedekleri bulun ve bunları temizleyin

Deneyimlerimiz, virüslü web sitelerinin genellikle tedaviden sonra yeniden virüs bulaştığını gösteriyor. Öte yandan, bu genellikle yalnızca bir kez olur: ilk enfeksiyondan sonra, web yöneticisi kendini nispeten yüzeysel eylemlerle sınırlayabilirse, ikinci bir enfeksiyon durumunda, genellikle sitenin güvenliğini sağlamak için daha ciddi önlemler alır.

Evrim: "temiz" web sitelerinde kötü amaçlı yazılım barındırma

Birkaç yıl önce, siber suçlular kötü amaçlı yazılım barındırmak için web'i aktif olarak kullanmaya başladıklarında, genellikle sözde kurşun geçirmez barındırma veya çalıntı kredi kartlarıyla ödeme yaptıkları barındırma yoluyla faaliyet gösteriyorlardı. Bu eğilimi fark eden İnternet güvenlik şirketleri, kötü amaçlı kaynakların (Amerikan barındırma sağlayıcısı McColo ve Estonyalı sağlayıcı EstDomains gibi) barındırılmasına izin veren vicdansız barındırma sağlayıcılarına karşı mücadelede güçlerini birleştirdi. örneğin, bir siteyi kapatmanın hala zor olduğu Çin'de bulunan siteler, kötü amaçlı yazılımları "temiz" ve oldukça güvenilir etki alanlarında barındırmaya doğru önemli bir geçiş olmuştur.

Etki ve tepki

Daha önce de söylediğimiz gibi, siber suçlular ile antivirüs sağlayıcıları arasındaki sürekli mücadelenin en önemli yönlerinden biri, düşmanın yaptıklarına hızla yanıt verebilme yeteneğidir. Her iki taraf da sürekli olarak mücadele taktiklerini değiştiriyor ve yeni teknolojileri devreye sokarak düşmana karşı koymaya çalışıyor.

Çoğu web tarayıcısı (Firefox 3.5, Chrome 2.0 ve internet gezgini 8.0) artık bir URL filtresi biçiminde yerleşik korumaya sahiptir. Bu filtre, kullanıcının bilinen veya bilinmeyen güvenlik açıklarından yararlanan veya kişisel bilgileri çalmak için sosyal mühendislik teknikleri kullanan kötü amaçlı sitelere erişmesini engeller.

Örneğin, Firefox ve Chrome, Google Güvenli Tarama API'sini kullanır. ücretsiz servis URL filtreleme için Google tarafından. Bu yazının yazıldığı sırada, Google Güvenli Tarama API listesi yaklaşık 300.000 bilinen kötü amaçlı web sitesi ve 20.000'den fazla kimlik avı web sitesi içeriyordu.

Google Güvenli Tarama API'si, URL filtrelemeye daha akıllı bir yaklaşım getiriyor: Google Güvenli Tarama, Internet Explorer 8'deki kimlik avı filtresinin yaptığı gibi, her URL'yi doğrulama için harici bir kaynağa göndermek yerine, URL'leri MD5 algoritması tarafından hesaplanan sağlama toplamlarına göre kontrol eder. Bu filtreleme yönteminin etkili olabilmesi için liste sağlama toplamları kötü amaçlı adresler düzenli olarak güncellenmelidir; güncellemelerin her 30 dakikada bir yapılması önerilir. Bu yöntemin dezavantajı, kötü amaçlı web sitelerinin sayısının listedeki giriş sayısından fazla olmasıdır. Listenin boyutunu optimize etmek için (şu anda yaklaşık 12 MB), yalnızca en sık karşılaşılan kötü amaçlı siteler dahil edilmiştir. Bu, bu teknolojileri destekleyen uygulamaları kullansanız bile, listede yer almayan kötü amaçlı siteleri ziyaret ettiğinizde bilgisayarınızın hala bulaşma riski altında olduğu anlamına gelir. Genel olarak, güvenli gezinmeye yönelik teknolojilerin yaygın kullanımı, web tarayıcısı geliştiricilerinin web siteleri aracılığıyla kötü amaçlı yazılım yayma konusundaki yeni eğilimi fark ettiklerini ve harekete geçtiklerini göstermektedir. Aslında, güvenliği etkinleştirilmiş web tarayıcıları şimdiden norm haline geliyor.

Çözüm

Son üç yılda, kötü amaçlı yazılım bulaşmış meşru web sitelerinin sayısında keskin bir artış oldu. Bugün, İnternet'teki virüslü sitelerin sayısı üç yıl öncesine göre yüz kat daha fazladır. Sık ziyaret edilen siteler, kısa sürede çok sayıda bilgisayara bulaşabildikleri için siber suçlular için caziptir.

Web yöneticileri birkaç tane sunabilir basit ipuçları web sitelerinin güvenliğinin nasıl sağlanacağı hakkında:

  • Barındırma hesaplarını güçlü parolalarla koruyun
  • Dosyaları sunuculara yüklemek için FTP yerine SCP/SSH/SFTP protokollerini kullanın - bu şekilde şifreleri İnternet üzerinden açık metin olarak göndermekten kendinizi koruyacaksınız
  • Bir virüsten koruma ürünü yükleyin ve bir bilgisayar taraması çalıştırın
  • Stokta birkaç tane bulundurun yedekler enfeksiyon durumunda geri yükleyebilmek için site.

İnternette gezinirken, bir web sitesinden kötü amaçlı kod bulaşma riskini artıran birkaç faktör vardır: korsan yazılım kullanmak, kullandığınız yazılımdaki güvenlik açıklarını gideren güncellemeleri göz ardı etmek, bilgisayarınızda bir antivirüs çözümü olmaması ve genel İnternet tehditlerinin cehaleti veya eksik anlaşılması.

Korsan yazılım, kötü amaçlı yazılımın dağıtımında önemli bir rol oynar. Korsan kopyalar Microsoft Windows genellikle desteklemiyor otomatik güncellemeler Microsoft tarafından yayınlanan ve siber suçlulara bu ürünlerdeki yama uygulanmamış güvenlik açıklarından yararlanma fırsatı veren.

Ayrıca, eski İnternet sürümleri Hala en popüler tarayıcı olan Explorer, çok sayıda güvenlik açığına sahiptir. Çoğu durumda, Internet Explorer 6.0 olmadan yüklü güncellemeler herhangi bir kötü amaçlı web sitesinin kötü niyetli etkisinden korunmaz. Bu nedenle, korsan yazılımları, özellikle Windows'un korsan kopyalarını kullanmaktan kaçınmak son derece önemlidir.

Bir başka risk faktörü de anti-virüs programı kurulu olmayan bir bilgisayarda çalışmaktır. Sistemin kendisinde en son güncellemeler yüklü olsa bile, kötü amaçlı kod, üçüncü taraf yazılımlardaki sıfır gün güvenlik açıkları aracılığıyla sisteme girebilir. Güncellemeler antivirüs programları genellikle yazılım ürünlerine yönelik yamalardan çok daha sık yayınlanır ve üçüncü taraf yazılımlardaki güvenlik açıklarının henüz yamalanmadığı bir zamanda sistem güvenliği sağlar.

Gerekli güvenlik düzeyini korumak için yazılım güncellemelerini yüklemek önemli olmakla birlikte, insan faktörü de önemli bir rol oynar. Örneğin, bir kullanıcı, video yerine kötü amaçlı yazılım yerleştirildiğinden habersiz, Web'den indirilen "ilginç bir videoyu" izlemek isteyebilir. Bu hile, istismarların işletim sistemine sızmaması durumunda genellikle kötü amaçlı sitelerde kullanılır. Bu örnek, kullanıcıların neden İnternet tehditlerinin, özellikle de son zamanlarda siber suçlular tarafından aktif olarak saldırıya uğrayan sosyal ağlarla (Web 2.0) ilgili tehlikelerin farkında olmaları gerektiğini göstermektedir.

  • Korsan yazılım indirmeyin
  • Tüm yazılımları zamanında güncelleyin: işletim sistemi, web tarayıcıları, PDF görüntüleyiciler, oynatıcılar vb.
  • gibi bir virüsten koruma ürünü yükleyin ve her zaman kullanın. Kaspersky İnterneti Güvenlik 2010
  • Çalışanlarınızın çevrimiçi tehditler ve kendilerini nasıl koruyacakları hakkında bilgi edinebilecekleri www.viruslist.com gibi güvenlik web sitelerinde her ay birkaç saat geçirmelerini bir kural haline getirin.

Son olarak şunu unutmayın: Bir enfeksiyonu önlemek onu iyileştirmekten daha kolaydır. Güvenlik önlemlerini alın!

Kategori: .

Bu makale İnternet kullanıcılarına ve sahiplerine yöneliktir. bilgi kaynakları. Makalenin amacı, web sitelerine kötü amaçlı kod bulaştırma yöntemlerini, bunun olası sonuçlarını ve kötü amaçlı yazılımla mücadele yollarını açıklamaktır.

Bu kötü amaçlı kod nedir, nereden geliyor ve ne kadar tehlikeli?

Kötü amaçlı kod, kötü amaçlı yazılım içeren bir kaynağa bağlantıdır. Günümüzde en yaygın olanı, sahte bir antivirüs (Sahte Antivirüs) veya bir ikame modülüdür. arama sorguları veya spam yazılımı. Bazı durumlarda, kötü amaçlı yazılım, bir kullanıcının bilgisayarından gizli verileri çalma işlevlerini birleştirebilir, örneğin bunlar, web sitelerini yönetmek için yönetici arayüzlerinden gelen parolalar, ftp parolaları, çevrimiçi hizmetler için hesaplar olabilir.

1) Kötü amaçlı bir bağlantı, bir trafik dağıtım sistemine (TDS) yol açar. Trafik dağıtım sistemi, ziyaretçiyi ülkeye bağlı olarak yönlendirmenizi sağlar, işletim sistemi, tarayıcı, kullanılan dil ve çeşitli kaynaklarla ilgili diğer ayrıntılar. Bu kaynaklar, sırayla, özellikle bu kitleye yönelik kötü amaçlı yazılım veya bu savunmasız yazılım içerir. Ayrıca, saldırgan tarafından tasarlanmamış bir tarayıcıdan veya işletim sistemi sürümünden kötü niyetli bir bağlantıya tıklarsanız, ya yalnızca boş bir ekran görürsünüz ya da örneğin bir arama motoru görürsünüz. Google sayfası. Bu, kötü amaçlı yazılımları tespit etmeyi biraz daha zorlaştırır. Ancak dikkatli bir analiz ile sistemin mantığını anlayabilir ve kendinizi enfeksiyondan koruyabilirsiniz.
2) Kötü amaçlı bir bağlantı, popüler tarayıcılar ve yazılım ürünleri için "spoiler" yol açar. "Sploits", bir kullanıcının bilgisayarına sessizce kötü amaçlı yazılım indirmek ve yürütmek için yazılımdaki güvenlik açıklarını kullanan özel hazırlanmış kodlardır. Bu durumda kullanıcının yazılımı belirlenir ve güvenlik açığı durumunda bulaşma gerçekleşir.

Bir web sitesinde kötü niyetli kodun varlığını gizlemek için şifrelenir, ancak açık kod durumları da vardır.

Şifrelenmiş kötü niyetli bağlantı örneği:

Kötü niyetli bir bağlantının yapısını biraz analiz edelim:
alan adı— bestlotron.cn
senaryo- in.cgi (SUTRA trafik dağıtım sistemi)
şema— kokain51

Bir trafik dağıtım sistemine yönlendiren kötü amaçlı bağlantılar, son zamanlarda en yaygın olanlardır. Bu durumda, bir web sitesine erişim sağlayan ve kaynağına trafik dağıtım sistemine kötü amaçlı bir bağlantı yerleştiren bir saldırgan, bu web sitesinden gelen trafiği kontrol edebilir. Örnekte belirtilen "cocacola51" şeması birden fazla kötü amaçlı yazılım içerebilir. Dolayısıyla, trafik dağıtım sistemi, saldırıya uğramış web sitesinin ziyaretçisi ile saldırganın kötü amaçlı yazılımı arasında yalnızca bir aracıdır.

İkinci örnek, şifrelenmiş kötü niyetli bir bağlantıyı açıkça göstermektedir. Kural olarak, şifreleme için basit algoritmalar kullanılır ve neredeyse% 99'unda bu tür bağlantıların şifresi kolayca çözülür.

Şifre çözme işleminden sonra aşağıdaki kodu alırız:

Şimdi, şema 3'teki ilk örnekten bize tanıdık gelen trafik dağıtım sisteminin hem site adresini hem de komut dosyasını zaten gözlemleyebiliyoruz.

Web sitelerindeki bu kod nereden geliyor ve neden tehlikeli olabilir?
Kural olarak, web siteleri artık manuel olarak saldırıya uğramamaktadır. Her şey otomatikleştirildi. Bu amaçlar için bilgisayar korsanları çok şey yazdılar, örneğin Uygulama programları, ve sunucu uygulamaları. Kötü amaçlı bağlantıların web sitelerine otomatik olarak eklenmesinin en yaygın süreci, ftp şifrelerinin çalınması ve bu verilerin özel bir Iframer uygulaması tarafından daha fazla işlenmesidir. Iframer'in işi basittir - bir ftp hesapları listesi kullanarak kaynaklara bağlanmak, belirli bir maskeye göre dosyaları bulmak, kural olarak bunlar web sitelerinin dizin sayfalarının dosyalarıdır ve bunlara hazır kötü amaçlı kod enjekte etmek. Bu nedenle, kodu kaldırdıktan sonra, ftp için olanlar da dahil olmak üzere tüm erişim şifreleri değiştirildiğinde bile birçok web sitesine yeniden virüs bulaşır. Bunun nedeni, web sitesinin yönetildiği bilgisayarda parola çalan bir virüsün bulunması olabilir.

Kötü niyetli kodun göründüğü web sitelerinin sahiplerinin bu sorunu ciddiye almadığı durumlar vardır. Kabul ediyorum, kaynağın kendisine bu şekilde zarar vermek verilen kod sebep olmaz. Yalnızca virüslü web sitesine gelen ziyaretçiler zarar görür. Ama dikkat çekmek istediğim başka yönler de var.

Kötü amaçlı kod barındıran bir web sitesi, er ya da geç bulaşma satıcılarının her türlü veritabanında yer alır - Kötü amaçlı yazılım site listesi ve Google veya Yandex gibi arama motorları, virüslü bir web sitesini potansiyel olarak tehlikeli olarak işaretleyebilir. Kaynağınızı oraya vardığında böyle bir temelden çıkarmak son derece zor olacaktır. Ayrıca, er ya da geç bir "kötüye kullanım" - web sitesi ziyaretçilerinden bir şikayet - almanız da mümkündür. Bu durumda hem sitenin alan adının bloke edilmesi hem de IP adresinin bloke edilmesi ihtimali bulunmaktadır. Virüslü bir web sitesi nedeniyle tüm alt ağların engellendiği durumlar olmuştur.

Kaynaklarınızda kötü niyetli kodların görünmesine karşı kendinizi nasıl korursunuz? Bunu yapmak için, bilgi güvenliği için bir dizi gereksinimi yerine getirmek gerekir:

1) Web sitesinin yönetildiği çalışan bilgisayara, tercihen günlük olarak güncellenen veritabanlarıyla lisanslanan bir virüsten koruma yazılımı yükleyin.
2) Kurun ve yapılandırın güvenlik duvarı böylece ağ ile çalışırken tüm trafik kontrol edilir ve şüpheli ana bilgisayarlara erişim durumunda onu engelleme olasılığı vardır.
3) Yönetimsel arayüzler ve ftp ve ssh hizmetlerine erişim için karmaşık şifreler kullanın.
4) Parolaları Total Commander, Far ve diğerlerine kaydetmeyin dosya yöneticileri. Kural olarak, neredeyse tüm Truva atları bu verileri nasıl yakalayacağını ve bir saldırgana nasıl göndereceğini zaten biliyor.
5) E-posta ile gelen veya internetten indirilen dosyaları anti-virüs yazılımı ile kontrol etmeden açmayın veya çalıştırmayın.
6) Bilgisayarda yüklü olan yazılımı güncelleyin. İşletim sistemleri için yamaları zamanında yükleyin ve uygulama yazılımını güncelleyin. Bazen günlük olarak kullandığınız programlar, kötü amaçlı yazılımların girmesi için sistemde bir delik görevi görebilir. Özellikle Adobe Acrobat okuyucu, Flash player, MS Office paketindeki programlar vb.

Yukarıda açıklanan tüm koruma önlemlerini uygularsanız, ancak kaynağınızda kötü amaçlı kod bulursanız, barındırma sağlayıcısı veya kaynağınızı barındıran sunucunun ayarları da sorumlu olabilir. Bu durumda, barındırma sağlayıcınızın destek servisiyle iletişime geçmeniz ve onlardan olayın nedenini belirlemelerini ve ortadan kaldırmalarını istemeniz gerekir.

Bildiğiniz gibi Eylül 2005'te ülke Cumhurbaşkanı'nın kararnamesi ile Özbekistan'da UZ-CERT Bilgisayar Olay Müdahale Servisi kuruldu. Hizmet uzmanları, asıl görevlerine ek olarak, ulusal etki alanı bölgesindeki sitelerdeki kötü amaçlı kodların tespit edilmesi işini de gerçekleştirir. Bu amaçlar için, ana noktaları otomatikleştirmek için bir dizi uygulama programı yazılmıştır, ancak elbette bulaşma şüphesi olan web sitelerinin manuel olarak görüntülenmesi de önemli bir rol oynamaktadır. Bazen başarılı bir şekilde gizlenen kötü amaçlı kod, "gizleme" - kodun yapısındaki bir değişiklik - otomatik yollarla tespit edilemez. Tespit edilen tüm virüslü web siteleri hakkındaki bilgiler, Hizmetin web sitesinde ve ayrıca uForum.uz'daki UZ-CERT bölümünde yayınlanır. Etkilenen kaynakların sahipleri, tehditleri ortadan kaldırmak ve sistemlerini daha fazla korumak için uyarılar, tavsiyeler ve yardım alır. Bu çalışmanın İnternet kullanıcılarına fayda sağlayacağını ve kitlesel bulaşmayı önlemeye yardımcı olacağını içtenlikle umuyoruz. kişisel bilgisayarlar kötü amaçlı yazılım.

Odnoklassniki'de

Ve siteler arası betik çalıştırma konusunda kapsamlı bir ders kitabıdır.

Birinci Bölüm: Genel Bakış

XSS nedir?

Siteler arası komut dosyası çalıştırma ( ingilizce Siteler arası komut dosyası çalıştırma), bir saldırganın başka bir kullanıcının tarayıcısında kötü amaçlı JavaScript yürütmesine izin veren bir kod enjeksiyon saldırısıdır.

Saldırgan doğrudan kurbanına saldırmaz. Bunun yerine, kurbanın ziyaret ettiği web sitesindeki bir güvenlik açığından yararlanır ve kötü amaçlı JavaScript kodu enjekte eder. Zararlı JavaScript, kurbanın tarayıcısında web sitesinin meşru bir parçası olarak görünür ve web sitesinin kendisi saldırganın doğrudan suç ortağı gibi davranır.

Kötü amaçlı JavaScript kodunun enjeksiyonu

Bir saldırganın kurbanın tarayıcısında kötü amaçlı JavaScript çalıştırmasının tek yolu, onu kurbanın web sitesinden yüklediği sayfalardan birine enjekte etmektir. Bu, web sitesinin kullanıcıların sayfalarına veri girmesine izin vermesi ve saldırganın, kurbanın tarayıcısındaki kodun bir parçası olarak tanınacak bir dizi eklemesi durumunda mümkündür.

Aşağıdaki örnek, bir sitedeki en son yorumu görüntülemek için kullanılan basit bir sunucu komut dosyasını göstermektedir:

Yazdır" "
Yazdır "Son yorum:"
print database.latestComment
Yazdır""

Komut dosyası, yorumun yalnızca metinden oluştuğunu varsayar. Ancak, doğrudan kullanıcı girişi etkinleştirildiğinden, bir saldırgan şu yorumu bırakabilir: "" . Sayfayı ziyaret eden herhangi bir kullanıcı artık aşağıdaki yanıtı alacaktır:


Son yorum:

Kullanıcının tarayıcısı sayfayı yüklediğinde, etiketlerin içerdiği JavaScript dahil her şeyi yürütür. . Bu, gerçekte hangi betik kodu yürütülüyor olursa olsun, bir saldırgan tarafından enjekte edilen bir betiğin varlığının yalnızca bir sorun olduğunu gösterir.

İkinci Bölüm: XSS Saldırısı

XSS saldırısının katılımcıları

Bir XSS saldırısının nasıl çalıştığını ayrıntılı olarak anlatmadan önce, bir XSS saldırısına dahil olan aktörleri tanımlamamız gerekir. Genel olarak, bir XSS saldırısında üç aktör vardır: İnternet sitesi, kurban, ve kraker.

  • İnternet sitesi talep eden kullanıcılar için HTML sayfaları oluşturur. Örneklerimizde http://website/ adresinde yer almaktadır.
    • Web sitesi veritabanı sitenin sayfalarında kullanıcıların girdiği bazı verilerin saklandığı bir veri tabanıdır.
  • Kurban- bu normal kullanıcı tarayıcısını kullanarak kendisinden sayfa isteyen bir web sitesi.
  • saldıran sitedeki bir XSS güvenlik açığından yararlanarak kurbana saldırı başlatmayı planlayan bir saldırgandır.
    • Crack Sunucusu tek amacı kurbanın gizli bilgilerini çalmak olan bir saldırganın kontrolündeki bir web sunucusudur. Örneklerimizde, http://attacker/ konumunda bulunur.

Saldırı betiği örneği

Bu betik, başka bir URL'ye, kullanıcının tarayıcısını saldırganın sunucusuna yönlendirecek bir HTTP isteği oluşturacaktır. URL, kurbanın çerezini bir istek parametresi olarak içerir, saldırganın sunucusuna bir HTTP isteği geldiğinde, saldırgan bu çerezleri istekten çıkarabilir. Saldırgan tanımlama bilgilerini aldıktan sonra, bunları kurbanın kimliğine bürünmek ve ardından bir saldırı başlatmak için kullanabilir.

Bundan sonra, yukarıdaki HTML kodu çağrılacak kötü niyetli dizi veya kötü amaçlı komut dosyası. Dizenin kendisinin yalnızca, sonunda kurbanın tarayıcısında HTML olarak işlenirse kötü amaçlı olduğunu anlamak önemlidir; bu, yalnızca web sitesinde bir XSS güvenlik açığı varsa gerçekleşebilir.

Bu saldırı örneği nasıl çalışır?

Aşağıdaki şema, bir saldırganın saldırısına bir örnek göstermektedir:

  1. Saldırgan, web sitesinin veritabanına kötü amaçlı bir dize eklemek için web sitesinin formlarından birini kullanır.
  2. Kurban bir web sitesinden bir sayfa istiyor.
  3. Site, yanıtta veritabanından kötü amaçlı bir dize içerir ve bunu kurbana gönderir.
  4. Kurbanın tarayıcısı, yanıt içinde kötü amaçlı bir komut dosyası çalıştırarak kurbanın tanımlama bilgisini saldırganın sunucusuna gönderir.

XSS türleri

Bir XSS saldırısının amacı her zaman kurbanın tarayıcısında kötü amaçlı bir JavaScript komut dosyası yürütmektir. Bu hedefe ulaşmanın temelde farklı birkaç yolu vardır. XSS saldırıları genellikle üç türe ayrılır:

  • Kayıtlı (kalıcı) XSS, kötü amaçlı dizenin web sitesinin veritabanından kaynaklandığı yer.
  • Yansıyan (kalıcı olmayan) XSS, burada kötü niyetli dizi kurbanın isteğinden üretilir.
  • XSS DOM Modelleri, burada güvenlik açığı sunucu tarafı kodunda değil, istemci tarafı kodunda oluşur.

Önceki örnek, depolanmış bir XSS saldırısını gösterir. Şimdi diğer iki XSS saldırısı türünü açıklayacağız: yansıyan XSS ve DOM XSS saldırıları.

Yansıyan XSS

Yansıtılmış bir XSS saldırısında, kötü amaçlı dize, kurbanın web sitesine yönelik isteğinin bir parçasıdır. Site, bu kötü niyetli diziyi kabul eder ve kullanıcıya geri gönderdiği yanıta ekler. Aşağıdaki diyagram bu senaryoyu göstermektedir:

  1. Kurban, saldırganı bir web sitesine URL isteği göndermesi için kandırır.
  2. Site, kurbana yanıt olarak URL isteğinden kötü amaçlı bir dizi içeriyor.
  3. Kurbanın tarayıcısı, yanıtta bulunan kötü amaçlı komut dosyasını çalıştırarak kurbanın tanımlama bilgisini saldırganın sunucusuna gönderir.

Yansıtılmış bir XSS saldırısı nasıl başarılı bir şekilde gerçekleştirilir?

Yansıtılmış bir XSS saldırısı, kurbanın kendi adına kötü niyetli diziyi içeren bir istek göndermesini gerektirdiğinden zararsız görünebilir. Kimse gönüllü olarak kendisine saldırmayacağından, saldırıyı fiilen gerçekleştirmenin bir yolu yok gibi görünüyor.

Görünen o ki, kurbanın kendilerine karşı yansıyan bir XSS saldırısı başlatmasını sağlamanın en az iki yaygın yolu var:

  • Kullanıcı belirli bir kişiyse, saldırgan kurbana kötü amaçlı bir URL gönderebilir (örneğin, E-posta veya haberci) ve bir web sitesini ziyaret etmek için bir bağlantı açması için onu kandırın.
  • Hedef büyük bir kullanıcı grubuysa, saldırgan kötü amaçlı bir URL'ye bağlantı gönderebilir (örneğin, kendi web sitesinde veya sosyal ağ) ve bağlantıyı takip eden ziyaretçileri bekleyin.

Bu yöntemlerin ikisi de benzerdir ve her ikisi de, kötü amaçlı diziyi tanımlayabilecek kullanıcılardan gizleyen URL kısaltma hizmetleriyle daha başarılı olabilir.

DOM'da XSS

DOM'daki XSS, hem depolanan hem de yansıtılan XSS saldırısının bir çeşididir. Bu XSS saldırısında, kötü niyetli dizi, web sitesinin gerçek JavaScript'i yürütülene kadar kurbanın tarayıcısı tarafından işlenmez. Aşağıdaki diyagram, yansıyan bir XSS saldırısı için bu senaryoyu göstermektedir:

  1. Saldırgan, kötü amaçlı bir dize içeren bir URL oluşturur ve bunu kurbana gönderir.
  2. Kurban, saldırganı bir web sitesine URL isteği göndermesi için kandırır.
  3. Site isteği kabul eder ancak kötü amaçlı dizeyi yanıta dahil etmez.
  4. Kurbanın tarayıcısı, yanıtta bulunan meşru komut dosyasını çalıştırarak kötü amaçlı komut dosyasının sayfaya eklenmesine neden olur.
  5. Kurbanın tarayıcısı, sayfaya eklenen kötü amaçlı komut dosyasını çalıştırarak kurbanın tanımlama bilgisini saldırganın sunucusuna gönderir.
DOM modelinde XSS arasındaki fark nedir?

Depolanan ve yansıtılan XSS saldırılarının önceki örneklerinde, sunucu bir sayfaya kötü amaçlı bir komut dosyası ekler ve ardından kurbana yanıt olarak gönderilir. Kurbanın tarayıcısı bir yanıt aldığında, kötü amaçlı komut dosyasının sayfanın meşru içeriğinin bir parçası olduğunu varsayar ve tıpkı diğer komut dosyaları gibi sayfa yüklenirken bunu otomatik olarak yürütür.

DOM XSS saldırısı örneğinde, kötü amaçlı komut dosyası sayfanın bir parçası olarak eklenmez; sayfa yükleme sırasında otomatik olarak yürütülen tek komut dosyası, sayfanın meşru kısmıdır. Sorun, bu yasal betiğin, sayfaya HTML eklemek için doğrudan kullanıcı girdisini kullanmasıdır. Kötü amaçlı dize, innerHTML kullanılarak sayfaya eklendiğinden, HTML olarak ayrıştırılarak kötü amaçlı komut dosyasının yürütülmesine neden olur.

Bu fark küçük ama çok önemli:

  • Geleneksel XSS'de, kötü amaçlı JavaScript, sunucu tarafından gönderilen HTML'nin bir parçası olarak sayfa yüklendiğinde yürütülür.
  • DOM'da XSS söz konusu olduğunda, kötü amaçlı JavaScript, sayfa yüklendikten sonra yürütülür ve bu, meşru JavaScript'in kullanıcı girişine (kötü amaçlı dize içeren) güvenli olmayan bir şekilde erişmesine neden olur.
XSS, DOM'da nasıl çalışır?

Önceki örnekte, JavaScript'e gerek yoktur; sunucu tüm HTML'yi kendisi üretebilir. Sunucu tarafı kodu güvenlik açıkları içermiyorsa, web sitesi XSS güvenlik açığından etkilenmeyecektir.

Bununla birlikte, web uygulamaları daha gelişmiş hale geldikçe, sunucu tarafı yerine istemci tarafında JavaScript ile giderek daha fazla HTML sayfası oluşturulmaktadır. Herhangi bir zamanda, içerik tüm sayfayı yenilemeden değişmelidir, bu ile mümkündür JavaScript kullanarak. Özellikle, bir AJAX isteğinden sonra sayfa yenilendiğinde durum budur.

Bu, XSS güvenlik açıklarının yalnızca site kodunuzun sunucu tarafında değil, sitenizin JavaScript kodunun istemci tarafında da bulunabileceği anlamına gelir. Bu nedenle, tamamen güvenli sunucu tarafı koduyla bile, istemci kodu, sayfa yüklendikten sonra DOM'u güncellerken kullanıcı girişini güvenli bir şekilde içermeyebilir. Böyle bir durumda, istemci tarafı kodu, sunucu tarafı kodunda herhangi bir hata olmaksızın bir XSS saldırısına izin verecektir.

DOM tabanlı XSS, sunucu tarafından görülmeyebilir

DOM'da, kötü amaçlı dizenin hiçbir zaman web sitesi sunucusuna gönderilmediği özel bir XSS saldırısı durumu vardır: bu, kötü amaçlı dize bir URL tanımlayıcısının bir parçasında (# sembolünden sonra herhangi bir şey) bulunduğunda gerçekleşir. Tarayıcılar, URL'nin bu bölümünü sunucuya göndermez, bu nedenle web sitesi, sunucu tarafı koduyla buna erişemez. Bununla birlikte, istemci tarafı kodun buna erişimi vardır ve bu nedenle, güvenli olmayan işleme yoluyla bir XSS saldırısı mümkündür.

Bu durum parça kimliği ile sınırlı değildir. LocalStorage ve IndexedDB gibi yeni HTML5 özellikleri gibi sunucu tarafından görülemeyen başka kullanıcı girdileri de vardır.

Üçüncü bölüm:
XSS Önleme

XSS Önleme Yöntemleri

XSS'nin bir kod enjeksiyon saldırısı olduğunu hatırlayın: kullanıcı girişi yanlışlıkla kötü amaçlı kod olarak yorumlanır. Bu tür kod enjeksiyonunu önlemek için güvenli giriş işleme gereklidir. Bir web geliştiricisi için iki temel çeşitli yollar güvenli giriş işleme gerçekleştirin:

  • kodlama kullanıcı girişinin sadece veri olarak işlenmesine izin veren ve tarayıcının kod olarak işlemesine izin vermeyen bir yöntemdir.
  • Doğrulama tarayıcının bunu kötü amaçlı komutlar olmadan kod olarak yorumlaması için kullanıcı girişini filtrelemenin bir yoludur.

Bunlar temel olarak farklı XSS ​​önleme yöntemleri olsa da, herhangi birini kullanırken anlaşılması önemli olan birkaç ortak noktayı paylaşırlar:

Bağlam Güvenli giriş işleme, kullanıcı girişinin sayfanın neresinde kullanıldığına bağlı olarak farklı şekilde yapılmalıdır. gelen/giden Güvenli girdi işleme, siteniz girdi aldığında (gelen trafik) veya site, kullanıcı girdisini sayfa içeriğine eklemeden hemen önce (giden) yapılabilir. İstemci/Sunucu Güvenli girdi işleme, istemci tarafında veya sunucu tarafında yapılabilir, her seçeneğe farklı koşullar altında ihtiyaç duyulur.

Kodlama ve doğrulamanın nasıl çalıştığını ayrıntılı olarak açıklamadan önce, bu noktaların her birini açıklayacağız.

Bağlamlarda Kullanıcı Girdisini İşleme

Bir web sayfasında kullanıcı girişinin uygulanabileceği birçok bağlam vardır. Her biri için, kullanıcı girişinin bağlamından "çıkmaması" ve kötü amaçlı kod olarak yorumlanması için özel kurallara uyulmalıdır. Aşağıdakiler en yaygın bağlamlardır:

Bağlamların anlamı nedir?

Açıklanan tüm bağlamlarda, kullanıcı girişi ilk kodlama veya doğrulamadan önce eklenirse bir XSS güvenlik açığı oluşabilir. Saldırgan, yalnızca bu bağlam için bir kapatma sınırlayıcı ve ardından kötü amaçlı kod ekleyerek kötü amaçlı kod enjekte edebilir.

Örneğin, bir noktada bir web sitesi doğrudan kullanıcı girişi içeriyorsa HTML özelliği, bir saldırgan, aşağıda gösterildiği gibi girişine bir alıntıyla başlayarak kötü amaçlı bir komut dosyası enjekte edebilir:

Bu, kullanıcı girişindeki tüm alıntıları kaldırarak önlenebilirdi ve her şey yoluna girecekti, ancak yalnızca bu bağlamda. Giriş farklı bir bağlamda eklenmişse, kapatma sınırlayıcı farklı olacaktır ve enjeksiyon mümkün olacaktır. Bu nedenle, güvenli giriş işleme her zaman kullanıcı girişinin ekleneceği bağlama uyarlanmalıdır.

Gelen/giden kullanıcı girişinin işlenmesi

İçgüdüsel olarak, XSS'nin sitemiz alır almaz tüm kullanıcı girdilerini kodlayarak veya doğrulayarak önlenebileceği anlaşılıyor. Bu şekilde, herhangi bir kötü amaçlı dize, sayfaya dahil edildiklerinde zaten etkisiz hale getirilecek ve HTML oluşturma komut dosyalarının, kullanıcı girişini güvenli bir şekilde işleme konusunda endişelenmesine gerek kalmayacak.

Sorun, daha önce açıklandığı gibi, kullanıcı girişinin sayfada birden çok bağlama eklenebilmesidir. Ve hayır kolay yol kullanıcı girişinin bir bağlama ne zaman ulaştığını - sonunda nasıl ekleneceğini belirleyin ve aynı kullanıcı girişinin genellikle farklı bağlamlara eklenmesi gerekir. XSS'yi önlemek için gelen girdiyi işlemeye güvenerek, hatalara eğilimli çok kırılgan bir çözüm yaratıyoruz. (Kullanımdan kaldırılan PHP "sihirli alıntılar" böyle bir çözüme örnektir.)

Bunun yerine, hangi kullanıcı girişinin ekleneceğine ilişkin özel bağlamı hesaba katabileceğinden, giden girdi işleme XSS'ye karşı ana savunma hattınız olmalıdır. Bir dereceye kadar gelen doğrulama, ikincil bir koruma katmanı eklemek için kullanılabilir, ancak daha sonra buna daha fazla değineceğiz.

Kullanıcı girişini güvenli bir şekilde işlemenin mümkün olduğu durumlarda

Çoğu modern web uygulamasında, kullanıcı girişi hem sunucu tarafında hem de istemci tarafında işlenir. Tüm XSS türlerine karşı koruma sağlamak için, hem sunucu tarafı kodunda hem de istemci tarafı kodunda güvenli giriş işleme yapılmalıdır.

  • Geleneksel XSS'ye karşı koruma sağlamak için, sunucu tarafı kodunda güvenli giriş işleme yapılmalıdır. Bu, sunucu tarafından desteklenen bazı diller kullanılarak yapılır.
  • Sunucunun hiçbir zaman kötü niyetli bir dize almadığı (örneğin, daha önce açıklanan tanımlayıcı parça saldırısı) DOM'daki bir XSS saldırısına karşı koruma sağlamak için, istemci tarafı kodunda güvenli giriş işleme yapılmalıdır. Bu, JavaScript ile yapılır.

Bağlamın neden önemli olduğunu, gelen ve giden girdi işleme arasındaki ayrımın neden önemli olduğunu ve hem istemci tarafında hem de sunucu tarafında güvenli girdi işlemenin neden her iki tarafta yapılması gerektiğini açıkladığımıza göre, açıklamaya devam edebiliriz. iki tür güvenli girdi işlemenin (kodlama ve doğrulama) gerçekte nasıl gerçekleştirildiği.

kodlama

Kodlama, tarayıcının kullanıcı girişini kod olarak değil, yalnızca veri olarak yorumlamasının gerekli olduğu bir durumdan çıkış yoludur. Web geliştirmede en popüler kodlama türü, aşağıdaki gibi karakterleri dönüştüren HTML eşapmandır: < ve > içinde < ve > sırasıyla.

Aşağıdaki sözde kod, kullanıcı girişinin (kullanıcı girişi) HTML eşapmanı kullanılarak nasıl kodlanabileceğinin ve ardından bir sunucu tarafı komut dosyası kullanılarak bir sayfaya eklenebileceğinin bir örneğidir:

Yazdır" "
Yazdır "Son yorum: "
print encodeHtml(userInput)
Yazdır""

Kullanıcı aşağıdaki satırı girerse, ortaya çıkan HTML şöyle görünecektir:


Son yorum:

Özel bir anlamı olan tüm karakterlerin kaçışı olduğundan, tarayıcı HTML gibi kullanıcı girişinin herhangi bir bölümünü ayrıştırmaz.

İstemci ve sunucu tarafı kodlama

İstemci tarafı kodlama gerçekleştirirken, her zaman verileri farklı bağlamlar için kodlayan yerleşik işlevlere sahip JavaScript kullanılır.

Sunucu yan kodunuzda kodlama yaparken, dilinizde veya çerçevenizde bulunan özelliklere güveniyorsunuz. Mevcut çok sayıda dil ve çerçeve nedeniyle, bu öğretici herhangi bir sunucu dili veya çerçevesindeki kodlamanın ayrıntılarını kapsamaz. Ancak istemci tarafında kullanılan JavaScript kodlama özellikleri, sunucu tarafında kod yazılırken de kullanılır.

İstemci tarafı kodlama

İstemci tarafı kullanıcı girişini JavaScript ile kodlarken, tüm verileri bağlama duyarlı bir tarzda otomatik olarak kodlayan birkaç yerleşik yöntem ve özellik vardır:

Yukarıda belirtilen son bağlam (JavaScript'teki değerler) bu listeye dahil edilmemiştir çünkü JavaScript, JavaScript kaynak koduna dahil edilecek verileri kodlamak için yerleşik bir yol sağlamaz.

Kodlama kısıtlamaları

Kodlama sırasında bile, bazı bağlamlarda kötü amaçlı dizeler kullanmak mümkündür. Bunun en iyi örneği, aşağıdaki örnekte olduğu gibi bir URL sağlamak için kullanıcı girişinin kullanılmasıdır:

Document.querySelector("a").href = userInput

Öğenin href özelliğinde belirtilen değer, onu özelliğin değerinden başka bir şey olmayacak şekilde otomatik olarak kodlasa da, bu tek başına bir saldırganın "javascript:" ile başlayan bir URL eklemesini engellemez. Bağlantı tıklandığında, yapısından bağımsız olarak, URL'nin içindeki gömülü JavaScript çalıştırılacaktır.

Kodlama aynı zamanda etkili çözüm kullanıcıların sayfadaki HTML'nin bir kısmını kullanabilmesini istediğinizde. Bir örnek, kullanıcının özel HTML kullanabileceği bir kullanıcı profili sayfası olabilir. Bu düz HTML kodlanırsa, profil sayfası yalnızca düz metinden oluşabilir.

Bu gibi durumlarda kodlama, daha sonra inceleyeceğimiz doğrulama ile tamamlanmalıdır.

Doğrulama

Doğrulama, kullanıcı girdisini filtreleme eylemidir, böylece tüm kötü amaçlı bölümleri, içindeki tüm kodu kaldırmak zorunda kalmadan kaldırılır. Web geliştirmede en çok kullanılan doğrulama türlerinden biri, bazı HTML öğelerini (örneğin, ve ) ancak başkalarını yasaklamak (örneğin,

Düzgün tanımlanmış bir CSP politikasıyla, http://attacker/ güvenilir bir kaynak olarak listelenmediğinden tarayıcı malware‑script.js'yi yükleyemez ve çalıştıramaz. Site, kullanıcı girişini güvenilir bir şekilde işleyemese de, bu durumda CSP politikası güvenlik açığının herhangi bir zarara yol açmasını engelledi.

Saldırgan, harici bir dosyaya bağlantı yerine betik kodunun içine kod eklese bile, uygun şekilde yapılandırılmış bir CSP ilkesi, JavaScript koduna enjeksiyon yapılmasını önleyerek güvenlik açığını ve herhangi bir zarara yol açmasını engeller.

CSP nasıl etkinleştirilir?

Tarayıcılar varsayılan olarak CSP kullanmaz. Web sitenizde SCP'yi etkinleştirmek için sayfaların ek bir HTTP başlığı içermesi gerekir: Content‑Security‑Policy . Tarayıcının CSP'yi desteklemesi koşuluyla, bu başlığı içeren herhangi bir sayfa, tarayıcı tarafından yüklendiğinde güvenlik politikalarını zorunlu kılar.

Güvenlik ilkesi her HTTP yanıtıyla birlikte gönderildiğinden, sunucunun her sayfa için ayrı ayrı politika belirlemesi mümkündür. Her yanıta aynı CSP başlığı eklenerek aynı politika tüm web sitesine uygulanabilir.

Content‑Security‑Policy başlığındaki değer, sitenizde çalışacak bir veya daha fazla güvenlik politikasını belirten bir dize içerir. Bu satırın sözdizimi daha sonra açıklanacaktır.

Bu bölümdeki başlık örneklerinde, okuma kolaylığı için satır sonları ve girintiler kullanılmıştır; gerçek başlıkta bulunmamalıdırlar.

CSP Sözdizimi

CSP başlık sözdizimi aşağıdaki gibidir:

İçerik-Güvenlik-Politikası:
direktif kaynak-ifade, kaynak-ifade, ...;
direktif ...;
...

Bu sözdizimi iki öğeden oluşur:

  • Direktifler verilen listeden alınan kaynağın türünü gösteren dizelerdir.
  • Kaynak ifadeleri kaynakların indirilebileceği bir veya daha fazla sunucuyu tanımlayan bir modeldir.

Her yönerge için, kaynak ifadedeki veriler, o türdeki kaynakları yüklemek için hangi kaynakların kullanılabileceğini belirler.

direktifler

Aşağıdaki yönergeler CSP başlığında kullanılabilir:

  • connect-src
  • yazı tipi-src
  • çerçeve-kaynak
  • img-src
  • medya-src
  • nesne-src
  • komut dosyası-src
  • stil-src

Buna ek olarak, özel default-src yönergesi, başlıkta yer almayan tüm yönergeler için bir varsayılan değer sağlamak üzere kullanılabilir.

Kaynak ifadesi

Bir kaynak ifade oluşturmak için sözdizimi aşağıdaki gibidir:

protokol:// ana bilgisayar adı: bağlantı noktası numarası

Ana bilgisayar adı * ile başlayabilir; bu, sağlanan ana bilgisayar adının herhangi bir alt etki alanına izin verileceği anlamına gelir. Benzer şekilde, bir bağlantı noktası numarası * olarak gösterilebilir, bu da tüm bağlantı noktalarına izin verileceği anlamına gelir. Ek olarak, protokol ve port numarası atlanabilir. Herhangi bir protokolün belirtilmemesi durumunda, politika tüm kaynakların HTTPS kullanılarak yüklenmesini gerektirecektir.

Yukarıdaki sözdizimine ek olarak, kaynak ifade alternatif olarak dört ifadeden biri olabilir. anahtar kelimelerözel anlamı olan (tırnak işaretleri dahil):

"yok" kaynakları devre dışı bırakır. "self", kaynakları web sayfasının bulunduğu ana bilgisayardan çözer. "güvenli olmayan satır içi", sayfada bulunan kaynakların satır içi olmasına izin verir