درایور Go مونگو‌دی‌بی باگ حذف GridFS را وصله کرد (CVE-2026-88031)

/images/mongodb-go-driver-cve-2026-88031.png

GridFS فایل را به chunk می‌شکند. Delete باید همان یک ID را بردارد. در درایور Go، lookup آن ID آن‌قدر شل بود که اگر مقدار ساخت‌یافته — مثلاً سند BSON با عملگر query — به‌جای شناسهٔ اسکالر برسد، به‌جای exact match مثل شرط query تفسیر می‌شود.

۱۰ سپتامبر ۲۰۲۶ تیم درایور هم‌زمان v1.17.10 و v2.9.1 را گذاشت. هر دو پست همان هشدار را دارند: نسخه‌های v1.0.0 تا v1.17.9 و v2.0.0 تا v2.9.0 زیر CVE-2026-88031. cve.report همان روز رکورد را PUBLISHED نشان می‌دهد: neutralization نادرست در منطق query GridFS؛ کاربر authenticated که بتواند identifier را در اپ تحت تأثیر شکل بدهد، ممکن است همهٔ chunkهای bucket را بردارد و محتوای فایل را ناخوانا کند.

تیکت فیکس: GODRIVER-4081 — exact match برای file ID در متدهای delete.

تا bump ماژول، نوت ریلیز v1 یک wrapping با $eq پیشنهاد می‌کند:

func exactMatch(id any) bson.D {
	return bson.D{{"$eq", id}}
}
bucket.DeleteContext(context.TODO(), exactMatch(id))

و قبل از آن، ID ورودی را اسکالر نگه دارید (ObjectID یا string) و سند/map ساخت‌یافته را رد کنید. این باگ سرور MongoDB نیست؛ باگ کلاینت Go است. اگر go.mongodb.org/mongo-driver را پین کرده‌اید، v1 را به ۱٫۱۷٫۱۰ و v2 را به ۲٫۹٫۱ برسانید.

آخرین مطالب