PDA

View Full Version : گفتگو: گفتگوی فنی شماره دو - اصول و مفاهیم ایمنی در توسعه نرم افزار



mehdi.mousavi
شنبه 28 خرداد 1390, 20:06 عصر
سلام.
در معرض خطر قرار گرفتن یک سیستم می تونه عواقب زیادی در پی داشته باشه و امنیت فرد یا افرادی (حقیقی / حقوقی) رو به مخاطره بندازه. چنین خطراتی میتونه منجر به نابودی یک محصول، از دست رفتن اعتماد مشتری و همچنین سرمایه های مادی و معنوی صاحبان اون محصول بشه.

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

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



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


امروز و در این گفتگو، در خدمت آقای مهدی عسگری (http://barnamenevis.org/member.php?u=12705) هستیم تا در مورد این گستره وسیع با یکدیگر گفتگو کنیم و با اصول و قواعد ایمنی در توسعه نرم افزار، آشنا بشیم.

آقای عسگری، ضمن عرض سلام و خسته نباشید، پس از معرفی اجمالی خودتون، لطفا "ایمنی" رو بعنوان یک واژه عام تعریف کنید و بفرمایید چرا باید اونو به چشم یک فرهنگ با آداب و سلوک خودش دید؟

Mehdi Asgari
دوشنبه 30 خرداد 1390, 01:16 صبح
سلام
من مهدی عسگری هستم،کارشناس امنیت اطلاعات و امیدوارم با بحث و گفتگو هایی که در این تاپیک با هم خواهیم داشت، باعث رشد و تصحیح دانش و برداشت خوانندگان از امنیت نرم افزار و ارتباطات باشیم.
راستش جواب دادن به سوالی که مطرح کردید خیلی سخته، به دلیل کلی بودن سوال و گسترده بودن مفهوم امنیت نرم افزار و تعدد زیر شاخه های اون و نیز متفاوت بودن برداشت حتی متخصصین از این امر.
اجازه بدید قبل از این که تعریفی از امنیت نرم افزار داشته باشیم، ببینیم امنیت نرم افزار چی نیست! متاسفانه اکثر کاربران کامپیوتر و حتی افراد فنی (مثل برنامه نویسا) دید و درک درستی از امنیت ندارن؛ بار ها دیده شده که افراد به امنیت دید تک بعدی دارن: یعنی دستی به نقطه ای از این فیل بزرگ در یک اتاق تاریک کشیده و امنیت رو همونی می دونن که خودشون دیدن؛ سعی من در این گفتگو ها این است که ابتدا این تصورات رو تصحیح کنیم و به مخاطبامون بگیم که امنیت فقط هک یا کرک یا قفل گذاری روی سی دی و این ها نیست و زیر رشته های بسیار دیگری هم داره که ما بدون اطلاع از وجودشون روزانه باهاشون سر و کار داریم.
گرچه الان وضع آگاهی مردم و متخصصین ، به امنیت بهتر از گذشته شده (برای دلایلی مثل رواج بانکداری اینترنتی و تبادل داده های حساس (شخصی/نظامی/سازمانی) روی اینترنت و غیره) و مردم و دولت هابیش از پیش به اهمیت این امر واقف شدن و حتی قوانینی برای جرایم مربوطه تعریف شده، ولی باز هم در معماری و طراحی و تجزیه و تحلیل تا فاز پیاده سازی و تست، معمولا امنیت یک شهروند درجه 2 محسوب میشه (در خلال این بحث ها و آوردن مثال هایی از موارد واقعی و فرضی که نشون می دن عدم رعایت امنیت و نداشتن موضع فعال در قبال این موضوع چه عواقب سنگینی می تونه برای اشخاص، سازمان ها و کشور ها به دنبال داشته باشه، این امید میره که لااقل خوانندگان بحث حتی اگر مستقیما با امنیت نرم افزار در ارتباط نیستن، به این مقوله جدی تر نگاه کنن)
متاسفانه باور بسیاری از کاربران حتی حرفه ای کامپیوتر بر این هست که با داشتن ابزاری چون آنتی ویروس یا فایروال و دیگر ابزار محافظتی، از مشکلات امنیتی مصون هستن؛ و در واقع در بسیاری از مواقع این انسان هست که به خاطر احساسات، باور های غلط و تکیۀ بیش از حدش به ابزار، ضعیف ترین جزء یک سیستم هست و در امنیت نرم افزار، امنیت سیستم معادل امنیت ضعیف ترین بخش هست. حتی جالبه که بدونید بخشی از امنیت نرم افزار (Social Engineering یا مهندسی اجتماعی) مستقیما با انسان ارتباط داره و سعی می کنه با (سو)استفاده از آسیب پذیری های انسانی، به یک سیستم نفوذ کنه.
به نظر من بهتره در این گفتگو، علاوه بر جواب به درخواست های کاربران در تاپیک مربوطه، بیاییم بدون این که سعی در پیدا کردن تعریفی تئوری برای امنیت نرم افزار داشته باشیم، با زیر شاخه ها، موارد استفاده و انواع روش های سو استفاده و روش های مقابله با اون ها، همراه با مثال های واقعی بحث کنیم؛ من علاوه بر این که منتظر طرح سوال بعدی از طرف شما هستم، تاپیک مربوط به کاربران رو هم دنبال می کنم تا به سوالات اون ها در اینجا بپردازیم.
{می دونم که عملا در این پست دانش مفیدی رو به مخاطبم منتقل نکردم، ولی این مقدمه ای بود بر بحث طولانی و ان شا الله مفیدی که در پیش خواهیم داشت}
ممنون

mehdi.mousavi
دوشنبه 30 خرداد 1390, 14:17 عصر
بسیار خوب. لطفا بفرمایید ما در ایمن سازی یک سیستم باید بدنبال چی باشیم و کی می تونیم ادعا کنیم که سیستم ایمنی داریم؟ من هدفم از ارائه تعریفی برای امنیت این بود که در حقیقت بدونیم در این فرآیند دنبال چه هستیم؟ وقتی میگیم این سیستم ایمنه، منطورمون چی هستش؟ آیا می تونیم بگیم فلان سیستم 40% ایمن هستش و دیگری 70%؟ مایلم تا برامون توضیح بدید که چه رویه هایی رو باید مد نظر قرار داد تا یک گام به ایمن تر شدن سیستم نزدیک بشیم و آیا معیاری وجود داره تا بر اساس اون بتونیم ایمنی یک سیستم رو مورد سنجش قرار بدیم؟

همچنین بفرمایید دارایی های یک سازمان رو چطور باید ارزش دهی کنیم تا بدونیم از کدوم یک (در چه سطحی) باید محافظت کرد؟ چه معیارهایی برای این ارزش دهی وجود داره؟ (طبیعتا در ادامه گفتگو به اون دسته بندی ها، سوء استفاده ها و ... نیز خواهیم پرداخت).

Mehdi Asgari
سه شنبه 31 خرداد 1390, 01:46 صبح
اجازه بدید همون اول یک اتمام حجتی بکنم : امنیت هیچ وقت صد در صد نیست؛ یعنی امکان ادعای ایمن بودن یک سیستم به طور مطلق وجود نداره. اما به صورت نسبی میشه چنین تعریفی رو داشت: مثلا می تونیم ادعا کنیم فلان محصول یا سیستم به دلیل لحاظ شدن امنیت در طراحی و پیاده سازی اون و همچنین تست های امنیت و نفوذی که بر روی اون انجام گرفته ، سیستم ایمنی هست (نسبی) و این ایمنی تا وقتی که خلافش ثابت نشه قابل اتکا هست. راستش تا حالا ندیدم به یک سیستم درصد ایمنی بدن؛ به هر حال یا یک سیستم به صورت نسبی امن هست و یا نیست (یعنی یا آسیب پذیری های منتشر شده یا در دسترسی داره، و یا نداره)؛ ولی معمولا برای آسیب پذیری های امنیتی میشه از نظر اهمیت رتبه داد؛ مثلا فلان آسیب پذیری به این دلیل که از راه دور قابل سو استفاده است، مهم تر از آسیب پذیری ای است که برای استفاده از اون نیاز به دسترسی فیزیکی یا اجرای کدی بر روی سیستم محلی یک کاربر هست.
در مورد این که چطور به امن کردن یک سیستم نزدیک بشیم، قدم اول آگاهی داشتن طراحان و اشخاص پیاده ساز اون سیستم از امنیت (به طور کلی) هست؛ به عنوان مثال یکی از پراسس های معروف در این زمینه، SDL یا Security Development Lifecycle هست که از طرف مایکروسافت ارائه شده. ما در فاز طراحی ، مسائل امنیتی رو مد نظر قرار می دیم (مثلا در انتخاب الگوریتم های رمزنگاری، انتخاب روش های ذخیرۀ داده ها، چگونگی دسترسی کاربران از راه دور به نرم افزار و غیره)، سپس در فاز پیاده سازی هم باید نکات امنیتی رعایت بشه تا نشه از مشکلات پیاده سازی ، سو استفاده کرد (امکان سو استفاده از یک سیستم که طراحی کامل ولی پیاده سازی مشکل داری داشته باشه، وجود داره)؛ در این فاز اون چیزی که باید رعایت بشه Secure Coding هست که در این مورد هم در ادامۀ بحث صحبت خواهیم کرد. مثال کلاسیک و کلیشه ای، توابع رشته ای سی مثل strcpy هستن که با سو استفاده از بافر های ارسالی به عنوان پارامتر به اون ها می شد مسیر اجرای برنامۀ آسیب پذیر رو عوض کرد (نکته: در امنیت نرم افزار به یک آسیب پذیری یا عیب امنیتی در یک سیستم نرم افزاری، آسیب پذیری یا vulnerability ، و به سو استفاده از اون exploit اطلاق میشه)
به غیر از رعایت قوانین Secure coding ، میشه از ابزار Code Review که کدتون رو برای کشف آسیب پذیری های احتمالی امنیتی اسکن می کنن هم استفاده کرد (به عنوان مثال استفاده از یک محصول مانند Fortify هنگام توسعۀ محصول مبتنی بر وب، احتمال بروز آسیب پذیری های چون XSS و SQL Injection رو در اون کم تر می کنه)
کتابی که در زمینۀ کد نویسی امن به ذهنم می رسه معرفی کنم Writing Secure Code نوشتۀ Michael Howard هست.
پس از اتمام توسعه و تولید محصول نهایی، باید محصول (بدون سورس) هم تست بشه؛ به این کار Penetration testing یا تست نفوذ گفته میشه؛ این تست هم می تونه روی برنامه های کاربردی معمولی و هم روی برنامه های تحت وب و سرور انجام بشه. در این گام، مهاجمین بدون در دست داشتن سورس کد محصول، سعی می کنن نواقص امنیتی اون رو کشف کرده و به صاحب محصول اطلاع بدن (این تیم ممکنه درون همون سازمان یا شرکت موجود باشه، ولی معمولا به صورت پروژه ای و قراردادی، از بیرون شرکت آورده میشن)
البته روش های کد نویسی امن و همینطور روش های پیدا کردن عیوب امنیتی زیاد هستن که باید به صورت موردی بررسی بشن؛ سوال آخرتون رو درست متوجه نشدم؛ بالطبع برای یه سازمان که با نرم افزار سر و کار داره، داده ها و نیز سورس محصولات نرم افزاری گران بها ترین دارایی ها هستن
البته این نکته رو هم مد نظر داشته باشید که من بیشتر سمت سیاه ماجرا! یعنی نفوذ به سیستم ها تجربه و فعالیت دارم، نه سمت سازنده اش! بنابراین دیدم به امنیت با دید یک متخصص کلاه سفید یا یک معمار نرم افزار بسیار متفاوته

mehdi.mousavi
سه شنبه 31 خرداد 1390, 16:36 عصر
منظورم از ارزش دهی دارایی های یک سازمان این بود که چطور و چگونه می تونیم یه ارزیابی دارایی های یک سازمان بپردازیم، جدا از اینکه این دارایی ها چه هستند و آیا شرکت مورد بحث ما، یک شرکت نرم افزاری است یا خیر. در حقیقت، ما باید بدونیم دارایی های ما چه هستند، محل استقرار هر یک کجاست، در چه وضعیتی قرار دارند، هر کدوم از اونها، در اون "مقطع زمانی" چه ارزشی دارند و... مایلم تا روی "مقطع زمانی" تکیه کنم. چرا که برخی از دارایی ها (یا بطور کلی، بهتره بگم اطلاعات) با گذشت زمان، ارزششون کاهش پیدا میکنه. بطور نمونه، امروزه پیدا کردن یک رخنه امنیتی در IE6، مایکروسافت رو به زانو در نمیاره، اما 10 سال پیش نیز اینطور بود؟

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



زیر ساخت: تمرکز این بخش روی این موضوع هستش که شبکه چطور باید کار کنه، چه رویه های تجاری (داخلی یا خارجی) رو باید پشتیبانی کنه، host های سیستم های کامپیوتری به چه نحوی ایجاد و deploy شده اند و چگونه میشه شبکه رو بطور موثر مدیریت و نگهداری کرد.
نرم افزار: این بخش نگاهی به نرم افزارهای مورد استفاده در سازمان داره، نرم افزارهایی که برای ادامه روند تجاری یک سازمان حائز اهمیتند. در این بخش، نرم افزارها بر اساس ایمنی و میزان دسترسی ارزیابی میشن.
عملکرد: در این بخش، رویه ها، راهبردها و نحوه انجام امور دائر سازمان برای ارتقاء سطوح استراتژیک "دفاع در عمق" ارزیابی میشه تا خودمون رو فقط محدود به تکنولوژیها نکرده باشیم.
افراد: در این بخش، چگونگی مدیریت نیروی انسانی، آموزش کارمندان سازمان و رویه های امنیتی موجود در اون مورد ارزیابی قرار میگیرن. همچنین در این بخش، مسائل امنیتی مرتبط با عملکرد روزانه افراد مورد ارزیابی قرار می گیره.

هر بخش، خودش به زیر بخش های کوچکتری تقسیم میشه. بطور نمونه، در بخش زیر ساخت، سه حوزه کلی مد نظر قرار میگیره:


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

به همین ترتیب، بخش های دیگر به نوبه خود به زیر بخش های دیگه ای تقسیم میشن. ارزیابی امنیتی مزبور با پاسخ دادن به بیش از 200 سوال در مورد سازمان شما انجام می گیره. این سوالات، بر مبنای استانداردهای ISO 17799 و NIST-800.x تدارک دیده شده اند. خوشبختانه، نرم افزارهایی برای ساده تر کردن روند این ارزیابی وجود داره که یکی از اونها Microsoft Security Assessment Tool (http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=12273) هستش که بصورت رایگان قابل دریافته. شما می تونید براحتی این نرم افزار رو نصب کنید و با ارائه پاسخ سوالات، گزارشی از وضعیت ایمنی سازمان در بخش های متفاوت دریافت کنید. سپس بر اساس این گزارش، اقدام به رفع نواقص امنیتی در سازمان کنید.

آقای عسگری، در صحبت هاشون به متخصصین "کلاه سفید" اشاره کردن. برای آشنایی دوستان باید بگم یکی از روش های شناسایی Hacker ها، شناسایی اونها از روی رنگ کلاهی هستش که بر سر میذارن. Hacker هایی که از روی عناد و بدخواهی دست به از بین بردن اطلاعات و مختل کردن خدماتی که یک سازمان ارائه میده میزنن، "کلاه سیاه" بر سر میذارن. در حالیکه متخصصین امنیتی ای که با شیوه های مورد استفاده "کلاه سیاه ها" آشنا هستن، اما همواره فعالیت هاشون قانونی و درسته "کلاه سفید" بر سر میذارن. افرادیکه انگیزه و فعالیت اونها ما بین افراد کلاه سیاه و متخصصین کلاه سفید قرار می گیره رو تحت عنوان "کلاه خاکستری" میشناسیم.

جناب آقای عسگری، ممنون میشم اگر واژه های Hacker، Cracker، Phreaker، Phracker، Script Kiddie و واژه هایی ای این قبیل رو برامون شرح بدید و بفرمایید هر یک از اونها چه تفاوت هایی با هم دارن. متاسفانه همونطوریکه مستحضرید، بسیاری از افراد بصورت نادرست برخی از این کلمات رو جای برخی دیگه بکار میبرن در صورتیکه هر یک معنا و مفهوم مجزایی داره.

Mehdi Asgari
چهارشنبه 01 تیر 1390, 02:55 صبح
مبحث ارزیابی دارایی ها، بحثی فراتر از بحث فعلی و تخصص بنده است، منتها اگر بخوایم در مورد شرکت های نرم افزاری صحبت کنیم، مطمئنا با ارزش ترین دارایی سورس کد های محصولات هست که علاوه بر امن بودن سرور های دربردارندۀ اون ها، باید امنیت فیزیکی لازم هم تامین بشه و ضمنا پرسنل مربوطه آموزش های لازم رو دیده باشن تا نشه از طریق مهندسی اجتماعی به اون ها نفوذ کرد (تکنیک های زیادی هم برای امن کردن دسترسی به سرور ها وجود داره، از عدم استفاده از رمز های عبور یکسان تا استفاده از آخرین نسخه های نرم افزار های سرور، و عدم دسترسی به اون سیستم ها از اینترنت)
در مورد کلاه ها اجازه بدید به این نکته اشاره کنم که کاربرانی که با این موضوع آشنا نیستن دقت کنن این کلاه ها واقعی نیستن و فقط تمثیلی هستن برای شناسایی هکر ها؛ من که هیچ وقت کلاه روی سرم نمیذارم!
Script Kiddie ها رو شاید بشه جوجه هکر ترجمه کرد؛ یعنی افرادی که فقط قادر هستن از ابزار و دانش موجود برای نفوذ و هک استفاده کنن، و خودشون درک کامل و درستی از نحوۀ کار این ابزار ندارن و هیچ وقت در مورد نحوۀ کار کردن سیستم ها و ابزار مطالعه نمی کنن (مثل نفوذگری که برای نفوذ به یک سایت یا سرور فقط قادره از nmap و Nessus و Acunetix و غیره استفاده کنه ، و برای حمله هم چند نوع تکنیک تزریق SQL و اجرای اکسپلویت های آماده بر روی قربانی رو بلده، اما نمی دونه این ابزار چطور کار می کنن و فلان اکسپلویت چطور نوشته شده و از چه آسیب پذیری ای استفاده می کنه و در صورتی که شرایط کمی پیچیده تر بشه قادر نخواهند بود کاری بکنن)
اجازه بدید من واژۀ lamer رو هم اضافه کنم. Lamer (که شاید بشه تنبل ترجمه اش کرد) بر خلاف هکر آدمیه که دقیقا از طرز کار ابزار و سیستم ها اطلاعی نداره و به حداقل دانش مورد نیاز برای راه انداختن یا کار با یک سیستم کفایت می کنه (مثل اسکریپت کیدی که از ابزار خودکار برای پیش بردن هدفش استفاده می کنه بدون آگاهی از کاری که داره می کنه). همچنین به شخصی که فقط از کد های دیگران استفاده می کنه تا کارشو راه بندازه (بدون این که دقیقا از طرز کار اون کد ها اطلاعی داشته باشه) اطلاق میشه.
Hacker یا هکر یا نفودگر به صورت غلط جا افتاده که به اشخاصی گفته میشه که به وب سایت ها و سرور ها نفوذ کرده و اطلاعاتی رو کسب می کنه یا رمز عبور افراد رو می دزده؛ اما معنی واقعی این واژه همونطور که در دیکشنری هکر ها (Hacker’s Jargon) تعریف شده، چیز دیگریست (http://www.catb.org/jargon/html/H/hacker.html)
هکر به شخصی گفته میشه که بسیار کنجکاو هست و دوست داره در مورد ابزاری که باهاشون سر و کار داره همه چیز رو بدونه (نه فقط در رشتۀ کامپیوتر). این افراد حتی ممکنه دنبال اطلاعاتی برن که سود چندانی براشون نداشته باشه، اما غریزۀ کنجکاوی و حس فضولی شون باعث میشه که شهوت زیادی برای دونستن داشته باشن و علاوه بر مطالعۀ بسیار همیشه در حال تجربه های جدید هستن. در واقع هکر واقعی به دنبال کسب دانش و اطلاعات هست، نه صدمه زدن به داده های دیگران. یک هکر دوست داره همۀ حالات ممکن رو تست کنه؛ دوست داره چیزایی رو که گفته شده انجام ندید، انجام بده تا خودش تجربه کنه.
Cracker معمولا به شخصی گفته میشه که سعی در شکستن محدودیت های نرم افزاری داره؛ مثلا نصب و استفاده از نرم افزاری که در حالت عادی باید بهش شماره سریال بدید؛ خیلی ها وقتی می شنون من متخصص امنیت اطلاعات هستم، فکر می کنن یا قفل می شکونم! یا تخصصم جلوگیری از شکستن قفل های نرم افزاریست.
Phreaker شخصی هست که در مورد سیستم های مخابراتی (تلفن، موبایل، فرستنده ها و گیرنده ها ....) مطالعه کرده و با اون ها ور میره. این ها جزو قدیمی ترین انواع هکر ها بودن (مثال معروف تن های 2600 هرتز برای تماس های رایگان رو در اینجا بخونید: http://en.wikipedia.org/wiki/Phreaker#2600_Hz)
مثال مشهور دیگر Kevin Poulsen هست که یک بار تمامی خطوط تلفن یک ایستگاه رادیویی در لس آنجلس رو اشغال کرد تا خودش صد و دومین تماس گیرنده و در نتیجه برندۀ پورشه 944 باشه!
(می خواستم از Kevin Mitnick هم مثال بیارم ولی فکر کنم معرف حضور همه هست)
در مورد مثالی که در مورد IE6 زدید بذارید چند نکته رو بگم. اول این که بعضا با لو رفتن سورس کل یا بخشی از یک محصول، آسیب حیاتی ای به اون شرکت زده نشده و همچنان به مسیرش ادامه داده (لو رفتن قسمتی از سورس ویندوز 2000، سورس آنتی ویروس کاسپرسکی 2008 و غیره) ؛ ثانیا آسیب پذیری تقریبا همیشه و برای همۀ برنامه ها وجود داره (مگر این که ایمنی کل عملکرد یک سیستم از نظر ریاضی ثابت شده باشه که تقریبا در عمل امکان پذیر نیست)؛ اتفاقا بعضی وقتا مرور زمان قیمت بعضی اکسپلویت ها رو بالا می بره! (پس از لو رفتن ایمیل های شرکت HBGary توسط هکر های ناشناس، مشخص شد این ها حتی از ویندوز 2000 هم که چندین دفعه توسط مایکروسافت آپدیت شده، اکسپلویت پچ نشده دارن!!! حالا فکر کنید هنوز هم سرور های بسیاری روی این نسخه از ویندوز 2000 قرار دارن که لزوما هم این سرور ها اینترنتی نیستن و ممکنه مثلا در یک کارخونه یا یک مرکز حساس نظامی و فقط به خاطر وابستگی یک نرم افزار حیاتی به اون، در حال سرویس دهی باشن)

mehdi.mousavi
چهارشنبه 01 تیر 1390, 22:41 عصر
لطفا برامون بفرمایید که آیا دسته بندی ای مشخص برای تهدیدهای امنیتی (طبیعتا اونهایی که تا به امروز شناخته شده اند و سازمان ها قادرند تا برای محافظت در برابر اون تهدیدها، خودشون رو از پیش آماده کنن) وجود داره؟ برخی از اونها مانند Infiltration، Pharming، Insider Threats، Phishing، Click Fraud، DoS و ... بیش از دیگر تهدیدها، شناخته شده هستن. ممنون میشم این تهدیدها رو دسته بندی کرده و توضیحی در مورد هر یک ارائه کنید.