Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
linux-3.0.35_CVE-2019-10220 — شجرة مصدر نواة لينكس 3.0.35 مع التركيز على CVE-2019-10220، توفر مرجعًا لتحليل الثغرات وأبحاث الاستغلال. | Kitploit
أدوات/GitHubGitHub/trinadh465/linux-3.0.35_cve-2019-10220
تحليل الثغرات الأمنيةالاستغلالتحليل الملفات الثنائيةالأوراق والأبحاثالتعلم والتعليم
GitHubtrinadh465/linux-3.0.35_cve-2019-10220

linux-3.0.35_CVE-2019-10220

شجرة مصدر نواة لينكس 3.0.35 مع التركيز على CVE-2019-10220، توفر مرجعًا لتحليل الثغرات وأبحاث الاستغلال.

عرض المستودع
1منذ 3 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

إصدار نواة لينكس 3.x http://kernel.org/

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

ما هو لينكس؟

لينكس هو نسخة من نظام التشغيل يونكس، كُتب من الصفر بواسطة لينوس تورفالدز بمساعدة فريق غير مترابط من المخترقين عبر الإنترنت. يهدف إلى الامتثال لـ POSIX ومواصفات يونكس الموحدة.

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

يتم توزيعه بموجب رخصة جنو العمومية العامة - انظر ملف COPYING المرفق لمزيد من التفاصيل.

على أي أجهزة يعمل؟

على الرغم من أنه تم تطويره في البداية لأجهزة الكمبيوتر الشخصية 32-bit x86 (386 أو أعلى)، إلا أن لينكس اليوم يعمل أيضًا على (على الأقل) معماريات Compaq Alpha AXP، Sun SPARC و UltraSPARC، Motorola 68000، PowerPC، PowerPC64، ARM، Hitachi SuperH، Cell، IBM S/390، MIPS، HP PA-RISC، Intel IA-64، DEC VAX، AMD x86-64، AXIS CRIS، Xtensa، Tilera TILE، AVR32 و Renesas M32R.

يمكن نقل لينكس بسهولة إلى معظم المعماريات 32 بت أو 64 بت ذات الأغراض العامة طالما أنها تحتوي على وحدة إدارة ذاكرة مقسمة (PMMU) ومنفذ لمترجم GNU C (gcc) (جزء من مجموعة مترجمات GNU، GCC). تم نقل لينكس أيضًا إلى عدد من المعماريات بدون PMMU، على الرغم من أن الوظائف تكون محدودة بشكل واضح. تم نقل لينكس أيضًا إلى نفسه. يمكنك الآن تشغيل النواة كتطبيق في مساحة المستخدم - وهذا يسمى UserMode Linux (UML).

التوثيق:

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

  • توجد ملفات README مختلفة في الدليل الفرعي Documentation/: تحتوي هذه عادة على ملاحظات تثبيت خاصة بالنواة لبعض برامج التشغيل على سبيل المثال. انظر Documentation/00-INDEX للحصول على قائمة بما هو موجود في كل ملف. يرجى قراءة ملف Changes، لأنه يحتوي على معلومات حول المشكلات التي قد تنتج عن ترقية النواة الخاصة بك.

  • الدليل الفرعي Documentation/DocBook/ يحتوي على عدة أدلة لمطوري النواة والمستخدمين. يمكن عرض هذه الأدلة بعدة تنسيقات: PostScript (.ps)، PDF، HTML، وصفحات الدليل، من بين أمور أخرى. بعد التثبيت، "make psdocs"، "make pdfdocs"، "make htmldocs"، أو "make mandocs" ستعرض التوثيق بالتنسيق المطلوب.

تثبيت مصدر النواة:

  • إذا قمت بتثبيت المصادر الكاملة، ضع ملف النواة المضغوط في دليل لديك فيه صلاحيات (مثل دليل منزلك) وقم بفك ضغطه:

    root@kitploit:~
     gzip -cd linux-3.X.tar.gz | tar xvf -
    

    أو bzip2 -dc linux-3.X.tar.bz2 | tar xvf -

    استبدل "XX" برقم إصدار أحدث نواة.

    لا تستخدم المنطقة /usr/src/linux/! هذه المنطقة تحتوي على مجموعة (عادة غير كاملة) من رؤوس النواة التي تستخدمها ملفات رؤوس المكتبة. يجب أن تتطابق مع المكتبة، ولا يجب أن تتلف بسبب أي نواة اليوم.

  • يمكنك أيضًا الترقية بين إصدارات 3.x عن طريق التصحيح. يتم توزيع التصحيحات بتنسيق gzip التقليدي وتنسيق bzip2 الأحدث. للتثبيت عن طريق التصحيح، احصل على جميع ملفات التصحيح الأحدث، وادخل إلى الدليل الأعلى لمصدر النواة (linux-3.x) ونفذ:

    root@kitploit:~
     gzip -cd ../patch-3.x.gz | patch -p1
    

    أو bzip2 -dc ../patch-3.x.bz2 | patch -p1

    (كرر xx لجميع الإصدارات الأكبر من إصدار شجرة المصدر الحالية، بالترتيب) ويجب أن يكون كل شيء على ما يرام. قد ترغب في إزالة ملفات النسخ الاحتياطي (xxx~ أو xxx.orig)، وتأكد من عدم وجود تصحيحات فاشلة (xxx# أو xxx.rej). إذا كانت موجودة، فقد ارتكبت أنت أو أنا خطأ.

    على عكس التصحيحات لنواة 3.x، فإن التصحيحات لنواة 3.x.y (المعروفة أيضًا باسم نواة المستقرة) ليست تزايدية بل يتم تطبيقها مباشرة على نواة 3.x الأساسية. يرجى قراءة Documentation/applying-patches.txt لمزيد من المعلومات.

    بدلاً من ذلك، يمكن استخدام البرنامج النصي patch-kernel لأتمتة هذه العملية. يحدد إصدار النواة الحالي ويطبق أي تصحيحات موجودة.

    root@kitploit:~
     linux/scripts/patch-kernel linux
    

    الوسيطة الأولى في الأمر أعلاه هي موقع مصدر النواة. يتم تطبيق التصحيحات من الدليل الحالي، ولكن يمكن تحديد دليل بديل كوسيطة ثانية.

  • إذا كنت تقوم بالترقية بين الإصدارات باستخدام تصحيحات السلسلة المستقرة (على سبيل المثال، patch-3.x.y)، لاحظ أن هذه "الإصدارات النقطية" هي ليست تزايدية ويجب تطبيقها على شجرة 3.x الأساسية. على سبيل المثال، إذا كانت نواتك الأساسية هي 3.0 وتريد تطبيق تصحيح 3.0.3، فلا تقم ولا يجب عليك أولاً تطبيق تصحيحات 3.0.1 و 3.0.2. بالمثل، إذا كنت تعمل بنواة الإصدار 3.0.2 وتريد الانتقال إلى 3.0.3، يجب عليك أولاً عكس تصحيح 3.0.2 (أي patch -R) قبل تطبيق تصحيح 3.0.3. يمكنك قراءة المزيد حول هذا في Documentation/applying-patches.txt

  • تأكد من عدم وجود ملفات .o قديمة وتبعيات متناثرة:

    root@kitploit:~
     cd linux
     make mrproper
    

    يجب أن تكون الآن قد قمت بتثبيت المصادر بشكل صحيح.

متطلبات البرامج

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

دليل البناء للنواة:

عند تجميع النواة، سيتم تخزين جميع ملفات الإخراج افتراضيًا مع رمز مصدر النواة. باستخدام الخيار "make O=output/dir" يمكنك تحديد مكان بديل لملفات الإخراج (بما في ذلك .config). مثال: رمز مصدر النواة: /usr/src/linux-3.N دليل البناء: /home/name/build/kernel

لتكوين وبناء النواة استخدم: cd /usr/src/linux-3.N make O=/home/name/build/kernel menuconfig make O=/home/name/build/kernel sudo make O=/home/name/build/kernel modules_install install

يرجى ملاحظة: إذا تم استخدام الخيار 'O=output/dir' فيجب استخدامه لجميع استدعاءات make.

تكوين النواة:

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

  • أوامر التكوين البديلة هي: "make config" واجهة نصية عادية. "make menuconfig" قوائم ألوانية نصية، وقوائم راديو ومربعات حوار. "make nconfig" قوائم ألوانية نصية محسنة. "make xconfig" أداة تكوين قائمة على X windows (Qt). "make gconfig" أداة تكوين قائمة على X windows (Gtk). "make oldconfig" افتراض جميع الأسئلة بناءً على محتويات ملف ./.config الحالي والسؤال عن رموز التكوين الجديدة. "make silentoldconfig" مثل أعلاه، لكن يتجنب إزدحام الشاشة بأسئلة تمت الإجابة عليها بالفعل. بالإضافة إلى تحديث التبعيات. "make defconfig" إنشاء ملف ./.config باستخدام قيم الرموز الافتراضية إما من arch/$ARCH/defconfig أو arch/$ARCH/configs/${PLATFORM}_defconfig، اعتمادًا على المعمارية. "make ${PLATFORM}_defconfig" إنشاء ملف ./.config باستخدام قيم الرموز الافتراضية من arch/$ARCH/configs/${PLATFORM}_defconfig. استخدم "make help" للحصول على قائمة بجميع المنصات المتاحة لمعماريتك. "make allyesconfig" إنشاء ملف ./.config عن طريق تعيين قيم الرموز إلى 'y' قدر الإمكان. "make allmodconfig" إنشاء ملف ./.config عن طريق تعيين قيم الرموز إلى 'm' قدر الإمكان. "make allnoconfig" إنشاء ملف ./.config عن طريق تعيين قيم الرموز إلى 'n' قدر الإمكان. "make randconfig" إنشاء ملف ./.config عن طريق تعيين قيم الرموز إلى قيم عشوائية.

    يمكنك العثور على مزيد من المعلومات حول استخدام أدوات تكوين نواة لينكس في Documentation/kbuild/kconfig.txt.

    ملاحظات حول "make config":

    • وجود برامج تشغيل غير ضرورية سيجعل النواة أكبر، ويمكن أن يؤدي في بعض الظروف إلى مشاكل: البحث عن بطاقة تحكم غير موجودة قد يربك وحدات التحكم الأخرى
    • تجميع النواة مع تعيين "نوع المعالج" أعلى من 386 سينتج نواة لا تعمل على جهاز 386. ستكتشف النواة ذلك عند الإقلاع، وتتوقف.
    • نواة مع محاكاة رياضية مصرح بها ستستمر في استخدام المعالج المساعد إذا كان موجودًا: لن يتم استخدام المحاكاة الرياضية أبدًا في هذه الحالة. ستكون النواة أكبر قليلاً، لكنها ستعمل على أجهزة مختلفة بغض النظر عن وجود معالج رياضي أم لا.
    • تفاصيل تكوين "اختراق النواة" عادة ما تؤدي إلى نواة أكبر أو أبطأ (أو كليهما)، ويمكن أن تجعل النواة أقل استقرارًا عن طريق تكوين بعض الإجراءات لمحاولة كسر الكود السيئ للعثور على مشاكل النواة (kmalloc()). وبالتالي يجب عليك على الأرجح الإجابة بـ 'n' على أسئلة ميزات "التطوير"، "التجريبية"، أو "التصحيح".

تجميع النواة:

  • تأكد من توفر gcc 3.2 على الأقل. لمزيد من المعلومات، راجع Documentation/Changes.

    يرجى ملاحظة أنه لا يزال بإمكانك تشغيل برامج المستخدم بصيغة a.out مع هذه النواة.

  • قم بتنفيذ "make" لإنشاء صورة نواة مضغوطة. من الممكن أيضًا تنفيذ "make install" إذا كان لديك lilo مثبتًا ليتوافق مع ملفات make النواة، ولكن قد ترغب في التحقق من إعداد lilo الخاص بك أولاً.

    للقيام بالتثبيت الفعلي، يجب أن تكون مسؤولاً، ولكن لا يتطلب أي من البناء العادي ذلك. لا تستخدم اسم root عبثًا.

  • إذا قمت بتكوين أي من أجزاء النواة كـ modules، فستحتاج أيضًا إلى تنفيذ "make modules_install".

  • إخراج تجميع/بناء النواة اللفظي:

    عادةً ما يعمل نظام بناء النواة في وضع هادئ إلى حد ما (ولكن ليس صامتًا تمامًا). ومع ذلك، في بعض الأحيان تحت أنت أو مطورو النواة الآخرون إلى رؤية أوامر التجميع والربط وغيرها كما يتم تنفيذها بالضبط. لهذا، استخدم وضع البناء "اللفظي". يتم ذلك عن طريق إدراج "V=1" في أمر "make". على سبيل المثال:

    make V=1 all

    لجعل نظام البناء يخبر أيضًا عن سبب إعادة بناء كل هدف، استخدم "V=2". الافتراضي هو "V=0".

  • احتفظ بنواة احتياطية في متناول اليد في حالة حدوث خطأ ما. هذا صحيح بشكل خاص بالنسبة للإصدارات التطويرية، حيث أن كل إصدار جديد يحتوي على كود جديد لم يتم تصحيحه. تأكد من الاحتفاظ بنسخة احتياطية من الوحدات المقابلة لتلك النواة أيضًا. إذا كنت تقوم بتثبيت نواة جديدة بنفس رقم الإصدار مثل نواتك العاملة، قم بعمل نسخة احتياطية من دليل الوحدات الخاص بك قبل تنفيذ "make modules_install". بدلاً من ذلك، قبل التجميع، استخدم خيار تكوين النواة "LOCALVERSION" لإلحاق لاحقة فريدة بإصدار النواة العادي. يمكن تعيين LOCALVERSION في قائمة "الإعداد العام".

  • لتشغيل نواتك الجديدة، ستحتاج إلى نسخ صورة النواة (على سبيل المثال .../linux/arch/i386/boot/bzImage بعد التجميع) إلى المكان الذي توجد فيه نواتك القابلة للإقلاع العادية.

  • لم يعد تشغيل نواة مباشرة من قرص مرن بدون مساعدة محمل إقلاع مثل LILO مدعومًا.

    إذا كنت تقوم بتشغيل لينكس من القرص الصلب، فمن المحتمل أنك تستخدم LILO الذي يستخدم صورة النواة كما هو محدد في الملف /etc/lilo.conf. ملف صورة النواة عادة ما يكون /vmlinuz، /boot/vmlinuz، /bzImage أو /boot/bzImage. لاستخدام النواة الجديدة، احفظ نسخة من الصورة القديمة وانسخ الصورة الجديدة فوق القديمة. ثم، يجب عليك إعادة تشغيل LILO لتحديث خريطة التحميل!! إذا لم تفعل، فلن تتمكن من تشغيل صورة النواة الجديدة.

    إعادة تثبيت LILO عادة ما يكون أمرًا بتشغيل /sbin/lilo. قد ترغب في تحرير /etc/lilo.conf لتحديد إدخال لصورة النواة القديمة (مثلاً، /vmlinux.old) في حال لم تعمل الجديدة. راجع وثائق LILO لمزيد من المعلومات.

    بعد إعادة تثبيت LILO، يجب أن يكون كل شيء جاهزًا. أغلق النظام، وأعد التشغيل، واستمتع!

    إذا احتجت في أي وقت إلى تغيير جهاز الجذر الافتراضي، وضع الفيديو، حجم قرص الرام، إلخ. في صورة النواة، استخدم برنامج 'rdev' (أو بدلاً من ذلك خيارات إقلاع LILO عند الحاجة). لا حاجة لإعادة تجميع النواة لتغيير هذه المعلمات.

  • أعد التشغيل مع النواة الجديدة واستمتع.

إذا حدث خطأ ما:

  • إذا كانت لديك مشاكل تبدو بسبب أخطاء في النواة، يرجى التحقق من ملف MAINTAINERS لمعرفة ما إذا كان هناك شخص معين مرتبط بالجزء من النواة الذي تواجه مشكلة معه. إذا لم يكن هناك أحد مدرج هناك، فإن أفضل شيء ثانٍ هو إرسال بريد إلكتروني إلي ([email protected])، وربما إلى أي قائمة بريدية أخرى ذات صلة أو إلى مجموعة الأخبار.

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

  • إذا أدى الخطأ إلى رسالة مثل

    unable to handle kernel paging request at address C0000010 Oops: 0002 EIP: 0010:XXXXXXXX eax: xxxxxxxx ebx: xxxxxxxx ecx: xxxxxxxx edx: xxxxxxxx esi: xxxxxxxx edi: xxxxxxxx ebp: xxxxxxxx ds: xxxx es: xxxx fs: xxxx gs: xxxx Pid: xx, process nr: xx xx xx xx xx xx xx xx xx xx xx

    أو معلومات تصحيح أخطاء نواة مماثلة على شاشتك أو في سجل النظام الخاص بك، يرجى تكرارها تمامًا. قد يبدو التفريغ غير مفهوم لك، لكنه يحتوي على معلومات قد تساعد في تصحيح المشكلة. النص أعلاه التفريغ مهم أيضًا: فهو يخبر شيئًا عن سبب تفريغ النواة للكود (في المثال أعلاه بسبب مؤشر نواة خاطئ). مزيد من المعلومات حول فهم التفريغ موجود في Documentation/oops-tracing.txt

  • إذا قمت بتجميع النواة مع CONFIG_KALLSYMS يمكنك إرسال التفريغ كما هو، وإلا ستحتاج إلى استخدام برنامج "ksymoops" لفهم التفريغ (لكن التجميع مع CONFIG_KALLSYMS عادة ما يكون مفضلاً). يمكن تنزيل هذه الأداة من ftp://ftp..kernel.org/pub/linux/utils/kernel/ksymoops/ . بدلاً من ذلك يمكنك القيام بالبحث في التفريغ يدويًا:

  • في تصحيح التفريغ مثل أعلاه، يساعد بشكل كبير إذا كان بإمكانك البحث عن معنى قيمة EIP. القيمة السداسية العشرية في حد ذاتها لا تساعدني أو أي شخص آخر كثيرًا: ستعتمد على إعداد النواة الخاص بك. ما يجب عليك فعله هو أخذ القيمة السداسية العشرية من سطر EIP (تجاهل "0010:")، والبحث عنها في قائمة أسماء النواة لمعرفة أي دالة نواة تحتوي على العنوان المخالف.

    لمعرفة اسم دالة النواة، ستحتاج إلى العثور على الملف الثنائي للنظام المرتبط بالنواة التي أظهرت الأعراض. هذا هو الملف 'linux/vmlinux'. لاستخراج قائمة الأسماء ومطابقتها مع EIP من تحطم النواة، قم بما يلي:

    root@kitploit:~
     nm vmlinux | sort | less
    

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

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

  • بدلاً من ذلك، يمكنك استخدام gdb على نواة قيد التشغيل. (للقراءة فقط؛ أي لا يمكنك تغيير القيم أو تعيين نقاط التوقف.) للقيام بذلك، قم أولاً بتجميع النواة مع -g؛ قم بتحرير arch/i386/Makefile بشكل مناسب، ثم قم بتنفيذ "make clean". ستحتاج أيضًا إلى تمكين CONFIG_PROC_FS (عبر "make config").

    بعد إعادة التشغيل مع النواة الجديدة، قم بتنفيذ "gdb vmlinux /proc/kcore". يمكنك الآن استخدام جميع أوامر gdb المعتادة. الأمر للبحث عن النقطة التي تحطم فيها نظامك هو "l *0xXXXXXXXX". (استبدل علامات XXX بقيمة EIP.)

    gdb على نواة غير قيد التشغيل يفشل حاليًا لأن gdb (بشكل خاطئ) يتجاهل إزاحة البداية التي تم تجميع النواة من أجلها.

تنزيل الأداة