| Serializable Class Containing Sensitive Data Açıklığı (CWE-499) | |||||
| Bu makalede Serializable Class Containing Sensitive Data (CWE-499), yani Hassas Veri İçeren Serileştirilebilir Sınıf Kullanılması açıklığı anlatılacaktır.
Açıklık Önem Derecesi: Düşük Açıklığın Etkisi: Bilgi sızıntısı Açıklığın Açıklaması: Nesne yönelimli programlama dillerinde nesne serileştirme adlı verilen bir mekanizma sunulur. Bu mekanizmaya göre kaynak kodda oluşturulmuş ve RAM’e yerleşmiş bir nesne tüm field’ları (değerleri dahil) ve metotları ile beraber bir dosyaya encode’lanarak kaydedilebilir. Böylece sonradan uygulamanın farklı bir noktasında bu nesne dosyadan deserileştirme yöntemiyle çekilerek tekrardan kullanılabilir ve RAM’e tekrardan yerleştirilebilir. Örneğin Java dilinde bir nesnenin serileştirilebilmesi örneğine göz atalım.
public class Employee implements java.io.Serializable {
public String name;
public String address;
public int SSN; // Social Security Number
public int number;
public void mailCheck() {
System.out.println("Mailing a check to " + name + " " + address);
}
}
Bir nesne serileştirilebilir olacaksa nesnenin sınıf tanımında
Serileştirme bellekteki bir nesneyi bytestream olarak, XML olarak, JSON olarak veya başka bir formatta bir dosyaya kaydetme işlemine denir. Bu işlem nesneyi bir başka platforma iletmek veya aynı platformda farklı konumlardan çağırarak kullanmak için depolamak amacıyla kullanılabilir. Ancak bu durum nesnenin içeriklerinin ifşa olması olasılığını doğurur. Java dilinde serileştirilebilir tanımlanmış bir sınıf içerisindeki hassas veri taşıyan bir field için nesne serileştirme sırasında hariç tutulsun istisnası transient anahtar kelimesi ile eklenebilir.
public class Employee implements java.io.Serializable {
public String name;
public String address;
public transient int SSN; // Social Security Number
public int number;
public void mailCheck() {
System.out.println("Mailing a check to " + name + " " + address);
}
}
Örnekte gösterildiği gibi transient anahtar kelimesi ile SSN hassas değerini içeren field mevcut veya gelecekteki serileştirme işlemlerinden hariç tutulmuştur. Bu kullanım geçerlidir, fakat eğer sınıf içerisinde getter & setter tanımları bu field için de yapılmışsa bu durumda getter nedeniyle transient anlamsız kalacaktır ve hassas SSN değerini içeren field yine serileştirilmiş olacaktır. Java dillerinde
Java - Güvensiz Kod Bloğu:
public class Purchase implements Serializable {
private String creditCard;
private Date expDate;
private int CCV;
// .. //
}
Purcase (satın alma) sınıfı Serializable’ı implement’e etmektedir ve 3 adet hassas veri taşıyacak field içermektedir. Bunlar kredi kart numarası, son kullanım tarihi ve CCV kodu. Bu kullanım bu sınıftan türeyecek nesnelerin iletim için veya depolama için farklı noktalardan deserileştirme ile bilgilerinin kullanılması imkanını verecektir ama olası bir ayrı güvenlik kusuru meydana geldiğinde bilgilerin ifşa olmasının yolunu da açacaktır. Açıklığın Önlemi: Açıklığın giderilmesi noktasında tavsiyeler şu şekildedir:
|
|||||
Bu yazı 25.10.2025 tarihinde, saat 20:05:15'de yazılmıştır.
|
|||||
|
|||||
| Yorumlar |
|||||
| Henüz yorum girilmemiştir. | |||||
| Yorum Ekle | |||||
Bu yazı 25.10.2025 tarihinde, saat 20:05:15'de yazılmıştır.