| Missing Default Case in Switch Statement Açıklığı (CWE-478) | |||||
| Bu makalede Missing Default Case in Switch Statement (CWE-478), yani Switch İfadesinde Default Durumun Olmaması açıklığı anlatılacaktır.
Açıklık Önem Derecesi: Düşük Açıklığın Etkisi: Güvenliğin sürdürülebilirliğinin azalması Açıklığın Açıklaması: Programlama dillerinde switch ifadesi bir ifadeyi belirli sayıda duruma karşı eşleşme kıyaslamasına tabi tutma ve eşleşilen duruma dallanma, sonra da break komutu ile dallanmayı sonlandırma işlemini yapar. Eğer switch ifadelerinde default eşleşme durumu bulunmazsa bu durum “Switch İfadesinde Default Durumun Olmaması (CWE-478)” açıklığı olarak ele alınır. Switch ifadelerinde default duruma yer verilmemesi planlanmamış çalışma akışına sebebiyet verebilir. Bu durum çoğunlukla istemci girdilerinin uygulama tarafından belirlendiği durumlarda yaşanan problemlerden bir tanesidir. Uygulama kullanıcılarına istemci girdilerini kendi koyduğunda gelecek girdilerin bunlardan bir tanesi olacağını varsayar. Switch ifadesi ise buna göre tasarlanır. Ancak girdi “istemci” girdisi olduğu için kullanıcı uygulamanın koyduğu değerleri kolaylıkla manipule edebilir ve geçersiz bir girdi gönderebilir. Bu durumda geçersiz girdi switch ifadesindeki kıyaslamaları komple atlamış olur ve switch ifadesi ne için kullanılıyorsa o anlamda suistimal edilebilir.
Bu açıklığı göstermek adına java örneklerine yer verilmiştir: Java
//Güvensiz Kod Örneği
switch (param) {
case 0:
doSomething();
break;
case 1:
doSomethingElse();
break;
}
Bu örnekte switch ifadesi default durum içermediğinden güvensizdir. Java:
// Güvensiz Kod Örneği 2
switch (param) {
default:
error();
break;
case 0:
doSomething();
break;
case 1:
doSomethingElse();
break;
}
Bu örnekte ise default durum eşleşme durumları arasında en başta yer aldığından güvensizdir. Default durum eşleşme durumları arasında en sona yerleştirilmelidir. Java:
// Güvenli Kod Örneği
switch (param) {
case 0:
doSomething();
break;
case 1:
doSomethingElse();
break;
default:
error();
break;
}
Bu örnekte güvenli kullanım gösterilmiştir. Not: Bir istisna olarak bazı durumlarda switch ifadesinde olası tüm durumlar konulabilir ve switch ifadesine default durumu koymak gerekmeyebilir. Bu durumda default durumu koymama sadece switch ifadesinde “%100” kesinlikte başka eşleşme durumunun meydana gelmeyeceği belli olduğu zaman geçerli olur. Açıklığın Önlemi: Kurum uygulamada kullanılan switch ifadelerine default eşleşme durumu ilave edilmelidir.
|
|||||
Bu yazı 25.10.2025 tarihinde, saat 04:18:41'de yazılmıştır.
|
|||||
|
|||||
| Yorumlar |
|||||
| Henüz yorum girilmemiştir. | |||||
| Yorum Ekle | |||||
Bu yazı 25.10.2025 tarihinde, saat 04:18:41'de yazılmıştır.