Tarihin en vahim 10 yazılım hatası

Konusu 'Konu Dışı' forumundadır ve serseri_aşık tarafından 20 Şubat 2008 başlatılmıştır.

  1. serseri_aşık Well-Known Member


    Tarihin en vahim 10 yazılım hatası
    Teknolojik yazılım hataları bazen ölümcül olabiliyor. İşte, dünden bugüne kronolojik sırayla, Wired News tarafından listelenen tüm zamanların en kötü yazılım hataları.

    Geçenlerde Toyota, Prius araçlarında bir neden olmadan yanan farlar ve motorun beklenmedilk şekilde durmasıyla ilgili olarak 160.000 aracını piyasadan çektiğini açıkladı. Bu araçlardaki sorunun kaynağının donanım değil yazılım hatası olduğu anlaşıldı. Prius'da "software bug" (yazılım böceği) denen bir sorun vardı.

    Bu olayla birlikte 1945'lere kadar uzman yazılım böcekleri anımsandı. 1945 yılında mühendisler Harvard Mark II sisteminde bir böcek bulmuşlardı. Bilgisayar bir testten geçtiği sırada bir hata oluştuğu görülmüş, ardından böcek yakalanmıştı. Bu böcek gerçek bir bilgisayar böceği olarak yazılım tarihine geçti.

    60 yıl sonra bugün de bilgisayar böcekleriyle karşılaştığımız durumlar oluyor, yazılım ile donanım arasındaki çizgi donuklaşırken kodlama hataları gittikçe daha fazla yaşamımıza giriyor. Kodlama hataları yalnız bilgisayar sistemlerini değil, cep telefonlarını, enerji tesislerini, arabaları, kalp atışlarını düzenleyen cihazları ve birçok tıbbi ekipmanı etkileyebiliyor.

    Bilgisayarlardaki bir güvenlik açığının, bilgisayar solucanları tarafından kullanılarak İnternet'in birkaç gün kapanmasına yol açması, ya da bir kodlama hatasının telefon sisteminin çalışmasını engellemesi, duruma göre, eşit derecede zarar verebilir. Bilgisayar yazılımlarındaki kodlama hatalarına bağlı gizli sorunların ortaya çıktığı ilginç olaylar dizisi ölüme yol açan hataları da içeriyor.

    BİLİNEN ÜNLÜ YAZILIM SORUNLARI

    Birçok insan en önemli yazılım sorununun ölüme yol açan sorun olduğunu söyleyecektir. Böyle şeylerin tekrarlanmaması için Therac-25 olayını anımsamakta yarar var. Therac-25 olayı yazılımın kritik uygulamalarda kullanılmasına karşı bir uyarı olarak görülmektedir. Bu tür sistemleri inceleyen uzmanlar, yazılım bir kaç kişiyi öldürse de, bu tür ölümcül hatalara odaklanmanın teknolojinin daha akıllı işlem sürecinin çok gerekli olduğu alanlarına uygulanmasını önleyebileceğini söylüyorlar.

    Onlara göre bazı durumlarda bir yazılım eksikliği, kaçınılmaz olan hatalarla ölenlerden daha fazla insanın ölmesine yol açabilir. Bu çok tartışmalı bir konudur. İşte, kronolojik sırayla, Wired News tarafından listelenen tüm zamanların 10 en kötü yazılım hatası:

    * 28 Temmuz 1962 -- Mariner 1 Uzay Roketi: Mariner 1'in uçuş yazılımındaki bir hata fırlatma sırasında roketin istenen yörüngeden ayrılmasına yol açtı. Kontrol yönetimi tarafından roket Atlantik Okyanusu'nda yok edildi. Kazayla ilgili inceleme yapıldığında, bir kâğıda kurşun kalemle yazılmış bir formülün bilgisayara yanlış geçirilmiş olduğu ortaya çıktı. Böylece bilgisayar roketin yörüngesini yanlış hesaplamıştı.

    * 1982 -- Sovyet Gaz Hattı: Söylentiye göre, CIA'e bağlı çalışan operatörler Sibirya gaz hattını kontrol etmek üzere satın alınan Kanada bilgisayar sistemine bir böcek yerleştirdiler. Sovyetler Birliği'nin bu sistemi hassas ABD teknolojisini gizlice satın alma ya da çalma çabalarının bir parçası olarak aldığı iddia ediliyorduı. Yine söylentiye göre, CIA, programı keşfetti ve onun geri tepmesini sağlamaya karar verdi. Bunun için Sovyet incelemesinden geçecek, ama sonunda işletme anında başarısız kalacak bir ekipmanı araç olarak kullandı. Böylece gezegenin tarihinde en büyük nükleeer olmayan patlama meydana geldi.

    * 1985-1987 -- Therac-25 Tıp Kazası: Bir radyasyon terapi cihazı hatalı çalıştı ve çeşitli tıbbi tesislerde ölümcül düzeyde radyasyon verdi. Daha önceki bir tasarım geliştirilerek yaratılmuş bulunan Therac-25 iki farklı tür radyasyon verilen "ileri" bir terapi sistemi idi. Ya düşük güçlü elektron ışını (beta parçacıklar) veya X-ışınları veriyordu. Therac-25'in X-ışınları yüksek güçlü elektronların elektron silahı ile hasta arasına yerleştirilmiş bir metal hedefe çarptırılmaları ile yaratılıyordu. İkinci bir "ilerleme" de eski Therac-20 nin elektromekanik güvenlik bağlantılarının yazılım kontrolüyle yapılmasıydı. Bu karara yazılımın daha güvenli olduğu düşüncesiyle varılmıştı. Mühendislerin bilmediği şey hem 20 hem 25'in hiçbir resmi eğitimi olmayan bir programcı tarafından yazılmış olduklarıydı. Bir görünmez hata nedeniyle, hızlı yazan bir klavye kullanıcısı kaza yaparak Therac-25'in elektron ışınını yüksek enerjili modda, fakat metal hedef yerinde olmadan, hastaya gönderecek şekilde çalışmasına yol açabilirdi. Böyle oldu ve en az 5 hasta öldü başkaları ciddi şekilde yaralandı.

    * 1988 -- Berkeley Unix Sisteminde Tampon Bellek Taşması: Adına Morris Worm denen ilk İnternet solucanı bir tampon bellek yetersizliği sorunundan yararlanıp, bir günden az bir zaman içinde, 2000-6000 arası bilgisayara bulaştı. Bu konuyla ilgili kod gets() olarak ifade edilen bir standart girdi-çıktı kütüphanesi fonksiyonuydu. Bu fonksiyon ağ üzerinde bir metin satırı okur. Maalesef gets() fonksiyonunun girdiyi sınırlamayla ilgili bir kontrolü yoktur ve çok büyük bir girdi solucanın bağlanabildiği makinayı kontrolüne almasını sağlayabilir. Programcılar çalışan koddaki gets() fonksiyonunu kullanım dışı bıraktılar; ama onu C programlama dilinin standart girdi-çıktı kütüphanesinden çıkarmayı kabul etmediler.

    * 1988-1996 -- Kerberos Rasgele Sayı Üreticisi Kazası: Kerberos güvenlik sisteminin yazarları, programın rasgele sayı üreticisini uygun bir parametreyle beslemeyi ihmal edince, yetkilendirme için Kerberos'a dayanan bir bilgisayara izinsiz giriş yapmak mümkün hale geldi.

    * 15 ocak 1990 -- AT&T Bilgisayar Ağı Kazası: AT&T'nin #4ESS uzun mesafe şalterlerini kontrol eden yazılımının yeni sürümündeki bir görünmez hata, bu dev bilgisayarların komşu makinaların birinden belirli bir mesaj almaları durumunda çökmelerine neden oldu. Bu mesaj çevre makinaların çökme durumundan kurtulduklarında gönderdikleri mesajdı. Bir gün bir şalter sistemi çöktü ve yeniden çalışmaya başladı. Komşu şalterler ve onlara komşu başka şalterler de çöktü. Kısa süre sonra, her 6 saniyede 114 şalter çöküp yeniden çalışmaya başlar hale geldi. Böylece 9 saat boyunca 60 bin kadar kişi uzun mesafeli servis kullanamaz hale geldi. Sonuçta mühendisler yazılımın eski sürümünü yüklediler.

    * 1993 -- Intel Pentium İşlemcide Sorun: Bir silikon hatası Intel Pentium bilgisayar yongasının belli bir büyüklük aralığındaki ondalıklı sayıları bölerken hata yapmasına yol açıyordu. Örneğin 4195835.0 / 3145727.0 sonucu 1.33382 yerine 1.33374 olyordu. Bu yüzde 0.006 lık bir hataydı. Bu görünmez hata az sayıda kullanıcıyı etkiledi, ama halkla ilişkiler kâbusu yarattı. Piyasaya sürülmüş 3- 5 milyon arası yonga vardı. Başlangıçta Intel daha hassas hesaplamalara ihtiyacı olduğunu kanıtlayanlar için yonga değişişkliği yapmayı önerdi; ama sonunda teslim oldu, şikâyet eden herkesin yongasını değiştirmeyi kabul etti. Sonunda bu görünmez hata Intel'e 475 milyon dolara maloldu.

    * 1995/1996 -- Bilgisayar Ağı Kontrol Komutlarında Sorun: İnternet Bağlantı Noktası numaraları (IP) ile ilgili bir koddaki hata, doğru yazılmamış bir "Ping" komutunun İnternet üzerinde herhangi bir yerden gönderilmesi sonucunda, çeşitli işletim sistemlerindeki bilgisayarların çökmesine yol açıyordu. En çok etkilenenler Windows kullanan bilgisayarlardı. Bu bilgisayarlar iletişimde Ping paketi aldıklarında kilitleniyor ve "mavi ölüm ekranını" getiriyorlardı. Sorun birçok Macintosh ve Unix sistemini de etkiledi.

    * 4 Haziran 1996 -- Ariane 5 Flight 501: Ariane 4 roketinin çalışma kodu Ariane 5'te yeniden kullanılmıştı. Fakat Ariane 5'in daha hızlı olan motoru, roketin uçuş bilgisayarındaki bir aritmetik işlemde bir hatanın ortaya çıkmasına yol açıyordu. Hata, bilgisayar ifadeleriyle, 64 bitlik ondalıklı sayıyı 16 bitlik işaretli tam sayıya dönüştüren kodda idi. Daha hızlı motor 64 bitlik sayıların Ariane 5'te, Ariane 4 de olduğundan daha büyük olmasına yol açıyor ve böylece sayısal taşma durumu yaratıyor, o da uçuş bilgisayarının çökmesini getiriyordu. Flight 501'in destek bilgisayarı çöktü, 0.05 saniye sonra da ana bilgisayar çöktü. Çöken bilgisayarlar sonucu, roketin ana işlemcisi motorlara aşırı güç yüklenmesine yol açtı ve roket, fırlatıldıktan 40 saniye sonra, parçalandı.

    * Kasım 2000 -- National Cancer Institute, Panama: Bir dizi kaza sonucu bir ABD firması olan Multidata Systems International tarafından yazılmış olan terapi planlama yazılımı, radyasyon terapisine girecek hastaya yollanacak uygun radyasyon dozunu yanlış hesapladı. Multidata'nın yazılımı bir radyasyon terapistinin, "blok" denen, sağlam dokuların radyasyondan korunmasını sağlayan metal kalkanın yerini bilgisayar ekranında belirlemesine olanak veriyordu.

    Ancak yazılım teknisyenin yalnızca 4 koruyucu blok kullanmasına izin veriyor, Panamalı doktorlar ise 5 koruyucu blok kullanmak istiyorlardı. Doktorlar 5 blokun hepsini ortada bir deliği olan tek bir büyük blok gibi çizerek yazılımı kandırabileceklerini keşfettiler. Doktorların kavramadıkları şey, bu kurulumda Multidata yazılımının, deliğin nasıl çizildiğine bağlı olarak, farklı yanıtlar verdiği idi.

    Deliği bir yönde çizdiğinizde doğru doz hesaplanıyor, başka yönde çizdiğinizde yazılım gerekli dozun iki katını tavsiye ediyordu. En az 8 hasta öldü, 20 başka hasta da önemli sağlık sorunları yaratacak ölçüde aşırı dozda radyasyon aldı. Yasal olarak, bilgisayarın hesaplarını elle yapacakları hesapla çift kontrolden geçirmeleri gereken doktorlar cinayetle suçlandı.
     



Sayfayı Paylaş