انگلیسیفرانسویاسپانیایی

Ad


فاویکون OnWorks

عیب یاب - آنلاین در ابر

Flawfinder را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور عیب یاب است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


نقص یاب - از نظر لغوی نقص های امنیتی بالقوه ("Hit") را در کد منبع پیدا کنید

خلاصه


عیب یاب [--کمک|-h] [- نسخه] [-- لیسترول ها]
[--allowlink] [--followdotdir] [--nolink]
[--patch=نام فایل|-P نام فایل]
[-- ورودی ها|-I] [ --minlevel=X | -m X ] [--مثبت کاذب|-F]
[-- هرگز نادیده نگرفت|-n]
[--regex=الگو | -e الگو]
[--متن نوشته|-c] [--ستون ها|-C] [-- فقط داده ها|-D] [--html|-H] [-- فوری|-i]
[-- تک خطی|-S] [-- حذف کردن] [--ساکت|-Q]
[--loadhitlist=F] [--savehitlist=F] [--diffhitlist=F]
[--] [ منبع رمز پرونده or منبع ریشه فهرست راهنما ]+

شرح


Flawfinder از طریق کد منبع C/C++ به دنبال نقص های امنیتی بالقوه جستجو می کند. به
flawfinder را اجرا کنید، به سادگی لیستی از دایرکتوری ها یا فایل ها را به flawfinder بدهید. برای هر دایرکتوری
داده شده، تمام فایل هایی که دارای پسوند نام فایل C/C++ در آن دایرکتوری هستند (و آن
زیر شاخه ها، به صورت بازگشتی) مورد بررسی قرار خواهند گرفت. بنابراین، برای اکثر پروژه ها، به سادگی ارائه دهید
عیب یاب نام بالاترین دایرکتوری کد منبع (از «.» برای فعلی استفاده کنید
دایرکتوری)، و flawfinder تمام کد منبع C/C++ پروژه را بررسی می کند. اگر شما
فقط می خواهم داشته باشم تغییرات بررسی شده، یک تفاوت یکپارچه از آن تغییرات را ذخیره کنید (ایجاد شده توسط گنو
"diff -u" یا "svn diff" یا "git diff") در یک فایل پچ و از گزینه --patch (-P) استفاده کنید.

Flawfinder لیستی از «Hits» (نقص امنیتی احتمالی) را تهیه می کند که بر اساس ریسک مرتب شده اند. را
خطرناک ترین ضربه ها ابتدا نشان داده می شوند. سطح خطر در داخل براکت نشان داده شده است و متفاوت است
از 0، ریسک بسیار کم، تا 5، ریسک بزرگ. این سطح ریسک نه تنها به
تابع، اما بر روی مقادیر پارامترهای تابع. مثلا ثابت
رشته‌ها معمولاً در بسیاری از زمینه‌ها و در آن‌ها نسبت به رشته‌های کاملاً متغیر ریسک کمتری دارند
در شرایطی که ضربه سطح ریسک کمتری خواهد داشت. Flawfinder درباره gettext می داند (معمولی
کتابخانه برای برنامه‌های بین‌المللی) و رشته‌های ثابتی را که از آن عبور می‌کنند، درمان می‌کند
دریافت متن به گونه ای که گویی رشته های ثابتی هستند. این باعث کاهش تعداد بازدیدهای نادرست می شود
برنامه های بین المللی Flawfinder همین کار را با _T() و انجام می دهد
_TEXT()، ماکروهای رایج مایکروسافت برای مدیریت برنامه های بین المللی. عیب یاب
بیشتر متن های داخل نظرات و رشته ها را به درستی نادیده می گیرد. به طور معمول عیب یاب همه را نشان می دهد
ضربه هایی با سطح ریسک حداقل 1، اما می توانید از گزینه --minlevel فقط برای نمایش استفاده کنید
در صورت تمایل، با سطوح خطر بالاتر برخورد کنید. توضیحات مربوطه نیز به Common مربوطه توجه داشته باشند
شناسه(های) شمارش ضعف (CWE) در داخل پرانتز، همانطور که در زیر بحث شده است. عیب یاب
به طور رسمی با CWE سازگار است.

نه هر ضربه ای در واقع یک آسیب پذیری امنیتی است و نه هر آسیب پذیری امنیتی
لزوما یافت می شود. با این وجود، عیب یاب می تواند کمکی در یافتن و از بین بردن آن باشد
آسیب پذیری های امنیتی یک روش رایج برای استفاده از عیب یاب این است که ابتدا از Flawfinder استفاده کنید
مجموعه ای از کد منبع و بررسی موارد پرخطر. سپس از --inputs برای بررسی استفاده کنید
مکان های ورودی، و بررسی کنید تا مطمئن شوید که فقط مقادیر ورودی قانونی و ایمن هستند
پذیرفته شده از کاربران غیرقابل اعتماد

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

· // عیب یاب: نادیده گرفتن

· /* عیب یاب: نادیده گرفتن */

برای سازگاری، می‌توانید «Flawfinder:» را با «ITS4:» یا «RATS:» جایگزین کنید.
نظرات با فرمت خاص از آنجایی که ممکن است چنین خطوطی اشتباه باشد، می توانید استفاده کنید
گزینه --neverignore، که باعث می شود عیب یاب هرگز هیچ خطی را نادیده نگیرد
دستورالعمل های نظرات می گویند (به طور گیج کننده تر، --neverignore نادیده گرفته ها را نادیده می گیرد).

Flawfinder از یک پایگاه داده داخلی به نام "Ruleset" استفاده می کند. مجموعه قوانین مشخص می کند
عملکردهایی که از علل شایع نقص امنیتی هستند. مجموعه قوانین استاندارد شامل یک بزرگ است
تعدادی از مشکلات بالقوه مختلف، از جمله هر دو موضوع کلی که می تواند بر هر کدام تأثیر بگذارد
برنامه C/C++، و همچنین تعدادی از عملکردهای خاص یونیکس و ویندوز که هستند
به خصوص مشکل ساز گزینه --listrules لیستی از قوانین جاری و
سطوح ریسک پیش فرض آنها همانطور که در بالا ذکر شد، هر نقص امنیتی بالقوه ای که در یک داده پیدا می شود
فایل کد منبع (منطبق با یک ورودی در مجموعه قوانین) "Hit" نامیده می شود و مجموعه ای از
بازدیدهایی که در طول اجرای هر برنامه خاصی پیدا می‌شوند، «Hitlist» نامیده می‌شوند
را می توان ذخیره کرد (با استفاده از --savehitlist)، بارگذاری مجدد برای نمایش مجدد (با استفاده از --loadhitlist) و
شما می توانید فقط بازدیدهایی را نشان دهید که با اجرای دیگری متفاوت هستند (با استفاده از --diffhitlist).

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

هر نام فایلی که در خط فرمان داده شود بررسی می شود (حتی اگر نام معمولی نداشته باشد
پسوند نام فایل C/C++)؛ بنابراین شما می توانید flawfinder را مجبور کنید تا هر فایل خاصی را که شما دارید بررسی کند
میل. هنگام جستجوی بازگشتی دایرکتوری ها، عیب یاب فقط باز می شود و بررسی می کند
فایل های معمولی که پسوند نام فایل C/C++ دارند. Flawfinder فرض می کند که فایل ها هستند
اگر فایل‌های C/C++ دارای پسوندهای ".c"، ".h"، ".ec"، ".ecp"، ".pgc"، ".C"، ".cpp" باشند.
«.CPP»، «cxx.»، «.cc»، «.CC»، «pcc.»، «hpp.»، یا «.H». نام فایل "-" به معنای
ورودی استاندارد برای جلوگیری از مشکلات امنیتی، فایل‌های خاص (مانند فایل‌های ویژه دستگاه
و لوله های نامگذاری شده) همیشه نادیده گرفته می شوند و به طور پیش فرض پیوندهای نمادین حذف می شوند (the
گزینه --allowlink پیوندهای نمادین را دنبال می کند).

پس از لیست بازدیدها، خلاصه‌ای از نتایج ارائه می‌شود (از -D برای حذف آن استفاده کنید
اطلاعات). تعداد بازدیدها، خطوط تحلیل شده (همانطور که توسط wc -l گزارش شده) و
خطوط منبع فیزیکی کد (SLOC) تجزیه و تحلیل شد. یک SLOC فیزیکی یک غیر خالی، غیر
خط نظر سپس تعداد بازدیدها در هر سطح را نشان می دهد. توجه داشته باشید که وجود خواهد داشت
هرگز در سطحی پایین تر از minlevel (به طور پیش فرض 1) ضربه نخورید. بنابراین، "[0] 0 [1] 9"
به این معنی که در سطح 0 0 بازدید گزارش شده است و در سطح 1 9 ضربه گزارش شده است
گزارش شده است. سپس تعداد بازدیدها را در یک سطح معین یا بیشتر نشان می دهد (بنابراین سطح 3+
دارای مجموع تعداد بازدیدها در سطوح 3، 4، و 5). بنابراین، یک ورودی از "[0+] 37"
نشان می دهد که در سطح 0 یا بالاتر 37 ضربه وجود داشته است (ورود 0+ همیشه یکسان خواهد بود
به عنوان شماره "Hits" در بالا). تعداد بازدیدها در هر KSLOC در مرحله بعدی نشان داده شده است. این هر یک از «سطح یا
مقادیر بالاتر در 1000 ضرب و تقسیم بر SLOC فیزیکی. اگر پیوندهای نمادین بودند
نادیده گرفته شده، تعداد آن ها گزارش شده است. اگر بازدیدها سرکوب شدند (با استفاده از "نادیده گرفتن"
دستورالعمل در نظرات کد منبع همانطور که در بالا توضیح داده شد)، شماره سرکوب شده گزارش می شود.
حداقل سطح ریسکی که باید در گزارش گنجانده شود نمایش داده می شود. به طور پیش فرض این 1 است
(برای تغییر این مورد از --minlevel استفاده کنید). خلاصه با یادآوری های مهم به پایان می رسد: نه هر ضربه ای
لزوماً یک آسیب پذیری امنیتی است و ممکن است آسیب پذیری های امنیتی دیگری نیز وجود داشته باشد
توسط ابزار گزارش نشده است.

Flawfinder تحت مجوز GNU GPL نسخه 2 یا بالاتر (GPLv2+) منتشر شده است.

Flawfinder مشابه برنامه دیگری به نام ITS4 عمل می کند که به طور کامل منبع باز نیست
نرم افزار (همانطور که در تعریف منبع باز تعریف شده است) و یا نرم افزار رایگان (همانطور که توسط
بنیاد نرم افزار آزاد). نویسنده Flawfinder هرگز کد منبع ITS4 را ندیده است.

مختصر آموزش


در اینجا یک مثال کوتاه از نحوه استفاده از عیب یاب آورده شده است. تصور کنید که C/C++ دارید
کد منبع برنامه ای به نام xyzzy (که ممکن است نوشته باشید یا ننوشته باشید) و
شما به دنبال آسیب پذیری های امنیتی هستید (بنابراین می توانید آنها را قبل از مشتریان برطرف کنید
با آسیب پذیری ها مواجه شوید). برای این آموزش، فرض می کنم که از Unix- استفاده می کنید
مانند سیستم، مانند لینوکس، OpenBSD، یا MacOS X.

اگر کد منبع در زیر شاخه ای به نام xyzzy قرار دارد، احتمالاً با باز کردن a شروع می کنید
پنجره متنی و با استفاده از تنظیمات پیش‌فرض flawfinder، برنامه را آنالیز کرده و گزارش یک
فهرست اولویت‌بندی شده از آسیب‌پذیری‌های امنیتی بالقوه («کمتر» فقط مطمئن می‌شود
نتایج روی صفحه می ماند):
عیب یاب xyzzy | کمتر

در این مرحله، تعداد زیادی ورودی را مشاهده خواهید کرد. هر ورودی یک نام فایل دارد، a
دو نقطه، یک شماره خط، یک سطح خطر در پرانتز (که در آن 5 خطرناک ترین است)، یک دسته،
نام تابع و توضیحی در مورد اینکه چرا عیب یاب فکر می کند خط یک است
آسیب پذیری Flawfinder معمولاً بر اساس سطح ریسک مرتب می‌شود و ابتدا پرخطرترین موارد را نشان می‌دهد.
اگر زمان محدودی دارید، احتمالاً بهتر است روی پرخطرترین موارد کار کنید و
ادامه دهید تا زمانی که زمان شما تمام شود. اگر می خواهید نمایش را به خطرات محدود کنید فقط با یک
سطح ریسک معین یا بالاتر، از گزینه --minlevel استفاده کنید. اگر در حال گرفتن یک
تعداد فوق العاده ای از موارد مثبت کاذب زیرا نام متغیرها خطرناک به نظر می رسد
نام توابع، از گزینه -F برای حذف گزارش های مربوط به آنها استفاده کنید. اگه نمیفهمی
پیام خطا، لطفا به اسنادی مانند نوشته امن برنامه ها برای لینـوکــس و
یونیکس چگونهhttp://www.dwheeler.com/secure-programs⟩ در http://www.dwheeler.com/secure-
برنامه هایی که اطلاعات بیشتری در مورد نوشتن برنامه های ایمن ارائه می دهند.

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

اگر تشخیص داده اید که برخی از خطوط واقعاً مشکلی ندارند، و از آن مطمئن هستید، می توانید
درست قبل یا روی خط توهین آمیز یک نظر مانند درج کنید
/* عیب یاب: نادیده گرفتن */
تا از نمایش آنها در خروجی جلوگیری شود.

پس از انجام این کار، باید به عقب برگردید و ورودی های برنامه را جستجو کنید تا بسازید
مطمئن شوید که برنامه به شدت هر یک از ورودی های نامعتبر خود را فیلتر می کند. عیب یاب می تواند
بسیاری از ورودی های برنامه را با استفاده از گزینه --inputs شناسایی کنید، مانند این:
عیب یاب -- ورودی xyzzy

Flawfinder می تواند به خوبی با ویرایشگرهای متن و محیط های توسعه یکپارچه ادغام شود.
برای اطلاعات بیشتر به نمونه ها مراجعه کنید

Flawfinder شامل بسیاری از گزینه های دیگر، از جمله مواردی برای ایجاد نسخه های HTML است
خروجی (مفید برای نمایشگرهای زیباتر). بخش بعدی آن گزینه ها را در ادامه توضیح می دهد
جزئیات

OPTIONS


Flawfinder دارای تعدادی گزینه است که می توان آنها را به گزینه هایی دسته بندی کرد که خود را کنترل می کنند
اسناد، داده های ورودی را انتخاب کنید، انتخاب کنید کدام بازدیدها نمایش داده شوند، فرمت خروجی را انتخاب کنید،
و مدیریت hitlist را انجام دهید. Flawfinder از نحو استاندارد تعریف شده در
POSIX (نسخه 7، نسخه 2013) بخش "کنوانسیون های مفید". همچنین از گنو پشتیبانی می کند
گزینه های طولانی (گزینه های دو خط تیره فرم --انتخاب) همانطور که در گنو C کتابخانه
ارجاع دستی "قراردادهای نحوی استدلال برنامه" و گنو برنامه نویسی استانداردها
"استانداردهای رابط های خط فرمان". آرگومان های گزینه طولانی را می توان به عنوان ارائه کرد
«--name=value» یا «--name value». دسترسی به برخی گزینه ها فقط با استفاده از گزینه های بیشتر امکان پذیر است
قراردادهای گزینه طولانی گنو قابل خواندن. گزینه های رایج نیز توسط قدیمی ترها پشتیبانی می شوند
کنوانسیون گزینه تک حرفی

مستندات
--کمک

-h نمایش اطلاعات استفاده (راهنما).

- نسخه (فقط) شماره نسخه را نشان می دهد و خارج می شود.

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

انتخاب ورودی داده ها
--allowlink اجازه استفاده از پیوندهای نمادین معمولاً پیوندهای نمادین نادیده گرفته می شوند. نکن
اگر در حال تجزیه و تحلیل کد توسط دیگران هستید از این گزینه استفاده کنید. مهاجمان می توانند کارهای زیادی انجام دهند
چیزهایی که برای تجزیه و تحلیل با فعال کردن این گزینه مشکل ایجاد می کند. برای
به عنوان مثال، یک مهاجم می تواند پیوندهای نمادین را به فایل هایی مانند / etc / passwd
(نشت اطلاعات در مورد فایل) و یا ایجاد یک حلقه دایره ای، که
باعث می شود که عیب یاب "برای همیشه" اجرا شود. مشکل دیگر با فعال کردن این
گزینه این است که اگر یک فایل با استفاده از نماد چندین بار ارجاع داده شود
پیوندها، چندین بار تجزیه و تحلیل می شود (و بنابراین چندین بار گزارش می شود).
توجه داشته باشید که Flawfinder قبلاً محافظت در برابر پیوندهای نمادین را شامل می شود
به انواع فایل های خاص مانند انواع فایل های دستگاه (به عنوان مثال، /dev/zero یا
ج:\mystuff\com1). توجه داشته باشید که برای flawfinder نسخه 1.01 و قبل از آن، این بود
پیشفرض.

--followdotdir
دایرکتوری هایی را وارد کنید که نام آنها با "." شروع می شود. به طور معمول چنین دایرکتوری هایی هستند
نادیده گرفته می شود، زیرا معمولاً شامل داده های خصوصی کنترل نسخه (مانند
git/ یا .svn/)، تنظیمات، و غیره.

--nolink نادیده گرفته شد. از لحاظ تاریخی این پیوندهای نمادین زیر را غیرفعال کرده است. این رفتار
اکنون پیش فرض است.

--patch=پچ فایل

-P پچ فایل
فایل ها یا دایرکتوری های انتخاب شده را بررسی کنید، اما بازدیدها را فقط در خطوطی گزارش کنید
توسط فایل پچ داده شده اضافه یا اصلاح می شوند. فایل پچ باید در a باشد
فرمت تفاوت یکپارچه شناخته شده (به عنوان مثال، خروجی گنو "diff -u old new"،
"svn diff" یا "git diff [commit]"). Flawfinder فرض می کند که پچ دارد
قبلاً روی پرونده ها اعمال شده است. فایل پچ می تواند شامل تغییراتی نیز باشد
فایل های نامربوط (به سادگی نادیده گرفته می شوند). شماره خطوط داده شده در
فایل پچ برای تعیین اینکه کدام خطوط تغییر کرده اند استفاده می شود، بنابراین اگر دارید
از زمانی که فایل پچ ایجاد شده است، فایل ها را تغییر داده، فایل پچ را دوباره تولید کنید
اولین. مراقب باشید که نام فایل های فایل های جدید در فایل پچ داده شده باشد
باید دقیقا مطابقت داشته باشد، از جمله حروف بزرگ/کوچک، پیشوند مسیر، و دایرکتوری
جداکننده (\ در مقابل /). فقط فرمت تفاوت یکپارچه پذیرفته می شود (GNU diff, svn
diff، و خروجی git diff مشکلی ندارد). اگر فرمت دیگری دارید، دوباره
ابتدا آن را بازسازی کنید فقط بازدیدهایی که روی خطوط تغییر یافته حاصل اتفاق می‌افتند، یا
بلافاصله در بالا و پایین آنها گزارش می شود. این گزینه دلالت دارد
-- هرگز نادیده نگرفت.

انتخاب بازدید به نمایش دادن
-- ورودی ها

-I فقط توابعی را نشان دهید که داده ها را از خارج از برنامه دریافت می کنند. این نیز تنظیم می شود
Minlevel تا 0.

--minlevel=X

-m X حداقل سطح ریسک را برای گنجاندن در فهرست آمار بر روی X تنظیم کنید. این می تواند از 0 باشد (`` خیر
ریسک") تا 5 ("حداکثر ریسک")؛ پیش فرض 1 است.

--مثبت کاذب

-F بازدیدهایی که احتمالاً مثبت کاذب هستند را وارد نکنید. در حال حاضر، این بدان معنی است
که نام توابع نادیده گرفته می شود اگر "(" به دنبال آنها نباشد و این
اعلان آرایه های کاراکتر یادداشت نمی شود. بنابراین، اگر شما یک متغیر استفاده کنید
به نام "دسترسی" در همه جا، این ارجاع به این معمولی را حذف می کند
متغیر. این پیش‌فرض نیست، زیرا این احتمال را نیز افزایش می‌دهد
از دست دادن ضربات مهم؛ به طور خاص، نام توابع در #define عبارت ها و فراخوانی ها
از طریق نشانگرهای تابع از دست خواهد رفت.

-- هرگز نادیده نگرفت

-n هرگز مسائل امنیتی را نادیده نگیرید، حتی اگر یک دستورالعمل "نادیده گرفتن" در یک
اظهار نظر.

--regexp=الگو

-e الگو
فقط بازدیدها را با متنی گزارش کنید که با الگوی عبارت منظم PATTERN مطابقت دارد.
به عنوان مثال، برای گزارش فقط بازدیدهای حاوی متن "CWE-120"، از ``--regex استفاده کنید
CWE-120. این نام های پرچم گزینه ها همان grep هستند.

انتخاب تولید قالب
--ستون ها

-C نمایش شماره ستون (و همچنین نام فایل و شماره خط) هر ضربه.
این بعد از شماره خط با اضافه کردن یک دونقطه و شماره ستون نشان داده می شود
خط (اولین کاراکتر در یک خط ستون شماره 1 است). این مفید است
برای ویرایشگرهایی که می توانند به ستون های خاص پرش کنند یا برای ادغام با سایر ستون ها
ابزارها (مانند ابزارهایی برای فیلتر کردن بیشتر موارد مثبت کاذب).

--متن نوشته

-c زمینه را نشان دهید، به عنوان مثال، خط دارای "ضربه" / نقص بالقوه است. به طور پیش فرض
خط بلافاصله پس از اخطار نشان داده می شود.

-- فقط داده ها

-D سرصفحه و پاورقی را نمایش ندهید. از این به همراه ---quiet to see just استفاده کنید
خود داده ها

--html

-H خروجی را به جای متن ساده به صورت HTML فرمت کنید.

-- فوری

-i فوراً بازدیدها را نمایش دهید (فقط تا پایان منتظر نمانید).

-- تک خطی

-S نمایش به عنوان یک خط خروجی متن برای هر ضربه. برای تعامل مفید است
با ابزارهای کامپایل

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

--ساکت

-Q در حالی که اطلاعات وضعیت (یعنی کدام فایل ها در حال بررسی هستند) نمایش داده نشود
تحلیل در حال انجام است

فهرست آماری مدیریت
--savehitlist=F
تمام بازدیدهای حاصل ("Hitlist") را در F ذخیره کنید.

--loadhitlist=F
به جای تجزیه و تحلیل برنامه های منبع، فهرست آماری را از F بارگیری کنید. هشدار: انجام دهید نه
لیست های آماری را از منابع نامعتبر بارگیری کنید (به دلایل امنیتی).

--diffhitlist=F
نمایش فقط بازدید (بارگذاری یا تجزیه و تحلیل) غیر در F. F احتمالا ایجاد شده است
قبلاً از --savehitlist استفاده می کرد. هشدار: انجام دهید نه لیست های آماری را از نامعتبر متفاوت کنید
منابع (به دلایل امنیتی). اگر گزینه --loadhitlist ارائه نشده باشد،
این موارد بازدیدها را در فایل های کد منبع تجزیه و تحلیل شده نشان می دهد که نبودند
قبلاً در F ذخیره شده است. اگر همراه با --loadhitlist استفاده شود، این نشان می دهد
در فهرست ضربه‌ای بارگذاری‌شده، نه در F. الگوریتم تفاوت است
محافظه کار؛ بازدیدها فقط در صورتی "یکسان" در نظر گرفته می شوند که یکسان باشند
نام فایل، شماره خط، موقعیت ستون، نام تابع و سطح ریسک.

مثال ها


در اینجا نمونه های مختلفی از نحوه فراخوانی عیب یاب آورده شده است. اولین نمونه ها گوناگونی را نشان می دهند
گزینه های ساده خط فرمان Flawfinder طوری طراحی شده است که به خوبی با ویرایشگرهای متن و
محیط های توسعه یکپارچه، بنابراین بخش های بعدی نحوه ادغام flawfinder را نشان می دهد
به vim و emacs.

ساده خط فرمان گزینه های
عیب یاب /usr/src/linux-3.16
تمام فایل های C/C++ در پوشه /usr/src/linux-3.16 و تمام فایل های آن را بررسی کنید.
دایرکتوری های فرعی (به صورت بازگشتی)، گزارش از تمام بازدیدهای یافت شده. به صورت پیش فرض
flawfinder پیوندهای نمادین و دایرکتوری هایی با نام هایی که با آنها شروع می شود را نادیده می گیرد
یک دوره.

عیب یاب --minlevel=4 .
تمام فایل های C/C++ در دایرکتوری فعلی و زیر شاخه های آن را بررسی کنید
(به صورت بازگشتی)؛ فقط آسیب‌پذیری‌های سطح 4 و بالاتر (دو بالاترین را گزارش کنید
سطوح خطر).

عیب یاب -- ورودی ها mydir
تمام فایل های C/C++ را در mydir و زیرشاخه های آن (به صورت بازگشتی) بررسی کنید و
گزارش عملکردهایی که ورودی ها را می گیرند (به طوری که می توانید مطمئن شوید که آنها را فیلتر می کنند
ورودی های مناسب).

عیب یاب -- هرگز نادیده نگرفت mydir
تمام فایل های C/C++ را در دایرکتوری mydir و زیر شاخه های آن بررسی کنید.
از جمله حتی بازدیدهایی که برای نادیده گرفتن در نظرات کد مشخص شده اند.

عیب یاب -QD mydir
mydir را بررسی کنید و فقط نتایج واقعی را گزارش کنید (حذف هدر و
پاورقی خروجی). اگر خروجی به داخل لوله شود، این فرم مفید است
ابزارهای دیگر برای تحلیل بیشتر -C (--ستون) و -S (--تک خط)
اگر داده‌ها را در ابزارهای دیگر قرار دهید، گزینه‌ها نیز می‌توانند مفید باشند.

عیب یاب -QDSC mydir
mydir را بررسی کنید و فقط نتایج واقعی را گزارش کنید (بدون سرصفحه یا پاورقی). هر یک
ضربه در یک خط گزارش می شود و شماره ستون گزارش می شود. این می تواند یک
اگر خروجی عیب یاب را به ابزارهای دیگر تغذیه می کنید، دستور مفیدی دارد.

عیب یاب --ساکت --html --متن نوشته mydir > results.html
تمام فایل های C/C++ را در دایرکتوری mydir و زیر شاخه های آن بررسی کنید و
یک نسخه فرمت شده HTML از نتایج را تولید کنید. مدیریت کد منبع
سیستم هایی (مانند SourceForge و Savannah) ممکن است از دستوری مانند این استفاده کنند.

عیب یاب --ساکت --savehitlist ذخیره شده است *.[ch]
همه فایل‌های .c و h را در فهرست فعلی بررسی کنید. در مورد آن گزارش ندهید
وضعیت پردازش، و فهرست آماری حاصل (مجموعه همه بازدیدها) را در آن ذخیره کنید
فایل saved.hits.

عیب یاب -- diffhitlist ذخیره شده است *.[ch]
همه فایل‌های .c و .h را در فهرست فعلی بررسی کنید و هر ضربه‌ای را نشان دهید
قبلاً در فایل saved.hits نبودند. این را می توان برای نشان دادن فقط استفاده کرد
آسیب‌پذیری‌های «جدید» در یک برنامه اصلاح‌شده، اگر saved.hits از آن ایجاد شده باشد
نسخه قدیمی برنامه در حال تجزیه و تحلیل

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

عیب یاب -- رژکس "CWE-120|CWE-126" src /
دایرکتوری را بررسی کنید " به صورت بازگشتی، اما فقط موارد بازدید CWE-120 یا را گزارش کنید
CWE-126 اعمال شود.

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

ابتدا باید از Flawfinder فراخوانی کنید تا لیستی از بازدیدها ایجاد کنید و دو راه برای این کار وجود دارد
این کار را انجام دهید راه اول این است که ابتدا flawfinder را راه اندازی کنید و سپس (با استفاده از خروجی آن) فراخوانی کنید
vim. راه دوم این است که vim را شروع کنید (یا به اجرا ادامه دهید) و سپس عیب یاب را فراخوانی کنید
(معمولا از داخل vim).

برای راه اول، Flawfinder را اجرا کنید و خروجی آن را در مقداری FLAWFILE ذخیره کنید (مثلاً "فلاوفایل")،
سپس vim را با استفاده از گزینه -q فراخوانی کنید، مانند این: "vim -q flawfile". راه دوم
(شروع عیب یاب بعد از شروع vim) را می توان چندین راه انجام داد. یکی استناد کردن است
flawfinder با استفاده از دستور shell، ":!flawfinder-command > FLAWFILE"، سپس آن را با
دستور ":cf FLAWFILE". راه دیگر این است که دستور flawfinder را در خود ذخیره کنید
makefile (مثلاً یک شبه دستور مانند "فلاش")، و سپس ":make flaw" را اجرا کنید.

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

عیب یاب -SQD .

اکنون می توانید از دستورات ویرایشی مختلف برای مشاهده نتایج استفاده کنید. دستور ":cn" نمایش داده می شود
ضربه بعدی؛ ":cN" ضربه قبلی را نمایش می دهد و ":cr" به اولین ضربه برمی گردد.
":copen" پنجره ای را برای نمایش لیست بازدیدهای فعلی باز می کند که "quickfix" نام دارد
window"؛ ":cclose" پنجره Quickfix را می بندد. اگر بافر در پنجره استفاده شده باشد
تغییر کرد، و خطا در فایل دیگری است، پرش به خطا ناموفق خواهد بود. تو باید
مطمئن شوید که پنجره حاوی یک بافر است که می توان قبل از پرش به a رها کرد
فایل جدید، با ذخیره کردن فایل، بگویید؛ این از دست دادن تصادفی داده ها جلوگیری می کند.

فراخوانی از جانب ایمکس
ویرایشگر متن / سیستم عامل emacs شامل "حالت grep" و "حالت کامپایل" است.
مکانیسم هایی که به خوبی با عیب یاب کار می کنند و مشاهده پیام های هشدار دهنده و پرش را آسان می کنند
به کد منبع مربوطه بروید و هر مشکلی را که پیدا کردید برطرف کنید.

ابتدا باید از Flawfinder فراخوانی کنید تا لیستی از پیام های هشدار ایجاد کنید. شما می توانید استفاده کنید
"grep mode" یا "compile mode" برای ایجاد این لیست. اغلب "حالت grep" راحت تر است.
حالت کامپایل را دست نخورده باقی می‌گذارد، بنابراین می‌توانید پس از تغییر به راحتی دوباره کامپایل کنید
چیزی با این حال، اگر می خواهید به موقعیت ستون دقیق یک ضربه پرش کنید، کامپایل کنید
حالت ممکن است راحت تر باشد زیرا emacs می تواند از خروجی ستون عیب یاب استفاده کند
مستقیماً بدون هیچ گونه پیکربندی خاصی به مکان مناسب بپرید.

برای استفاده از حالت grep، دستور "Mx grep" را وارد کرده و سپس عیب یاب مورد نیاز را وارد کنید
فرمان برای استفاده از حالت کامپایل، دستور Mx compile را وارد کرده و مورد نیاز را وارد کنید
دستور عیب یاب این یک دستور متا کلید است، بنابراین باید از کلید متا برای آن استفاده کنید
صفحه کلید شما (این معمولاً کلید ESC است). مانند تمام دستورات emacs، شما نیاز دارید
پس از تایپ "grep" یا "compile" RETURN را فشار دهید. بنابراین در بسیاری از سیستم ها، حالت grep است
با تایپ ESC xgrep RETURN فراخوانی می شود.

سپس باید دستوری را وارد کنید و در صورت لزوم هر آنچه قبلاً وجود داشت را حذف کنید. آ
دستور قابل قبول این است:

عیب یاب -SQDC .

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

هنگامی که از Flawfinder فراخوانی کردید، می توانید از emacs برای پرش در نتایج آن استفاده کنید. در
دستور Cx ` (کنترل-x backtick) برای هشدار بعدی از محل کد منبع بازدید می کند
پیام Cu Cx ` (control-u control-x backtick) از ابتدا راه اندازی مجدد می شود. تو می توانی
برای هر پیام خطای خاصی با رفتن به آن پیغام ضربه خورده از منبع بازدید کنید
بافر *compilation* یا *grep* buffer و تایپ کلید بازگشت. (نکته فنی: در
بافر کامپایل، این خطای compile-goto را فراخوانی می کند.) همچنین می توانید روی Mouse-2 کلیک کنید.
روی پیغام خطا را فشار دهید (نیازی ندارید ابتدا به بافر *compilation* بروید).

اگر می خواهید از حالت grep برای پرش به ستون های خاصی از یک ضربه استفاده کنید، باید این کار را انجام دهید
به خصوص emacs را برای انجام این کار پیکربندی کنید. برای انجام این کار، متغیر emacs "grep-regexp-" را تغییر دهید.
alist". این متغیر به Emacs می گوید که چگونه خروجی یک فرمان "grep" را تجزیه کند، مشابه
متغیر "compilation-error-regexp-alist" که فرمت های مختلف خطای کامپایل را فهرست می کند.
پیام ها.

فراخوانی از جانب مجتمع پروژه محیط ها (IDE)
برای (سایر) IDE ها، با مجموعه پلاگین های IDE خود مشورت کنید.

مشترک ضعف شمارش (CWE)


Common Weakness Enumeration (CWE) "لیست رسمی یا فرهنگ لغت نرم افزارهای رایج است
نقاط ضعفی که می تواند در معماری، طراحی، کد یا پیاده سازی نرم افزار رخ دهد
می تواند منجر به آسیب پذیری های امنیتی قابل بهره برداری شود... ایجاد شده برای خدمت به عنوان یک زبان مشترک
برای توصیف ضعف های امنیتی نرم افزار" (http://cwe.mitre.org/about/faq.html) برای
اطلاعات بیشتر در مورد CWE ها را ببینید http://cwe.mitre.org.

Flawfinder از CWE پشتیبانی می کند و رسماً با CWE سازگار است. به طور معمول توضیحات را بزنید
در جایی که وجود دارد، یک شناسه Common Weakness Enumeration (CWE) در پرانتز قرار دهید
به عنوان یک CWE مرتبط شناخته شده است. به عنوان مثال، بسیاری از بازدیدهای مربوط به بافر ذکر شده است
CWE-120، شناسه CWE برای "کپی بافر بدون بررسی اندازه ورودی" (معروف به
"سرریز بافر کلاسیک"). در چند مورد ممکن است بیش از یک شناسه CWE فهرست شود.
گزارش HTML همچنین شامل پیوندهای فرامتن به تعاریف CWE میزبانی شده در MITRE است. که در
به این ترتیب، عیب یاب برای برآورده کردن نیاز CWE-Output طراحی شده است.

بسیاری از CWE های گزارش شده توسط flawfinder در لیست 25 برتر CWE/SANS در سال 2011 شناسایی شده اند.
(http://cwe.mitre.org/top25/). بسیاری از مردم می خواهند CWE ها را در این لیست جستجو کنند،
مانند CWE-120 (سرریز بافر کلاسیک)، هنگامی که عیب یاب به یک CWE که بیشتر
عمومی‌تر از ۲۵ مورد برتر، آن را به‌عنوان کلی‌تر: خاص‌تر فهرست می‌کند (به عنوان مثال،
CWE-119:CWE-120)، که در آن به طور کلی نقشه برداری واقعی است. اگر عیب یاب به بیشتر نقشه می‌دهد
مورد خاص CWE که یک مورد خاص از 25 مورد برتر است، در فرم ذکر شده است
top-25/specific more (به عنوان مثال، CWE-362/CWE-367)، که در آن نقشه برداری واقعی خاص تر است
ورودی CWE اگر همان ورودی به چندین CWE نگاشت شود، CWE ها با کاما از هم جدا می شوند
(این اغلب با CWE-20، اعتبار سنجی ورودی نادرست رخ می دهد). این جستجو را ساده می کند
CWE های خاص

CWE نسخه 2.7 (منتشر شده در 23 ژوئن 2014) برای نقشه برداری استفاده شد. CWE فعلی
نقشه برداری خاص ترین CWE را انتخاب می کند که ابزار می تواند تعیین کند. در تئوری، اکثر CWE
عناصر امنیتی (امضاها/الگوهایی که ابزار جستجو می کند) از نظر تئوری می تواند باشد
به CWE-676 (استفاده از عملکرد بالقوه خطرناک) نگاشت شده است، اما چنین نقشه برداری نمی تواند باشد.
مفید بنابراین، نگاشتهای خاص تری در جایی که بتوان آن را یافت ترجیح داده شد. عیب یاب
ابزار تحلیل واژگانی است. در نتیجه، غیر عملی است که آن را خاص تر از
نگاشت هایی که در حال حاضر اجرا شده اند. این همچنین به این معنی است که بعید به نظر می رسد نیاز زیادی داشته باشد
به روز رسانی برای ارز نقشه; به سادگی اطلاعات کافی برای اصلاح به a را ندارد
سطح دقیق CWE که تغییرات CWE معمولاً بر آن تأثیر می گذارد. لیست شناسه های CWE
به طور خودکار با استفاده از "make show-cwes" تولید شد، بنابراین اطمینان وجود دارد که این لیست وجود دارد
درست است. لطفاً در صورت یافتن مشکلات نقشه برداری CWE را به عنوان باگ گزارش دهید.

Flawfinder ممکن است نتواند یک آسیب‌پذیری را پیدا کند، حتی اگر Flawfinder یکی از این CWE را پوشش دهد.
نقاط ضعف. با این حال، flawfinder آسیب‌پذیری‌های فهرست‌شده توسط CWE‌هایی را که پوشش می‌دهد، پیدا می‌کند.
و در بسیاری از موارد خطوط بدون آن آسیب پذیری ها را گزارش نمی کند. بنابراین، همانطور که
برای هر ابزاری که قصد سازگاری با CWE را دارد، flawfinder دارای نرخ نادرست است
مثبت کمتر از 100٪ و نرخ منفی کاذب کمتر از 100٪. عیب یاب تقریبا
همیشه هر زمان که با یک عنصر امنیتی CWE مطابقت پیدا کند گزارش می دهد (یک امضا/الگوی به عنوان
در پایگاه داده آن تعریف شده است)، اگرچه ساختارهای مبهم خاصی می توانند باعث شکست آن شوند (به اشکالات مراجعه کنید
در زیر).

Flawfinder می تواند در مورد CWE های زیر گزارش دهد (اینها CWE هایی هستند که flawfinder پوشش می دهد.
"*" کسانی را که در لیست 25 برتر CWE/SANS قرار دارند نشان می دهد):

· CWE-20: اعتبار سنجی ورودی نادرست

· CWE-22: محدودیت نامناسب نام مسیر به فهرستی محدود («پیمایش مسیر»)

· CWE-78: خنثی سازی نادرست عناصر ویژه مورد استفاده در یک فرمان سیستم عامل (`` فرمان OS
تزریق'')*

· CWE-119: محدودیت نادرست عملیات در محدوده بافر حافظه (یک
والد CWE-120*، بنابراین به عنوان CWE-119:CWE-120 نشان داده می شود.

· CWE-120: کپی بافر بدون بررسی اندازه ورودی ("سرریز بافر کلاسیک")*

· CWE-126: بافر بیش از حد خوانده می شود

· CWE-134: رشته فرمت کنترل نشده*

· CWE-190: Integer Overflow یا Wraparound*

· CWE-250: اجرا با امتیازات غیر ضروری

· CWE-327: استفاده از الگوریتم رمزنگاری شکسته یا خطرناک*

· CWE-362: اجرای همزمان با استفاده از منابع مشترک با همگام سازی نادرست
("شرایط مسابقه")

· CWE-377: فایل موقت ناامن

· CWE-676: استفاده از عملکرد بالقوه خطرناک*

· CWE-732: تخصیص نادرست مجوز برای منبع حیاتی*

· CWE-785: استفاده از تابع دستکاری مسیر بدون بافر حداکثر اندازه (کودک
CWE-120*، بنابراین به عنوان CWE-120/CWE-785 نشان داده می شود)

· CWE-807: تکیه بر ورودی های غیرقابل اعتماد در یک تصمیم امنیتی*

· CWE-829: گنجاندن عملکرد از حوزه کنترل غیرقابل اعتماد *

با استفاده از گزینه "--regex" (-e) می توانید زیر مجموعه خاصی از CWE ها را برای گزارش انتخاب کنید.
این گزینه یک عبارت منظم را می پذیرد، بنابراین می توانید چندین CWE را انتخاب کنید، به عنوان مثال، ``--regex
"CWE-120|CWE-126"''. اگر چندین CWE را با "|" در یک خط فرمان انتخاب کنید، این کار را خواهید کرد
معمولاً باید پارامترها را نقل قول کرد (زیرا یک «|» بدون نقل قول نماد لوله است.
Flawfinder برای برآوردن نیاز CWE-Searchable طراحی شده است.

اگر هدف شما گزارش زیرمجموعه ای از CWE است که در یک فایل فهرست شده است، می توان به آن دست یافت
در یک سیستم یونیکس مانند با استفاده از گزینه "--regex" با نام مستعار "-e". فایل باید داخل باشد
قالب بیان منظم برای مثال، ``flawfinder -e $(cat file1)'' فقط گزارش می دهد
بازدیدهایی که با الگوی "file1" مطابقت داشتند. اگر فایل 1 حاوی "CWE-120|CWE-126" بود
فقط بازدیدهای منطبق با آن CWE را گزارش می کند.

لیستی از تمام عناصر امنیتی CWE (امضاها/الگوهایی که عیب یاب به دنبال آنهاست)
با استفاده از گزینه "--listrules" قابل یافتن است. هر خط نشانه امضا را فهرست می کند
(معمولاً یک نام تابع) که ممکن است منجر به ضربه، سطح ریسک پیش فرض و
هشدار پیش فرض (که شامل شناسه پیش فرض CWE است). برای اکثر اهداف این است
همچنین اگر می خواهید ببینید چه عناصر امنیتی CWE به کدام CWE ها یا همان CWE ها نگاشت می شوند، کافی است
معکوس. برای مثال، برای دیدن بیشتر امضاها (نام توابع) که به آنها نگاشت می شوند
CWE-327، بدون مشاهده سطح ریسک پیش‌فرض یا متن هشدار دقیق، «فلاش یاب» را اجرا کنید
--listurles | grep CWE-327 | برش -f1''. شما همچنین می توانید توکن ها را بدون نقشه برداری CWE مشاهده کنید
به این ترتیب با اجرای ``flawfinder -D --listrules | grep -v CWE-''. با این حال، در حالی که
--listrules تمام عناصر امنیتی CWE را لیست می کند، فقط نگاشت های پیش فرض CWE را لیست می کند
عناصر امنیتی به شناسه های CWE. این شامل اصلاحاتی نمی شود که عیب یاب هستند
اعمال می شود (به عنوان مثال، با بررسی پارامترهای تابع).

اگر می خواهید یک نقشه دقیق و دقیق بین عناصر امنیتی CWE و CWE داشته باشید
شناسه ها، کد منبع عیب یاب (که در توزیع موجود است) بهترین مکان است
برای آن اطلاعات این اطلاعات دقیق در درجه اول مورد توجه آن عده معدودی است
افرادی که سعی می کنند نگاشت های CWE نقص یاب را اصلاح کنند یا به طور کلی CWE را اصلاح کنند.
کد منبع نگاشت بین عناصر امنیتی را به CWE مربوطه مستند می کند
شناسه‌ها و یک فایل پایتون است. مجموعه داده «c_rules» اکثر قوانین را تعریف می کند،
با اشاره به عملکردی که ممکن است اصلاحات بیشتری را انجام دهد. می توانید جستجو کنید
مجموعه داده ای برای نام توابع برای دیدن آنچه که CWE به طور پیش فرض تولید می کند. اگر پارامتر اول باشد
"عادی" نیست، پس این نام یک روش پالایشی پایتون است که ممکن است متفاوت را انتخاب کند
CWE (بسته به اطلاعات اضافی). برعکس، می توانید «CWE-number» را جستجو کنید.
و پیدا کنید که چه عناصر امنیتی (امضاها یا الگوها) به آن شناسه CWE اشاره دارد.
برای اکثر مردم، این بسیار بیشتر از نیاز آنهاست. اکثر مردم فقط می خواهند خود را اسکن کنند
کد منبع برای یافتن سریع مشکلات

امنیت


تمام هدف این ابزار کمک به یافتن آسیب‌پذیری‌ها است تا بتوان آنها را برطرف کرد.
با این حال، توسعه دهندگان و بازبینان باید بدانند که چگونه نرم افزار ایمن را برای استفاده از آن توسعه دهند
ابزار، زیرا در غیر این صورت، a احمق با a ابزار is هنوز a احمق. کتاب من در
http://www.dwheeler.com/secure-programs ممکن است کمک کند

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

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

همیشه باید الف را تحلیل کنید کپی کنید از برنامه منبع در حال تجزیه و تحلیل، نه یک فهرست
زمانی که Flawfinder در حال انجام تجزیه و تحلیل است، می تواند توسط یک توسعه دهنده اصلاح شود. این هست
به خصوص درست است اگر لزوماً به توسعه دهنده برنامه مورد تجزیه و تحلیل اعتماد ندارید.
اگر زمانی که شما در حال تجزیه و تحلیل فایل‌ها هستید، مهاجمی کنترل داشته باشد، مهاجم می‌تواند
برای جلوگیری از قرار گرفتن در معرض یک مشکل امنیتی، فایل ها را جابه جا کنید یا محتوای آنها را تغییر دهید
(یا در جایی که مشکلی وجود ندارد تصور کنید). اگر نگران هستید
برنامه نویسان مخرب شما باید این کار را به هر حال انجام دهید، زیرا پس از تجزیه و تحلیل شما نیاز به انجام آن خواهید داشت
بررسی کنید که کدی که در نهایت اجرا می شود همان کدی است که شما آنالیز کرده اید. همچنین، از استفاده نکنید
- گزینه allowlink در چنین مواردی؛ مهاجمان می توانند پیوندهای نمادین مخرب به فایل ها ایجاد کنند
خارج از منطقه کد منبع آنها (مانند / etc / passwd).

سیستم های مدیریت کد منبع (مانند SourceForge و Savannah) قطعاً در این مورد قرار می گیرند
دسته بندی؛ اگر یکی از آن سیستم ها را نگهداری می کنید، ابتدا فایل ها را کپی یا استخراج کنید
یک فهرست جداگانه (که توسط مهاجمان قابل کنترل نیست) قبل از اجرای flawfinder or
هر ابزار تحلیل کد دیگری

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

سیستم‌های Cygwin (شبیه‌سازی یونیکس در بالای ویندوز) در صورت نقص یاب یک مشکل اضافی دارند
برای تجزیه و تحلیل برنامه هایی که تحلیلگر نمی تواند به آنها اعتماد کند استفاده می شود. مشکل به دلیل طراحی است
نقص در ویندوز (که از MS-DOS به ارث می رسد). در ویندوز و MS-DOS، نام فایل های خاص
(به عنوان مثال، "com1") به طور خودکار توسط سیستم عامل به عنوان نام تلقی می شوند
لوازم جانبی، و این حتی زمانی که یک نام مسیر کامل داده می شود نیز صادق است. بله، ویندوز و MS-DOS
واقعا بد طراحی شده اند Flawfinder با بررسی اینکه چه سیستم فایلی با این مشکل مقابله می کند
شی است، و سپس فقط دایرکتوری ها و فایل های معمولی را باز می کند (و در صورت فعال بودن، پیوندهای نمادین).
متأسفانه، این روی Cygwin کار نمی کند. حداقل در برخی از نسخه های Cygwin در برخی از آنها
نسخه های ویندوز، صرفاً تلاش برای تعیین اینکه آیا یک فایل از نوع دستگاه است می تواند باعث ایجاد این مشکل شود
برنامه برای آویزان کردن یک راه حل حذف یا تغییر نام هر فایلی است که تفسیر می شود
به عنوان نام دستگاه قبل از انجام تجزیه و تحلیل. این به اصطلاح "اسامی رزرو شده" هستند
CON، PRN، AUX، CLOCK$، NUL، COM1-COM9، و LPT1-LPT9، به صورت اختیاری پس از یک برنامه افزودنی
(به عنوان مثال، "com1.txt")، در هر دایرکتوری، و در هر صورت (ویندوز به حروف بزرگ و کوچک حساس نیست).

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

با استفاده از خدمات onworks.net از Flawfinder آنلاین استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

  • 1
    بسیار تمیز
    بسیار تمیز
    یک اسکریپت کاتلین که تمام ساخت‌ها را هسته‌ای می‌کند
    حافظه پنهان از پروژه های Gradle/Android.
    زمانی مفید است که Gradle یا IDE به شما اجازه دهند
    پایین. اسکریپت روی تست شده است
    macOS، اما ...
    دانلود عمیق تمیز
  • 2
    پلاگین Eclipse Checkstyle
    پلاگین Eclipse Checkstyle
    پلاگین Eclipse Checkstyle
    کد جاوا Checkstyle را یکپارچه می کند
    حسابرس به Eclipse IDE. در
    پلاگین بازخورد در زمان واقعی را به شما ارائه می دهد
    کاربر در مورد viol...
    دانلود Eclipse Checkstyle Plug-in
  • 3
    AstrOrzPlayer
    AstrOrzPlayer
    AstrOrz Player یک پخش کننده رسانه رایگان است
    نرم افزار، بخشی مبتنی بر WMP و VLC. این
    پخش کننده به سبک مینیمالیستی است، با
    بیش از ده رنگ تم، و همچنین می توانید
    ب ...
    AstrOrzPlayer را دانلود کنید
  • 4
    movistartv
    movistartv
    Kodi Movistar+ TV بدون ADDON برای XBMC/
    Kodi que Permite disponer de un
    رمزگشایی خدمات IPTV
    Movistar integrado en uno de los
    مراکز رسانه ای ما...
    دانلود movistartv
  • 5
    کد :: بلوک
    کد :: بلوک
    کد::Blocks یک منبع باز و رایگان است،
    کراس پلتفرم C، C++ و Fortran IDE
    ساخته شده برای پاسخگویی به بیشترین نیازها
    از کاربران آن بسیار طراحی شده است
    تمدید می کند ...
    کد دانلود::Blocks
  • 6
    در میان
    در میان
    در میان یا رابط پیشرفته Minecraft
    و Data/Structure Tracking ابزاری برای
    نمای کلی یک Minecraft را نمایش دهید
    جهان، بدون اینکه واقعاً آن را ایجاد کند. آی تی
    می توان ...
    دانلود در میان
  • بیشتر "

دستورات لینوکس

Ad