عربيالفرنسيةالإسبانية

Ad


OnWorks فافيكون

مكتشف العيوب - عبر الإنترنت في السحابة

قم بتشغيل Flawfinder في مزود الاستضافة المجاني OnWorks عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو مستكشف الأخطاء الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة على الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


أداة البحث عن الأخطاء - ابحث بشكل معجمي عن الثغرات الأمنية المحتملة ("الزيارات") في التعليمات البرمجية المصدر

موجز


فايندر [--مساعدة|-h] [--الإصدار] [- قوائم]
[- allowlink] [- اتبع dotdir] [- نولينك]
[- رقعة =اسم الملف|-P اسم الملف]
[- المدخلات|-I] [ - المستوى الأدنى =X | -m X ] [--إيجابية كاذبة|-F]
[- أبدًا|-n]
[--regex =نمط | -e نمط]
[--سياق الكلام|-c] [- الأعمدة|-C] [- البيانات فقط|-D] [--لغة البرمجة|-H] [--مباشر|-i]
[--سطر واحد|-S] [- الوقت] [--هادئ|-Q]
[--loadhitlist =F] [- قائمة حفظ =F] [- diffhitlist =F]
[--] [ مصدر الكود ملف or مصدر جذر دليل ]+

الوصف


يبحث Flawfinder من خلال شفرة مصدر C / C ++ بحثًا عن عيوب أمنية محتملة. ل
تشغيل flawfinder ، ما عليك سوى إعطاء flawfinder قائمة بالأدلة أو الملفات. لكل دليل
نظرًا لأن جميع الملفات التي تحتوي على امتدادات أسماء ملفات C / C ++ في هذا الدليل (وملفات
الدلائل الفرعية ، بشكل متكرر). وبالتالي ، بالنسبة لمعظم المشاريع ، ببساطة أعط
Flawfinder اسم الدليل العلوي لشفرة المصدر (استخدم ". '' للملف الحالي
الدليل) ، وسيقوم برنامج flawfinder بفحص جميع الكود المصدري للمشروع C / C ++. اذا أنت
فقط أريد أن يكون التغييرات تمت مراجعتها ، واحفظ فرقًا موحدًا لتلك التغييرات (تم إنشاؤه بواسطة GNU
"diff -u" أو "svn diff" أو "git diff") في ملف تصحيح واستخدم الخيار --patch (-P).

سوف ينتج Flawfinder قائمة بـ `` الزيارات '' (الثغرات الأمنية المحتملة) ، مرتبة حسب المخاطر ؛ ال
يتم عرض الضربات الأكثر خطورة أولاً. يظهر مستوى المخاطرة داخل أقواس مربعة ويختلف
من 0 ، مخاطرة قليلة جدًا ، إلى 5 ، مخاطرة كبيرة. مستوى المخاطرة هذا لا يعتمد فقط على
وظيفة ، ولكن على قيم معلمات الوظيفة. على سبيل المثال ، ثابت
غالبًا ما تكون السلاسل أقل خطورة من السلاسل المتغيرة تمامًا في العديد من السياقات وفي تلك السياقات
سياقات الإصابة سيكون لها مستوى مخاطر أقل. يعرف Flawfinder عن gettext (شائع
مكتبة للبرامج الدولية) وستتعامل مع السلاسل الثابتة التي تمر عبرها
gettext كما لو كانت أوتارًا ثابتة ؛ هذا يقلل من عدد الضربات الخاطئة في
برامج دولية. سيقوم Flawfinder بعمل نفس الشيء مع _T () و
_TEXT () ، وحدات ماكرو Microsoft الشائعة للتعامل مع البرامج الدولية. فايندر
يتجاهل بشكل صحيح معظم النص داخل التعليقات والسلاسل. عادة يظهر الخلل كل شيء
يضرب بمستوى مخاطرة لا يقل عن 1 ، ولكن يمكنك استخدام خيار المستوى الأدنى للعرض فقط
يضرب بمستويات مخاطر أعلى إذا كنت ترغب في ذلك. كما تلاحظ أوصاف النتائج الشائعة ذات الصلة
معرف (معرفات) تعداد الضعف (CWE) بين قوسين ، كما هو موضح أدناه. فايندر
متوافق رسميًا مع CWE.

ليست كل إصابة هي في الواقع ثغرة أمنية ، وليست كل ثغرة أمنية
تم العثور عليه بالضرورة. ومع ذلك ، يمكن أن تكون أداة تحديد العيوب أداة مساعدة في العثور عليها وإزالتها
الثغرات الأمنية. الطريقة الشائعة لاستخدام أداة تحديد الأخطاء هي تطبيق أداة تحديد الأخطاء أولاً على
مجموعة من التعليمات البرمجية المصدر وفحص العناصر الأكثر خطورة. ثم استخدم --inputs للفحص
مواقع الإدخال ، وتحقق للتأكد من أن قيم الإدخال القانونية والآمنة هي فقط
مقبولة من المستخدمين غير الموثوق بهم.

بمجرد قيامك بتدقيق أحد البرامج ، يمكنك وضع علامة على سطور التعليمات البرمجية المصدر التي تكون جيدة بالفعل ولكن
التسبب في تحذيرات كاذبة بحيث يتوقف جهاز البحث عن الأخطاء عن الشكوى منها. لتمييز أ
بحيث يتم منع هذه التحذيرات ، ضع تعليقًا منسقًا بشكل خاص إما في
نفس السطر (بعد الكود المصدري) أو الكل من تلقاء نفسه في السطر السابق. التعليق
يجب أن يكون لديك أحد التنسيقين التاليين:

· // Flawfinder: تجاهل

· / * Flawfinder: تجاهل * /

من أجل التوافق ، يمكنك استبدال "Flawfinder:" بـ "ITS4:" أو "RATS:" في هذه
التعليقات المنسقة بشكل خاص. نظرًا لأنه من المحتمل أن تكون هذه الخطوط خاطئة ، يمكنك استخدام
الخيار --neverignore ، والذي يجعل أداة تحديد الأخطاء لا تتجاهل أبدًا أي سطر بغض النظر عن السبب
تقول توجيهات التعليق (الأمر الأكثر إرباكًا - يتجاهلneverignore التجاهلات).

يستخدم Flawfinder قاعدة بيانات داخلية تسمى `` مجموعة القواعد '' ؛ تحدد مجموعة القواعد
الوظائف التي تعتبر أسبابًا شائعة للعيوب الأمنية. تتضمن القواعد القياسية حجمًا كبيرًا
عدد المشكلات المحتملة المختلفة ، بما في ذلك المشكلات العامة التي يمكن أن تؤثر على أي منها
برنامج C / C ++ ، بالإضافة إلى عدد من الوظائف التي تشبه Unix و Windows المحددة
إشكالية خاصة. يعرض الخيار --listrules قائمة بالقواعد الحالية و
مستويات مخاطر التخلف عن السداد. كما هو مذكور أعلاه ، كل ثغرة أمنية محتملة وجدت في معطى
يُطلق على ملف الكود المصدري (الذي يطابق إدخالًا في مجموعة القواعد) اسم `` hit '' ومجموعة
يُطلق على الزيارات التي يتم العثور عليها أثناء أي تشغيل معين للبرنامج اسم `` قائمة النتائج ''
يمكن حفظها (باستخدام --savehitlist) ، وإعادة التحميل لإعادة العرض (باستخدام --loadhitlist) ، و
يمكنك فقط إظهار النتائج التي تختلف عن تشغيل آخر (باستخدام --diffhitlist).

Flawfinder هي أداة بسيطة تؤدي إلى بعض الإيجابيات والسلبيات الأساسية. يعمل Flawfinder
من خلال عمل ترميز معجمي بسيط (تخطي التعليقات وسلاسل الترميز الصحيحة) ،
البحث عن الرموز المطابقة لقاعدة البيانات (خاصة للعثور على استدعاءات الوظائف).
وبالتالي فإن Flawfinder يشبه RATS و ITS4 ، اللذان يستخدمان أيضًا الترميز المعجمي البسيط.
ثم يقوم Flawfinder بفحص نص معلمات الوظيفة لتقدير المخاطر. على عكس
أدوات مثل الجبيرة ، وأعلام التحذير لدول مجلس التعاون الخليجي ، والرنجة ، كما يفعل فايندر ليس استخدام أو لديك
الوصول إلى معلومات حول تدفق التحكم أو تدفق البيانات أو أنواع البيانات عند البحث عن
نقاط الضعف المحتملة أو تقدير مستوى المخاطر. وهكذا ، سوف يكون مكتشف العيوب
تنتج بالضرورة العديد من الإيجابيات الكاذبة لنقاط الضعف وتفشل في الإبلاغ عن العديد منها
نقاط الضعف. من ناحية أخرى ، يمكن أن يجد الخلل نقاط الضعف في البرامج التي
لا يمكن بناؤها أو لا يمكن ربطها. يمكن أن تعمل في كثير من الأحيان مع البرامج التي لا يمكن أن تكون كذلك
تم تجميعها (على الأقل بواسطة أدوات المراجع). لا يتم الخلط بين Flawfinder أيضًا
تعريفات الماكرو والشذوذ الأخرى التي تواجهها الأدوات الأكثر تعقيدًا.
يمكن أن يكون Flawfinder مفيدًا أيضًا كمقدمة بسيطة لأدوات التحليل الثابت في
عام ، لأنه من السهل البدء في الاستخدام وسهل الفهم.

سيتم فحص أي اسم ملف معطى في سطر الأوامر (حتى لو لم يكن له اسم ملف
ملحق اسم ملف C / C ++) ؛ وبالتالي يمكنك إجبار الباحث عن الخلل على فحص أي ملفات محددة
يرغب. أثناء البحث في الدلائل بشكل متكرر ، يفتح الباحث عن الأخطاء ويفحص فقط
الملفات العادية التي لها امتدادات اسم ملف C / C ++. يفترض Flawfinder أن الملفات
ملفات C / C ++ إذا كانت تحتوي على الامتدادات ".c" ، ".h" ، ".ec" ، ".ecp" ، ".pgc" ، ".C" ، ".cpp" ،
".CPP" أو ".cxx" أو ".cc" أو ".CC" أو ".pcc" أو ".hpp" أو ".H". اسم الملف "- '' يعني
المدخلات القياسية. لمنع حدوث مشاكل أمنية ، ملفات خاصة (مثل ملفات الجهاز الخاصة
والممرات المسماة) يتم تخطيها دائمًا ، ويتم تخطي الروابط الرمزية افتراضيًا (ملف
- الخيار allowlink يتبع الروابط الرمزية).

بعد قائمة النتائج يوجد ملخص موجز للنتائج (استخدم -D لإزالة هذا
معلومة). سيُظهر عدد مرات الدخول والخطوط التي تم تحليلها (كما تم الإبلاغ عنها بواسطة wc -l) و
تم تحليل خطوط المصدر المادية للشفرة (SLOC). SLOC المادي هو غير فارغ ، وليس
سطر التعليق. سيُظهر بعد ذلك عدد الزيارات في كل مستوى ؛ لاحظ أن هناك إرادة
لا يمكن أبدًا تحقيق نجاح بمستوى أدنى من المستوى الأدنى (1 افتراضيًا). وبالتالي ، "[0] 0 [1] 9"
يعني أنه في المستوى 0 كان هناك 0 إصابة ، وفي المستوى 1 كان هناك 9 إصابات
ذكرت. سيظهر بعد ذلك عدد الزيارات على مستوى معين أو أكبر (لذلك المستوى 3+
لديه مجموع عدد الزيارات في المستوى 3 و 4 و 5). وبالتالي ، إدخال "[0+] 37"
يوضح أنه في المستوى 0 أو أعلى كانت هناك 37 نتيجة (سيكون الإدخال 0+ هو نفسه دائمًا
كرقم "يضرب" أعلاه). يتم عرض عدد الزيارات لكل KSLOC بعد ذلك ؛ هذا هو كل من "المستوى أو
القيم الأعلى "مضروبة في 1000 ومقسمة على SLOC المادي. إذا كانت الارتباطات الرمزية
تم تخطي ، تم الإبلاغ عن عدد هؤلاء. إذا تم منع النتائج (باستخدام "تجاهل"
التوجيه في تعليقات التعليمات البرمجية المصدر كما هو موضح أعلاه) ، يتم الإبلاغ عن الرقم الذي تم إلغاؤه.
يتم عرض الحد الأدنى من مستوى المخاطر الذي سيتم تضمينه في التقرير ؛ بشكل افتراضي هذا هو 1
(استخدم - minlevel لتغيير هذا). ينتهي الملخص بتذكيرات مهمة: ليس كل نتيجة
هو بالضرورة ثغرة أمنية ، وقد تكون هناك ثغرات أمنية أخرى
لم تبلغ عنها الأداة.

تم إصدار Flawfinder بموجب ترخيص GNU GPL الإصدار 2 أو أحدث (GPLv2 +).

يعمل Flawfinder بشكل مشابه لبرنامج آخر ، ITS4 ، وهو ليس مفتوح المصدر بالكامل
البرمجيات (على النحو المحدد في تعريف المصدر المفتوح) أو البرمجيات الحرة (على النحو المحدد في
مؤسسة البرمجيات الحرة). لم ير مؤلف Flawfinder كود مصدر ITS4 من قبل.

نبذة TUTORIAL


فيما يلي مثال موجز لكيفية استخدام أداة تحديد الأخطاء. تخيل أن لديك C / C ++
شفرة المصدر لبعض البرامج المسمى xyzzy (والتي ربما تكون قد كتبتها أو لم تكتبها) ، و
كنت تبحث عن ثغرات أمنية (حتى تتمكن من إصلاحها قبل العملاء
تواجه نقاط الضعف). في هذا البرنامج التعليمي ، سأفترض أنك تستخدم Unix-
مثل النظام ، مثل Linux أو OpenBSD أو MacOS X.

إذا كانت شفرة المصدر موجودة في دليل فرعي باسم xyzzy ، فمن المحتمل أن تبدأ بفتح ملف
نافذة النص واستخدام الإعدادات الافتراضية للفايندر لتحليل البرنامج وتقديم تقرير
قائمة أولويات الثغرات الأمنية المحتملة (`` الأقل '' يتأكد فقط من أن
النتائج تبقى على الشاشة):
عيب xyzzy | أقل

في هذه المرحلة ، سترى عددًا كبيرًا من الإدخالات. كل إدخال له اسم ملف ، أ
النقطتان ، رقم السطر ، مستوى المخاطرة بين الأقواس (حيث 5 هي الأكثر خطورة) ، فئة ،
اسم الوظيفة ، ووصف لماذا يعتقد الخلل أن الخط هو أ
وهن. عادةً ما يفرز Flawfinder حسب مستوى المخاطرة ، ويظهر العناصر الأكثر خطورة أولاً ؛
إذا كان لديك وقت محدود ، فمن الأفضل أن تبدأ العمل على العناصر الأكثر خطورة و
استمر حتى نفاد الوقت. إذا كنت تريد قصر العرض على المخاطر بامتداد
مستوى مخاطرة معين أو أعلى ، استخدم خيار المستوى الأدنى. إذا كنت تحصل على ملف
عدد غير عادي من الإيجابيات الخاطئة لأن أسماء المتغيرات تبدو خطيرة
أسماء الوظائف ، استخدم الخيار -F لإزالة التقارير عنها. إذا كنت لا تفهم
رسالة الخطأ ، الرجاء مراجعة مستندات مثل نادي الكتابة آمنة البرامج For لينكس و
يونكس HOWTOhttp://www.dwheeler.com/secure-programs⟩ في http://www.dwheeler.com/secure-
البرامج التي توفر مزيدًا من المعلومات حول كتابة البرامج الآمنة.

بمجرد تحديد المشكلة وفهمها ، يمكنك إصلاحها. في بعض الأحيان يمكنك ذلك
تريد إعادة التحليل ، لأن أرقام الأسطر ستتغير و للتأكد
أن الكود الجديد لا يقدم بعد ثغرة أمنية مختلفة.

إذا كنت قد قررت أن بعض الخطوط ليست مشكلة حقًا ، وأنت متأكد من ذلك ، يمكنك ذلك
أدخل تعليقًا مثل تعليق قبل أو على السطر المخالف
/ * Flawfinder: تجاهل * /
لمنعهم من الظهور في الإخراج.

بمجرد القيام بذلك ، يجب عليك العودة والبحث عن مدخلات البرنامج ، للقيام بذلك
تأكد من أن البرنامج يقوم بتصفية أي من المدخلات غير الموثوق بها بقوة. يمكن Flawfinder
تحديد العديد من مدخلات البرنامج باستخدام الخيار --inputs ، مثل هذا:
عيب - المدخلات xyzzy

يمكن أن يتكامل Flawfinder جيدًا مع برامج تحرير النصوص وبيئات التطوير المتكاملة ؛
انظر الأمثلة لمزيد من المعلومات.

يتضمن Flawfinder العديد من الخيارات الأخرى ، بما في ذلك تلك الخاصة بإنشاء إصدارات HTML من ملف
الإخراج (مفيد لشاشات أجمل). يصف القسم التالي تلك الخيارات في المزيد
التفاصيل.

OPTIONS


يحتوي Flawfinder على عدد من الخيارات ، والتي يمكن تجميعها في خيارات تتحكم في خياراتها الخاصة
الوثائق ، حدد بيانات الإدخال ، حدد أي يضرب لعرضها ، حدد تنسيق الإخراج ،
وأداء إدارة قائمة النتائج. يدعم Flawfinder البنية القياسية المحددة في ملف
POSIX (الإصدار 7 ، إصدار 2013) قسم `` اصطلاحات المنفعة ''. كما أنها تدعم GNU
خيارات طويلة (خيارات شكل مزدوج -خيار) على النحو المحدد في جنو C المكتبة
الرقم المرجعي كتيب `` اصطلاحات بناء جملة حجج البرنامج '' و جنو البرمجة المعايير
`` معايير واجهات سطر الأوامر ''. يمكن تقديم وسيطات الخيار الطويل بصيغة
"--name = value '' أو" -name value ''. لا يمكن الوصول إلى بعض الخيارات إلا باستخدام المزيد
اصطلاحات خيارات GNU الطويلة القابلة للقراءة ؛ الخيارات الشائعة مدعومة أيضًا من قبل كبار السن
اصطلاح الخيار أحادي الحرف.

توثيق
--مساعدة

-h إظهار معلومات الاستخدام (المساعدة).

--الإصدار يظهر (فقط) رقم الإصدار والمخارج.

- قوائم ضع قائمة بالمصطلحات (الرموز) التي تؤدي إلى مزيد من الفحص ، ومخاطرها الافتراضية
المستوى والتحذير الافتراضي (بما في ذلك معرف (معرفات) CWE ، إذا
قابلة للتطبيق) ، جميعها مفصولة بعلامات جدولة. المصطلحات هي في الأساس أسماء يحتمل أن-
وظائف خطيرة. لاحظ أن مستوى المخاطر المبلغ عنه والتحذير للبعض
قد يكون رمز معين مختلفًا عن الافتراضي ، اعتمادًا على كيفية استخدام المصطلح
مستخدم. ادمج مع -D إذا كنت لا تريد الرأس المعتاد. فايندر
الإصدار 1.29 غير الفاصل من المسافات إلى علامات الجدولة ، وأضاف الافتراضي
مجال التحذير.

اختيار إدخال البيانات
- allowlink السماح باستخدام الروابط الرمزية ؛ عادة يتم تخطي الروابط الرمزية. لا
استخدم هذا الخيار إذا كنت تقوم بتحليل الكود بواسطة الآخرين ؛ يمكن للمهاجمين أن يفعلوا الكثير
أشياء تسبب مشاكل لتحليل مع تمكين هذا الخيار. ل
على سبيل المثال ، يمكن للمهاجم إدراج روابط رمزية لملفات مثل / الخ / باسود
(تسريب معلومات حول الملف) أو إنشاء حلقة دائرية ، والتي من شأنها أن
يتسبب في تشغيل أداة البحث عن الأخطاء `` إلى الأبد ''. مشكلة أخرى في تمكين هذا
الخيار هو أنه إذا تمت الإشارة إلى نفس الملف عدة مرات باستخدام الرمز
الروابط ، سيتم تحليلها عدة مرات (وبالتالي يتم الإبلاغ عنها عدة مرات).
لاحظ أن أداة تحديد الأخطاء تحتوي بالفعل على بعض الحماية ضد الروابط الرمزية
لأنواع ملفات خاصة مثل أنواع ملفات الجهاز (على سبيل المثال ، / dev / zero أو
C: \ mystuff \ com1). لاحظ أنه بالنسبة للإصدار 1.01 وما قبله ، كان هذا
الافتراضي.

- اتبع dotdir
أدخل الدلائل التي تبدأ أسماؤها بـ ".". عادة هذه الدلائل
تم تجاهلها ، نظرًا لأنها تتضمن عادةً بيانات خاصة للتحكم في الإصدار (مثل
.git / أو .svn /) والتكوينات وما إلى ذلك.

- نولينك تم التجاهل. تاريخيا ، تم تعطيل اتباع الروابط الرمزية ؛ هذا السلوك
هو الآن الافتراضي.

- رقعة =ملف التصحيح

-P ملف التصحيح
افحص الملفات أو الدلائل المحددة ، ولكن أبلغ عن مرات الدخول في الأسطر فقط
يتم إضافتها أو تعديلها بواسطة ملف التصحيح المحدد. يجب أن يكون ملف التصحيح بتنسيق
تنسيق فرق موحد معروف (على سبيل المثال ، إخراج GNU "فرق -u قديم جديد" ،
"svn diff" أو "git diff [الالتزام]"). يفترض Flawfinder أن التصحيح يحتوي على
تم تطبيقه بالفعل على الملفات. يمكن أن يتضمن ملف التصحيح أيضًا تغييرات على
الملفات غير ذات الصلة (سيتم تجاهلها ببساطة). أرقام الأسطر الواردة في
يتم استخدام ملف التصحيح لتحديد الأسطر التي تم تغييرها ، لذلك إذا كان لديك
تعديل الملفات منذ إنشاء ملف التصحيح ، وإعادة إنشاء ملف التصحيح
أولاً. احذر من أن أسماء الملفات الجديدة ترد في ملف التصحيح
يجب أن يتطابق تمامًا ، بما في ذلك الأحرف الكبيرة والصغيرة وبادئة المسار والدليل
فاصل (\ مقابل /). لا يُقبل سوى تنسيق فرق موحد (GNU diff، svn
فرق ، وإخراج git فرق على ما يرام) ؛ إذا كان لديك تنسيق مختلف ، مرة أخرى
قم بتجديده أولاً. الضربات التي تحدث فقط على الأسطر المتغيرة الناتجة ، أو
مباشرة فوقها وتحتها ، تم الإبلاغ عنها. هذا الخيار يعني
- أبدًا.

اختيار المشاهدات إلى العرض
- المدخلات

-I إظهار الوظائف التي تحصل على البيانات من خارج البرنامج فقط ؛ هذا يحدد أيضا
المستوى الأدنى إلى 0.

- المستوى الأدنى =X

-m X قم بتعيين الحد الأدنى من مستوى المخاطرة إلى X لتضمينه في قائمة النتائج. يمكن أن يكون هذا من 0 (`` لا
خطر '') إلى 5 (`` أقصى خطر '') ؛ الافتراضي هو 1.

--إيجابية كاذبة

-F لا تقم بتضمين النتائج التي من المحتمل أن تكون إيجابية كاذبة. حاليا ، هذا يعني
يتم تجاهل أسماء هذه الوظائف إذا لم يتبعها "(" ، وذاك
لا يتم تدوين تصريحات مصفوفات الأحرف. وبالتالي ، إذا كان لديك استخدام متغير
يسمى "الوصول" في كل مكان ، سيؤدي ذلك إلى إزالة الإشارات إلى هذا المألوف
عامل. هذا ليس الإعداد الافتراضي ، لأن هذا يزيد أيضًا من احتمالية حدوث
الضربات المهمة المفقودة ؛ على وجه الخصوص ، أسماء الوظائف في #define الجمل والمكالمات
من خلال مؤشرات الدالة سوف تفوت.

- أبدًا

-n لا تتجاهل أبدًا مشكلات الأمان ، حتى لو كان لديهم توجيه `` تجاهل '' في ملف
تعليق.

--regexp =نمط

-e نمط
التقرير فقط يضرب بالنص الذي يطابق نمط التعبير العادي PATTERN.
على سبيل المثال ، للإبلاغ عن النتائج التي تحتوي على النص "CWE-120" فقط ، استخدم "--regex
CWE-120 ''. أسماء علامات الخيارات هذه هي نفسها grep.

اختيار الناتج شكل
- الأعمدة

-C إظهار رقم العمود (بالإضافة إلى اسم الملف ورقم السطر) لكل نتيجة ؛
يظهر هذا بعد رقم السطر عن طريق إضافة نقطتين ورقم العمود في
السطر (الحرف الأول في السطر هو العمود رقم 1). وهذا مفيد
للمحررين الذين يمكنهم الانتقال إلى أعمدة معينة ، أو للتكامل مع أعمدة أخرى
أدوات (مثل تلك المستخدمة لتصفية الإيجابيات الزائفة بشكل أكبر).

--سياق الكلام

-c اعرض السياق ، على سبيل المثال ، السطر الذي يحتوي على "إصابة" / عيب محتمل. بشكل افتراضي ، يكون ملف
يظهر الخط مباشرة بعد التحذير.

- البيانات فقط

-D لا تعرض الرأس والتذييل. استخدم هذا جنبًا إلى جنب مع - الهدوء لرؤية فقط
البيانات نفسها.

--لغة البرمجة

-H قم بتنسيق الإخراج بتنسيق HTML بدلاً من تنسيقه كنص بسيط.

--مباشر

-i عرض النتائج على الفور (لا تنتظر حتى النهاية).

--سطر واحد

-S عرض كسطر واحد من إخراج النص لكل نتيجة. مفيد للتفاعل
مع أدوات التجميع.

- الوقت احذف معلومات التوقيت. هذا مفيد لاختبارات الانحدار للعيوب
نفسها ، بحيث لا يختلف الناتج اعتمادًا على مدة التحليل
يأخذ.

--هادئ

-Q لا تعرض معلومات الحالة (أي الملفات التي يتم فحصها) أثناء
التحليل جار.

قائمة اغتيالات الإدارة
- قائمة حفظ =F
احفظ جميع النتائج الناتجة ("قائمة النتائج") في F.

--loadhitlist =F
قم بتحميل قائمة النتائج من F بدلاً من تحليل برامج المصدر. تحذير: Do ليس
تحميل قوائم النتائج من مصادر غير موثوق بها (لأسباب أمنية).

- diffhitlist =F
إظهار النتائج فقط (المحملة أو التي تم تحليلها) التي ليست في F. من المفترض أن تكون قد تم إنشاؤها
سبق استخدام - قائمة حفظ. تحذير: Do ليس فرق Hitlists من غير موثوق بها
مصادر (لأسباب أمنية). إذا لم يتم توفير الخيار --loadhitlist ،
سيعرض هذا النتائج في ملفات شفرة المصدر التي تم تحليلها والتي لم تكن كذلك
تم تخزينه مسبقًا في F. إذا تم استخدامه جنبًا إلى جنب مع --loadhitlist ، فسيظهر هذا الملف
يضرب في قائمة النتائج المحملة ليس في F. خوارزمية الفرق هي
محافظ؛ يتم اعتبار الزيارات `` متشابهة '' فقط إذا كانت لها نفس النتائج
اسم الملف ورقم السطر وموضع العمود واسم الوظيفة ومستوى المخاطرة.

أمثلة


فيما يلي أمثلة مختلفة عن كيفية استدعاء أداة تحديد الأخطاء. تظهر الأمثلة الأولى مختلفة
خيارات سطر أوامر بسيطة. تم تصميم Flawfinder للعمل بشكل جيد مع برامج تحرير النصوص وملفات
بيئات التطوير المتكاملة ، لذا توضح الأقسام التالية كيفية دمج أداة البحث عن الأخطاء
في vim و emacs.

الاشارات سطر الأوامر الخيارات
فايندر /usr/src/linux-3.16
افحص جميع ملفات C / C ++ في الدليل /usr/src/linux-3.16 وجميع ملفات
الدلائل الفرعية (بشكل متكرر) ، تقارير عن جميع النتائج التي تم العثور عليها. بشكل افتراضي
سيتخطى flawfinder الروابط والأدلة الرمزية ذات الأسماء التي تبدأ بـ
فترة.

فايندر - المستوى الأدنى = 4 .
افحص كافة ملفات C / C ++ في الدليل الحالي والأدلة الفرعية الخاصة به
(بشكل متكرر) ؛ أبلغ فقط عن نقاط الضعف من المستوى 4 وما فوق (وهما أعلى مستوى
مستويات المخاطر).

فايندر - المدخلات com.mydir
افحص جميع ملفات C / C ++ في mydir وأدلةها الفرعية (بشكل متكرر) ، و
تقرير الوظائف التي تأخذ المدخلات (بحيث يمكنك التأكد من أنها تقوم بتصفية
المدخلات بشكل مناسب).

فايندر - أبدًا com.mydir
افحص جميع ملفات C / C ++ في الدليل mydir والأدلة الفرعية الخاصة به ،
بما في ذلك حتى النتائج المحددة للتجاهل في تعليقات التعليمات البرمجية.

فايندر -QD com.mydir
افحص mydir وقم بالإبلاغ عن النتائج الفعلية فقط (إزالة الرأس و
تذييل الإخراج). هذا النموذج مفيد إذا كان سيتم نقل الإخراج إلى
أدوات أخرى لمزيد من التحليل. - C (- الأعمدة) و - S (- الخط المشترك)
يمكن أن تكون الخيارات مفيدة أيضًا إذا كنت تقوم بتوصيل البيانات إلى أدوات أخرى.

فايندر -QDSC com.mydir
افحص mydir ، وقم بالإبلاغ عن النتائج الفعلية فقط (بدون رأس أو تذييل). كل
يتم الإبلاغ عن hit في سطر واحد ، ويتم الإبلاغ عن أرقام الأعمدة. يمكن أن يكون هذا ملف
أمر مفيد إذا كنت تقوم بتغذية إخراج flawfinder إلى أدوات أخرى.

فايندر --هادئ --لغة البرمجة --سياق الكلام com.mydir > results.html
افحص جميع ملفات C / C ++ في الدليل mydir والأدلة الفرعية الخاصة به ، و
إنتاج نسخة بتنسيق HTML من النتائج. إدارة كود المصدر
قد تستخدم الأنظمة (مثل SourceForge و Savannah) أمرًا مثل هذا.

فايندر --هادئ - قائمة حفظ المحفوظة *. [الفصل]
افحص كافة ملفات .c و. h في الدليل الحالي. لا تبلغ عن
حالة المعالجة ، وحفظ قائمة النتائج الناتجة (مجموعة جميع النتائج) في
الملف المحفوظ.

فايندر - ديفينتيليست المحفوظة *. [الفصل]
افحص جميع ملفات .c و. h في الدليل الحالي ، وأظهر أي مرات دخول فيها
لم تكن موجودة بالفعل في الملف المحفوظ. يمكن استخدام هذا لإظهار ملف
ثغرات أمنية `` جديدة '' في برنامج معدل ، إذا تم حفظها من
الإصدار الأقدم من البرنامج الجاري تحليله.

فايندر --رقعة قماشية Recent.patch .
افحص الدليل الحالي بشكل متكرر ، ولكن فقط سطور التقرير التي كانت
تم تغييره أو إضافته في ملف التصحيح المطبق بالفعل المسمى Recent.patch.

فايندر - ريجكس "CWE-120 | CWE-126" SRC /
افحص الدليل SRC بشكل متكرر ، ولكن أبلغ فقط عن مرات الدخول حيث CWE-120 أو
تطبق CWE-126.

الاحتجاج تبدأ من همة
يتضمن محرر النصوص vim آلية "إصلاح سريع" تعمل بشكل جيد مع أداة تحديد الأخطاء ، لذلك
أنه يمكنك بسهولة عرض رسائل التحذير والانتقال إلى شفرة المصدر ذات الصلة.

أولاً ، تحتاج إلى استدعاء flawfinder لإنشاء قائمة بالنتائج ، وهناك طريقتان للقيام بذلك
افعل هذا. الطريقة الأولى هي بدء تشغيل أداة تحديد الأخطاء أولاً ، ثم (باستخدام مخرجاتها) استدعاء
همة. الطريقة الثانية هي بدء (أو الاستمرار في تشغيل) vim ، ثم استدعاء flawfinder
(عادةً من الداخل vim).

للطريقة الأولى ، قم بتشغيل أداة تحديد الأخطاء Flawfinder وتخزينها في بعض ملفات FLAWFILE (مثل "ملف 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
ستغلق النافذة "؛": cclose "نافذة الإصلاح السريع. إذا كان المخزن المؤقت في النافذة المستخدمة به
تم تغييره ، والخطأ في ملف آخر ، وسيفشل القفز إلى الخطأ. عليك أن
تأكد من أن النافذة تحتوي على مخزن مؤقت يمكن التخلي عنه قبل محاولة القفز إلى ملف
ملف جديد ، قل عن طريق حفظ الملف ؛ هذا يمنع فقدان البيانات العرضي.

الاحتجاج تبدأ من ايماكس
يتضمن محرر النصوص / نظام التشغيل emacs "وضع grep" و "وضع الترجمة"
الآليات التي تعمل بشكل جيد مع مستكشف الأخطاء ، مما يسهل عرض رسائل التحذير ، القفز
إلى شفرة المصدر ذات الصلة ، وإصلاح أي مشاكل تجدها.

أولاً ، تحتاج إلى استدعاء flawfinder لإنشاء قائمة برسائل التحذير. يمكنك استخدام
"وضع grep" أو "وضع الترجمة" لإنشاء هذه القائمة. غالبًا ما يكون "وضع grep" أكثر ملاءمة ؛
يترك وضع الترجمة كما هو حتى تتمكن من إعادة الترجمة بسهولة بمجرد التغيير
شئ ما. ومع ذلك ، إذا كنت ترغب في الانتقال إلى موضع العمود المحدد لإحدى النتائج ، فقم بالتجميع
قد يكون الوضع أكثر ملاءمة لأن emacs يمكن أن يستخدم إخراج عمود من أداة تحديد الخلل إلى
القفز مباشرة إلى الموقع الصحيح دون أي تكوين خاص.

لاستخدام وضع grep ، أدخل الأمر "Mx grep" ثم أدخل أداة تحديد الأخطاء المطلوبة
يأمر. لاستخدام وضع الترجمة ، أدخل الأمر "Mx compile" وأدخل الأمر المطلوب
أمر عيب. هذا هو أمر مفتاح التعريف ، لذا ستحتاج إلى استخدام مفتاح التعريف لـ
لوحة المفاتيح (عادةً ما يكون هذا هو مفتاح ESC). كما هو الحال مع جميع أوامر emacs ، ستحتاج إلى
اضغط على RETURN بعد كتابة "grep" أو "compile". لذلك في العديد من الأنظمة ، يكون وضع grep هو
تم استدعاؤه بكتابة ESC xgrep RETURN.

ستحتاج بعد ذلك إلى إدخال أمر ، وإزالة كل ما كان موجودًا من قبل إذا لزم الأمر. أ
الأمر المعقول هو:

فايندر -سقدك .

يجعل هذا الأمر كل تقرير نتيجة سطرًا واحدًا ، مما يسهل على الأدوات كثيرًا
مقبض. يعمل الخياران "الهدوء" و "البيانات فقط" على إزالة معلومات الحالة الأخرى غير المطلوبة لـ
استخدام داخل emacs. الفترة اللاحقة تعني أن الدليل الحالي وجميع
يتم البحث عن النسل عن كود C / C ++ ، وتحليلها بحثًا عن العيوب.

بمجرد أن تقوم باستدعاء flawfinder ، يمكنك استخدام emacs للتنقل بين النتائج. ال
يقوم الأمر Cx (Control-x backtick) بزيارة موقع كود المصدر للتحذير التالي
رسالة. يتم إعادة تشغيل Cu Cx '(control-u control-x backtick) من البداية. أنت تستطيع
قم بزيارة المصدر لمعرفة أي رسالة خطأ معينة بالانتقال إلى رسالة الدخول هذه في
* تجميع * عازلة أو * grep * عازلة وكتابة مفتاح العودة. (ملاحظة فنية: في
المخزن المؤقت للترجمة ، هذا يستدعي خطأ التحويل البرمجي.) يمكنك أيضًا النقر فوق Mouse-2
الموجود في رسالة الخطأ (لا تحتاج إلى التبديل إلى المخزن المؤقت * التجميع * أولاً).

إذا كنت تريد استخدام وضع grep للانتقال إلى أعمدة معينة من نتيجة ما ، فستحتاج إلى ذلك
قم بتكوين emacs خصيصًا للقيام بذلك. للقيام بذلك ، قم بتعديل متغير emacs "grep-regexp-
alist ". يخبر هذا المتغير Emacs كيفية تحليل إخراج أمر" grep "، على غرار
متغير "compilation-error-regexp-alist" الذي يسرد تنسيقات مختلفة من أخطاء الترجمة
الرسائل.

الاحتجاج تبدأ من المتكاملة التطوير التجاري البيئات (بيئات التطوير المتكاملة)
بالنسبة إلى IDEs (الأخرى) ، استشر مجموعة المكونات الإضافية الخاصة بـ IDE.

COMMON ضعف تعداد (سي دبليو إي)


تعداد نقاط الضعف الشائعة (CWE) هو `` قائمة رسمية أو قاموس للبرامج الشائعة
نقاط الضعف التي يمكن أن تحدث في بنية البرنامج أو تصميمه أو رمزه أو تنفيذه
يمكن أن يؤدي إلى ثغرات أمنية قابلة للاستغلال ... تم إنشاؤها لتكون بمثابة لغة مشتركة
لوصف نقاط الضعف في أمان البرامج '' (http://cwe.mitre.org/about/faq.html). إلى
مزيد من المعلومات حول CWEs ، انظر http://cwe.mitre.org.

يدعم Flawfinder CWE وهو متوافق رسميًا مع CWE. ضرب الأوصاف عادة
قم بتضمين معرف تعداد نقاط الضعف المشترك (CWE) ذي الصلة بين قوسين حيث يوجد
من المعروف أنه CWE ذي صلة. على سبيل المثال ، يذكر العديد من النتائج ذات الصلة بالمخزن المؤقت
CWE-120 ، معرف CWE لـ `` نسخة المخزن المؤقت دون التحقق من حجم الإدخال '' (ويعرف أيضًا باسم
`` Classic Buffer Overflow ''). في حالات قليلة قد يتم سرد أكثر من معرف CWE واحد.
يتضمن تقرير HTML أيضًا روابط نص تشعبي لتعريفات CWE المستضافة في MITER. في
وبهذه الطريقة ، تم تصميم أداة تحديد الأخطاء Flawfinder لتلبية متطلبات CWE-Output.

تم تحديد العديد من CWEs التي تم الإبلاغ عنها بواسطة flawfinder في قائمة CWE / SANS أعلى 25 لعام 2011
(http://cwe.mitre.org/top25/). سيرغب العديد من الأشخاص في البحث عن CWE في هذه القائمة ،
مثل CWE-120 (تجاوز سعة المخزن المؤقت الكلاسيكي) ، عند تعيين أداة تحديد الخلل إلى CWE أكثر
عام من أهم 25 عنصرًا ، فإنه يسرده على أنه أكثر عمومية: أكثر تحديدًا (على سبيل المثال ،
CWE-119: CWE-120) ، حيث يكون التعيين الفعلي أكثر عمومية. إذا خرائط الخلل إلى أكثر
عنصر CWE المحدد الذي يمثل حالة معينة لعنصر 25 الأعلى ، يتم إدراجه في النموذج
أعلى 25 / أكثر تحديدًا (على سبيل المثال ، CWE-362 / CWE-367) ، حيث يكون التعيين الحقيقي أكثر تحديدًا
دخول CWE. إذا تم تعيين نفس الإدخال إلى CWEs متعددة ، فسيتم فصل CWEs بفاصلات
(يحدث هذا غالبًا مع CWE-20 ، التحقق غير الصحيح من المدخلات). هذا يبسط البحث عن
بعض CWEs.

تم استخدام الإصدار 2.7 من CWE (تم إصداره في 23 يونيو 2014) لرسم الخرائط. CWE الحالي
تحدد التعيينات CWE الأكثر تحديدًا الذي يمكن للأداة تحديده. من الناحية النظرية ، فإن معظم CWE
يمكن نظريًا أن تكون عناصر الأمان (التوقيعات / الأنماط التي تبحث عنها الأداة)
تعيينها إلى CWE-676 (استخدام الوظيفة التي يحتمل أن تكون خطرة) ، ولكن مثل هذا التعيين لن يكون
مفيد. وبالتالي ، تم تفضيل تعيينات أكثر تحديدًا حيث يمكن العثور على أحدها. فايندر
هي أداة تحليل معجمية ؛ نتيجة لذلك ، من غير العملي أن تكون أكثر تحديدًا من
التعيينات التي تم تنفيذها حاليًا. هذا يعني أيضًا أنه من غير المحتمل أن يحتاج إلى الكثير
تحديث لعملة الخريطة ؛ إنه ببساطة لا يحتوي على معلومات كافية للتنقيح إلى ملف
مستوى CWE المفصل الذي ستؤثر عليه تغييرات CWE عادةً. قائمة معرفات CWE
تم إنشاؤه تلقائيًا باستخدام "make show-cwes" ، لذلك هناك ثقة في أن هذه القائمة
صحيح. يرجى الإبلاغ عن مشاكل تعيين CWE كأخطاء إذا وجدت أيًا منها.

قد يفشل برنامج Flawfinder في العثور على ثغرة أمنية ، حتى إذا كان برنامج Flawfinder يغطي أحد هذه الثغرات CWE
نقاط الضعف. ومع ذلك ، يجد برنامج Flawfinder نقاط الضعف المدرجة من قبل CWEs التي يغطيها ،
ولن يبلغ عن سطور بدون تلك الثغرات الأمنية في كثير من الحالات. وهكذا ، كما
مطلوب لأية أداة تهدف إلى أن تكون متوافقة مع CWE ، فلو فايندر معدل خطأ
الإيجابيات أقل من 100٪ ومعدل السلبيات الكاذبة أقل من 100٪. تقريبا Flawfinder
يقوم دائمًا بالإبلاغ متى وجد تطابقًا مع عنصر أمان CWE (توقيع / نمط بتنسيق
المحددة في قاعدة البيانات الخاصة به) ، على الرغم من أن بعض التركيبات الغامضة يمكن أن تتسبب في فشلها (انظر أخطاء BUGS
أدناه).

يمكن أن يقدم برنامج Flawfinder تقريرًا عن CWEs التالية (هذه هي CWEs التي يغطيها جهاز كشف الأخطاء ؛
تشير علامة `` * '' إلى تلك الموجودة في قائمة CWE / SANS أعلى 25):

CWE-20: التحقق غير السليم من المدخلات

· CWE-22: تقييد غير صحيح لاسم مسار على دليل مقيد (`` مسار اجتياز '')

· CWE-78: تحييد غير لائق للعناصر الخاصة المستخدمة في أمر نظام التشغيل (`` أوامر نظام التشغيل
حقنة'')*

· CWE-119: تقييد غير لائق للعمليات داخل حدود مخزن الذاكرة المؤقت (أ
أحد الوالدين لـ CWE-120 * ، لذلك يظهر هذا كـ CWE-119: CWE-120)

· CWE-120: نسخ المخزن المؤقت دون التحقق من حجم الإدخال (`` تجاوز سعة المخزن المؤقت الكلاسيكي '') *

· CWE-126: تجاوز قراءة المخزن المؤقت

· CWE-134: سلسلة تنسيق غير خاضعة للرقابة *

· CWE-190: تجاوز عدد صحيح أو التفاف *

· CWE-250: التنفيذ بامتيازات غير ضرورية

· CWE-327: استخدام خوارزمية تشفير معطلة أو محفوفة بالمخاطر *

· CWE-362: التنفيذ المتزامن باستخدام الموارد المشتركة مع التزامن غير المناسب
(`` حالة السباق '')

· CWE-377: ملف مؤقت غير آمن

· CWE-676: استخدام وظيفة يحتمل أن تكون خطرة *

· CWE-732: تعيين إذن غير صحيح لمورد مهم *

· CWE-785: استخدام وظيفة معالجة المسار دون الحد الأقصى من المخزن المؤقت (التابع لـ
CWE-120 * ، لذلك يظهر هذا كـ CWE-120 / CWE-785)

· CWE-807: الاعتماد على المدخلات غير الموثوق بها في القرار الأمني ​​*

· CWE-829: إدراج الوظائف من مجال التحكم غير الموثوق به *

يمكنك تحديد مجموعة فرعية معينة من CWEs للإبلاغ عنها باستخدام الخيار "--regex '' (-e).
يقبل هذا الخيار تعبيرًا عاديًا ، لذا يمكنك تحديد CWEs متعددة ، على سبيل المثال ، "--regex
"CWE-120 | CWE-126" ". إذا قمت بتحديد CWEs متعددة باستخدام `` | '' في سطر الأوامر ، فستفعل ذلك
عادةً ما تحتاج إلى اقتباس المعلمات (نظرًا لأن `` | '' غير المقتبس هو رمز الأنبوب).
تم تصميم Flawfinder لتلبية متطلبات CWE-Searchable.

إذا كان هدفك هو الإبلاغ عن مجموعة فرعية من CWEs المدرجة في ملف ، فيمكن تحقيق ذلك
على نظام يشبه يونكس باستخدام خيار "--regex '' المعروف أيضًا باسم" -e ''. يجب أن يكون الملف بتنسيق
تنسيق التعبير العادي. على سبيل المثال ، `` flawfinder -e $ (cat file1) '' سيبلغ فقط
يضرب مطابقًا للنمط الموجود في `` file1 ''. إذا احتوى الملف 1 على `` CWE-120 | CWE-126 '' فإنه
سيبلغ فقط عن نتائج مطابقة لتلك CWEs.

قائمة بجميع عناصر أمان CWE (التوقيعات / الأنماط التي يبحث عنها الباحث عن الأخطاء)
يمكن العثور عليها باستخدام خيار "--listrules ''. يسرد كل سطر رمز التوقيع
(عادةً ما يكون اسم دالة) قد يؤدي إلى حدوث نتيجة ، ومستوى المخاطرة الافتراضي ، و
تحذير افتراضي (يتضمن معرف CWE الافتراضي). لمعظم الأغراض هذا هو
يكفي أيضًا إذا كنت تريد معرفة عناصر أمان CWE التي ترتبط بها CWEs ، أو ملف
يعكس. على سبيل المثال ، لمشاهدة معظم التواقيع (أسماء الوظائف) التي يتم تعيينها إلى
CWE-327 ، دون رؤية مستوى المخاطرة الافتراضي أو نص تحذير مفصل ، قم بتشغيل `` flawfinder
- قوائم | جريب CWE-327 | قص -f1 ''. يمكنك أيضًا رؤية الرموز المميزة بدون تعيين CWE
بهذه الطريقة عن طريق تشغيل `` flawfinder -D --listrules | grep -v CWE- ''. ومع ذلك ، في حين
تسرد --listrules جميع عناصر أمان CWE ، وهي تسرد فقط التعيينات الافتراضية من CWE
عناصر الأمان لمعرفات CWE. لا يشمل التحسينات التي لا تشوبها شائبة
ينطبق (على سبيل المثال ، عن طريق فحص معلمات الوظيفة).

إذا كنت تريد تخطيطًا مفصلاً ودقيقًا بين عناصر أمان CWE و CWE
المعرفات ، فإن شفرة مصدر الخلل (المضمنة في التوزيع) هي أفضل مكان
لتلك المعلومات. هذه المعلومات التفصيلية تهم هؤلاء القلائل في المقام الأول
الأشخاص الذين يحاولون تحسين تعيينات CWE لمكتشف الخلل أو تحسين CWE بشكل عام.
يوثق كود المصدر التعيين بين عناصر الأمن إلى CWE المعني
المعرفات ، وهو ملف Python واحد. تحدد مجموعة البيانات `` c_rules '' معظم القواعد ،
بالإشارة إلى وظيفة قد تُجري مزيدًا من التحسينات. يمكنك البحث في ملف
مجموعة بيانات لأسماء الوظائف لمعرفة CWE الذي تنشئه افتراضيًا ؛ إذا كانت المعلمة الأولى
ليس `` عاديًا '' ، فهذا هو اسم طريقة Python المكررة التي قد تختار مختلفة
CWEs (بناءً على معلومات إضافية). بالمقابل ، يمكنك البحث عن `` CWE-number ''
وابحث عن عناصر الأمان (التوقيعات أو الأنماط) التي تشير إلى معرف CWE.
بالنسبة لمعظم الناس ، هذا أكثر بكثير مما يحتاجون إليه ؛ معظم الناس يريدون فقط فحص ملفات
شفرة المصدر للعثور بسرعة على المشاكل.

الأمن


بيت القصيد من هذه الأداة هو المساعدة في العثور على الثغرات الأمنية حتى يمكن إصلاحها.
ومع ذلك ، يجب على المطورين والمراجعين معرفة كيفية تطوير برامج آمنة لاستخدام هذا
أداة ، لأنه بخلاف ذلك ، a مجنون مع a أداة is لا يزال a مجنون. كتابي في
http://www.dwheeler.com/secure-programs قد يساعد.

يجب أن تكون هذه الأداة ، على الأكثر ، جزءًا صغيرًا من عملية تطوير برامج أكبر
مصممة لإزالة أو تقليل تأثير الثغرات الأمنية. المطورين والمراجعين
يحتاجون إلى معرفة كيفية تطوير برامج آمنة ، ويحتاجون إلى تطبيق هذه المعرفة لتقليلها
مخاطر نقاط الضعف في المقام الأول.

تميل أدوات اكتشاف الثغرات المختلفة إلى العثور على نقاط ضعف مختلفة. هكذا أنت
من الأفضل استخدام المراجعة البشرية ومجموعة متنوعة من الأدوات. هذه الأداة يمكن أن تساعد في العثور على بعض
نقاط الضعف ، ولكن ليس كل شيء بأي حال من الأحوال.

يجب عليك دائمًا تحليل ملف نسخة من البرنامج المصدر الذي يتم تحليله ، وليس دليلاً
التي يمكن تعديلها بواسطة مطور أثناء إجراء flawfinder التحليل. هذا هو
خاصة صحيح إذا كنت لا تثق بالضرورة بمطور البرنامج الذي يتم تحليله.
إذا كان المهاجم يتحكم في الملفات أثناء قيامك بتحليلها ، فيمكن للمهاجم ذلك
نقل الملفات أو تغيير محتوياتها لمنع التعرض لمشكلة أمنية
(أو خلق الانطباع بوجود مشكلة حيث لا توجد مشكلة). إذا كنت قلقًا بشأنه
يجب على المبرمجين الخبثاء القيام بذلك على أي حال ، لأنك ستحتاج إلى ذلك بعد التحليل
تحقق من أن الكود الذي يتم تشغيله في النهاية هو الرمز الذي قمت بتحليله. أيضا ، لا تستخدم
- خيار allowlink في مثل هذه الحالات ؛ يمكن للمهاجمين إنشاء روابط رمزية ضارة للملفات
خارج منطقة شفرة المصدر الخاصة بهم (مثل / الخ / باسود).

من المؤكد أن أنظمة إدارة الكود المصدري (مثل SourceForge و Savannah) تقع ضمن هذا الموضوع
فئة؛ إذا كنت تحتفظ بأحد هذه الأنظمة ، فقم أولاً بنسخ الملفات أو استخراجها إليه
دليل منفصل (لا يمكن للمهاجمين التحكم فيه) قبل تشغيل flawfinder أو
أي أداة أخرى لتحليل الكود.

لاحظ أن أداة تحديد الأخطاء Flawfinder تفتح فقط الملفات والأدلة والرموز (إذا طلبت)
الروابط. لن يفتح أبدًا أنواعًا أخرى من الملفات ، حتى لو تم إنشاء ارتباط رمزي لها.
يعمل هذا على مواجهة المهاجمين الذين يقومون بإدراج أنواع ملفات غير عادية في التعليمات البرمجية المصدر. ومع ذلك، هذا
يعمل فقط إذا تعذر على المهاجم تعديل نظام الملفات الجاري تحليله أثناء امتداد
التحليل ، على النحو الموصى به أعلاه. لا تعمل هذه الحماية أيضًا على منصات Cygwin ،
للأسف.

تواجه أنظمة Cygwin (محاكاة Unix أعلى Windows) مشكلة إضافية في حالة وجود عيب
يستخدم لتحليل البرامج التي لا يثق بها المحلل. المشكلة ترجع إلى التصميم
عيب في Windows (يرث من MS-DOS). في Windows و MS-DOS ، أسماء ملفات معينة
(على سبيل المثال ، `` com1 '') يتم التعامل معها تلقائيًا بواسطة نظام التشغيل كأسماء
الأجهزة الطرفية ، وهذا صحيح حتى عند إعطاء اسم المسار الكامل. نعم ، Windows و MS-DOS
حقا مصممة بشكل سيء. يتعامل Flawfinder مع هذا عن طريق التحقق من نظام الملفات
الكائن ، وبعد ذلك فقط فتح الدلائل والملفات العادية (والروابط الرمزية إذا تم تمكينها).
لسوء الحظ ، هذا لا يعمل على Cygwin. على الأقل على بعض إصدارات Cygwin على بعض
إصدارات Windows ، فإن مجرد محاولة تحديد ما إذا كان الملف هو نوع جهاز يمكن أن يتسبب في ظهور ملف
برنامج للتعليق. الحل هو حذف أو إعادة تسمية أي أسماء ملفات مفسرة
كأسماء الأجهزة قبل إجراء التحليل. هذه `` الأسماء المحجوزة '' المزعومة هي
CON و PRN و AUX و CLOCK $ و NUL و COM1-COM9 و LPT1-LPT9 ، متبوعًا اختياريًا بامتداد
(على سبيل المثال ، `` com1.txt '') ، في أي دليل ، وعلى أي حال (Windows غير حساس لحالة الأحرف).

Do ليس تحميل أو فرق قوائم النتائج من مصادر غير موثوق بها. يتم تنفيذها باستخدام
لا يُقصد من وحدة Python pickle ووحدة pickle أن تكون آمنة ضد الأخطاء
أو البيانات التي تم إنشاؤها بشكل ضار. تم تصميم قوائم النتائج المخزنة للاستخدام في وقت لاحق بنفسها
المستخدم الذي أنشأ قائمة النتائج ؛ في هذا السياق هذا القيد ليس مشكلة.

استخدم Flawfinder عبر الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

  • 1
    نظيفة عميق
    نظيفة عميق
    نص Kotlin الذي يرمي إلى بناء جميع الأسلحة النووية
    مخابئ من مشاريع Gradle / Android.
    مفيد عندما يتيح لك Gradle أو IDE
    تحت. تم اختبار البرنامج النصي على
    macOS ، لكن ...
    تنزيل برنامج Deep-clean
  • 2
    الكسوف Checkstyle المكونات في
    الكسوف Checkstyle المكونات في
    المكون الإضافي Eclipse Checkstyle
    يدمج كود Java Checkstyle
    المدقق في Eclipse IDE. ال
    يوفر المكون الإضافي تعليقات في الوقت الفعلي لـ
    المستخدم عن فيك ...
    قم بتنزيل Eclipse Checkstyle Plug-in
  • 3
    com.AstrOrzPlayer
    com.AstrOrzPlayer
    AstrOrz Player هو مشغل وسائط مجاني
    برنامج ، جزء يعتمد على WMP و VLC. ال
    لاعب بأسلوب بسيط ، مع
    أكثر من عشرة ألوان موضوع ، ويمكن أيضا
    ب ...
    تنزيل AstrOrzPlayer
  • 4
    موفيستارتف
    موفيستارتف
    Kodi Movistar + TV es un ADDON para XBMC /
    Kodi que تسمح لك بتوفير واحد
    فك التشفير دي لوس سيرفيسيوس IPTV دي
    Movistar Integrado en uno de los
    المراكز الطبية أماه ...
    تحميل برنامج Movistartv
  • 5
    كود :: بنات
    كود :: بنات
    Code :: Blocks هو برنامج مجاني ومفتوح المصدر ،
    عبر الأنظمة الأساسية C و C ++ و Fortran IDE
    بني لتلبية الاحتياجات الأكثر إلحاحًا
    من مستخدميها. انها مصممة لتكون جدا
    يمتد ...
    تنزيل Code :: Blocks
  • 6
    وسط
    وسط
    وسط أو واجهة ماين كرافت المتقدمة
    وتتبع البيانات / الهيكل هو أداة ل
    عرض لمحة عامة عن Minecraft
    العالم ، دون إنشائه فعليًا. هو - هي
    علبة ...
    تحميل Amidst
  • أكثر "

أوامر لينكس

Ad