از سایت سومین دوره مسابقات برنامه نویسی بیان رونمایی شد. این دوره از مسابقات نیز به صورت بین المللی برگزار می شود و امیدواریم با برگزاری شایسته این مسابقات علاوه بر بسترسازی برای رشد مهارت های برنامه نویسان ایرانی، بتوانیم به ارتقای نام ایران در سطح جهانی در حوزه فناوری اطلاعات نیز کمک کنیم.
در دوره قبلی مسابقات 1728 برنامه نویس ایرانی و 3182 برنامه نویس خارجی از 54 کشور جهان با هم به رقابت پرداختند.
برای آشتایی بیشتر، به سایت مسابقه برنامه نویسی بیان مراجعه نمایید.
آیین افتتاحیه مسابقات پس از برگزاری مرحله اول که مرحله ای آزمایشی است برگزار خواهد شد.
این مطلب تا روز جمعه که اولین مرحله مسابقه برگزار خواهد شد ممکن است به روز گردد ...
پیوندهای مفید:
ادامه مطـــلب در منبع...بازتاب مرحله مقدماتی مسابقه
دیجیاتو: آغاز ثبت نام مسابقات برنامه نویسی بیان
آی تی ایران: ثبت نام مسابقات برنامه نویسی بیان
برسام: ثبت نام مسابقه بین المللی برنامه نویسی بیان آغاز شد.
سینا: مسابقه بین المللی برنامه نویسی «بیان» برگزار می شود.
دنیای اقتصاد: ثبتنام مسابقات برنامهنویسی بیان
فاین آی تی: ثبت نام مسابقه بین المللی برنامه نویسی بیان آغاز شد.
ایستنا: ثبتنام مسابقات برنامهنویسی بیان
فستیوال نیوز: سومین دوره مسابقات برنامه نویسی بیان
دیجیاتو: آماری از دور قبلی مسابقه برنامه نویسی بیان
ایسنا: ثبت نام سومین دوره مسابقات برنامه نویسی بیان آغاز شد.
خبرگزاری مهر: آغاز ثبت نام سومین دوره مسابقات برنامه نویسی بیان
عصرتکنولوژی: آغاز ثبت نام سومین دوره مسابقات برنامه نویسی بیان
آیتی رسان: هم اکنون ثبت نام کنید، تا شروع مرحله ورودی مسابقات برنامه نویسی بیان تنها ۲۸ روز باقی است!
برسام: چند آمار کوتاه از مسابقه برنامه نویسی بیان
بازتاب اولین مرحله مسابقه
دیجیاتو: مرحله اول مسابقات بین المللی برنامه نویسی بیان از فردا آغاز می شود
برسام: مرحله اول مسابقات بین المللی برنامه نویسی بیان فردا آغاز می شود
ایسنا: مرحله اول مسابقات بین المللی برنامه نویسی «بیان»، فردا آغاز می شود
یک پزشک: اولین مرحله سومین دوره مسابقه برنامهنویسی بیان
عصر ایران: آغاز مسابقات بین المللی برنامه نویسی «بیان» از فردا
آی تی ایران: آغاز مرحله اول مسابقات بین المللی برنامه نویسی بیان
بیتنا: فردا آغاز سومین دوره مسابقات برنامه نویسی بیان
سینا: آغاز مرحله اول مسابقات بین المللی برنامه نویسی بیان
به روز رسانی: یک رویداد افتخار آفرین دیگر برای ایرانیان
جهان نیوز: آغاز مسابقات بینالمللی برنامهنویسی «بیان»
دانا: آغاز مرحله اول مسابقات بین المللی برنامه نویسی
درنیوز: آغاز مرحله اول مسابقات برنامه نویسی
وبلاگینا: مرحله اول مسابقات بین المللی برنامه نویسی بیان آغاز شد
تابناک: آغاز مرحله اول مسابقات برنامه نویسی
به روز رسانی: یکی از بزرگترین مسابقات برنامه نویسی
ایرنا: 103 countries join Iran programming contest
عصر ایران: رقابت برنامهنویسان 103 کشور جهان در مسابقات برنامهنویسی «بیان»
ایسنا: رقابت برنامهنویسان 103 کشور جهان در مسابقات برنامهنویسی «بیان»
رجا نیوز: رقابت برنامهنویسان 103 کشور جهان
وبنا: سرانجام جایزه «بیان» به کجا رسید؟
خبرگزاری مهر: مرحله انتخابی سومین دوره مسابقات برنامه نویسی برگزار می شود
ایسنا: رقابت غولهای برنامهنویسی جهان در مسابقات بینالمللی «بیان»
خراسان نیوز: رقابت غولهای برنامهنویسی جهان در مسابقات بینالمللی «بیان»
ایسنا: مرحله انتخابی سومین دوره مسابقات برنامه نویسی «بیان» برگزار شد
باشگاه خبرنگاران: حضور 10 هزار برنامهنویس از سراسر دنیا در مسابقهای ایرانی
ایرنا: رقابت 60 برنامه نویس برتر دنیا در ایران
دیجیاتو: نشست خبری شرکت بیان
آی تی ایران: مسابقه برنامه نویسی بیان به مرحله نهایی رسید
عصر ایران: آمار جالب از یک رویداد علمی افتخار آفرین برای ایران
سینا: رقابت ۶۰ برنامه نویس برتر دنیا در ایران
دنیای اقتصاد: رقابت غولهای برنامهنویسی درمسابقات «بیان»
آی تی آنالیز: حضور برنامهنویسان 103 کشور در مسابقات بیان
برسام: گزارشی از سومین دوره مسابقات برنامه نویسی بیان تاکنون
دیجیاتو: آمارهایی از مسابقات برنامه نویسی بیان
عصر ایران: برند سازی جهانی به سبک نخبگان ایرانی
خبرگزاری مهر: فینالیست های سومین دوره مسابقات برنامه نویسی مشخص شدند
آفتاب یزد: برند سازی جهانی به سبک نخبگان ایرانی
دنیای اقتصاد: فینالیستهای سومین دوره مسابقات برنامهنویسی مشخص شدند
این مطلب تکمیل خواهد شد...
Bash چیست؟
Bash یک Shell برای سیستم عامل های مبتنی بر Unix هست، به عبارت دیگر Bash یک مفسر است که دستورات کاربر را مدیریت میکند. همچنین Bash میتواند به عنوان یک مفسر برای CGI Script ها در وب سرور به کار گرفته شود. Shellهای دیگری غیر از Bash برای سیستم عاملهای مبتنی بر Unix معرفی شدهاند اما از اواخر دههی ۸۰ میلادی، Bash یکی از پرطرفدار ترینها بوده و به صورت پیشفرض همراه هر سیستمعامل مبتنی بر Linux و البته سیستمعامل OS X ارایه میشود. بنابراین حتی ممکن است قدمت این آسیبپذیری به همان دهه هشتاد برگردد!
چه سرویسهایی میتواند آسیبپذیر باشد؟
طبق بررسی اولیه،
هر سیستمعامل مبتنی بر Unix دارای Bash به روز نشده، دستگاههای توکار
دارای Bash مانند روترها، دوربینهای آنلاین و … میتوانند آسیبپذیر
باشند.
آیا میزان ریسک این آسیبپذیری از آسیبپذیری HeartBleed بیشتر است؟
تا
روشن شدن همه زوایای این آسیب پذیری باید منتظر ماند ولی جواب ما در حال حاضر به این سوال خیر
است. اما nist.gov برای شدت آسیبپذیری ShellShock شدت ۱۰ از ۱۰ در نظر
گرفته است. این آسیبپذیری برای بهرهبرداری نیاز به دسترسی اولیه ندارد و
در شرایطی از راه دور با ارسال یک درخواست میتوان دستوراتی را سیستم
قربانی اجرا کرد. در آسیبپذیری HeartBleed نیز بدون نیاز به دسترسی اولیه
امکان بهرهبرداری وجود داشت ولی امکان اجرای دستور بروی سیستم قربانی به
صورت مستقیم وجود نداشت.
با این حال بررسی های اولیه نشان میدهد که
گستردگی این آسیبپذیری (ShellShock) برای بهرهبرداری از راه دور، حداقل
در بین وب سایتهای ایرانی بسیار کمتر از HeartBleed میباشد. اما باید
توجه داشت که به طور کلی گستردگی ShellShock بیشتر از HeartBleed میباشد
زیرا بسیاری از نرمافزارها از Bash استفاده میکنند که در نتیجه آنها
نیز آسیبپذیر هستند. به عبارت دیگر بر خلاف HeartBleed که نسخههای خاصی را مورد تهدید قرار داده بود این آسیبپذیری ممکن است در بسیاری از
نرمافزارهای قدیمی که مثلاً در دوربینهای آنلاین، روترها و … استفاده
شده است نیز وجود داشته باشد.
ریشهی این آسیبپذیری چیست؟
Bash به کاربر این قابلیت را میدهد که متغیر و یا توابعی (Environment Variable) را تعریف کند که در بین چند Instance از Bash به اشتراک گذاشته شود. ریشهی این باگ در زمان تجزیه (Parse) تعریف تابع میباشد. هنگامی که یک تابع به صورت زیر تعریف شود:
VAR='() { :; }; /bin/pwd' bash -c ""مفسر Bash در تشخیص اتمام تعریف تابع دچار خطا میشود. در زمان اجرا شدن Bash این متغیر بارگزاری میشود و رشتهی بعد از کارکتر ; را اجرا میکند. در مثال بالا اجرای /bin/pwd مسیر جاری نمایش داده میشود.
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo '<html>'
echo '<head>'
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'
echo '<title>Test</title>'
echo '</head>'
echo '<body>'
/usr/bin/env
echo '</body>'
echo '</html>'
exit 0
با ارسال یک درخواست که مقدار User-Agent در آن تغییر یافته است میتوان محتوای فایل /etc/passwd را خواند.
curl -A "() { foo;};echo;/bin/cat /etc/passwd" http://example/vulnerable.cgi
آیا من آسیبپذیر هستم؟
اگر سیستمعامل شما از خانواده Linux و یا OS X است دستور زیر را در خط فرمان وارد کنید. اگر متن You are vulnerable!! را مشاهده کردید یعنی نسخهی آسیبپذیر Bash بروی سیستمعامل شما نصب شده است.
VAR='() { :; }; echo "You are vulnerable!!"' bash -c ""
همچنین اگر با اجرای دستور زیر یک فایل خالی به اسم echo در سیستم شما ایجاد شود یعنی وصلهی ناقص Bash را نصب کردهاید و باید دوباره بروز رسانی را انجام دهید.
env X='() { (a)=>\' sh -c "echo date";
چگونه باید آسیبپذیری را رفع کنم؟
برای رفع آسیبپذیری باید نرمافزار Bash را آپدیت کنید. با توجه به نرمافزار مدیریت بستهها (Package Manager) نصب شده روی سیستمتان باید این کار را انجام دهید. مثلاً در Ubuntu:
apt-get update; apt-get upgrade;
اگر آپدیت توسط نرمافزار مدیریت بستهها شناسایی نشد از دستور زیر استفاده کنید
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
tar zxvf bash-4.3.tar.gz
cd bash-4.3
./configure
make
make install
در سیستمعامل OS X :
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
brew install bash
sudo sh -c 'echo "/usr/local/bin/bash" >> /etc/shells'
chsh -s /usr/local/bin/bash
آیا شرکت بیان ابزاری برای بررسی این آسیبپذیری به صورت عمومی منتشر خواهد کرد؟
با توجه به عدم عمومیت و گستردگی بهرهبرداری آسیبپذیری از راه دور، خیر.
آیا این آسیبپذیری توسط خرابکاران در حال بهرهبرداری است؟
متاسفانه بله، با توجه به شواهد این آسیبپذیری توسط نفوذگران در حال بهرهبرداری است. همچنین یک بدافزار اختصاصا در حال بهرهبرداری از این آسیبپذیری است. برای مثال اگر در پوشهی temp فایلی با نام besh و کد کنترلی md5:5924bcc045bb7039f55c6ce29234e29a مشاهده کردید، متاسفانه شما نیز مورد هدف قرار گرفته اید.
SSL چیست؟
SSL یک پروتکل رمزنگاری است که برای برقراری یک ارتباطات امن بین یک سرویس دهنده و یک سرویس گیرنده طراحی شده است. در اینترنت بسیاری از وب سایتها از این پروتکل و البته جایگزین آن یعنی پروتکل TLS برای دریافت دادههای حساس کاربر مانند، کلمه عبور، اطلاعات بانکی کاربر استفاده میکنند. استفاده از این پروتکلها تضمین دهندهی این است که یک نفوذگر نباید بتواند اطلاعات رمز شده را در طول مسیر رمزگشایی (تغییر و …) کند. SSL یک پروتکل قدیمی میباشد نسخهی سوم آن مربوط به ۱۵ سال پیش میباشد اما همچنان در مرورگرها از آن پشتیبانی میشود. بیشتر وبسایت ها از نسخههای TLS استفاده میکنند اما در صورت عدم پشتیبانی مرورگر کاربر از TLS سعی میکنند از نسخههای قدیمیتر، مانند SSLv3 برای برقراری ارتباط استفاده کنند.
در هنگام اولین اتصال به سرویسدهنده (وب سرور)، سرویسگیرنده (مرورگر کاربر) سعی میکند از طریق بالاترین نسخهای که پشتیبانی میکند (مثلاً TLS 1.2) ارتباط را ایجاد کند. اگر وب سرور نیز قابلیت پشتیبانی از این نسخه را داشته باشد ارتباط برقرار میشود در غیر این صورت اگر مثلاً وب سرور از نسخهی TLS 1.0 استفاده کند، مرورگر کاربر نیز به نسخهی پایینتر یعنی TLS 1.0 سوییچ میکند. به این رویکرد downgrade گفته میشود میتواند توسط یک نفوذگر داخل شبکهی کاربر نیز اتفاق بیافتد. که در اینجا نفوذگر مرورگر کاربر را وادار میکند تا از طریق SSLv3 اتصال را برقرار نماید. در SSLv3 برای رمزنگاری از روشهای RC4 و یا یک روش رمز بلوکی در حالت CBC استفاده میشود. در ساختار رمز بلوکی در حالت CBC این پروتکل مشکلی وجود دارد که باعث میشود نفوذگر بتواند با آزمون خطا، با تعداد درخواست های اندکی، قسمتی از درخواست رمز شده بین مرورگر و وب سرور را حدس بزند. این دادهی حدس زده شده میتواند کوکی کاربر باشد که نفوذگر با استفاده از آن میتواند وارد حساب کاربر بشود.اصل مبنای تئوری این آسیب پذیری توسط Serge Vaudenay در سال ۲۰۰۱ مطرح شده بود، اما او فکر میکرده است که امکان استفاده عملی از این آسیب پذیری وجود ندارد و نهایتا این آسیبپذیری توسط مهندسان گوگل اعلام شد و Poodle نام گرفت.
کاربران هر وبسایتی (سرویس دهنده) که از SSLv3 پشتیبانی کند (در تنظیمات وب سرور غیر فعال نکرده باشد)، آسیبپذیر میباشند. در واقع حتی اگر وب سایت از نسخههای TLS استفاده کند به دلیل قابلیت downgrade (بازگشت به نسخهی قبلی) آسیبپذیر میباشد زیرا نفوذگر داخل شبکه میتواند مرورگر کاربر را وادار کند تا از طریق SSLv3 اتصال برقرار کند.
نفوذگر (داخل شبکهی کاربر) با بهرهبرداری از این آسیبپذیری میتواند اطلاعات حساس کاربر مانند (کوکی که هویت کاربر است) را برباید و در نهایت وارد حساب کاربر شود.
همانطور که نیمه شب گذشته از طریق اکانت توییتر بیان اعلام شد بهترین راه حل برای این آسیبپذیریی عدم استفاده از SSLv3 توسط سرویسدهنده (وب سرور) و سرویسگیرنده (کاربر) میباشد. البته اگر سرویس دهندهای تنها از SSLv3 استفاده کند، غیرفعال کردن آن در سمت کاربر (سرویس گیرنده) میتواند باعث عدم دسترسی به سرویسدهنده شود.
توجه داشته باشید که برای استفاده از راه حل بالا، از این پس تنها باید از طریق این میانبر مرورگر خود را اجرا کنید. به عنوان مثال اگر کروم را از طریق میانبری که در منوی Start شما قرار گرفته است اجرا کنید طبیعتا در آن حالت مرورگر شما امن نخواهد بود. البته می توانید این کار را برای سایر میانبرهای کروم نیز اجرا کنید.
بهترین راه حل برای گردانندگان سایتها (یا وب مسترها) برای جلوگیری از این آسیب پذیری غیر فعال کردن SSLv3 در تنظیمات web-server است. البته این باعث میشود که مرورگر IE6 (که البته دیگر پشتیبانی هم نمیشود و سهم کمی در مرورگرها دارد) امکان اتصال به https سایت را نداشته باشد، اما اگر امنیت و راحتی کاربران مهم است (به دلیل وجود مشکلات امنیتی و کارکردی متعدد در IE6) بهتر است این مرورگر (حداقل برای اتصال امن با https) نادیده گرفته شود.
روش غیر فعال کردن SSLv3 در سرورهای مختلف به صورت زیر است.
ضمنا باید به نکات زیر نیز توجه نمود:
کافیست تنظیم زیر در کنار بقیه تنظمیات SSL درج شود (دقت کنید که تنظیم SSLProtocol از قبل وجود نداشته باشد)
SSLProtocol All -SSLv2 -SSLv3
این خط باید به تنظیمات nginx اضافه شود: (در قسمت http یا server)
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
عبارات زیر باید به تنظیمات lighttpd و بعد از خط ssl.engine = "enable"
اضافه شوند:
ssl.use-sslv2 = "disable" ssl.use-sslv3 = "disable"
* به روز رسانی: ابزار بیان برای تشخیص آن لاین این آسیب پذیری در مرورگرها و وب سایت ها:
آسیب پذیری POODLE که امروز منتشر شده است، از یک ضعف در مبنای تئوری SSLv3 استفاده کرده است، نه یک مشکل پیاده سازی. به همین دلیل تنها راه برطرف کردن آن غیر فعال کردن کامل این پروتوکل میباشد.
اصل مبنای تئوری این آسیب پذیری توسط Serge Vaudenay در سال ۲۰۰۱ مطرح شده بود، اما او فکر میکرده است که امکان استفاده عملی از این آسیب پذیری وجود ندارد. هم اکنون یک روند عملی برای استفاده از این آسیب پذیری مطرح شده است. این روند عملی، اگر چه پیچیده، ولی قطعی است (احتمالی نیست) و فراهم کردن همهی شرایط آن اگر چه نیاز به تلاش بسیاری دارد (و نوشتن یک اسکریپت برای آن شاید سخت باشد) ولی کاملا شدنی است.
تنها شروط پایه برای استفاده از این آسیب پذیری، این موارد است:
از نظر تئوری، این آسیب پذیری اجازه میدهد که حمله کننده قسمتی از درخواست را (با اینکه رمز شده است) بخواند و تشخیص دهد. این قسمت باید شرایط خاصی داشته باشد ولی برای مثال میتواند cookie کاربر باشد.
شرایط ثانویه استفاده از این آسیب پذیری موارد زیر است. دقت نمایید که همهی این شرایط با فرض شماره ۱ قابل دستیابی هستند.
بیشتر الگوریتمهای رمز نگاری مورد استفاده در SSL روی block های ۸ یا ۱۶ بایتی از داده کار میکنند (در اینجا برای راحتی فرض میکنیم که از یک الگوریتم ۱۶ بایتی استفاده میشود) بنابراین مثلا داده باید به تکههای ۱۶ بایتی تقسیم شود و عملیات رمز نگاری روی این بستههای ۱۶ بایتی انجام میشود.
چون ممکن است طول داده مضربی از ۱۶ نباشد، ابتدا باید با اضافه کردن چند کاراکتر اضافی به انتهای داده (که به آن padding میگویند)، طول آن را به مضربی از ۱۶ تغییر داد. روش مورد استفاده در SSLv3 این طور است که آخرین کاراکتر نشان میدهد که چند کاراکتر padding وجود دارد، برای مثال درخواست زیر را ملاحظه کنید. (در شکلها هر خط ۱۶ کاراکتر و بنابراین یک block است)
47 45 54 20 2F 3F 61 62 0D 0A 43 6F 6F 6B 69 65 GET /?ab↲↲Cookie 3A 20 73 65 63 72 65 74 3D 31 32 33 0D 0A 0D 0A : secret=123↲↲↲↲ 72 65 71 75 65 73 74 20 62 6F 64 79 YY YY YY YY request body---- YY YY YY YY YY YY YY YY YY YY YY YY XX XX XX 03 ------------••••
که در مثال بالا کاراکترهای مشکلی، خود درخواست (plaintext)، و کاراکترهای سبز، hash آن است (که برای ما مهم نیست) مقدار 123 که با رنگ زرد مشخص شده، مقداری است که حمله کننده آنرا نمیداند و میخواهد آن را بیابد.
کاراکترهای قرمز padding هستند و آخرین کاراکتر که 03 است، نشان میدهد که ۳ کاراکتر قبل آن نیز جزو padding است. در SSLv3 مقدار ۳ کاراکتر قبلی اصلا مهم نیست (برای همین با XX نشان داده شده است) در صورتیکه در نسخههای بعد، این کاراکترها باید مساوی با همان کاراکتر آخر باشند. همین تفاوت است که باعث آسیب پذیر شدن SSLv3 شده است. دقت کنید که در SSLv3 کاراکترهای padding در hash محاسبه نمیشوند و این نکته هم یکی از مبانی این آسیب پذیری است.
ابتدا حمله کننده باید طول درخواست را به گونهای تغییر دهد که یک کاراکتر (مثلا آخرین کاراکتر کوکی) در آخر یک بلاک قرار بگیرد (طبق فرضها او طول و جای کوکی را میداند). و ضمنا طول درخواست هم به گونهای باشد که یک بلاک کامل به padding اختصاص داده شود.
P1:47 45 54 20 2F 3F 61 62 63 64 65 66 0D 0A 43 6F GET /?abcdef↲↲Co P2:6F 6B 69 65 3A 20 73 65 63 72 65 74 3D 31 32 33 okie: secret=123 P3:0D 0A 0D 0A 72 65 71 75 65 73 74 20 62 6F 64 79 ↲↲↲↲request body P4:YY YY YY YY YY YY YY YY YY YY YY YY YY YY YY YY ---------------- P5:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 0F ••••••••••••••••
(هر بلاک رمزنگاری نشده (یا plaintext) از P1 تا P5 نام گذاری شده است)
دقت کنید که حمله کننده با استفاده از جاواسکریپت میتواند url و body درخواست را تغییر دهد اما دسترسیای به محتوای cookie ندارد.
متن بالا برای برای ارسال به سرور در سمت کاربر (کلاینت) رمز میشود و محتوای رمز شده به سمت سرور ارسال میشود. حمله کننده در بین راه محتوای رمز شده را چیزی مانند شکل زیر میبیند:
C1:28 DA 27 4E C1 41 34 32 5A 68 53 BB 32 20 CA 69 (Ú'NÁA42ZhS»2 Ê~ C2:27 CC DF 89 7B 4F 2A 69 32 5A E4 BD 24 3A DE 79 'Ì߉{O*i2Zä½$:Þy C3:CA FE D8 6F DD D9 38 7C 76 FF 61 D7 64 78 45 FE ÊþØoÝÙ8|vÿa×dxEþ C4:F0 69 F1 8E C6 C3 73 52 20 EE 7E E2 F1 AF 62 37 ðiñŽÆÃsR î~âñ¯b7 C5:8A 5D 74 7B 31 28 41 61 B6 62 7C 97 80 F7 9E 63 Š]t{1(Aa¶b|—€÷žc
(هر بلاک رمزنگاری شده (یا ciphertext) از C1 تا C5 نام گذاری شده است)
البته او میداند که بلاک آخر متناظر padding و بلاک C2 هم متناظر با P2 است.
به صورت پیشفرض SSL از روش CBC برای chain کردنِ بلاکها استفاده میکند (برای اطلاعات بیشتر میتوانید به ویکی پدیا مراجعه کنید)
بنابراین حمله کننده میداند که این جملات صادق هستند:
Encrypt(C1 ⊕ P2) = C2
Encrypt(C4 ⊕ P5) = C5
و میداند که P5[16] = 0x0F است (چون padding یک سطر کامل است)
در این حال حمله کننده (که بین کلاینت و سرور حائل شده است)، بلاک C5 را (که متناظر با padding است) دستکاری میکند و آنرا مساوی C2 قرار میدهد:
C1:28 DA 27 4E C1 41 34 32 5A 68 53 BB 32 20 CA 69 (Ú'NÁA42ZhS»2 Ê~
C2:27 CC DF 89 7B 4F 2A 69 32 5A E4 BD 24 3A DE 79 'Ì߉{O*i2Zä½$:Þy
C3:CA FE D8 6F DD D9 38 7C 76 FF 61 D7 64 78 45 FE ÊþØoÝÙ8|vÿa×dxEþ
C4:F0 69 F1 8E C6 C3 73 52 20 EE 7E E2 F1 AF 62 37 ðiñŽÆÃsR î~âñ¯b7
C5:27 CC DF 89 7B 4F 2A 69 32 5A E4 BD 24 3A DE 79 'Ì߉{O*i2Zä½$:Þy
در این صورت خواهیم داشت:
C5 = C2 ⇒
Encrypt(C1 ⊕ P2) = Encrypt(C4 ⊕ P5) ⇒
C1 ⊕ P2 = C4 ⊕ P5 ⇒
P2 = C1 ⊕ C4 ⊕ P5
سپس حمله کننده رشتهی جدید را به سرور ارسال میکند.
حمله کننده مقدار C5 را (که رمز شدهی padding بوده) دستکاری کرده است و بنابراین مقدار padding را به رشته نامعلومی تغییر داده است. اما میداند که سمت سرور فقط آخرین کاراکتر padding مهم است نه بقیه آن. در بیشتر موارد مقدار کاراکتر آخر مخالف 0x0F است و سرور تشخیص میدهد که پیام ارسال شده خراب شده است و ارتباط را قطع میکند. اما از هر ۲۵۶ مورد یک مورد امکان دارد که کاراکتر آخر دقیقا برابر 0x0F باشد. در این صورت پیام، صحیح تلقی شده و پاسخ به کلاینت برگردانده میشود. حمله کننده به راحتی (مثلا با بررسی اندازه پاسخ) میتواند تشخیص دهد که آیا این دستکاری، پیام را خراب کرده است یا نه.
اگر پیام خراب نشده باشد، حمله کننده یک کاراکتر از کوکی را فهمیده است، چون میداند که:
P2[16] = C1[16] ⊕ C4[16] ⊕ P5[16]
مقدار P5[16] = 0x07 است و مقدار C1 و C4 نیز جزو ciphertext (درخواست رمز شده) است.
به این ترتیب حمله کننده حدودا با ۲۵۶ تلاش میتواند یک کاراکتر از کوکی کاربر را استخراج کند. حال کاربر با اضافه کردن یک کاراکتر به url و حذف یک کاراکتر از body میتواند مقدار کوکی را یک کاراکتر به جلو شیفت کند و با تکرار روند بالا (حدودا ۲۵۶ درخواست) کاراکترهای کوکی را یک به یک استخراج نماید.
47 45 54 20 2F 3F 61 62 63 64 65 66 67 0D 0A 43 GET /?abcdefg↲↲C 6F 6F 6B 69 65 3A 20 73 65 63 72 65 74 3D 31 32 ookie: secret=12 33 0D 0A 0D 0A 72 65 71 75 65 73 74 20 62 6F 64 3↲↲↲↲request bod
بنابراین یک حمله کننده برای یافتن یک کوکی به طول ۴۰ کاراکتر، حدودا باید ۱۰،۰۰۰ درخواست از سمت کاربر ارسال کند. این تعداد بسیار کم است و با سرعت ۲۰ درخواست در ثانیه، در کمتر از ۱۰ دقیقه قابل انجام میباشد.
*به روز رسانی: ابزار بیان برای تشخیص آنلاین این آسیب پذیری در مرورگرها و وب سایت ها:
10266 برنامه نویس از 103 کشور جهان برای شرکت در سومین دوره مسابقات برنامه نویسی بیان ثبت نام کرده اند.
برنامه نویسانی از 39 کشور اروپایی، 34 کشور آسیایی، 15 کشور از قاره آمریکا، 14 کشور آفریقایی و 2 کشور از اقیانوسیه، در رقابت های مقدماتی این دوره از مسابقات شرکت داشتند.
آمار شرکت کنندگان امسال نسبت به دور قبلی مسابقات بیان که 4910 نفر از 54 کشور بودند، رشد بیش از 2 برابری هم از نظر تعداد شرکت کنندگان و هم کشورهای شرکت کننده داشته است.
سایت جهانی المپیاد جهانی کامپیوتر نیز از کسانیکه تا کنون در المپیادهای جهانی مدال آورده اند برای برای شرکت در این مسابقه علمی ایرانی دعوت کرده بود.
در این مسابقات مهارت، سرعت، دقت و خلاقیت برنامه نویسان به صورت هوشمند و توسط نرمافزار اختصاصی مسابقات بیان مورد ارزیابی قرار میگیرد.
قرار است در آخرین مرحله مقدماتی که یکشنبه برگزار خواهد شد، نمایندگان 20 کشور برتر که به فینال حضوری مسابقات راه پیدا خواهند کرد مشخص شوند.
برای کسب اطلاعات بیشتر می توانید به سایت مسابقات بیان به نشانی contest.bayan.ir مراجعه نمایید.
برنامه نویسان برتر و فینالیست های سومین دوره مسابقات برنامه نویسی بیان مشخص شدند. در مراحل مقدماتی مسابقات برنامه نویسی بیان که به صورت بین المللی برگزار شده بود، 10 هزار و 266 شرکت کننده از 103 کشور جهان با هم به رقابت پرداختند که از این تعداد 3 هزار نفر به مرحله دوم مسابقه راه پیدا کردند.
در نهایت با برگزاری مرحله انتخابی مسابقات امسال، 60 برنامه نویسی که موفق به کسب امنیاز بالاتر شدند جواز حضور در فینال مسابقات را به دست آوردند که از این تعداد 40 نفر سهمیه شرکت کنندگان ایرانی و 20 نفر نیز سهمیه شرکت کنندگان سایر کشور هاست . فینال سومین دوره مسابقات برنامه نویسی بیان در بهمن ماه و در تهران برگزار خواهد شد.
در رده بندی عملکرد گروهی کشورها نیز برنامه نویسان کشورمان در جایگاه ششم ایستادند.
شرکت بیان و سرویس های آن از جمله blog.ir هیچ گاه از شما نام کاربری و یا رمز عبور شما را درخواست نخواهند کرد.
لطفا با رعایت هشیاری و دقت لازم مراقب کلاهبرداری های ایمیلی، کامنتی، چتی، و پیامکی باشید. همچنین بسیار مهم است که اگر کسی فایلی با پسوند .exe برای شما ارسال کرد از دانلود کردن و اجرا کردن آن فایل اجتناب کنید. اگر از بازکردن و کلیک کردن بر روی لینک های ایمیل های ناشناس نیز هرچه بیشتر اجتناب کنید کمتر در دام دزدان اینترنتی خواهید افتاد.
متن زیر نمونه ای از روش های فریبکارانه است که روز گذشته برای برخی وبلاگ نویسان ارسال شده است و بسیار نیز هوشمندانه مهندسی و طراحی شده است. اگرچه بیان همانند سال گذشته وبلاگ های برگزیده را معرفی خواهد کرد اما هم محتوای ایمیل زیر و هم هویت فرستنده و نام او کاملا جعلی است.
قبل از مرور این ایمیل جعلی مجددا تاکید می کنیم که شرکت بیان هیچ گاه از شما نام کاربری و یا رمز عبور شما را درخواست نخواهد کرد.
* * *
ادامه مطـــلب در منبع...با عرض سلام و خسته نباشید خدمت مدیر وبلاگ ******* جناب آقای *******
سیستم بیان در نظر دارد در اسفند ماه وبلاگ های برتر را با دامنه blog.ir معرفی کند بیان با گلچین کردن وبلاگ های برتر با توجه به آمار بازدید و نظرات ، وبلاگ شما را هم در این مجموعه قرار داده است.
کارشناسان بیان به بهترین شیوه ممکن در مورد وبلاگ ها داوری می کنند و تا پایان اسفند ماه نتایج را از طریق ایمیل مدیران وبلاگ در اختیار آنها قرارمی دهند و به 12 تا از وبلاگ های برتر مبلغ 30000000 ریال را اهدا خواهد شد.
جهت لغو شرکت در این مسابقه عدد 5 را با اسم وبلاگتان به همین ایمیل ارسال کنید و در صورت رضایت به شرکت موارد زیر را با به آدرس ایمیل *****@gmail.com ارسال فرمایید:1. یک عدد اسکرین شات از وبلاگ،
2. کلمه عبور،
3. نام کاربری
4. زمان تاسیس وبلاگ (تخمینی)
5. تعداد مطالب وبلاگ
تسریع در ارسال پاسخ موجب کمال امتنان است.
ح*** ن***
مدیر رسانه bayan.ir