تحقیقات جدید آزمایشگاههای Cyble Research and Intelligence Labs (CRIL) نشان میدهد که تعداد فزایندهای از وبسایتهای ساخته شده توسط ابزارهای هوش مصنوعی (AI App Builders)، حساسترین اعتبارنامههای خود را بهصورت عمومی در کد Front-end قرار میدهند و آنها را در معرض دید هر کاربری که صفحه را باز کند، قرار میدهند.
جزئیات شناسایی و تحلیل
در یک بازه زمانی یکماهه، محققان CRIL بیش از ۱.۳ میلیون دامنه تازه ثبت شده را اسکن کردند. با استفاده از طبقهبندیهای اختصاصی، وبسایتهای تولید شده توسط سازندگان AI شناسایی شده و سپس کد عمومی آنها برای یافتن اعتبارنامهها (Credentials) بررسی شد. از میان ۲۲,۳۰۶ سایت شناسایی شده، ۳۵ مورد دارای اسرارهای (Secrets) واقعاً خصوصی در مرورگر بودند.
اگرچه عدد ۳۵ کوچک به نظر میرسد، اما Cyble تأکید میکند که این شمارش بسیار سختگیرانه بوده است. بسیاری از رشتههای مشابه کلید در این سایتها (مانند کلیدهای reCAPTCHA) بهطور پیشفرض عمومی هستند و ریسک کمی دارند. اما موارد شناسایی شده شامل اعتبارنامههایی بودند که هرگز نباید از محیط سرور خارج شوند.
الگوهای افشای کلیدهای OpenAI و سایر سرویسها
مستقیمترین الگو در سایتهایی دیده شد که برای تولید محتوا از مدلهای زبانی بزرگ (LLM) استفاده میکنند. در این موارد، کلید API مدل مستقیماً در کدی که کاربر دانلود میکند، قرار گرفته است. برای مثال، یک سایت تولید محتوا ۱۲ کلید مجزای OpenAI را بهصورت Plain Text در بسته JavaScript خود ذخیره کرده بود. هر کسی با دسترسی به این کلیدها میتواند موجودی حساب مالک را مصرف کرده یا محدودیتهای نرخ (Rate Limit) را به پایان برساند.
پدیده Clone-and-Leak: یک راز، چندین دامنه
ابزارهای AI ساخت سایتهای مشابه را بسیار ارزان و سریع میکنند. اپراتورها اغلب یک قالب (Template) موفق را در دامنههای متعدد کپی میکنند و هر رازی که در آن قالب باشد، به تمام سایتها منتقل میشود. Cyble دو مورد برجسته را مشاهده کرد:
- Slack Webhooks: ۱۳ دامنه تقریباً یکسان، یک URL مشترک برای Slack Webhook داشتند که به مهاجم اجازه میداد پیامهای اسپم یا فیشینگ را مستقیماً به فضای کاری (Workspace) اپراتور ارسال کند.
- Stripe Secret Keys: یک کلید سری Stripe در چهار دامنه مختلف مشاهده شد. این کلید دسترسی کامل به API حساب Stripe، از جمله ایجاد تراکنش، صدور بازپرداخت (Refund) و خواندن سوابق مشتریان را فراهم میکند.
بحرانیترین افشاگریها
خطرناکترین یافته، افشای Supabase service role token در چهار سایت بود. این توکن امنیت سطح ردیف (Row-Level Security) را دور زده و دسترسی کامل خواندن و نوشتن به دیتابیس پروژه میدهد که منجر به سرقت دادههای کاربران یا تغییر محتوای سایت میشود.
توزیع کلیدهای افشا شده به شرح زیر است:
- Slack webhook: ۱۳ سایت
- Stripe secret key: ۶ سایت
- OpenAI API key: ۵ سایت
- AWS access key: ۵ سایت
- Supabase service role token: ۴ سایت
- GitHub token / Google OAuth secret: ۲ سایت
توصیههای امنیتی برای توسعهدهندگان
برای جلوگیری از این نشتها، موارد زیر توصیه میشود:
- کلیدهای سری را فقط در توابع Server-side یا جریانهای کاری Backend نگه دارید.
- در Front-end تنها از کلیدهای Publishable و Anon استفاده کنید و آنها را با قوانین Firebase یا محدودیتهای API Key تجهیز کنید.
- هر کلیدی که یکبار در سمت کلاینت افشا شده است را فوراً Rotate کرده و آن را Compromised تلقی کنید.
- پیش از انتشار، سورس کد صفحات را برای رشتههایی مانند
sk-،sk_live_،service_roleوhooks.slack.comجستجو کنید.