Bug Nedir?
Bilgisayar oyunlarını yakından takip eden herkes “bug” terimini iyi bilse de birçok kişi ilk duyduğunda “Bug ne demek?” diye sormaktan kendini alamaz. Bug anlamı itibarıyla İngilizce kökenli bir terimdir. Kelime anlamı ile “böcek” olarak bilinen bug, ilk kez Thomas Edison tarafından 1878 yılında kullanılmaya başlanmıştır.

Bilgisayar yazılımcılarının oldukça canını sıkan bir durum olan bug, bilgisayar dilinde “yazılım hatası” olarak bilinir. Daha detaylı olarak açıklanmak istenirse, bilgisayar programı ya da bir sistemde oluşan, hatalı ve istenmeyen sonuçlara neden olan kusur, başarısızlık veya arıza olarak tanımlanabilir. Özet olarak, Bug nedir? sorusuna cevap olarak hata ya da kusur denilebilir.
Bug Nasıl Bulunur?
Yazılımda bug bulmak için sistem özelliklerinin iyice analiz edilmesi gerekir. Pek çok sisteme göre farklılık gösteren bug, her türlü bilinmeyen hata olarak tanımlanabilir. Örneğin, oyun oynarken, standartlar dışında size üstünlük sağlayan bir işlem görüyorsanız bu bir bug olabilir. Aynı şekilde oyun takılıyorsa, karakter aynı hareketi sürekli tekrarlıyorsa da yazılımsal bir kusur olarak bug tanımlanabilir.

Son zamanlarda sosyal medya programlarında herhangi bir özellik kullanılırken, bilinmeyen hatalar almak ya da özellik dışı alanlara erişebilmek de bir çeşit bug olarak adlandırılabilir. Yazılımda bug bulmak isteyen kişinin önemli ölçüde kod bilgisine sahip olması gerekir. Bu hataları bulmak ve tespit etmek yazılımcıların zamanını ciddi şekilde alabilir.
Hatta çoğu zaman sistemdeki bugu bulmak kod yazmaktan çok daha çetrefilli bir işe dönüşebilir. Çünkü yazılımlar ve dolayısıyla programlar, sistemdeki bug yüzünden farklı bir hale gelir ve artık kullanılamaz olabilir. Tüm bunlar nedeniyle büyük firmaların hata rapor etmek için özel ekranları vardır. Özellikle güvenlik açığına neden olan bugları bulan kişiler, firma tarafından ödüllendirilir.

Eğer sistemde çok ciddi bir yazılım açığı olmadığı düşünülüyorsa, son zamanlarda sıkça kullanılan ücretsiz bug izleme araçları da kullanılabilir. PivotalTracker, Backlog, Trac, FogBuhz, WebIssues, Mantisbt ile RedMine gibi araçlar sistemdeki bugu bulmak için yardımcı olabilir.
Buga Girmek Nedir?
Buga girmek, bilgisayar programlarında, oyunlarında ya da web sitelerinde bilinmeyen bir hata ile karşılaşmaktır. Örneğin, oyun oynarken sistemde orada olması gereken bir item bulamamak, normalde rutin olarak yapılan işlemleri yapamamak bug olarak adlandırılabilir. Bunun dışına yazılımsal olarak buga girildiğinde, sistemsel hatalar meydana gelir. Örneğin, bir web sitesi buga girerse, güvenlik açığı oluşabilir.
Bug Sorunları Neden Önemlidir?
Bilgisayar programlarında ya da sistemlerde tespit edilen buglar aniden ortaya çıkan, beklenmeyen hatalar ile sistemin alışılmadık türde çalışmasına neden olabilir. Bugların büyük bir bölümü, programları geliştiren kişilerin kaynak kodda ya da tasarım alanında hata yapmalarından ve derleyicilerin de hatalı kodları devam ettirmelerinden kaynaklanır.

Buglar, karşılaşılabilecek en tehlikeli hata türleridir. Programlama mantığında bir takım stratejilerin yanlış düşünülmesi sonucu ortaya çıkar. Çoğu zaman sistemde bug olması müşteri kullanımlarında sıra dışı bir etkinliğe neden olabilir. Örneğin, e-ticaret sitelerine ait bir yazılımda bug olması hesaplanması gereken değerlerin yanlış ya da eksik olarak hesaplanması şeklinde mantıksal bir hataya neden olabilir. Bu da satın alım işlemlerinde eksik ya da fazla ödemeye neden olabilir.
Günümüzde işletim sistemlerinde dahi buglar görülebilir. Örneğin, 5 milyon satır kod yazılarak oluşturulan Windows XP yazılımında dahi bug ile karşılaşılmış ve kullanıcılar tarafından rapor edilmiştir. Tespit edilen buglar yine Microsoft’un geliştirdiği yamalar ile düzeltilmiştir. Ancak yamalar Microsoft’tan önce bir hacker tarafından tespit edilseydi, kötüye kullanım yaşanabilirdi.

Yazılım ya da sistemde bug olması ciddi güvenlik açıklarını da beraberinde getirir. Bu durumu kötüye kullanmak isteyen kişiler, scriptler ile sisteme saldırabilirler. Hatta web dilinde exploit denilen bu işlemin ciddi sonuçları mevcuttur. Kötü niyetli siber saldırıcılar, sistem üzerindeki açıkları tespit ederek, karanlık siteler aracılı ile para karşılığında satışa çıkarabilirler. Hatta web sitesi yöneticisi kadar yetkili olduklarından, host üzerinde bulunan diğer tüm web sitelerini hackleyebilirler.
Bug Fixes Ne Demek?
Bug kavramı genel olarak yazılımda bulunan hatalar olarak tanımlanırsa, “bug fixes” kavramı için bu hataları gidermede yapılan işlemler denilebilir. Bu hata giderici işlemler için öncelikle yazılımdaki hataların tespit edilmesi gereklidir. Bunun için de yazılımı oluşturan kişilerin yapacağı testler ve uzun kullanımlar sonucu tespit edilen buglar, güncelleme ve düzenlemeler ile düzeltilebilir.

Örnek vermek gerekirse, bir oyun programında bug bulunursa oyunun güncellemeye gitmesi gereklidir. Güncellenen oyunun temek executable dosyası değiştiği için, eski EXE dosyası içerisinde bulunan sorunlu kod yenisi ile değiştirilmiş olur. Böylece sistemde bulunan bir bug varsa, tüm yazılım dosyası baştan aşağıya güncelleneceği için bug sorunu da çözülmüş olur.
Son zamanlarda Android ve IOS işletim sistemlerinde görülen güncellemelerin detaylarına bakıldığında “bug fixes” ifadesinin sıkça görülmesinin nedeni de bunlardır. Zira uygulamalar da pek çok kişisel veri içerdiği için, bu bilgilerin kötü amaçlı kişilerin eline geçmesi istenmeyen bir durumdur. Bu nedenle işletim sistemleri sürekli olarak bug takibi yapar ve son sürümleri için güncelleme dosyaları gönderirler. Aynı durum uygulama (aplikasyon) geliştiricileri tarafından da hassasiyetle takip edilir.
Bugtan Korunma Yolları Nelerdir?
Her yazılımda ve sistemde hata olması kaçınılmaz bir durumdur. Diğer bir deyişle, mutlaka açık olabilir. Önemli olan bu açıkların kullanılmasını önlemek olmalıdır. Bunun için bazı güvenlik zafiyetlerine karşı önlem alınabilir.
1. Kayıt e-posta adresi
Web sitesi yöneticiliğine kayıt olunan e-posta adresi kolay deşifre edilebilen bir adres olmamalıdır. Aksi halde kayıt e-postası çalınırsa, tüm domain kaybedilecektir. Bu durumda alan adı satın alındığında, kolayca tahmin edilemeyen, deşifre olmayan e-postalar üzerine kayıt edilmelidir. Böylece kimse tarafından kolayca tahmin edilemez.

Ayrıca sistemde bug olduğuda admine ait bilgilerin çalınması da karşılaşılabilecek bir başka risk unsurudur. Bu nedenle hem web sitesinin, hem de kişisel güvenliğin sağlanabilmesi adına, bilgisayar üzerinde güçlü ve profesyonel bir antivirüs programı ve anti-logger programlar kullanılmalıdır.
2. Profesyonel Hosting Firması
Web sitesinde bulunan bir bug nedeniyle, web host üzerindeki diğer tüm web sitelerine de saldırı düzenlenebilir. Yani, paylaşımlı bir host hizmeti kullanıyorsanız ve bir hacker aynı host üzerinde diğer bir web sitesinde bug bulduysa, sizin web sitenize de saldırı düzenleyebilir. Bu nedenle sistemini daima güncel tutan ve güvenlik açığı vermeyen profesyonel host firmalarından hosting paketi almanız önerilir.

3. Scriptleri Devamlı Güncellemek
Web sitesine bilinen hazır scriptleri yüklemek ve kullanmak iyi bir yöntem değildir. Çünkü hazır scriptler yapıları gereği açık kodlardan oluşur. Bu nedenle web sitesine yüklenen her şey sürekli denetlenmeli ve daha önce açığının bulunup bulunmadığına dair araştırmalar yapılmalıdır. Bunların dışında yüklenen scriptlerin güncellemeleri gelince aksatılmamalıdır.