هفتهی گذشته، یکی از دوستانم که مدیر یکی از باتهای خوب دانلود موزیک در تلگرامه، پیامی رو از اینباکسش در حرفبهمن بهم فوروارد کرد که به نظرش میرسید از طرف اطرافیانش فرستاده نشده. ما، به خاطر مشغله زیاد کاری و پروژههای متعددی که تیم کمتعدادمون در حال انجامشونه نتونستیم موضوع رو خیلی جدی بگیریم تا اینکه ساعتی پیش یکی از دوستان، این توییت رو برام ارسال کرد. حاکی از اینکه، تعداد زیادی از کاربران پیامهای مشابهی رو که عمدتا فینگلیش نوشته شدند دریافت کردهاند.
حقیقتش ماجرا در لحظه اول برام ترسناک بود، چون در تیم ما کسی غیر از من چنین دسترسیای رو نداره و خب میدونستم که خودم هم چنین کاری نکردم (!) و کمی نگران دیتاها شدم، اما بعد از بررسی لاگها و دیتابیس متوجه جزییاتی شدم که در سه بند کوتاه توضیح میدم.
اول از همه، چطور این اتفاق افتاده؟
لینک دریافت پیام ناشناس در حرفبهمن، لینک امنیتی و عجیبی نیست. در واقع، هیچوقت نیازی هم نبوده که امنیتی باشه! این لینک حاصل base64 encode کردن UserID تلگرام کاربرانه. UserID یک عدد پابلیک محسوب میشه و زمانی که کاربران از کلاینتها، یا باتهای دیگه استفاده میکنند برای شناسوندن کاربر به تلگرام استفاده میشه. در نتیجه، با نوشتن یک کلاینت ساده بدون خروجی تصویری (صرفا کد)، یا چیزی شبیه نرمافزاری که هدایت موس و کیبورد کامپیوتر رو به عهده میگرفت میشه به تعداد زیادی از کاربران که UserID شون رو داریم پیام ارسال کرد (با ساختن لینک از طریق انکد کردن UserID و قرار دادنش در انتهای اون harfbemanbot?start=XXXXXXXXX).
مدتی پیش ما خواستیم که لینکها رو تغییر بدیم، اما مشکل این بود که اعتبار لینکهای فعلی از بین میرفت و خیلیها مجبور به اصلاح لینکشون در شبکههای اجتماعی میشدند. اما در آینده نزدیک، حتما امکان تعویض لینک رو اضافه میکنیم. با استفاده از این امکان، لینک قبلی نامعتبر میشه و کاربران این بار میتونند فقط با افراد خاصی اون رو به اشتراک بذارند.
برخلاف حدس برخی از دوستان، به نظر نمیرسه که از روش ارسال مستقیم به ناشناس (از طریق Username یا فوروارد یک مسج) برای این کار استفاده شده باشه. در واقع این امکان در بات، مشکلی ایجاد نکرده.
ما برای جلوگیری از این تلاش، لیمیتهای جدیدی رو روی ارسال پیام از یک UserID وضع کردیم و قطعا دیگه چنین اتفاقی نمیفته.
دوم، چرا یکی باید این کار رو بکنه؟
برداشت اولیه و شخصی من (که محتملترین حالته) راه افتادن همین بحثیه که ساعتی پیش شاهدش بودیم: مطرح کردن حرفبهمن به عنوان یک پروژه سودجو (از طرف دوستانی در تلگرام و خارج از تلگرام که امن بودن و پرطرفدار بودن این سرویس به مذاقشون خوش نیومده). در این چند ماه، حرفبهمن سعی داشته که خودش و رازداریش رو به کاربران اثبات کنه. حتی یک بایت دیتا با شخص حقیقی و حقوقی ثالث به اشتراک نذاشته، و همین اواخر، امکان حذف همه پیامهای ارسالی رو بدون نیاز به پرداخت وجه و فعالسازی نسخه کامل فعال کرده. حرفبهمن، برای ما یک پروژه تجاری نبوده و نیست، که اگر بود میتونست درآمد زیادی از تبلیغات انبوه داشته باشه و درآمدش تقریبا با خرج سرورها برابری نمیکرد. ضمن اینکه خیلی از دریافتکنندههای این پیامها، نسخه کاملشون از قبل فعال بوده.
اما برداشت پیچیدهتری که البته خیلی محتمل به نظر نمیرسه (چون خیلی از جوابهای کاربران، توسط فرستنده دیده نشدند، و البته ارسالکننده، دسترسی به اینکه آیا نسخهی کامل اکانت دریافتکننده فعاله یا نه نداشته) اینه که پیامها با مضمون یکسان، برای سنجش مدل جوابها و شناسایی کاربران مشتاق به آشنایی برای دعوت به سرویسهای مختلف دوستیابی در تلگرام ایجاد شده باشند. از اونجا که ما در جواب نشون نمیدیم که چه کسی جواب رو ارسال کرده و عملا تشخیص جوابدهندهها از هم بسیار سخته، این مورد خیلی غیرمحتمله.
مهمتر از همه، آیا خطری اطلاعات من رو تهدید میکنه؟ اینایی که گفتید یعنی هک شدید؟
خیر، هیچ خطری اطلاعات کاربران رو تهدید نمیکنه. در واقع اتفاقی که افتاده، یک ورودی سنگین بوده و هیچ اطلاعاتی از جمله پیامهایی از شما که پیش ما امانته به بیرون خارج نشده.
این پست رو به جهت نگرانی دوستان خیلی سریع نوشتم. اگه نکته جدیدی متوجه شدم یا به ذهنم رسید، حتما بروزرسانی میکنم.
ممنون از وقتی که به خوندن این پست اختصاص دادید.
—
بروزرسانی: همه پیامهای ارسال شده توسط UserIDهای شناسایی شده از سرور حذف شد تا از این لحظه کسی اشتباها دستور پاسخ دادن به اونها رو لمس نکنه. این پیامها دیگه در اینباکس هم دیده نمیشن.