Ana Sayfa

UNIX v4'teki su Programında 1973 Ruhunda Bir Tampon Taşması Hatasını Düzeltmek

1 dk okuma

2025 yılında, UNIX v4'ün bilinen tek kopyasının manyetik bir bantta ortaya çıkması, bilgisayar tarihinde önemli bir dönüm noktası olan UNIX'in C diline yeniden yazılma sürecini gözler önüne serdi. Meraklılar tarafından hızla kurtarılan bu veri, bir PDP-11 simülatöründe başarıyla çalıştırıldı. Makalenin yazarı da bu tarihi eseri incelemek üzere bir örnek kurarak, dağıtımla birlikte gelen kaynak kodlarını derinlemesine inceledi. Bu incelemeler sırasında, sistemin temel yardımcı programlarından biri olan su(1)'de kritik bir güvenlik açığı tespit edildi.

su programı, modern varyantlarına benzer şekilde çalışarak, ayrıcalıksız bir kullanıcının root parolasıyla yetki yükseltmesine olanak tanır. setuid-root olarak yapılandırılmış bu programın 50 satırdan az olan su.c kaynak kodu incelendiğinde, password adlı bir karakter dizisinin (tamponun) sabit 100 baytlık bir boyuta sahip olduğu görüldü. Ancak, kullanıcıdan parola girişi alan döngüde bu tamponun boyutunu kontrol eden herhangi bir sınır denetimi bulunmuyordu. Bu durum, kullanıcının 100 karakterden daha uzun bir parola girmesi halinde bir tampon taşması (buffer overflow) hatasına yol açma potansiyeli taşıyordu.

Yazar, uzun bir giriş dizesiyle yaptığı testlerde bu davranışı doğruladı ve programın başarıyla çöktüğünü gözlemledi. Tampon taşmasının sonucu, üzerine yazılan bellek alanına bağlı olarak programın tamamen çökmesinden (core dump) basitçe çıkmasına kadar değişebiliyordu. Bu keşif, 50 yıldan daha eski bir sistemde bile güvenlik açıklarının var olabileceğini ve kaynak koduna erişimin bu tür sorunları tespit etme ve düzeltme açısından ne kadar değerli olduğunu gösteriyor. UNIX'in geleneksel olarak kendi kendini yeniden derlemek için gerekli kaynak kodunu içermesi, bu tür eski sistemlerin bile günümüzde incelenmesine ve geliştirilmesine olanak tanıyor.

İçgörü

Eski sistemlerdeki güvenlik açıklarının keşfi, yazılım güvenliğinin zaman ve teknoloji fark etmeksizin sürekli bir inceleme gerektirdiğini vurguluyor.

Kaynak