Parameter Labs یک آسیبپذیری در پیادهسازی الگوی artifacts در ChatGPT کشف کرده است. این الگو که اکنون به عنوان HTML previews شناخته میشود، به نمایش اپلیکیشنهای HTML تعاملی در یک iframe sandboxed میپردازد. هدف از این کار، جلوگیری از تعامل کدهای غیرقابل اعتماد با APIهای OpenAI و دسترسی به دادههای خصوصی است.
این حمله از کتابخانه MathLive JavaScript که شامل یک کیبورد مجازی است، بهرهبرداری میکند. این کیبورد میتواند از طریق postMessage() از iframe sandboxed در صفحه والد فعال شود. کد دریافتکننده پیام از innerHTML استفاده میکند که به هر پیامی اجازه میدهد HTML سفارشی به صفحه والد اضافه کند. هیچ مکانیزمی برای جلوگیری از فراخوانی این متد توسط دیگر iframeهای sandboxed وجود نداشت.
این امر به کدهای غیرقابل اعتماد در یک iframe اجازه میداد HTML وارد کنند و با اینکه innerHTML مستقیماً اسکریپتها را اجرا نمیکند، میتوانست یک iframe جدید بدون محدودیتهای sandbox ایجاد کند. قوانین CSP OpenAI اسکریپتهای inline را مسدود کرده و تنها بارگذاری اسکریپت از چند دامنه خاص را مجاز میدانست که یکی از آنها YouTube بود. endpoint oEmbed یوتیوب میتوانست برای بازتاب جاوااسکریپت به شکلی که اجرا شود، استفاده شود.
پس از اجرای جاوااسکریپت در ChatGPT، مهاجم میتوانست به راحتی دادههای خصوصی کاربران را از APIها دریافت کرده و از طریق یک مرجع تصویر آنها را خارج کند. نتیجه نهایی این بود که میتوانستی یک URL اشتراکگذاری ChatGPT ایجاد کنی که وقتی توسط کاربر دیگری بازدید میشد، دادههای خصوصی او را سرقت کرده یا به نمایندگی از او اقداماتی انجام دهد. OpenAI این حفره را بست و یک جایزه bug ۵۰۰۰ دلاری پرداخت کرد که به نظر من برای چنین آسیبپذیری جدیای کمی ارزان بود.



