Category Archives: امنیت

صدور مجوز Authorization

صدور مجوز یا Authorization چیست؟

صدور مجوز یا اتورایزیشن (Authorization) اصطلاحی در حوزه امنیت و کنترل دسترسی (Access Control) است و به فرایندی اشاره می‌کند که طی آن مجوز و حق دسترسی به منابع مشخص می‌شود.

این منابع ممکن است هرچیزی اعم از فایل ها، داده ها، خدمات، ویژگی‌های نرم افزاری و … باشد و مجوزها نیز می‌توانند شامل مواردی نظیر نوع منابع قابل دسترسی، محدودیت‌های دسترسی (نظیر زمان یا سهم مشخصی از منابع) و اعمالی باشد که می‌توان با کمک این منابع یا روی آن‌ها انجام داد.

درک مفهوم Authorization با یک مثال در دنیای واقعی

یک اداره خصوصی را در نظر بگیرید و فرض کنید شما کارمند بخش روابط عمومی این اداره هستید. در این صورت پس از وارد شدن به محوطه یا ساختمان اداره اجازه دارید علاوه بر اتاق خودتان، به سرویس بهداشتی، بوفه، تالار سخنرانی و سایر بخش‌های عمومی رفت و آمد کنید. البته در حالت طبیعی اجازه ورود به بایگانی یا بخش انبار را نخواهید داشت.

شما هنگام استخدام، این مجوزها را براساس قوانین سازمانی و موقعیت شغلی خود پذیرفته‌اید و در صورت تلاش برای ورود به مکانی که اجازه آن به شما داده نشده است احتمالا به صورت دوستانه یا غیردوستانه جلوی شما گرفته خواهد شد. به طور مشابه در دنیای رایانه، Authorization فرایندی است که مجوزهای شما برای دسترسی به قسمت‌های مختلف یک سیستم را مشخص می‌کند.

مجوز و کنترل دسترسی

در یک سیستم رایانه ای، مجوزها در قالب سیاست های دسترسی (Access Policy) مشخص می‌کنند هر کاربر قادر به انجام چه اعمالی روی کدام منابع می‌باشد. معمولا پس از اینکه هویت کاربر در سیستم تأیید شد (Authentication)، متناسب با سیاست‌ها و قوانین مذکور، درخواست های دسترسی کاربر توسط سیستم تایید یا رد می‌شود. نحوه تخصیص این مجوزها ممکن است بر اساس نقش کاربر (Role-based) یا ویژگی‌های پیچیده‌تر انجام شود.

به عنوان مثال کارمند بخش نیروی انسانی یک سازمان معمولا پس از لاگین کردن، مجوز دسترسی به رکوردهای مربوط به اطلاعات کلیه کارمندان سازمان را خواهد داشت. دسترسی مورد بحث احتمالا امکان خواندن، تغییر، ایجاد و حذف رکوردها را به این کارمند خواهد داد.

اغلب سیستم های چندکاربره از قابلیت کنترل دسترسی برخوردار هستند و مدیر سیستم مشخص می‌کند هر کاربر در چه سطحی مجوز دسترسی به سیستم را دارد. در این سیستم ها معمولا پس از تصدیق هویت، مجموعه‌ای از قابلیت‌ها و امکانات متناسب با مجوزهای کاربر در اختیار او قرار می‌گیرد و یا زمانی که برای دسترسی به یک منبع درخواست می‌دهد فرایند کنترل دسترسی بررسی می‌کند آیا کاربر مجوز لازم جهت دسترسی به منبع موردنظر را دارد یا خیر؟

تفاوت میان Authentication و Authorization

برای روشن‌تر شدن موضوع بهتر است به بررسی تفاوت میان مفاهیم Authentication و Authorization نیز بپردازیم. اصطلاح Authentication به معنای تصدیق هویت کاربر است در حالیکه Authorization همان‌طور که گفته شد به معنای تعیین مجوز دسترسی به منابع است.

به عبارت بهتر Authentication فرایندی است که در آن صحت اصالت یا هویت کاربر بررسی می‌شود. این فرایند زمانی کاربرد دارد که لازم است سیستم با جزئیات بیشتری بداند چه کسی می‌خواهد از آن استفاده کند. در ساده‌ترین و رایج‌ترین روش برای تصدیق هویت، هر کاربر از یک نام کاربری و کلمه عبور برای نشان دادن اینکه چه کسی است استفاده می‌کند. اما اصطلاح Authorization به فرایندی اشاره می‌کند که طی آن مشخص می‌شود آیا شما مجاز به انجام یک کار یا دسترسی به یک منبع (نظیر ویرایش رکوردهای مربوط به اطلاعات کارمندان اداره) هستید یا خیر؟

هرچند در موارد بسیاری، اعطای مجوز به یک کاربر پس از اینکه هویت او مشخص شد انجام می‌گیرد اما توجه داشته باشید الزاما این موضوع همیشه هم صادق نیست. برای مثال، شما می‌توانید در یک فروشگاه آنلاین بدون اینکه در سایت لاگین کنید (به عنوان یک کاربر گمنام یا مهمان) به فهرست کالاها و قیمت آن‌ها دسترسی داشته باشید. البته تا زمانی که با کمک نام کاربری و کلمه عبور، هویت شما در سیستم تأیید نشده باشد اجازه خرید کالا را نخواهید داشت.

صدور مجوز Authorization
Authorization فرایندی است که طی آن مجوز و حق دسترسی به منابع مشخص می‌شود.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

در پشتی Backdoor

در پشتی یا Backdoor چیست؟

در پشتی یا بَک دُر (Backdoor) روشی است که برای عبور کردن از مکانیزم های معمولی تصدیق هویت (Authentication) یا رمزنگاری داده ها در یک سیستم یا محصول رایانه ای استفاده می‌شود.

چنین روش‌هایی ممکن است از طریق قطعه کدهایی که در سورس یک نرم افزار گنجانده شده و یا کدهایی که در فرم ویرها و محصولات سخت افزاری تعبیه شده است پیاده سازی شوند. گفتنی است واژه Trapdoor نیز به ندرت برای همین مفهوم به کار می‌رود.

درک مفهوم در پشتی با یک مثال ساده

برای درک بهتر این مفهوم، موضوع را با یک مثال در دنیای واقعی مورد بررسی قرار می‌دهیم. در سناریوی اول تصور کنید به تازگی خانه‌ای خریده‌اید که در آن درهای ورودی به بهترین قفل‌ها و دوربین‌های امنیتی تجهیز شده است. این درحالیست که شما از وجود یک در مخفی که توسط سازنده طراحی شده است و از طریق حفره‌ای زیرزمینی امکان ورود به خانه را فراهم می‌کند بی‌خبر هستید. در چنین شرایطی احتمالا پس از یک مسافرت دلچسب زمانی که به خانه برمی‌گردید با جای خالی لوازم گران قیمت خانه‌تان روبرو خواهید شد!

در سناریوی دوم تصور کنید یک فرد فراموشکار هستید که معمولا کلیدهایش را در خانه جا می‌گذارد یا آن‌ها را گم می‌کند! از آنجایی که فردی آینده‌نگر هستید یک در مخفی بدون قفل جایی در اطراف خانه خود ساخته‌اید که با برگ درختان پوشانده شده است و در مواقع ضروری می‌توانید برای ورود به خانه از آن استفاده کنید.

هرچند در سناریوی دوم برخلاف سناریوی اول، وجود در مخفی دارای جنبه مثبت است اما فراموش نکنید اگر همسایه‌ها یا سارقین، شما را حین استفاده از این در مخفی مشاهده کنند می‌توانند در آینده برای ورود به خانه از آن استفاده کنند. در دنیای رایانه هم درهای پشتی کارکردی مشابه با همین دو سناریو را ایفا می‌کنند.

در پشتی Backdoor
Backdoor ها امکان دور زدن مکانیزم های تصدیق هویت و روش‌های امنیتی متداول را میسر می‌کنند.

ویژگی ها و اهداف درهای پشتی

درهای پشتی معمولا به صورت محرمانه و عمدی توسط سازنده محصول یا اشخاص ثالث طراحی می‌شوند. البته برخی از آن‌ها نیز به صورت گسترده شناخته شده هستند. به علاوه ممکن است یک در پشتی به صورت غیرعمدی (برای مثال در اثر یک باگ یا خطای برنامه نویسی) در محصول به وجود آمده باشد.

درهای پشتی با اهداف مختلفی در محصولات یا سیستم های نرم افزاری و سخت افزاری ایجاد می‌شوند و مشابه با مثالی که در دنیای واقعی به آن اشاره شد الزاما مقاصد منفی را دنبال نمی‌کنند. برخی از توسعه دهندگان برای انجام امور مدیریتی به صورت از راه دور (نظیر عیب یابی و نگه داری سیستم) از بک درها در محصولات خود استفاده می‌کنند. در عین حال ممکن است بدافزارها (تروجان های دسترسی از راه دور یا Remote Access Trojan – RAT) نیز با ایجاد یک Backdoor امکان دسترسی هکرهای متجاوز را به یک سیستم رایانه ای فراهم کنند.

ذکر این نکته ضروری است که حتی اگر یک در پشتی برای مقاصد مثبت طراحی شده باشد باز هم وجود آن یک ریسک امنیتی محسوب می‌شود چرا که در صورت کشف شدن توسط هکرها، دسترسی آن‌ها به سیستم و داده هایش را برای اهداف بدخواهانه میسر می‌کند.

راهکارهای مقابله

هرچند شناسایی در پشتی در یک محصول اختصاصی معمولا کار چندان ساده‌ای نیست اما استفاده از دیوارهای آتش با پیکربندی های مناسب و نظارت روی ترافیک شبکه می‌تواند تا حدودی شناسایی و مقابله با درهای پشتی را امکان‌پذیر نماید. همچنین نرم افزارهای منبع باز اغلب می‌توانند به کاربر این حس اطمینان را منتقل کنند که در آن‌ها خبری از بَک دُر نیست چرا که پنهان کردن آن‌ها در مورد نرم افزارهایی که سورس کدشان به صورت عمومی منتشر شده است امری به مراتب دشوارتر خواهد بود.

در عین حال استفاده از ابزارهای امنیتی مناسب برای جلوگیری از آلوده شدن به بدافزارها می‌تواند شما را تا حدودی از حملات وابسته به درهای پشتی در امان نگاه دارد.

نمونه هایی از Backdoor های مشهور

از جمله معروف‌ترین درهای پشتی شناخته شده می‌توان به Back Orifice اشاره کرد که در سال 1998 با هدف مشروع مدیریت سیستم های ویندوزی از راه دور توسط گروهی از هکرها موسوم به Cult of the Dead Cow طراحی شده بود.

یکی دیگر از درهای پشتی مشهور متعلق به الگوریتم منسوخ شده Dual_EC_DRBG است که کاربرد آن در حوزه رمزنگاری بوده و به آژانس امنیت ملی آمریکا (NSA) اجازه می‌داده است داده های رمزنگاری شده با این الگوریتم را رمزگشایی کنند.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

سندباکس یا جعبه شنی Sandbox

سندباکس یا Sandbox چیست؟

سندباکس (Sandbox) به محیطی گفته می‌شود که معمولا به منظور تست بخش‌های جدید یک نرم افزار یا اجرای ایمن نرم افزارها بدون اینکه محیط اصلی تحت تأثیر آن قرار بگیرد به کار می‌رود. این واژه در زبان فارسی به معنای جعبه شنی است.

نام سندباکس به دلیل شباهت مفهوم آن با جعبه‌های شن بازی کودکان انتخاب شده است. این جعبه‌ها محیطی همانند یک زمین واقعی پر از شن را برای کودک شبیه سازی می‌کنند که کودک در آن بدون اینکه محیط بیرون از جعبه به شن آلوده شود یا به دیگران و خودش آسیبی برسد می‌تواند در چهارچوب محدودیت‌هایی از بازی خود لذت ببرد. درست همانند نقشی که سندباکس در رایانه ایفا می‌کند.

سندباکس و توسعه نرم افزار

در حوزه توسعه نرم افزار، سندباکس محیطی مجزا از محیط در حال عملیات است که از آن برای بررسی، تست و مانیتور کردن کدها یا بخش‌های جدید در حال توسعه استفاده می‌شود. اجرا در جعبه شنی، محیط اصلی (نظیر سرورهایی که در حال ارائه خدمات هستند) و داده های مرتبط با آن را از تغییراتی که ممکن است به درستی کار نکند یا خطرآفرین باشد محافظت می‌کند.

با توجه به اینکه لازم است تغییرات روی محیطی مشابه با محیط اصلی تست و بررسی شود بنابراین در سندباکس می‌بایست حداقل ویژگی‌های لازم برای تست صحیح نرم افزار مهیا شده باشد. برای مثال دسترسی به نسخه‌ای از داده ها یا سرویس های وب مشابه با همان چیزی که سیستم اصلی با آن‌ها کار می‌کند الزامی است.

در نهایت پس از اینکه تست ها به صورت موفقیت آمیز روی سندباکس انجام شد نسخه جدید یا تغییرات به صورت عمومی منتشر می‌شود.

سندباکس و امنیت

زمانی که پای امنیت در میان است منظور از سندباکس محیطی است که اغلب برای اجرای نرم افزارهای نامطمئن یا غیر قابل اعتماد از شرکت ها یا افراد شخص ثالث ناشناس استفاده می‌شود. چنین محیطی به عنوان یک لایه محافظتی اضافی، تا حدودی به کاربر این اطمینان را می‌دهد که خطاها یا مشکلات احتمالی، آسیب پذیری ها و تهدیدات امنیتی ناشی از اجرای نرم افزار، اثر مخرب یا منفی روی سیستم میزبان (که سندباکس در آن قرار گرفته است) نخواهد داشت و اثرات آن صرفا به محیط ایزوله سندباکس محدود می‌شود.

معمولا سندباکس ها دارای منابع کاملا کنترل شده برای اجرای نرم افزارها هستند و در آن‌ها اجازه دسترسی به منابع میزبان وجود ندارد و یا به شدت محدود شده است. از همینرو جعبه های شنی گزینه مناسبی برای نصب و اجرای نرم افزارهایی هستند که ممکن است حاوی کدهای مخرب و بدافزار باشند.

سندباکس Sandbox
اجرای نرم افزارها در سندباکس، سیستم میزبان را از آسیب های احتمالی ناشی از نرم افزار در امان نگه می‌دارد.

ماشین های مجازی با شبیه سازی یک سیستم رایانه ای به عنوان یکی از راهکارهای رایج برای ایجاد سندباکس به شمار می‌رود.

سایر کاربردها

جالب است بدانید هکرها هم برای اینکه آسیبی متوجه سیستم رایانه ای شان نشود به منظور تست بدافزارهای خود از سندباکس ها کمک می‌گیرند. در سمت مقابل، محققین امنیتی نیز برای بررسی و شناسایی نحوه رفتار کدهای مخرب از همین محیط‌ها استفاده می‌کنند.

سندباکس ها برای اجرای نرم افزارهایی که نیاز به یک سرویس وب دارند نیز به کار گرفته می‌شوند. به این ترتیب توسعه دهندگان قادر خواهند بود نرم افزار خود را پیش از آنکه به طور واقعی منتشر شود در محیطی ارزیابی و تست کنند که به سرویس وب موردنظر دسترسی دارد.

در برخی از سایت های ویکی (از جمله ویکیپدیا) نیز مدلی از جعبه شنی وجود دارد که به کاربر اجازه می‌دهد برای آشنایی با قابلیت های سایت به جای دستکاری محتواهای منتشر شده از این محیط استفاده کنند.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

مبهم سازی Obfuscation

مبهم سازی یا Obfuscation چیست؟

مبهم سازی (Obfuscation) در حوزه توسعه نرم افزار به فرایند ایجاد سورس کدهایی گفته می‌شود که درک آن‌ها برای انسان دشوار است. معمولا از روش‌های مبهم سازی برای پنهان کردن هدف و منطق پشت پرده کد یا مقادیر گنجانده شده در آن استفاده می‌کنند و به این ترتیب احتمال مداخله و مهندسی معکوس را کاهش داده یا آن را به یک معما و سرگرمی برای افرادی تبدیل می‌کنند که قصد خواندن آن را دارند.

مبهم سازی ممکن است به صورت دستی یا با کمک ابزارهای مخصوصی موسوم به مبهم ساز (Obfuscator) انجام شود. این ابزارها بسته به زبان های مورد پشتیبانی قادر هستند روی فایل کامپایل شده یا سورس کد با روش های مختلف به ایجاد ابهام بپردازند. فراموش نکنید در هر حال با اِعمال مبهم سازی نباید عملکرد برنامه تغییر پیدا کند. علاوه بر این، تکنیک ها و ابزارهایی نیز وجود دارد که تلاش می‌کنند معکوس عمل مبهم سازی (Deobfuscation) را انجام دهند و از روی فایل اجرایی مبهم شده یا سورس کد مبهم شده به سورس اصلی و قابل درک دست پیدا کنند.

مبهم سازی کد Obfuscation
ایجاد ابهام در سورس کد، درک آن را دشوارتر می‌کند.

جالب است بدانید مسابقات برنامه نویسی معتبری (نظیر International Obfuscated C Code Contest) وجود دارد که در آن‌ها به بهترین کدهای مبهم شده و خلاقانه‌ترین روش‌ها جوایزی داده می‌شود.

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

تکنیک ها و اهداف مبهم سازی

در مبهم سازی معمولا از عباراتی استفاده می‌شود که به افزایش پیچیدگی سورس کد می‌انجامد. نام گذاری متغیرها و توابع به صورت گمراه کننده یا بی‌معنا، استفاده از کامنت های فریب دهنده یا نگارش بخشی از کد به شکلی که به نظر یک کامنت بیاید، کدگذاری رشته ها، حذف فراداده های راهنمایی کننده، حذف یا افزودن فاصله، ایجاد ابهام در Control Flow، اضافه کردن کدهای بی‌ربط و نوشتن کد با فرم و شکلی جالب از جمله روش‌هایی است که برای این منظور به کار می‌رود.

در تصویر زیر مثالی از انجام یک مبهم سازی ساده به صورت خودکار را مشاهده می‌کنید که در آن صرفا با تغییر نام تابع و برخی از متغیرها همراه با رمزنگاری رشته، درک عملکرد کد دشوارتر شده است.

مبهم سازی Obfuscation
نمونه‌ای از یک قطعه کد ساده قبل و پس از انجام مبهم سازی توسط نرم افزار Dotfuscator

افزون بر جنبه های سرگرمی، چالش های ذهنی، محافظت در برابر مهندسی معکوس (تبدیل فایل کامپایل شده به سورس کد) و جلوگیری از ایجاد تغییرات در سورس کد به منظور استفاده در پروژه‌های نرم افزاری دیگر، مبهم سازی سورس کد در حوزه امنیت نیز مزایایی به همراه دارد. پنهان سازی بخش‌های مهم امنیتی و دشوارسازی کشف آسیب پذیری ها یا راه‌های نفوذ از جمله این مزایا به شمار می‌روند.

از سوی دیگر، مخفی کردن کدهای مخرب در سورس کد یکی از کاربردهای منفی و مهم Obfuscation به شمار می‌رود چرا که در این صورت، شناسایی و درک هدف آن‌ها به مراتب دشوارتر از حالت معمولی خواهد بود. همین موضوع می‌تواند به یکی از معایب کدهای مبهم شده به خصوص در مورد زبان های تفسیری تبدیل شود. برای مثال برخی از نرم افزارهای امنیتی در صورت شناسایی کدهای مبهم شده جاوا اسکریپت در صفحات وب به کاربر هشدار می‌دهند و به این ترتیب اعتبار سایت حاوی این کدها در میان کاربران مخدوش می‌شود.

در سایر حوزه ها

مبهم سازی صرفا به حوزه برنامه نویسی محدود نمی‌شود. به عنوان مثال در مورد ترافیک شبکه، این اصطلاح به روش‌هایی اشاره می‌کند که سعی دارند ترافیک واقعی شما را از دید دیگران پنهان کنند. چنین تکنیک‌هایی به خصوص هنگام اتصال به شبکه هایی کاربرد دارد که دسترسی به آن‌ها از نظر نهادها و ارائه کنندگان خدمات شبکه مجاز نیست یا احتمال مسدودسازی آن‌ها وجود دارد.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

پچ یا وصله Patch

وصله یا Patch چیست؟

پچ (Patch) یا وصله به مجموعه‌ای از تغییرات گفته می‌شود که به منظور بروزرسانی، تعمیر یا بهبود یک نرم افزار رایانه ای به کار می‌رود. این تغییرات ممکن است برای رفع آسیب پذیری های امنیتی و باگ های مختلف نرم افزار، بهبود نحوه استفاده یا کارایی و افزودن ویژگی های جدید به نرم افزار ایجاد شوند.

پچ ها معمولا در فایل های اجرایی یا اجزای نرم افزار تغییراتی ایجاد می‌کنند یا به طور کامل آن‌ها را با نمونه‌های جدید جایگزین می‌کنند. حتی در برخی از نرم افزارهای منبع باز، وصله ها در قالب تغییرات سورس کد از طرف توسعه دهندگان مختلف منتشر می‌شوند که در این صورت وظیفه کامپایل آن‌ها بر عهده کاربر خواهد بود.

محتویات پچ ها بسته به میزان تغییرات در ابعاد مختلف (از چند کیلوبایت گرفته تا چند صد مگابایت) عرضه می‌شوند. در برخی موارد از اصطلاح سرویس پک (Service Pack) برای پچ های بزرگ‌تر استفاده می‌شود. جالب است بدانید علاوه بر سیستم عامل ها، معمولا وصله هایی که برای بروزرسانی و اعمال تغییرات در بازی های رایانه ای عرضه می‌شوند نیز به دلیل داشتن فایل های گرافیکی دارای حجم بالایی هستند.

وصله های امنیتی (Security Patches) از جمله مهم ترین انواع وصله هایی هستند که برای رفع آسیب پذیری های امنیتی (به خصوص در مورد سیستم عامل ها) منتشر می‌شود.

پچ - وصله - بروزرسانی Patch - Update
پچ ها برای بروزرسانی، تعمیر یا بهبود نرم افزارهای رایانه ای منتشر می‌شوند.

بروزرسانی و اعمال پچ ها

امروزه معمولا دریافت وصله ها برای نرم افزارها و سیستم عامل های مختلف به سادگی از طریق اینترنت انجام می‌شود و اعمال آن‌ها نیز بدون نیاز به درگیری کاربر با جزئیات فنی این فرایند صورت می‌گیرد. در اغلب نرم افزارهای پرکاربرد مکانیزمی طراحی می‌شود که به صورت دوره‌ای در دسترس بودن وصله های جدید را بررسی می‌کند و به صورت خودکار یا پس از تأیید کاربر پروسه دریافت و اعمال آن‌ها را آغاز می‌نماید.

در مورد تغییرات گسترده (نظیر آنچه درباره سرویس پک ها برای نسخه های قدیمی‌تر سیستم عامل ویندوز مشاهده می‌شد) ممکن است فرایند اعمال تغییرات در قالب بسته هایی حجیم صورت گیرد که کاربر می‌بایست به صورت مستقیم برای نصب آن‌ها اقدام کند.

هرچند نصب خودکار پچ ها به خصوص در مورد سیستم عامل ها و سرورها از اهمیت بالایی در حفظ امنیت و رفع مشکلات سیستم برخوردار است اما ذکر این نکته ضروری است که در برخی موارد، بروزرسانی یا اعمال وصله هایی که به درستی طراحی نشده‌اند می‌تواند باعث از کار افتادن نرم افزار یا بروز مشکلات جدید شود. همین موضوع منجر شده است برخی از مدیران سیستم ترجیح دهند پیش از اقدام به نصب وصله ها و بروزرسانی نرم افزار از صحت عملکرد بخش‌های تغییر یافته مطمئن شوند. معمولا امکان انتخاب استراتژی مناسب در خصوص نحوه بروزرسانی از طریق بخش تنظیمات نرم افزار یا سیستم عامل در اختیار کاربران قرار می‌گیرد.

در بسیاری از موارد، نهایی شدن و اعمال این تغییرات نیازمند بسته شدن نرم افزار یا ری استارت کردن سیستم خواهد بود. با اینحال بروزرسانی های پویا این امکان را فراهم می‌کنند که حین اجرای نرم افزار، تغییرات لازم اعمال شود. گفتنی است اغلب پس از نصب پچ ها، نسخه نرم افزار نیز تغییر می‌کند.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

روز صفر Zero Day

روز صفر یا Zero Day چیست؟

آسیب پذیری روز صفر (Zero-day Vulnerability) به گونه ای از حفره های امنیتی در یک محصول رایانه ای گفته می‌شود که برای افراد علاقمند به رفع آن (نظیر تولیدکننده محصول) ناشناخته است و یا با وجود اینکه شناسایی شده هنوز برطرف نشده است.

در تعریفی مشابه، روز صفر به حفره هایی در یک محصول اشاره می‌کند که سازنده محصول از زمان شناسایی حفره تنها صفر روز برای رفع آن فرصت دارد.

حمله روز صفر

اگر این آسیب پذیری ها (که معمولا نرم افزاری هستند) پیش از رفع شدن، توسط هکرها شناسایی شوند و بتوانند راهکاری برای سوء استفاده از این حفره های امنیتی پیدا کنند در واقع حمله ای موسوم به حمله روز صفر (Zero-day Attack) یا بهره جویی روز صفر (Zero-day Exploit) رخ می‌دهد. البته برخی از کارشناسان، حمله روز صفر را در قالب حملاتی تعریف می‌کنند که در روز شناسایی این نقاط ضعف به وقوع می‌پیوندد. همان طور که گفته شد ممکن است در زمان وقوع این حمله، آسیب پذیری مذکور حتی برای سازنده نرم افزار نیز ناشناخته باشد.

در صورتی که نقاط ضعف یک نرم افزار ابتدا توسط سازمان ها یا اشخاصی با نیت غیر بدخواهانه (نظیر تولیدکنندگان آنتی ویروس و متخصصین امنیتی) شناسایی شود معمولا به صورت محرمانه سازنده را از وجود آن‌ها با خبر می‌کنند تا نسبت به رفع‌شان اقدام کند. در طرف مقابل، اگر این آسیب پذیری ها توسط هکرهای سودجو شناسایی شود به منظور سوء استفاده، از فاش کردن آن‌ها خودداری می‌کنند و احتمالا برای مدت‌ها تا زمانی که سازنده از وجودشان با خبر شود در خدمت اهداف این هکرها باقی خواهد ماند.

استاکس نت (Stuxnet) از جمله بدافزارهای مشهوری است که در زمان آغاز فعالیت خود از چهار آسیب پذیری روز صفر برای ایجاد اختلال در زیرساخت های غنی سازی اورانیوم ایران استفاده می‌کرد. جالب است بدانید ویروس ها و بدافزارهایی که هنوز امضای آن‌ها در اختیار آنتی ویروس ها قرار ندارد (و در نتیجه احتمالا قابل شناسایی توسط این نرم افزارهای امنیتی نیستند) به ویروس ها و بدافزارهای روز صفر مشهور هستند.

چگونه با این نوع حملات مقابله کنیم؟

با توجه به ماهیت این آسیب پذیری ها، معمولا محافظت در برابر آن‌ها امر ساده‌ای نیست چرا که در بسیاری از موارد، صرفا این مهاجمین هستند که از وجود آن‌ها باخبرند. به این ترتیب اصولا حتی شبکه ها و سیستم های رایانه ای (که ایمن به شمار می‌روند) نیز در برابر حملات روز صفر به طور کامل در امان نیستند. هرچند درک اهمیت و دشواری مقابله با این حملات ضروری است اما بهتر است بدانید آنقدرها هم در برابر این آسیب پذیری ها تنها نیستید!

به محض اینکه یک آسیب پذیری امنیتی تازه در یک نرم افزار برای سازندگان آن محرز می‌شود اساسا خود را موظف می‌دانند در کوتاه‌ترین زمان ممکن (فرصت صفر روزه) با ارائه وصله های (Patch) امنیتی و بروزرسانی نرم افزار، حفره شناسایی شده را برطرف نمایند.

از سوی دیگر کاربران نیز برای در امان ماندن از این حفره ها می‌بایست همواره در سریع‌ترین زمان ممکن، بروزرسانی ها و وصله های امنیتی منتشر شده از سوی سازندگان نرم افزارها را دریافت و نصب کنند. علاوه بر این، استفاده از نرم افزارهای امنیتی (نظیر آنتی ویروس های قدرتمند) همراه با تنظیمات مناسب می‌تواند در شناسایی برخی از این آسیب پذیری ها مفید واقع شود. وبگردی ایمن و رعایت نکات امنیتی حین استفاده از دستگاه رایانه ای (نظیر دانلود نکردن فایل های ضمیمه شده به یک پیام ایمیل ناشناس) نیز در جلوگیری از آلوده شدن به بدافزارهایی که از این آسیب پذیری ها بهره می‌برند موثر خواهد بود.

آسیب پذیری روز صفر Zero day Vulnerability
آسیب پذیری های zero day ممکن است تا مدت‌ها برای سازنده نرم افزار یا سخت افزاری که حاوی این آسیب پذیری است نیز ناشناخته باشد!

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

حالت ایمن Safe mode

حالت ایمن یا Safe mode چیست؟

حالت ایمن (سیف مد یا Safe mode) به حالتی در سیستم عامل های رایانه ای گفته می‌شود که به منظور شناسایی مشکلات سیستم و رفع آن‌ها به کار می‌رود.

در بسیاری از سیستم عامل های امروزی از جمله ویندوز، مک او اس، توزیع های لینوکس نظیر Ubuntu و حتی اندروید، حالت ایمن وجود دارد (در مک او اس، این حالت تحت عنوان بوت ایمن یا Safe Boot شناخته می‌شود). هرچند Safe mode و قابلیت‌های آن در سیستم عامل‌های مختلف، تفاوت‌هایی با یکدیگر دارند اما معمولا در این حالت، تا جایی که ممکن است تنها بخش‌ها و سرویس های سیستمی اصلی اجرا می‌شوند و حتی بسیاری از ابزارها (به جز ابزارهای ضروری نظیر صفحه کلید) نیز غیرفعال می‌شوند.

در حالت ایمن می‌توان بسیاری از مشکلات موجود در سیستم عامل را رفع کرد. به عنوان مثال در ویندوز ممکن است نصب یک نرم افزار یا درایور ناسازگار باعث شود سیستم عامل به صورت نرمال قابل اجرا نباشد؛ در چنین شرایطی می‌توان با اجرای سیستم عامل در حالت ایمن، نرم افزار یا درایوری که باعث ایجاد اختلال شده است را از سیستم حذف نمود. همچنین از حالت ایمن برای حذف بدافزارها نیز استفاده می‌شود چرا که ممکن است بدافزار نیز همانند بسیاری از سرویس ها در حالت ایمن اجرا نشود و به این ترتیب حذف آن آسانتر خواهد بود.

گفتنی است در برخی برنامه های کاربردی نیز حالت ایمن وجود دارد و در صورتی که امکان اجرای برنامه در حالت عادی وجود نداشته باشد مورد استفاده قرار می‌گیرد. به عنوان مثال مرورگرهای وب نظیر فایرفاکس و کروم دارای حالتی هستند که در آن تمامی افزونه‌ها غیرفعال می‌شوند.

حالت ایمن در سیستم عامل ویندوز

در سیستم عامل ویندوز علاوه بر Safe mode معمولی دو آپشن دیگر نیز درنظر گرفته شده است. گزینه Safe Mode with Networking که مشابه Safe Mode معمولی است با این تفاوت که در این گونه مشخص، درایورهای شبکه و سرویس‌هایی که برای دسترسی به اینترنت یا سایر شبکه‌های رایانه‌ای مورد نیاز هستند نیز اجرا می‌شود. گزینه دیگری که به Safe Mode with Command Prompt موسوم است به جای اجرای محیط دسکتاپ، به کاربر اجازه می‌دهد با کمک خط فرمان برای رفع مشکل موردنظر اقدام کند.

در مورد نسخه های قدیمی ویندوز (پیش از ویندوز 8) کاربر می‌توانست با فشار دادن کلید F8 هنگام بوت شدن سیستم عامل، به حالت Safe mode وارد شود. اما از آنجایی که فرایند بوت در ویندوزهای 8 و 10 سریعتر صورت می‌گیرد غالبا امکان ورود به این حالت با روش‌های گذشته وجود ندارد. در عوض کاربر می‌تواند در صفحه لاگین (و همچنین صفحه یا منوی Start) با پایین نگه داشتن کلید Shift روی نماد Power کلیک کرده و گزینه Restart را انتخاب نماید تا ویندوز پس از بوت شدن در حالت ایمن اجرا شود. البته در صورتی که امکان دسترسی نرمال به ویندوز برای انجام این کار وجود نداشته باشد کاربر می‌تواند از صفحه‌ای موسوم به ریکاوری (Recovery) که در چنین موقعیتی نمایش داده می‌شود برای ورود به سیف مد استفاده کند.

حالت ایمن Safe mode
صفحه Startup Settings پیش از ورود به ویندوز 10. کاربر می‌تواند با فشار دادن یکی از کلیدهای F4 تا F6 وارد Safe mode شود.
حالت ایمن Safe mode
نمایی از Safe mode در ویندوز 10 – به عبارت Safe Mode در چهارگوشته دسکتاپ توجه کنید.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

ترس افزار Scareware

ترس افزار یا Scareware چیست؟

ترس افزار (Scareware) نوعی بدافزار رایانه ای است که معمولا با کمک روش‌های مختلف تلاش می‌کند در میان قربانیان خود نوعی نگرانی یا ترس ناشی از وجود یک تهدید رایانه ای ایجاد نماید. این بدافزارها در بسیاری از موارد کاربر را به خرید یک نرم افزار امنیتی جعلی برای مقابله با این تهدید تشویق می‌کنند. البته این اصطلاح در حالت کلی برای هرنوع نرم افزاری که به دنبال ایجاد هراس و نگرانی در کاربر باشد به کار می‌رود.

معمولا در مورد ترس افزارها هیچ خبری از یک عامل خرابکار واقعی نیست. نرم افزار امنیتی پیشنهاد شده هم (هرچند در قالب یک برنامه کاملا مفید به کاربر معرفی می‌شود) در اغلب موارد کار خاصی انجام نمی‌دهد و یا ممکن است خودش یک بدافزار باشد.

روش‌های مختلفی برای گسترش ترس افزارها مورد استفاده قرار می‌گیرد. به عنوان نمونه، برخی از وبسایت ها با نمایش پنجره های پاپ آپ یا بنرهایی با ظاهر هشداردهنده، متنی را به کاربر نمایش می‌دهند که محتوای آن چیزی مشابه “Your computer is infected with harmful spyware …” (به معنای “رایانه شما به یک جاسوس افزار مضر آلوده شده است…”) می‌باشد و او را به حذف فوری بدافزار با استفاده از ابزاری که به او پیشنهاد می‌دهد تشویق می‌کند. معمولا این صفحات وب به شکلی طراحی می‌شوند که یک کاربر ساده لوح تصور می‌کند پیام از طرف سیستم عامل نمایش داده شده است.

ترس افزار Scareware
نمونه ای از هشدارهای جعلی در قالب ترس افزار

برخی دیگر از این بدافزارها با تغییر پس زمینه دسکتاپ یا ایجاد اعلان‌هایی جعلی در بخش نوتیفیکیشن سیستم عامل، پیام‌هایی مبنی بر آلوده شدن سیستم به یک جاسوس افزار (یا نرم افزار مخرب) را نمایش می‌دهند و کاربر را به نصب نرم افزاری برای پاکسازی سیستم ترغیب می‌کنند. برخی از آن‌ها پا را فراتر گذاشته و برای رسیدن به اهداف خود تلاش می‌کنند کاربر را به حذف نرم افزارهای امنیتی نظیر آنتی ویروس و دیوار آتش متقاعد کنند.

نمونه‌ای دیگر از ترس افزارها نیز با نمایش تصاویر، اصوات یا ویدیوهایی تنها به ایجاد رعب و وحشت در قربانی خود اکتفا می‌کنند و حتی به دنبال کسب درآمد از طریق فروش یک نرم افزار بدون کاربرد هم نیستند. به عنوان مثال ممکن است یک ترس افزار پس از فعال شدن روی سیستم قربانی، پیامی با این مضمون را به کاربر نمایش دهد: “آیا مایل به حذف تمام اطلاعات خود هستید؟” و کاربر را با یک شمارنده معکوس و دو دکمه که هردو دارای برچسب OK هستند تنها بگذارد! هرچند در چنین موقعیتی، نگرانی تمام وجود کاربر را فرامی‌گیرد اما احتمالا اگر شانس بیاورد و تنها با یک ترس افزار سرگرم کننده سر و کار داشته باشد روی هرکدام از این دو دکمه کلیک کند هیچ اتفاق خاصی برای فایل‌هایش نخواهد افتاد!

نمونه‌ای دیگر از ترس افزارهای جذاب را می‌توانید در کمپین تبلیغاتی که در سال 1997 برای بازی ویدیویی Virus: The Game شکل گرفت مشاهده کنید. در این کمپین پس از اجرا شدن ترس افزار، چنین وانمود می‌شد که فولدر Windows در حال حذف شدن است، زمانی که این عملیات به پایان می‌رسید پیامی با این محتوا به کاربر نمایش داده می‌شد: “خدا را شکر این فقط یک بازی است!” و در انتها نیز صفحه‌ای برای خرید بازی نمایش داده می‌شد بدون اینکه هیچ خطری رایانه کاربر را تهدید کند.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

سمت کلاینت Client-Side

سمت کلاینت یا Client-Side چیست؟

سمت کلاینت (Client-Side) اصطلاحی در مورد اعمالی است که در یک ارتباط کلاینتسرور توسط کلاینت انجام می‌شود.

در یک ارتباط کلاینت – سرور، کلاینت اصولا در قالب یک نرم افزار روی سیستم محلی کاربر اجرا می‌شود و در مواقع لزوم با سرور ارتباط برقرار می‌کند. اینکه بخشی از دستورات و اعمال در چنین ارتباطی به وسیله کلاینت اجرا می‌شود و به طور کامل به سرور واگذار نمی‌شود می‌تواند دلایل مختلفی داشته باشد. ممکن است اعمالی که قرار است انجام شود نیازمند اطلاعاتی باشد که تنها روی سیستم کلاینت قابل دسترسی هستند و یا این اعمال به حدی زمانبر باشند که اجرای آن‌ها توسط سرور بار اضافی روی آن ایجاد می‌کند یا زمان پاسخگویی به کلاینت‌ها را افزایش می‌دهد. به علاوه در بسیاری از کاربردها (نظیر وب اپلیکیشن ها)، انجام حجم قابل توجهی از اعمال توسط کلاینت باعث کاهش تبادل داده با سرور می‌شود و در نتیجه به افزایش سرعت و بهبود عملکرد (کاهش میزان تأخیر) مورد انتظار کاربر ختم می‌شود.

به عنوان نمونه در مورد صفحات وب، جاوا اسکریپت یکی از مهم‌ترین زبان‌هایی به شمار می‌رود که دستوراتش در سمت کلاینت اجرا می‌شود. به این معنا که ابتدا فایل حاوی کد جاوا اسکریپت از سرور دانلود می‌شود و سپس توسط کلاینت (در اینجا مرورگر وب که روی سیستم کاربر نصب شده است) اجرا می‌شود. HTML و CSS نیز از جمله دیگر زبان‌های وب هستند که محتوای آن‌ها توسط کلاینت رندر و اجرا می‌شود.

زمانی که از آسیب پذیری ها و حملات سمت کلاینت سخن به میان می‌آید دسته‌ای از آن‌ها مدنظر است که روی سیستم کلاینت رخ می‌دهند. برای مثال اگر هکری با کمک یک جاسوس افزار یا کی لاگر که روی سیستم کاربر فعال شده است، از طریق ثبت کلیدهای فشرده شده توسط کاربر به نام کاربری و کلمه عبور او در یک سامانه تحت وب دسترسی پیدا کند این حمله، نوعی حمله سمت کلاینت به شمار می‌رود چرا که در آن سرور عملا هیچ نقشی نداشته است.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

پروکسی سرور Proxy Server

پروکسی سرور یا Proxy Server چیست؟

پروکسی سرور (Proxy Server) سروری میانجی برای درخواست‌هایی است که از سوی کلاینت ها به منظور دریافت منابع از سرورهای دیگر ارسال می‌شود.

به عبارت بهتر، کلاینت به جای ارتباط مستقیم با سرور اصلی به پروکسی سرور متصل شده و منبعی (نظیر صفحه وب، فایل و …) که روی سرور اصلی قابل دسترسی است را تقاضا می‌کند. Proxy Server در صورت موافقت پس از انجام اعمال خاصی درخواست را برای سرور اصلی ارسال کرده، منبع را دریافت و در نهایت برای کلاینت ارسال می‌کند.

مفهوم Forward Proxy و Reverse Proxy

واژه Proxy در زبان انگلیسی به معنای نماینده یا وکیل می‌باشد. Proxy Server ها نیز مشابه همان کاری را انجام می‌دهند که یک نماینده در زندگی معمولی برای شما انجام می‌دهد. در میان عامه مردم زمانی که سخن از پروکسی ها به میان می‌آید غالبا منظور نوع متداول آن‌ها یعنی فوروارد پروکسی (Forward Proxy یا پروکسی ارسال کننده) می‌باشد. این نوع Proxy ها به عنوان یک نماینده یا واسطه برای کلاینت به شمار می‌روند. کلاینت درخواست خود را که مربوط به یک سرور معین است برای فوروارد پروکسی ارسال می‌کند. Proxy نیز در نقش یک کلاینت، درخواست را برای سرور مدنظر می‌فرستد و پس از دریافت پاسخ، نتیجه را به کلاینت خود تحویل می‌دهد. در این حالت کلاینت باید برای استفاده از Proxy به شکل مناسبی تنظیم شده باشد؛ این تنظیمات معمولا توسط یک نرم افزار ویژه به صورت خودکار انجام می‌شود.

نوع دیگری از Proxy ها نیز تحت عنوان پروکسی های معکوس (Reverse Proxy) وجود دارد که برخلاف Forward Proxy ها به عنوان میانجی برای یک یا چند سرور معین عمل می‌کنند. در واقع در این مدل، Proxy Server بخشی از شبکه داخلی سرورهای اصلی است و درخواست‌های دریافتی از کلاینت‌های خارجی را به سروری که باید آن را پاسخ دهد ارسال می‌کند و سپس پاسخ دریافتی را به شکلی که گویا مستقیما از سرور اصلی دریافت می‌شود برای کلاینت برمی‌گرداند. کلاینت معمولا در چنین حالتی متوجه وجود سرور اصلی (که در پشت Proxy پنهان شده است) و ویژگی‌های آن نخواهد شد و تصور می‌کند درخواست خود را برای سرور اصلی ارسال کرده است. به عبارت بهتر برخلاف فوروارد پروکسی ها که هویت کلاینتشان را مخفی می‌کنند (گمنامی)، پروکسی معکوس هویت سرور را پنهان می‌کند. صاحبان این پروکسی ها می‌توانند با پیکربندی مناسب آن‌ها، سرورهای اصلی خود را در مقابل حملاتی نظیر DDoS محافظت کرده و از مزایای دیگری نظیر توزیع و توزین بار (Load Balancing) روی چند سرور اصلی نیز بهره ببرند.

وب پروکسی

از لحاظ نوع خدمات، وب پروکسی (Web Proxy) ها از رایج‌ترین انواع Proxy ها به شمار می‌روند که امکان دسترسی به محتوای وب را با اهدافی نظیر گمنامی (یا ناشناس بودن) و عبور از فرایندهای مسدودسازی مبتنی بر نشانی IP فراهم می‌کنند. اغلب این Proxy ها از طریق تمامی کاربران اینترنت در دسترس هستند و به آن‌ها اجازه می‌دهند نشانی IP خود را هنگام استفاده از خدمات اینترنت پنهان کنند.

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

پروکسی سرور Proxy Server
Proxy Server به عنوان واسطی میان کلاینت و سرور اصلی عمل می‌کند.

سایر کاربردهای رایج پروکسی

علاوه بر مواردی که به آن اشاره شد از Proxy ها برای اهداف دیگری نیز استفاده می‌شود. تصور کنید سرور یک وبسایت، بنابه دلایلی (نظیر تحریم) دسترسی به محتوا را براساس مبدأ درخواست کننده مسدود کرده باشد. غالبا این کار با مسدودسازی دسترسی براساس بازه‌ای از نشانی‌های IP که متعلق به یک کشور می‌باشد انجام می‌گیرد. استفاده از Proxy Server هایی که در منطقه‌ای دیگر واقع شده‌اند می‌تواند برای عبور از چنین محدودیت‌هایی مفید واقع شود.

این نکته را نیز همیشه به خاطر داشته باشید؛ ممکن است از فوروارد پروکسی ها برای گزارش گیری و استراق سمع داده‌هایی که میان کلاینت و سرور اصلی رد و بدل می‌شود استفاده شود. در چنین شرایطی کاربر به اشتباه تصور می‌کند به دلیل ناشناس بودن در مقابل سرور اصلی از نظر حفظ حریم خصوصی موفق‌تر بوده است در حالی که کلیه اطلاعاتش از جمله کلمه عبور (در صورتی که از ارتباطات رمزنگاری شده نظیر SSL استفاده نشود) توسط اپراتورهای Proxy به راحتی قابل مشاهده و تجزیه و تحلیل می‌باشد.

کشینگ پروکسی (Caching Proxy) ها نیز نوع رایج دیگری از این سرورها هستند که با نگه‌داری نسخه‌ای از منابع که با درخواست بیشتری مواجه بوده‌اند قادر هستند پاسخگویی به درخواست‌ها را سرعت بخشیده و مصرف پهنای باند را نیز کاهش دهند.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا