Kütüphane Linkleri Paylaşıyoruz Ama?


Hazırladığım basit bir infografik (Her hakkı saklıdır, her Hakkı haklı değildir 🙂

Koronavirüs nedeniyle bir çok kişi gibi içerideyiz. İlk günlerden şimdiye kadar sosyal medya ve Whatsapp gibi kanallarda komik videolar bir taraftan insanların stresini azaltıp bir taraftan güldürdü. Durmadan akan haber ve yorumları saymıyorum bile. Sosyal medya kullanıcısı olmadığım halde bu kadar izolasyona rağmen her şeyden haberim var 🙂 Daha sonra bir çok kütüphanenin kaynaklarını ücretsiz erişime açtığını duyduk. Hatta ücretsiz kitap, dergi ve kaynakların linkleri bile sayfaları doldurmaya başladı. Bu heyecan verici, harika bir durum.

Ancak…

O anda kendime sormuştum. Bu kadar dijital kaynaktan açıp birini okuyan var mıdır? Elbette vardır ancak gerçek tablo nedir? Korona dönemi için bunu ölçmenin bir yolu yok. Ancak okuma oranları ile geçmiş dönemdeki karnemize baktığımızda durumumuz iç açıcı değildi.

Android telefonlarda “Dijital Denge” adlı bir uygulama var. Adresi şurada: https://play.google.com/store/apps/details?id=com.google.android.apps.wellbeing&hl=tr

Bu uygulamayı epeydir kullanıyorum. Bu uygulama sizin hangi programa ne kadar zaman harcadığınızı, bunun yanında telefonu kaç kez elinize aldığınızın da istatatistiğini tutuyor. Bu uygulamanın en sevdiğim özelliği Konsantrasyon Modu.

Bu modu diyelim kitap okurken, çalışırken ya da dinlenirken açtığınızda önceden belirlediğiniz Whatsapp, SMS veya başka sosyal medya uygulamaları pasif oluyor. Giremiyor, mesaj alamıyor hatta şöyle bir göz ucuyla dahi açamıyorsunuz. Bu sayede bir saat kitap okuyacağım dediğinizde bir saat kitap okuyorsunuz rastgele akan gönderileri değil…

Konsantrasyon modundan bir kaç saaat çıkmadığım bazı zamanlar oldu. Daha sonra açtığımda ise telefonda “henüz okunmamış” 400 bildirim (mesajlar da dahil), epostalar, haberler ve sonu gelmeyen bir dünya kalabalık.

İçinden gerçekten önemli olan hatta acil olanları görmeye sıra gelmiyordu neredeyse. Hatta eleştiriliyor insan, bu zamanda insan mesajlarına bakmaz mı? Dijitalleşen dünyamız filan…

Deep Work adlı kitap. Türkçesi de çıkmış olmalı. Yazarı Cal Newport

Bakmaz efendim! Yukarıdaki kitap ilk çıktığında aldım okudum. Yazarı MIT’de doktora yapmış başarılı bir hoca Amerika’da. Sosyal meyayı geçtim E-posta bile kullanmıyor neredeyse. Kullanmamama övülüyor. Adam ilahiyat hocası değil. Bilgisayar bilimleri hocası…

Yapay zeka’nın mucitleri daha fazla sosyal medya kullandıkları için değil daha fazla “çalıştıkları”, odaklandıkları, düşündükleri için ilerlediler. Dijitalleşen dünya öyle “Tweet atmakla” olmuyor hariçten…

Evet benimkisi biraz dijitalleşme düşmanlığı sayılabilir ama değil… Konu sadece kitap okumak da değil. Yaşamak, konuşmak, dinlenmek, düşünmek…

TED Talks’ta Waldinger’in şu videosuna bir ara bakın: https://www.ted.com/talks/robert_waldinger_what_makes_a_good_life_lessons_from_the_longest_study_on_happiness/transcript?language=tr

Özetle, kütüphane linkleri paylaşıyoruz ya… Devam edelim. Ama bir ara o kütüphanelerden sadece birindeki bir kitabı da okuyalım. “Varmış” demeyelim. Okudum diyelim.

Güzel oluyor, gerçeken…

90 Yaşında Ceviz Ağacı Diker Misiniz?


Dün okuduğum Farsça bir kitapta, eski Sasani Hükümdarı Anuşirevan ile ilgili okuduğum hikayeye bayıldım:

Anuşirevan, 90 yaşında bir adamın ceviz ağacı diktiğini görürür ve ceviz ağaçları genellikle 20 yıla kadar meyve vermez der etrafindakilere. Yaşlı adamın yanına gidip neden ağaç diktiğini sorar.

Yaşlı adam “yediğim cevizleri benden öncekiler dikti, bunu ise benden sonrakiler yer” der. Anuşirevan adama bir kese altın verin der.

Yaşlı adam teşekkür eder ve şöyle der: “Herhalde bu ağacın meyesini benden önce yiyen olmamıştır”. Anuşirevan şaşırır ve nedenini sorar: “Ben bu ağacı dikmesem, siz gelip bana bu soruyu sormayacaktınız, soruyu sormasanız bin altın vermeyecektiniz” der. Anuşirevan bu cevaba da bayılır ve bir kese daha altın verin der.

Bu hikayeye ben ve Anuşirevan neden bayıldık: Çalışmak, sonucundan bağımsız olarak faydalı bir şeyler yapmaya odaklanmak illa idealistçe bir iş değildir. Bazen beklenen sonucu dışında tali bir sonuç verebilir ve bu sonuç esas sonuçtan daha değerli de olablir. Biz bazen Anuşirevan’ları görmesek de böyledir.

Kitabın orjinalinden çektiğim bir fotoğraf. Kitabın adı: Nesr-e Sadeh- e Farsi

Kaynak Kod Analizi Notları


  • Zeroday saldırıları: İleri düzey salsıdrganların standart saldırgtan araçlarını kullanmadan, özellikle herkesin çok kullandığı antivirüs, SQL yönetimi gibi araçlara daha kimse farketmeden açıklarını bulurlar. Daha sonra bu araçlar üzerinden backdoorlar açıp istismar ederler.
  • cve.mitre.org, nvd.nist.gov us-cert.gov, packetstorm security , gibi sitelerde güncel zafiyetler yayınlanır. Buraya bazı hackerlar ve uzmanlar kaynak kodlardan buldukları problemleri paylaşırlar. Örneğin Pandora FMS adlı network izleme aracında bulunan bir zaafiyet bir arkadaşım tarafından mitre’de paylaşıldı.
  • Kahynak kod analizi eğitiminde ilk adım programın ne işe yaradığına dair kılavuzları okumaktır. İlk problemler buradan bulunur.
  • Daha sonra kaynak koda erişim sağlanır. Kodlar okunurken notlar alınmalıdır. Aksi takdirde kodun içerisinde kaybolmak mümkün olabilir. Daha sonra bu kodlardan önemli olanlar kritiklik ölçeğine göre sınıflandırılır.
  • Örneğin BirbSuite gibi uygulamalarla yönlendirmelere dayalı yetkilerle çalışan sitelerde 301’i durdurarak sitelerin admin panellerine erişilebiliyor.
  • Ücretsiz web uygulama zaafiyet tarama aracı: https://subgraph.com/vega/
  • Shodan’dan uygulamaların zafiyetleri de aratılabiliyor.
  • Kontrol Listesi:
    • Kimlik doğrulama kontrolleri
    • Yetki kontrolleri
    • Veri tabanı erişim kontrolleri
    • Sistem fonksiyonlarının kullanım kontrolleri
    • Üçüncü parti uygulama ve kütüpnalelerin sıkıntıları
  • Tehdit Modelleme:
    • Uygulamayı kimler kullanacak
    • Uygılama nerelerde kullanılacak
    • Uygulama mali işlemler içeriyor mu?
  • Kod Analizi
    • Kodlar istenen bir IDE’de açılır.
    • Kimlik doğrulama get ve post istekleri kullanılır.
    • Kimlik doğrulama sırasında HTTPS kullanıldığından emin olunmalı.
    • Tanımlı yetkilerle koddakiler uyumlu
    • Dikey ve yatay yetki yükselme sebebiyet verebilecek durumlar kontrol edilmeli.
  • Girdiği doğrulamaları:
    • Girdiler sorguları olduğu gibi SQL’in içerisine ekleniyor mu?
    • Girdiler ekrana yazdırılıyor mu? (Muhakkak encode edilmeli ya da regex ile whitelist şeklinde temizlenmeli)
    • Frontend satırlarında kritik bilgi var mı?
  • SQL Injection’dan korunmak için PHP’de mysql_real_escape fonksiyonu kullanılabilir. Ancak eğer SQL içerisinde sorguda parametre alırken tırnak kullanılmazsa o zaman yine zaafiyet vardır.
  • XSS
  • Tarayıcı üzerinde Javascript kodu çalıştırmaktır.
    • Özel karakterleri engellemek gerekir. PHP için htmlspecialcharts var.
    • Bir önceki önlem alınsa bile, echo ile yazdırılan şey kesinlikle script tagı arasında olmamlı yoksa yine çalışır.
    • Kullanıcı “şunları giremesin” doğru bir mantık değildir. Kullanıcı “sadece şunları girebilsin” diye düşünülmelidir. Örneğin <script> tagı engellenebilir ama hackerlar <sCript> diye bunu aşabilirler.
    • Script tagı dışında <body onload = alert()> diyerek de XSS yapabilir.
  • LFI / Directory Traversal
    • Bu zaafiyet sunucudaki dosyanın görüntülenmesi durumudur. “Local File Inclusion”
  • RFI denilen bir metot daha var. Tam anlamadım. Öğrenirsem yazarım. URL’den parametrre gönderip config.php’yi base64 formatında alıp daha sonrasında okumaya yarıyor
  • File Upload
    • Dosyanın uzantı, boyut ve tipi muhakkak kontrol edilmelidir.
    • Kaynak kod analizi yaparken $_FILES aratılarak gözden geçirilebilir.
  • Remote Code Execution:
    • Sisteme herhangi bir şey yüklemeksizin sistemde komut çalıştırma eylemidir.
    • Güvenlik yazılımlarında, ağ izleme araçlarında vs. kullanılamktadır.
    • Örneğin bir sunucuya erişimde, ls komutundan sonra ; ya da ` gibi işaretlerden sonra gelen komutlar kullanılabiliyorsa bu sunucuaya ciddi bir erişim söz konusu olur.
    • Bu tür zaafiyetler pek paylaşılmaz.
    • PHP için shell....args diye bir fonksiyon var komut satırına sadece belirli bilgilerin girilebilmesini sağlar.
    • Bir kez bu açık bulunduktan sonra örneğin ilgili uygulamanın web arayüzündeki inputa girip bash komutu üzerinden kendi IP’mize bu kurban makinadaki konsolu yönlendirip bu makineyi kendi makinamızda tam erişimle kullanabiliriz.
    • Bu zaafiyetleri örneğin ağ izleme araçlarının PHP kodlarından eval, exec gibi komut satırınd çalışan kodları aratıp daha sonra bu fonksiyonlara erişimi olan inputları bulup saldırabiliriz.
  • RIPS adlı araçla kaynak kod analizi yapmak mümkündür. Bu araçlar bazen aslında güvenli olan yerleri de yakalar. Bu araçlar genellikle sadece inputları arar.
  • Python için Bandit var.
  • .NET için .NET Security Guard : https://marketplace.visualstudio.com/items?itemName=JaroslavLobacevski.SecurityCodeScan

Veri Tabanı Güvenliği Eğitimi Notları


  • https://www.exploit-db.com/ghdb/4924 SQL yedeklerini internette unutan siteleri bulup bu dosyaalarından veri tabanı şifreleri bujlunabilir.
  • SQL Union select fonksiyononu url’den göndererek diğer tablo adlarını öğrenebilir ve faydalanabilirsiniz: https://portswigger.net/web-security/sql-injection/union-attacks Bu fonksiyonda tablo adı ve kolonları bilmeye gerek yoktur.
  • Yukarıdaki işlemden sonra kullamnıcı tablosunda kullancı adları ve şfireleri de elde edilebilir.
  • Bunu elle yapmak yerine SQLMap adlı uygulama ile elle de yapılabilir. sqlmap -u “url” denerek sonuçlar görüntülenebilir ve buradan zaafiyetler tespit edilebilir.
  • vulnweb.com adlı web sayfasından öğrendiğiniz saldırı tekniklerini deneyebilirsiniz.
  • İç güvenliği teminen hangi kullanıcnın hangi IP’den girebileceği ve ne yapacağı belirlenmeli ve ayarlanmalıdır.
  • Kullanıcıların çalıştırabileceği fonksiyonlar belirlenmeli. Kullanıcılara insert select gibi fonksiyonlarda kısıtlama getirilebilir. Grant insert,update on firma.tablo1 to ‘editor_kullanici’@ip şeklinde bir sınırlama getirilebilir.
  • show grants komutu ile hangi tabloda kimin ne yetkisi olduğu görülebilir.
  • Hangi tablolara gireceği ayarlanmalıdır.
  • Diyelim ‘developer’ diye bir grup var. Kullanıcı adı sabit, farklı IP’ler tanımlanarak tek tanımlama ile grup halinde tanımlşama da yapılabilir.
  • Yetkilendirmek için ‘grant’ yetki kaldırmaki için ‘revoke’ kullanılır.
  • Bir kullanıcıyı sadece spesifik bir veri tabanına tanımlayıp geri kalanını izole etmek mümkündür.
  • Her ne kadar bazen kapalı da olsa sql iiçerisinde LOAD_FILE adlı bir komut vardır. Bu komout ile sistemdeki herhangi bir yere dosya yazmak olasıdır. Eğer bu açık varsa bu çok iyi şekilde kullanılabilir. Bu foksiyonla dosya okumak da mümkündür.
  • Load file açık gelir MySQL ve SQLServer’da. DÜZELTİLMELİ.
  • Yukarıdaki senaryoda bu durumda PHP dosyası içerisinde exec fonksiyonu içerisinde $_GET(“”) içerisine CMD yazılarak buradan konsolda istenen şey çalıştırılabilir. Böylece o php dosyasını web arayzüden çalıştırıp url’den paramatere yollanabilir.
  • Düzenli mysql yedeği için mysqldump komutu Cron Jobs olarak tanımlanmalıdır.
  • MySQL’de logları tabloda da haricen text dosyalarında da tutmak mümkündür.
  • Loglar üzerindeki logları incelmeek için select * from mysql.general_log ile konutlar görünür.
  • Ama komutlar hexadesimal olarak görünür convert fonsksiynonu ile komutlae görünmelidir.
  • Güvenlik amacıyla logların text olarak saklanması iyidir. Bu biraz yer kaplar.
  • Dosya halinde log tutulduğu takdirde logun yazılacağı yerdeki dosya izinleri iyi ayarlanmalıdır.
  • MSSQL’de xmp_cmdshell saldırıları çok kritiktir. Bu sayede veri tabanı sunucusu üzerinde sunucu konsoluna komut yollanabilir. Bunu engellemek için ‘sa’ kullanıcısı uygulamaların içerisinde kullanılmamalıdır.
  • Bu ilkelere uyulduğu takdirde paralı bir güvenlik uygulaması olmaksızın da sunucu güvenliği sağlanabilir.
  • Port numaraları defaulttan değiştirilmelidir ki Shodan yakalamasın.

RStudio içinde Python Kullanmak


RStudio harika bir araç. Özellikle değişkenleri canlı olarak göstermesi, grafik ve yardım paneli ile vazgeçilmez bir veri bilim aracı. Bu aracın tam bir Python muadili yoktu, Python ile analizler için. Gerek de kalmadı. RStudio’nun son sürümlerinde Python ile analizleri gerçekleştirmek mümkün. Bunun için `reticulate` adlı bir R kütüphanesini import etmek gerekiyor. Gerisi şöyle:

R Markdown içerisinde python kullanıyoruz.

Yeni Akademik Makale: Haberler ve Gerçeklik İlişkisi: Bir Kamu Kurumu Hakkındaki Haberler Üzerine İnceleme


Karadeniz Teknik Üniversitesi dergisinde çıkan bu makalemizde, algoritmik haber analitiği metotları ile TKDK hakkında farklı kaynaklarda çıkan haberleri analiz ettik. Bu yöntemler haberleri bir nevi “bilgisayarların okuyarak değerlendirmesine” olanak veren metotlar olarak kabul edilebilir. İşin içerisinde bilgisayarlar olunca yanlılık mevcut olmadığı gibi, milyonlarca haber bile olsa bunları hızla okuyacak bir güç söz konusu oluyor.

TKDK hakkında çıkan haberlerin kelime bulutu (İlgili makaleden)

Veri madenciliği daha da özelde metin madenciliği yöntemleri ile Söz gelimi haberlerde en sık görülen kavramları yukarıdaki gibi modelleyebiliyoruz. Ya da en çok hangi konuların ele alındığını aşağıdaki gibi görmek mümkün:

Haber Konuları Dağılımı (İlgili Makaleden)

Yine haberlerin yıl içerisinde yayınlanma tarihlerini de görebiliyoruz:

Haberlerin zamansal dağılımı (İlgili makaleden)

Haberlerin bu şekilde analizi, özetle şu sonuçları verdi:

  • Kurum hakkında çıkan haberlerde en çok yatırımlar ve hibe tutarları vurgulanmıştır.
  • Haberler genellikle hibelerin sunulacağı tarihlerde yoğunlaşmıştır.
  • Tanıtım toplantıları da haberlerde önemli bir yer edinmektedir.

Analizi Neyle Yaptık

Haberlerin otomatik olarak bulunup, daha sonra analiz edilmesi için R dili ile bir betik yazılması gerekiyor. R dili bu tür veri analitiği işlerinde harika bir araçtır ve ücretsizdir. R dili öğrenmek için hazırladığımız Türkçe bir kitap da mevcut:

R Dili ile Veri Analizi: Dr. Suat ATAN & Dr. Hakan Emekci, Seçkin Yayınevi.

Makalenin tam metni için aşağıyı tıklayınız