Yazılım Gündemi - 21
9-15 Aralık 2019

İçindekiler

yazilim-gundemi-banner.png

< Önceki Gündem | 9-15 Aralık 2019 | Sonraki Gündem >

TeknoSeyir'de Oku

1 Windows sistemleri etkileyen kritik Git güvenlik açıkları kapatıldı

Aslında güvenlik açıkları sadece Windows sistemleri etkilemiyor, aynı zamanda sisteminizde NTFS olarak formatlanmış bir disk bölümünüz varsa bu açıklarsan sizde etkilenebilirsiniz. Git geliştiricileri, mümkün olan en kısa sürede Git sürümlerinizi güncellemenizi öneriyor. Güvenlik açıklarının teknik detayları başka güvenlik sorunlarına neden olabileceği için henüz yayınlanmamış fakat yol açtıkları sorunlar hakkında kısa bilgilendirmelere ulaştım. Şöyle ki:

  • CVE-2019-1348: git fast-import komutunun --export-marks argümanından kaynaklanan dosya yollarının üzerine yazmayla ilgili bir güvenlik açığı.
  • CVE-2019-1349: git clone komutu ile resurcive olarak submodule indirirken uzaktan kod çalıştırmaya yarayan güvenlik açığı.
  • CVE-2019-1350: Unutulan bir tırnak işaretiyle git clone --recurse-submodules komutunun farklı komutlar çalıştırmasına yol açan bir güvenlik açığı.
  • CVE-2019-1351: git clone komutunun, Windows'daki alfabetik olmayan (C,D yerine 1 ya da Unicode karakter içeriyorsa) mantıksal disk bölümlerinin üzerine yazmasına neden olan güvenlik güvenlik açığı.
  • CVE-2019-1352: git clone işlemi sırasında NTFS Alternate Date Streams ile ilişkili bir sorun yüzünden .git klasörü içerisindeki dosyaların üzerine yazmaya neden olan bir güvenlik açığı.
  • CVE-2019-1353: WSL üzerinde Git kullanırken NTFS'in Shortnames özelliğinden kaynaklanan bir sorun yüzünden git clone sırasında uzaktan kod çalıştırmaya imkan sağlayan bir güvenlik açığı.
  • CVE-2019-1354: Windows'daki klasör isimlerinde \ işaretinin farklı amaç için kullanılmasından doğan dosyaların üzerine yazabilmeyi sağlayan bir güvenlik açığı.
  • CVE-2019-1387: Submodule isimlerinin doğrulaması sırasında oluşan hatadan doğan güvenlik açığı.
  • CVE-2019-19604: .gitmodules dosyasında bir scripti ya da çalıştırılabilir dosyayı işaret eden komut barındırmaya yarayan bir güvenlik açığı.

Görüldüğü gibi güvenlik açıklarının sayısı epey bir fazla, bu yüzden mutlaka mümkün olan en kısa zamanda Git sürümlerinizi güncelleyin. Eğer yakın bir zamanda güncelleyemeyecek durumdaysanız şunları yapmaktan kaçının:

  • git clone --recurse-submodule ve git submodule update komutlarını çalıştırmak,
  • Güvenmediğiniz depolar için git fast-import komutunu çalıştırmak,
  • Güvenmediğiniz depoları NTFS formatlı bir disk barındıran sistem üzerinde clone etmek.

Bu güvenlik açıklarını kapatan Git sürümleri ise şu şekilde: v2.24.1, v2.23.1, v2.22.2, v2.21.1, v2.20.2, v2.19.3, v2.18.2, v2.17.3, v2.16.6, v2.15.4 ve v2.14.6.

2 NPM, dosyalara erişim sağlamaya yol açan bir güvenlik açığını kapattı

Güvenlik açığı hakkında yeterince teknik bilgi sağlanmasa da NPM geliştiricileri, package.json dosyasının işlenmesi sırasında doğan bir güvenlik açığı kullanıcının bilgisayarındaki herhangi bir dosyaya erişim ve değiştirme yetkisi verilmesine neden oluyor. Anladığım kadarıyla bu işlemi yapabilmesi için paket yayınlayıcısının package.json dosyasına bir takım binary kodlar eklemesi gerekiyor. Sorun package.json dosyasının işlenmesinden doğduğu için aynı güvenlik açığı yarn paket yöneticisinde de mevcut. NPM takımı, npm sistemindeki kayıtlı tüm package.json dosyalarında bu tarz bir açıktan faydalanan paketleri bulmaya çalışmış fakat bir şey çıkmamış. Tabii ki yine de gerekli güncellemelerin en kısa zamanda yapılmasını şiddetle tavsiye ediyorlar.

3 NGINX Rusya ofisi polis tarafından basıldı ve 2 kişi tutuklandı

nginx-polis-baskını.png

NGINX'i hepimiz, şu anda en çok kullanılan web sunucu araçlarından birisi olarak tanıyoruz, geliştiricisi Igor Sysoev, NGINX'i 2004 yılında açık kaynak olarak lisanslı şekilde duyurmuştu fakat o zamanlarda henüz NGINX kendisinin tam zamanlı işi değildi ve Rusya'nın popüler arama motorlarından biri olan Rambler için çalışıyormuş. Bu haftanın gündemine oturmasının sebebi de bundan kaynaklı. Geliştirici başka bir firma için çalışırken o firmanın sağladığı imkanlar ile bu yazılımı geliştirdiği için bir telif hakkı sorunu ortaya çıkmış ve polis baskını ile kaynak kodlar ve çeşitli belgelere el konulmuş. Aslında bu durumun yeni ortaya çıkması çok ilginç çünkü geliştirici 2012 yılında verdiği bir röportajda (rusça) kendisi de söylemişti "o zamanlar Rambler için çalışıyordum" diye fakat ilgili firmanın yeni aklına düşmüş herhalde ya da başka bir takım olaylar var. Ayrıca kodlara el koymaları da ilginç olmuş NGINX zaten açık kaynak, el koymak için baskın yapmanıza gerek yoktu. Zaten böyle bir telif hakkı sorunu için polis baskını yapmak ayrı bir saçmalık gibi geliyor bana. Baskında polisler şöyle mi seslendiler acaba: "Şimdi sakin ol ve elindeki klavyeyi yavaşça bana doğru uzat evlat!" :)

Tutuklanan kişilerin de NGINX'in yaratıcı Igor Sysoev ve şirketin ortaklarından biri olduğu yönünde haberler var. Konu HackerNews ve Reddit gibi platformlarda yaklaşık bir gün boyunca üst sıralarda kaldı ve geliştiricilerin gündemine oturdu.

4 Dart programlama dilinin 2.7 sürümü duyuruldu

dart-2-7.png

Google tarafından geliştirilen, Flutter isimli hibrit mobil uygulamalar geliştirmeye yarayan uygulama çatısıyla popülerlik kazanan yine Google tarafından geliştirilen programlama dili Dart programlama dilinin bu hafta içerisinde 2.7 numaralı sürümü duyuruldu. Aynı zamanda Dart, bu yıl yayınlanan GitHub Octoverse raporunda (bkz: Yazılım Gündemi - 17) en hızlı büyüyen birinci programlama dili seçilmişti. Dille ilgili hiçbir deneyimim yok ama eklenen özellikleri anlayabildim. O halde 2 özelliğe birlikte bakalım:

4.1 Eklenti metodları

Bu özellik sayesinde artık herhangi bir tip için özel bir fonksiyon ekleyebileceksiniz. Tip'in sizin tarafınızdan yaratılmış olması da gerekmiyor. Örnek verecek olursak:

extension ParseNumbers on String {
  int parseInt() {
    return int.parse(this);
  }
}

main() {
  int i = '55'.parseInt();
  print(i);
}

Yukarıda String veri tipine parseInt isminde bir fonksiyon ekledik ve String içerisine yazılan bir sayının int veri tipine çevrilmesini sağladık.

4.2 Null Safety

Henüz preview aşamasında olsa da faydalı bir özellik. Örnek üzerinden inceleyelim:

class Kisi {
  String ad;
  DateTime dogumTarihi;
  Kisi(this.ad, this.dogumTarihi);

  void tanit() {
    print(ad);
    int dogumYili = dogumTarihi?.year;
    print("${DateTime.now().year - dogumYili} yıl önce doğmuştur");
  }
}

Örnekte dikkat etmeniz gereken ? karakterinin kullanımı. ? karakteri ile yapılan aslında şuydu: dogumTarihi property'sinde değer tanımlıysa year property'sini getir. Yani doğum tarihinin girilmediği durumlarda year metodu bulunamadı gibi bir takım hatalardan kaçınılmış oldu.

Dart programlama dilinin yeni sürümü ile gelen diğer özellik ve değişiklikler için konu başlığına eklediğim blog yazını okuyabilirsiniz.

5 Flutter 1.12 duyuruldu

Google tarafından Dart programlama dili ile geliştirilen hibrit uygulama geliştirme çatısının bu hafta 1.12 sürümü duyuruldu. Duyurulan bazı şeyler bu şekilde:

  • MacOS desteği eklendi. Windows ve Linux desteği de eklenecek.
  • Web desteği beta olarak duyuruldu.
  • Geliştirici ve tasarımcıların birlikte çalışmasını kolaylaştırmak için Google ve Adobe XD partnerliği duyuruldu.
  • iOS 13'de eklenen Dark mode özelliğine erişebilme desteği,
  • AndroidX desteği,
  • Google Fonts desteği,

flutter112-macos.gif

Bu hafta benim de katıldığım GDG DevFest '19 Trabzon etkinliğinde Flutter 1.12'de eklenen MacOS ve Web desteğinin de demosu yapıldı. Açıkcası her ne kadar Google teknolojileri ilgimi çekmese de mobil uygulamanın aynısın hem mobilde hem de masaüstü ve web ortamlarında aynı şekilde çalıştığını kanlı canlı görmek beni şaşırtmadı değil. Sunumu yapan kişinin Flutter 1.12 ile gelen özellikler hakkında yayınlandığı yazıyı da okumanızı tavsiye ederim.

6 Android Açık Kaynak Projesine code search web arayüzü eklendi

Biliyorsunuz ki Android ilk 1.0 sürümünden beri açık kaynak bir mobil işletim sistemi. Şu anda Google'ın dağıttığı daha özel bir hali olsa da orijinal Android kaynak kodları da yine Google tarafından sunulmaktaydı. Fakat bu kaynak kodlar içerisinde gezinmek o kadar kolay değildi. Şimdi ise yepyeni ve modern bir arayüze sahip bir proje haline geldi. Üstelik fonksiyonun tanımlandığı ve kullanıldığı yerleri de göstermek gibi özellikleri de mevcut. İlgili arkadaşlar mutlaka incelesinler: https://cs.android.com/

7 Mikro-kontrolcüler için Qt kütüphanesinin 1.0 sürümü yayınlandı

Geçtiğimiz yazılım gündemi yazılarında (bkz: Yazılım Gündemi - 6) bahsettiğim mikro-kontrolcüler üzerinde Qt kütüphanesi ile kullanışlı ve güzel arayüzler tasarlamaya yarayan kütüphanenin 1.0 sürümü bu hafta yayınlandı. Maalesef C++ deneyimim pek olmadığı için detaylar hakkında fazla bilgiye sahip değilim. Bilgi olan arkadaşların yorumlar bölümünde katkılarını bekliyorum. Detaylar ve rehberler için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

8 Visual Studio Code Kasım 2019 (v1.41) sürümü yayınlandı

vscode-1-41.png

9 Yaklaşan Etkinlikler

Etkinlik İsmi Yeri Tarihi
Beetech İstanbul 17 Aralık 10:00
PostgreSQL' de sharding & FDW ve Partitioning Ankara 17 Aralık 18:00
Global AI Bootcamp 2019 Türkiye İstanbul 17 Aralık 19:00
Panel: Yazılımcının Yolu İstanbul 18 Aralık 19:00
Oyun Geliştirme Günleri 2 İstanbul 19 Aralık 12:30
Ankara Tech Talks & JetBrains - S02E3 - Kotlin Night Ankara 19 Aralık 18:30
Agile’dan DevSecOps’a giden yol İstanbul 19 Aralık 19:00
Alternatif JVM'ler ve Java'nın geleceği Online 19 Aralık 19:00
Siber Güvenlikte Kariyer İstanbul 20 Aralık 18:30
Snort ile Savunma Keyfi Ankara 20 Aralık 19:00
Temel R Eğitimi 2 Ankara 21 Aralık 12:00
Go 101 Workshop ve Yazılım Tasarımında Paradigmalar İzmir 21 Aralık 15:00
Deploy Java Microservices to OpenShift on IBM Cloud İstanbul 24 Aralık 19:00
Bir Yazılım Geliştirici İçin Çeviklik Neden Önemli? İstanbul 27 Aralık 18:30
Facebook Developer Circle: Ankara, Advanced React Concepts Ankara 28 Aralık 10:00
R ile Zaman Serileri İstanbul 28 Aralık 12:30
PyTorch ile Deep Learning'e Giriş İstanbul 28 Aralık 15:00

10 Diğer Haberler

11 Lisans

Tarih: 16 Aralık 2019

Yazar: Eren Hatırnaz

Oluşturuldu: 2021-01-24 Sun 22:46

Validate