امنیت

اپلیکیشن های موبایل چی از ما می دونن؟

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

گستره زیادی از اطلاعات جمع آوری می شه از مکان جغرافیایی و شماره تلفن و شماره شناسه گوشی تا اطلاعات شخصی مثل سن و جنسیت و لیست شماره دوستان و غیره.

وال استریت ژورنال در یک تحقیق یه سری اپلیکیشن (از جمله اپ خودشون) رو بررسی کرده تا ببینه کدوم ها این اطلاعات رو جمع می کنن و به کی ارسال می کنن. این اپلیکیشن ها از لیست محبوب ترین های هر سیستم عامل انتخاب شدن.

در تصویر زیر اپلیکیشن های اندرویدی رو خواهید دید و هرجا که در ستون مربوطه پر رنگ بود یعنی اطلاعات به شرکت هایی غیر از سازنده اصلی اپلیکیشن ارسال می شه و هرجا کم رنگ (راه راهه در واقع) بود یعنی اطلاعات اون ستون به سرورهای سازنده اپ ارسال می شه.

WSJ-android

 

وضعیت اپلیکیشن های آیفون هم وضعیت بهتری نداره.

WSJ-iphone

Standard
امنیت

روز جهانی محرمانه بودن داده ها

نامگذاری ۲۸ ژانویه به عنوان روز جهانی محرمانه بودن داده ها (که در اروپا بهش حفاظت از اطلاعات هم می گن) یک بهانه است برای یادآوری حق انسان ها در جلوگیری از دسترسی دیگران به اطلاعات شخصیشون. کنوانسیون دفاع از حقوق افراد در برابر پردازش خودکار اطلاعات (شاید ترجمه حقوقیش چیز دیگه ای باشه که من پیدا نکردم) ۲۸ ژانویه سال ۱۹۸۱ آماده امضا شد. کنوانسیون جرایم مجازی و ماده ۸ کنوانسیون اروپایی حقوق بشر نیز از قوانین دیگه ای اند که در اونها از حق حفظ حریم خصوصی و حفاظت از اطلاعات شخصی افراد گفته شده.

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

privacy

امسال این روز یه رنگ و بوی دیگه داره. این اولین ۲۸ ژانویه پس از افشاگریهای اسنودن و مشخص شدن گستردگی نقض قوانین توسط سازمان های دولتی آمریکا، انگلیسه (و کم و بیش کشورهای دیگه). اسنودن نشون داد که چقدر افراد در برابر دولت ها آسیب پذیرند. جدا از دولت ها، مجرمین سایبری هم بیکار ننشستند و خبرهای بدی رو در سال گذشته رقم زدند. از افشای اطلاعات ۱۵۰ میلیون کاربر سایت ادوب تا موردهای مشابه در مورد بانک ها و موسسات تجاری و غیره.

درکشور خودمون هم اتفاقات مشابه کم نبودند. در کنار اینکه ما نیز کاربرهای سایت های بزرگ جهانی ایم، سایت های داخلی نیز بارها هدف قرارگرفته اند. هرچند نقص قوانین، عدم نظارت بر سایت ها و موسسات و بی اهمیت بودن اطلاعات کاربران برای برخی مدیران سایت های ایرانی، باعث می شه خبرهای نفوذ و لو رفتن اطلاعات ما چندان در خبرها دیده نشه.

نمونه های واقعی رو می تونم مثال بزنم از سایت هایی که اطلاعاتشون رو من به راحتی به دست آوردم و به مدیران سایت اطلاع دادم و متاسفانه نه تا کنون مشکل رو برطرف کردند و نه به کاربرانشون اطلاع دادن برای انجام موارد پیشگیرانه.

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

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

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

من در ادامه سعی می کنم نکاتی که باید توسط شرکت ها و مدیران سایت ها رعایت بشه رو بیارم. شما هم اگر پیشنهادی برای تکمیلش دارید از شیوه های ارتباطی که با من دارید بهم اطلاع بدید تا لیست رو تکمیل کنم.

  • کمترین اطلاعات ممکن از کاربران جمع بشه و فقط موارد ضروری و مرتبط با زمینه کاری سایت باشه.
  • کلیه اطلاعات افراد در صورت درخواست اونها از سرور ها پاک بشه. من اگر اکانتم رو در سایتی غیرفعال می کنم، به این معنیه که نمی خوام تاریخچه ای هم از حضور من در اون سایت و دیتابیسش باقی بمونه. فیسبوک و ادوب نمونه های بزرگ نقض این موردند.
  • در مورد کلیه اطلاعات نگهداری شده در سرور به افراد اطلاع داده بشه
  • فایل ها و اطلاعات افراد به خوبی رمزگذاری بشه و در مواردی که دسترسی سرور الزامی نیست، امکان رمزگشایی فقط برای فرد امکان پذیر باشه و حتی ادمین سیستم هم امکان دیدن اطلاعات رو نداشته باشه. من در همین وبلاگ نمونه هایی از سایت های ایرانی رو مثال زدم که پس از عضویت، نام کاربری و پسورد رو به صوت متن ساده برام ایمیل کرده بودند که به معنی هش نشدن رمز من در دیتابیس سایته.
  • اگر از کدهای شرکت های تبلیغات و موسسات دیگری استفاده می شود، حتما موارد امنیتی مرتبط با آنها به کاربران اطلاع داده شود.  برای مثال من ناقض این موردم. من از کدهای گوگل آنالیتیکز در سایتم استفاده می کنم که کلی اطلاعات از مراجعین جمع می کنه، مثل آی پی و مرورگر و نسخه سیستم عامل و غیره ولی متاسفانه هیچ جایی توی وبلاگم این موضوع رو اعلام نکردم. سعی می کنم در اولین فرصت در پانویس صفحه ها این مورد رو اطلاع بدم.
  • به هیچ عنوان اطلاعات کاربران در اختیار شخص سومی قرار نگیرد (حتی سازمان های دولتی) مگر با حکم قضایی و اطلاع فرد
  • در صورتیکه کودکان هم عضو سایتشونند، باید در قوانین کاربری و نکات امنیتی، تقسیم بندی مناسب داشته و بتونن پالایش درستی روی کاربرها داشته باشند. برای مثال کودکان در لینکدین حتی اگه آدرس محل زندگیشون رو به صورت عمومی هم منتشر کنند، لینکدین اجازه دیده شدن این مورد رو به دیگران نمی ده.
Standard
امنیت, برنامه‌نویسی

یافتن نام کاربری اعضای سایت دیگو

من حافظه ضعیفی دارم و معمولا به جای اینکه روی اون حساب کنم از lastpass استفاده می کنم. چند روز پیش به دلایلی به لستپس دسترسی نداشتم و مجبور شدم از گزینه forgot password سایت diigo استفاده کنم. بعد از وارد کردن ایمیل و سابمیت، سایت اعلام کرد که فلانی، لینک تغییر پسورد رو به ایمیلت فرستادم. اینجوری بود که فکری به سرم زد برای یافتن نام کاربری اعضای سایت دیگو.

اپلیکیشن ها و افزونه هایی مثل Awesome Screenshot، Quick Note، Read Later Fast، Diigolet و کلی سرویس دیگه از محصولات diigo است.

در تصویر زیر پاسخ سایت رو در شرایط متفاوت خواهید دید.

پیدا کردن نام کاربری و ارسال ایمیل

پیدا کردن نام کاربری و ارسال ایمیل

آدرس ایمیلی که در سایت وجود ندارد

آدرس ایمیلی که در سایت وجود ندارد

اگر source صفحه اعلام فراموشی رو نگاه کنیم با فرم زیر رو به رو می شیم.

می بینید که آدرس ایمیل در متغییری به اسم  username به آدرس زیر ارسال می شه.

من برای شبیه سازی این کار و در نهایت انجامش به صورت تکراری، از پایتون کمک گرفتم. برای ارسال اطلاعات متغیر های POST از دستور زیر کمک گرفتم.

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

با توجه به اینکه تگ strong تنها دوبار استفاده شده از اون برای جدا کردن بخشی از اطلاعات که بین تگ ها قراردارند استفاده کردم.

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

برای تستش هم یه لیست ایمیل لازم دارم. کافیه دستم رو دراز کنم و از لیست ۱۵۰ میلیون ایمیل لو رفته ادوب استفاده کنم. ایمیل ها رو در لیستی به اسم maillist.txt کنار اسکریپت پایتون می ذارم.  در نهایت غیر از خروجی که در ترمینال نشون داده می شه، فایل out.txt نیز کنار اسکریپت ایجاد می شه و ایمیل  نام کاربری های یافته شده در اون ذخیره می شه.

آدرس پروژه در سایت github:

این مورد یک ضعف امنیتی در سایت دیگو محسوب نمی شه اما یک ضعف در حفظ اطلاعات کاربریه و می تونه منجر به انتشار اطلاعاتی بشه که در نهایت به ضرر کاربر تموم بشه. در نظر بگیرید شما با آدرس ایمیلتون در این سایت با نام کاربری ثبت نام کردید که نمی خواید کسی بدونه و دوست ندارید هرکسی این نام کاربری رو به شما ربط بده.

این مورد به اطلاع سایت diigo خواهد رسید.

به روز رسانی:
در تاریخ ۲۱ ژانویه ۲۰۱۴ به پشتیبانی سایت دیگو ایمیل زدم و موضوع رو اطلاع دادم
در تاریخ ۲۶ ژانویه پشتیبانی سایت دیگو جواب داد و گفت مشکل رو حل می کنن

Standard