۸۰۰ میلیون داده از یک پایگاه‌ اطلاعاتی ناامن نشت کرد

به نقل از سایت اخبار فناوری اطلاعات و ارتباطات ، فن آوری های نوین :    

به گزارش خبرگزاری مهر به نقل از معاونت بررسی مرکز افتا، این پایگاه داده با نام MongoDB از چهار مجموعه مجزا از پرونده‌ها تشکیل شده است که بزرگترین آن‌ها mailEmailDatabase نام دارد. این مجموعه داخل سه پوشه قرار دارد که به شرح زیر است:

• Emailrecords ( تعداد: ۷۹۸,۱۷۱,۸۹۱ پرونده).
• emailWithPhone ( تعداد: ۴,۱۵۰,۶۰۰ پرونده).
• businessLeads ( تعداد: ۶,۲۱۷,۳۵۸ پرونده).

پوشه Emailrecords که شامل بیشترین رکوردها بود، حاوی نام‌خانوادگی، تاریخ تولد، ایمیل، شماره تلفن، کد پستی، آدرس، جنسیت و آدرس IP برای هر مؤلفه جداگانه است.

با مقایسه و تطابق‌دادن بعضی رکوردهای تصادفی پایگاه داده با پایگاه داده HaveIBeenPwned از رکوردهای افشاشده، مشخص شد که این رکوردها در هیچ نشت قبلی نبوده‌اند و در نتیجه این مجموعه‌ای جدید و منحصر به فرد از داده‌ها است.

در طول فرآیند اعتبارسنجی، تلاش‌شد تا صاحب نمونه موردنظر MongoDB شناسایی‌شود که در نهایت نام شرکتی پیدا شد که خدمات اعتبارسنجی ایمیل شرکتی را روی سایت خود تبلیغ می‌کرد.

پیش از پیدا کردن وب‌سایت شرکت و خدمات ارائه‌شده، تصور می‌شد که پایگاه داده برای تهیه اهداف کمپین‌های اسپم استفاده می‌شود. زیرا پایگاه داده، حساب‌های ایمیل برای ارسال ایمیل و صدها سرورSMTP، ایمیل، تله‌های هرزنامه، کلمات کلیدی که باید از آن اجتناب شود و آدرس‌های IP که باید به لیست‌سیاه اضافه شود را شامل می‌شود.

در پی این کشف، این شرکت، وب‌سایت و پایگاه‌داده افشا شده‌اش را غیرفعال کرده و در بیانیه‌ای اعلام کرد که ۸۰۰ میلیون رکوردی که در معرض دسترس قرارگرفته‌اند، با اطلاعات عمومی و نه اطلاعات مشتریان ساخته شده‌اند. این شرکت به سرعت اشتباه خود را تصحیح‌کرده و اطلاعات در معرض خطر را همان روز از دور خارج‌کرد.

علاوه بر صدها میلیون مورد که شامل اطلاعات شخصی با جزئیات قابل‌شناسایی (PII) بودند، پایگاه‌داده محافظت نشده همچنین حاوی جزئیات دسترسی و لیست کاربران (۱۳۰ رکورد)، با نام و اطلاعات دسترسی به سرور FTP برای آپلود/ دانلود لیست‌های ایمیلی است.

101
0 0

لینک های مفید

طراحی لوگو دراصفهان

بانک اطلاعات مشاغل رایگان
لوازم یدکی جک JAC

کتاب های ادبیات آمریکای لاتین

سنگ چینی

کرم گریم


$(window).load(function () { 'use strict'; function activeStickyKit() { $('[data-sticky_column]').stick_in_parent({ parent: '[data-sticky_parent]' }); // bootstrap col position $('[data-sticky_column]') .on('sticky_kit:bottom', function (e) { $(this).parent().css('position', 'static'); }) .on('sticky_kit:unbottom', function (e) { $(this).parent().css('position', 'relative'); }); }; activeStickyKit(); function detachStickyKit() { $('[data-sticky_column]').trigger("sticky_kit:detach"); }; var screen = 768; var windowHeight, windowWidth; windowWidth = $(window).width(); if ((windowWidth < screen)) { detachStickyKit(); } else { activeStickyKit(); } // windowSize // window resize function windowSize() { windowHeight = window.innerHeight ? window.innerHeight : $(window).height(); windowWidth = window.innerWidth ? window.innerWidth : $(window).width(); } windowSize(); // Returns a function, that, as long as it continues to be invoked, will not // be triggered. The function will be called after it stops being called for // N milliseconds. If `immediate` is passed, trigger the function on the // leading edge, instead of the trailing. function debounce(func, wait, immediate) { var timeout; return function () { var context = this, args = arguments; var later = function () { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; }; $(window).resize(debounce(function () { windowSize(); $(document.body).trigger("sticky_kit:recalc"); if (windowWidth < screen) { detachStickyKit(); } else { activeStickyKit(); } }, 250)); });