این خطا و حفره امنیتی در پیکربندی حدودا 230,000 شهروند ایرانی را در معرض خطر قرار داده و مدارکی مانند رضایتنامههای کتبی به قوانین، گذرنامهها، کارتهای شناسایی، و اطلاعات کارتهای اعتباری مانند صاحب حساب ، شماره CVV2 و تاریخ انقضا کارت و .. آنها را فاش کرده است. نمونه ای از اطلاعات فاش شده در تصویر فوق مشخص است .
ما برای برقراری ارتباط با این شرکت یعنی صرافی ارز دیجیتال ایرانی بیت 24 تلاش کرده ایم اما پیش از انتشار این مقاله پاسخی دریافت نکردیم. البته این حفره امنیتی امن شده و دیگر قابل دسترسی نیست.
محققان تیم امنیتی ابدال بر ماهیت حیاتی دادههای تایید KYC دستکاری شده در پلتفرمهای مبادله رمزارز تاکید کردند. این مشکل نقض امنیتی جدیای را مطرح میکند، زیرا هکرها میتوانند از دادههای فاش شده برای سرقت هویت، معاملات کلاهبرداری، و حملات فیشینگ سوءاستفاده کنند. با دسترسی به چنین دادههای شخصی و مالی جامعی، هکرها میتوانند هویت افراد را جعل کنند، بدون اجازه به حسابها دسترسی پیدا کنند، معاملات کلاهبردارانه را اجرا کنند، و احتمالا به کاربران آسیبهای مالی و شخصی قابل توجهی وارد کنند.
متاسفانه سالهاست در سیستم های دولتی و غیر دولتی در ایران شاهد نشت اطلاعات حساس ایرانی ها هستیم. در ضمن طی یک نامه به صرافی ارز دیجیتال ایرانی بیت 24 پیشنهاد امن سازی سیستم های این صرافی را ارسال کرده ایم اما هنوز هیچ پاسخی برای ما ارسال نشده است.
آپدیت جدید در شنبه 16 دی 1402
تیم پشتیبانی صرافی ارز دیجیتال ایرانی بیت 24 پاسخ نامه ما را ارسال کرده اند و لینک مقاله و راهنمای این حفره امنیتی برای ایشان ارسال شد . در صورتی که از شرکت بیت 24 این مقاله را مطالعه می کنید لیست حفره های امنیتی MinIO را از اینجا می توانید مشاهده کنید .
آشنایی با قطعه کدی که این حفره امنیتی را به وجود آورده است
// minio/cmd/generic-handlers.go
func setRequestValidityHandler(h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// ...
// For all other requests reject access to reserved buckets
bucketName, _ := request2BucketObjectName(r)
if isMinioReservedBucket(bucketName) || isMinioMetaBucket(bucketName) {
if !guessIsRPCReq(r) && !guessIsBrowserReq(r) && !guessIsHealthCheckReq(r) && !guessIsMetricsReq(r) && !isAdminReq(r) && !isKMSReq(r) {
if ok {
tc.FuncName = "handler.ValidRequest"
tc.ResponseRecorder.LogErrBody = true
}
writeErrorResponse(r.Context(), w, errorCodes.ToAPIErr(ErrAllAccessDisabled), r.URL)
return
}
}
// ...
یک مهاجم میتواند با استفاده از درخواستهای ساختگی، از بررسی نام باکت متادیتا عبور کند و در هنگام پردازش PostPolicyBucket، یک شیء را در هر سطلی قرار دهد. برای انجام این حمله، مهاجم به اعتبارنامههایی با دسترسی arn:aws:s3:::* نیاز دارد، همچنین دسترسی فعال به API کنسول لازم است.