دسته بندی
Authentication and Session Management Vulnerabilitiesباگ
Insecure Deserialization یک نوع باگ امنیتی است که در آن دادههای سریالایز شده به صورت ناامن به شئ ها یا دادههای قابل استفاده تبدیل میشوند. این باگ معمولاً زمانی رخ میدهد که برنامهها از ساختارهای مانند JSON، XML، یا دیگر فرمتهای سریالایز شده شده برای انتقال و ذخیرهسازی دادهها استفاده میکنند و نقاط ضعفی در تجزیه و تحلیل این دادهها دارند.مثال:
فرض کنید یک وبسایت فروشگاهی از ساختار
JSON برای ذخیره و نمایش محصولات استفاده میکند. در این صورت میتواند از یک متد ساده برای تجزیه و تحلیل دادههای JSON و نمایش محصولات استفاده کند.if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$data = $_POST['data'];
$decoded_data = json_decode($data);
foreach ($decoded_data['products'] as $product) {
echo 'Product Name : ' . $product['name'] . '<br>';
echo 'Price: ' . $product['price'] . '<br>';
echo '----------------------<br>';
}
}
حملهکننده میتواند با تغییر دادههای JSON و اضافه کردن فیلدهای جدید، دادههای تقلبی (مثل تغییر قیمت یک محصول به مقدار منفی) ارسال کند:{"products": [{"name": "LapTop", "price": 15000000}, {"name": "Mobile", "price": -5000000}]}
وقتی برنامه این دادهها را تجزیه و تحلیل میکند و به شئ تبدیل میکند، مقدار منفی قیمت گوشی را نیز نمایش میدهد که باعث ایجاد اطلاعات تقلبی یا اشکال در سیستم میشود.روش های جلوگیری:
1- از زبانهای محدود و امکانات نیمهای استفاده کنید تا دسترسی حساس به سیستم را محدود کنید.
2- دادههای ارسالی از سمت کاربر را اعتبارسنجی کنید و تنها دادههای معتبر و مجاز را تجزیه و تحلیل کنید.
3- از کتابخانهها و ابزارهای امنیتی مخصوص تجزیه و تحلیل دادهها استفاده کنید.
4- از ساختارهای سریالایزینگ محدود و امن استفاده کنید که دسترسی به محتوای حساس را محدود کند.
5- مطمئن شوید که سطح دسترسی کاربران و نقشهای مختلف محدود شدهاند و به کاربران فقط دسترسیهای لازم را اعطا کنید.
.