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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/satheesh575555/linux-4.1.15_cve-2022-45934
تحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالمصممي الأخطاءتحليل الملفات الثنائية
GitHubsatheesh575555/linux-4.1.15_cve-2022-45934

linux-4.1.15_CVE-2022-45934

كود مصدر نواة Linux 4.1.15 مع التركيز على CVE-2022-45934، مما يوفر مرجعًا لتحليل الثغرات وأبحاث الاستغلال.

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
4منذ 3 سنواتلم تتم المراجعة بعد

Linux kernel release 4.x http://kernel.org/

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

ما هو لينكس؟

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

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

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

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

على الرغم من تطويره في الأصل لأجهزة الكمبيوتر الشخصية القائمة على x86 32 بت (386 أو أعلى)، يعمل Linux اليوم أيضًا على (على الأقل) 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 architectures.

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

الوثائق:

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

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

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

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

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

    xz -cd linux-4.X.tar.xz | tar xvf -

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

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

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

    xz -cd ../patch-4.x.xz | patch -p1

    استبدل "x" لجميع الإصدارات الأكبر من الإصدار "X" لشجرة المصدر الحالية، بالترتيب، ويجب أن تكون بخير. قد ترغب في إزالة ملفات النسخ الاحتياطي (some-file-name~ أو some-file-name.orig)، وتأكد من عدم وجود تصحيحات فاشلة (some-file-name# أو some-file-name.rej). إذا كانت موجودة، فإما أنك أو أنا ارتكبنا خطأ.

    على عكس تصحيحات نواة 4.x، فإن تصحيحات نواة 4.x.y (المعروفة أيضًا باسم نواة -stable) ليست تدريجية ولكنها بدلاً من ذلك تُطبق مباشرة على نواة 4.x الأساسية. على سبيل المثال، إذا كانت نواتك الأساسية هي 4.0 وتريد تطبيق تصحيح 4.0.3، يجب ألا تطبق أولاً تصحيحات 4.0.1 و 4.0.2. وبالمثل، إذا كنت تستخدم إصدار النواة 4.0.2 و تريد القفز إلى 4.0.3، يجب عليك أولاً عكس تصحيح 4.0.2 (أي patch -R) قبل تطبيق تصحيح 4.0.3. يمكنك قراءة المزيد حول هذا في Documentation/applying-patches.txt

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

    linux/scripts/patch-kernel linux

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

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

    cd linux make mrproper

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

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

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

دليل BUILD للنواة:

عند تجميع النواة، سيتم تخزين جميع ملفات الإخراج افتراضيًا مع رمز مصدر النواة. استخدام الخيار "make O=output/dir" يسمح لك بتحديد مكان بديل لملفات الإخراج (بما في ذلك .config). مثال:

root@kitploit:~
 رمز مصدر النواة: /usr/src/linux-4.X
 دليل البناء:    /home/name/build/kernel

لتكوين وبناء النواة، استخدم:

root@kitploit:~
 cd /usr/src/linux-4.X
 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 olddefconfig" مثل ما سبق، ولكنه يضبط الرموز الجديدة على قيمها الافتراضية دون مطالبة.

    "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 عن طريق تعيين قيم الرمز إلى قيم عشوائية.

    "make localmodconfig" إنشاء تكوين بناءً على التكوين الحالي و الوحدات المحملة (lsmod). يعطل أي خيار وحدة غير ضروري للوحدات المحملة.

    root@kitploit:~
                        لإنشاء localmodconfig لجهاز آخر،
                        قم بتخزين lsmod لذلك الجهاز في ملف
                        وتمريره كمعامل LSMOD.
    
                target$ lsmod > /tmp/mylsmod
                target$ scp /tmp/mylsmod host:/tmp
    
                host$ make LSMOD=/tmp/mylsmod localmodconfig
    
                        ما سبق يعمل أيضًا عند الترجمة المتقاطعة.
    

    "make localyesconfig" مشابه لـ localmodconfig، باستثناء أنه سيقوم بتحويل جميع خيارات الوحدات إلى خيارات مدمجة (=y).

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

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

    • وجود برامج تشغيل غير ضرورية سيجعل النواة أكبر، ويمكن تحت بعض الظروف أن يؤدي إلى مشاكل: فحص بطاقة تحكم غير موجودة قد يربك وحدات التحكم الأخرى لديك.

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

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

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

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

    للقيام بالتثبيت الفعلي، يجب أن تكون root، ولكن لا يتطلب أي من البناء العادي ذلك. لا تذكر اسم 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 مدعومًا.

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

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

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

    إذا احتجت في أي وقت إلى تغيير جهاز الجذر الافتراضي، وضع الفيديو، حجم قرص RAM، إلخ. في صورة النواة، استخدم برنامج '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 من تعطل النواة، قم بما يلي:

    nm vmlinux | sort | less

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

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

تنزيل الأداة
  • تجميع النواة مع تعيين "نوع المعالج" على أعلى من 386 سينتج عنه نواة لا تعمل على 386. ستكتشف النواة ذلك عند الإقلاع، وتستسلم.

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

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

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

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

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

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