HTTP Strict transport Security (HSTS) یک قابلیت ساده امنیتی برای وب سایت است که مرورگرها و یا user agent ها را به برقرار ارتباطات صرفا HTTPS با سرور مجبور میکنند. HSTS باعث بهبود کیفیت امنیت شده و از حملات MITM، Downgrade و Cookie Hijacking جلوگیری خواهد کرد.
مقدمه
در ارتباطات شبکهای تحویل صفحات وب و اطلاعات بوسیله پروتکل HTTP کاربران را با ریسکهای امنیتی روبرو میکند.
به علت آنکه سرورها غالبا بصورت مستقیم به یکدیگر متصل نیستند، باید درخواست و پاسخهای متناظر آنها از بین تعدادی زیادی روترهای شبکه، عبور دهند. این روترها که از لحاظ فیزیکی بین سرورها قرار گرفته¬اند، بطور کامل به درخواست¬هایی که از طریف ارتباط HTTP از آنها عبور میکنند، دسترسی دارند. از آنجا دیتا بصورت رمزنشده منتقل می¬شود، روترها میتوانند به عنوان یک Man In The Middle عمل کرده و اطلاعات انتقالی را خوانده و یا دستکاری نمایند.
این باعث خواهد شد تا کاربران متعاقبا اطلاعات دستکاری شده و یا لو رفته را دریافت کنند یا آنکه به سرورهایی تغییر مسیر داده شوند که مهاجم از آنها برای سرقت اطلاعاتی نظیر پسورد و اطلاعات کارت اعتباری استفاده می¬کند.
پالیسی HSTS فارغ از آنکه درخواست اولیه را به چه صورت سرور از کلاینت دریافت کرده است، تمام پاسخ¬های متناظر را مجبور خواهد کرد تا بجای HTTP از HTTPS استفاده کنند. همین کار باعث خواهد شد تا تمام کانال قبل از آنکه اطلاعاتی را ارسال کند، رمزگذاری شود تا در اسنصورت مهاجم احتمالی در بین مسیر نتواند اطلاعات انتقالی را بخواند و یا ویرایش کند.
HSTS چگونه کار میکند
۱٫ باید در گام نخست هدر HSTS Response را به سرور اضافه نمود.
فعال کردن HSTS بر روی سرور که شامل اضافه کردن هدر HSTS Response زیر به یک HTTPS Reply است:
Strict-Transport-Security: max-age=expireTime [; includeSubdomains]
برای مثال:
Strict-Transport-Security: max-age=16070400; includeSubDomains
پارمتر “max age” بر حسب ثانیه بیان خواهد شد. این پارامتر، حداکثر زمانی را نشان خواهد داد که مرورگر زمان دارد تا به سروری که از ارتباط HTTPS استفاده می¬کند، وصل شود. با این وجود توصیه می¬شود که برای ارتباط با subdirectory ها و subdomain ها نیز از ارتباط HTTPS استفاده شود.
۲٫ وقتی مرورگر به وبسایت دسترسی پیدا کرد، سرور با هدر HSTS جواب آن را بدهد.
این دستور العمل، مرورگر را موظف خواهد کرد تا فقط از طریق ارتباط HTTPS با سرور و دامین¬های مورد نظر وصل شود. بعد از ارتباط اولیه، مرورگر در حافظه خود ذخیره خواهد کرد که پس از این، برای ارتباط با چنین سرورهایی باید از طریق پروتکل HTTPS و با “max age” مشخص شده، عمل کند.
بنابراین اگر کاربری سرور مورد نظر را به صورت¬های ذیل فراخوانی کند، مرورگر بطور پیش فرض ارتباط را به HTTPS ارتقاء خواهد داد:
• http://www.domain.com
• www.domain.com
• domain.com
• استفاده از بوک¬مارک
• استفاده از لینک موجود در یک third-party
اگر در حین تبدیل ارتباط از HTTP به HTTPS، زمان موجود در پارامتر “max-age” منقضی شود، مرورگر مجددا شروع به ارتباط با سرور یا دامین مورد نظر با استفاده از HTTP خواهد کرد؛ مگر آنکه خود کاربر بصورت خاص ارتباط را با HTTPS درخواست کند.
۳٫ پس از آنکه هدر HTTPS توسط کلاینت دریافت شد، مرورگر درخواست¬ خود را با استفاده از HTTPS ارسال خواهد کرد.
اکثر مرورگرها، HSTS را ساپورت میکنند. علاوه بر این مرورگرهای کروم و فایرفاکس نیز لیستی از سرورها و دامینهایی که از هدر HSTS استفاده میکنند در خود دارند که بصورت از قبل بارگزاری شده (preloaded)، تمام ارتباطات به مقصد آنها را به HTTPS تغییر میدهند. مدیران چنین وبسایتهایی میتوانند با اضافه کردن پارامتر “preload” به هدر و سپس قرار دادن نام دامین به لیست، یک وبسایت را به لیست preloaded HSTS اضافه نمایند.
برای مثال:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
۴٫ مثالی از HSTS
یه یک کاربر بگویید که از طریق یک شبکه وای فای عمومی به شبکه آنلاین بانکی خود وصل شود. در این سناریو، اکسس پوینت را سیستم هکر در نظر میگیریم. اتفاقی که خواهد افتاد اینست که هکر درخواست های اصلی HTTP را که یوزر به سمت مقصد میفرستد، دستکاری کرده و ترافیک یوزر را بسمت یک وبسایت کپی شده از وبسایت بانک، تغییر مسیر میدهد. این عمل باعث خواهد شد تا تمام اطلاعات خصوصی یوزر مانند اطلاعات کارت اعتباری و پسوردها با خطر سرقت و افشاء روبرو شوند.
پالیسی HSTS در اینجا بکمک میآید و پیش از آنکه ترافیک با خطر دستکاری و حمله MITM روبرو شوند، با تبدیل اتوماتیک ترافیک از HTTP به HTTPS، یوزر را با حالتی امن به سمت صفحه اصلی بانک هدایت خواهد کرد.
در ذیل مثالی از هدرهای مورد استفاده در سناریو HSTS را مشاهده می¬کنید:
Strict-Transport-Security: max-age=631138519; includeSubDomains
این هدر استفاده از HTTPS را به مدت ۲۰ سال – شامل دامین و زیر دامین¬های فعلی و آتی ــ اجباری خواهد کرد.
Strict-Transport-Security: max-age=31536000
این هدر استفاده از HTTPS را برای مدت یکسال و فقط برای روت دامین – و نه برای زیر دامینها ــ اجباری میکند.
۵٫ مزایای استفاده از HSTS
• محافظت در برابر حملات HTTP downgrade با ملزم کردن تمام ترافیک به استفاده از HTTPS. در این ساختار ترافیکهایی که به سورسهای رمزشده اشاره نداشته باشند، ویرایش میشوند.
• مراقبت از محتوای ترکیبی: HSTS بصورت اتوماتیک، در موقعیتهایی که لازم باشد، نوع ارتباط را به HTTPS ارتقاء میدهد.
• بالا بودن سطح کیفی امنیت: یک مرورگر سازگار با HSTS، هرزمان که امنیت certificate ارائه شده، تائید نشود، علیرغم استفاده از HTTPS، کانکشن ایجاد شده با سرور سازگار با HSTS را بی نتیجه و ناقص خواهد گذاشت. علاوه بر این، یوزرها نمیتوانند با استفاده از certificate های self-sign ارتباط را برقرار نمایند.
۶٫ جمعبندی
HSTS در عین سادگی، یک پالیسی امنیتی قدرتمند برای ایمن کردن وبسایتها در برابر حملات MITM است. این پالیسی باعث خواهد شد تا مرورگرهای پشتیبانی کننده این قابلیت، حداقلهای امنیتی را با تبدیل خودکار لینکهای HTTP به HTTPS اجبار نمایند.
تغییر وضعیت دادن از HTTP به کانکشنهای امن شده HTTPS (با SSL)، بهترین دفاع را در برابر حملات downgrade ارائه میدهد. استفاده از HSTS این اطمینان را میدهد تا تمام ارتباطات رمز شده باشد.
مانا باشید
احسان امجدی / کارشناس و مدرس دورههای تحلیل امنیت
“اگر بر این باورید که با نقض قانون کپیرایت، وضعیتی بهتر در انتظارمان خواهد بود، بدون ذکر نامِ نویسنده و منبع، مجاز به انتشار مطالب هستید. “