עיין בסקר השימושיות שלנו כדי לשפר את האתר הזה.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

התקשות ליבה

אנדרואיד 8.0 הוסיף תכונות הקשחת גרעינים שיעזרו למתן פגיעות של גרעינים ולמצוא באגים במנהלי הליבה. התכונות הן בגרעין / נפוץ בסניפים android-3.18, android-4.4 ו- android-4.9.

יישום

כדי לרכוש תכונות אלה, על יצרני מכשירים ו- SOC למזג את כל תיקוני ההתקשות מ- kernel/common לעץ הליבה שלהם ולהפעיל את אפשרויות תצורת הליבה הבאות:

  • העתקת משתמשים CONFIG_HARDENED_USERCOPY=y : CONFIG_HARDENED_USERCOPY=y
  • הדמיית PAN - arm64: CONFIG_ARM64_SW_TTBR0_PAN=y
  • הדמיית PAN - זרוע: CONFIG_CPU_SW_DOMAIN_PAN=y
  • KASLR - גרעינים 4.4 ואילך: CONFIG_RANDOMIZE_BASE=y

KASLR דורש גם תמיכה במטען אתחול להעברת אנטרופיית חומרה דרך צומת עץ ההתקן /chosen/kaslr-seed או על ידי יישום EFI_RNG_PROTOCOL .

כמו כן, ודא שתכונות ההקשחה הקיימות מופעלות:

  • הפחתת הצפת ערימת חיץ: CONFIG_CC_STACKPROTECTOR_STRONG=y
  • הגנה על זיכרון פנימי: CONFIG_DEBUG_RODATA=y או CONFIG_STRICT_KERNEL_RWX=y
  • הגבל גישה למרחב המשתמש מהליבה - x86 (מופעלת כברירת מחדל): CONFIG_X86_SMAP=y

בדיקה

כדי לבדוק את היישום שלך, הוסף את CONFIG_LKDTM=y לתצורת הליבה וודא שכל אחת מהפקודות הבאות מובילה לפאניקה של הליבה:

echo ACCESS_USERSPACE > /sys/kernel/debug/provoke-crash/DIRECT
echo EXEC_USERSPACE > /sys/kernel/debug/provoke-crash/DIRECT
echo WRITE_RO > /sys/kernel/debug/provoke-crash/DIRECT
echo WRITE_RO_AFTER_INIT > /sys/kernel/debug/provoke-crash/DIRECT
echo WRITE_KERN > /sys/kernel/debug/provoke-crash/DIRECT
echo EXEC_STACK > /sys/kernel/debug/provoke-crash/DIRECT
echo EXEC_RODATA > /sys/kernel/debug/provoke-crash/DIRECT
echo EXEC_KMALLOC > /sys/kernel/debug/provoke-crash/DIRECT
echo EXEC_VMALLOC > /sys/kernel/debug/provoke-crash/DIRECT
echo CORRUPT_STACK > /sys/kernel/debug/provoke-crash/DIRECT

לאנדרואיד -4.9:

echo USERCOPY_HEAP_SIZE_TO > /sys/kernel/debug/provoke-crash/DIRECT
echo USERCOPY_HEAP_SIZE_FROM > /sys/kernel/debug/provoke-crash/DIRECT

נושאים נפוצים

שינויים אלה עשויים לחשוף באגים במנהלי ההתקנים של הליבה, אותם יש לתקן על ידי יצרן ההתקן או הבעלים של מנהל ההתקן של הליבה.

  • העתקת משתמשים קשוחה חושפת בדיקת גבולות שגויה בעת העתקת נתונים אל / ממרחב המשתמש. אלה צריכים להיות מתוקנים כמו כל באגים אחרים של שחיתות בזיכרון.
  • הדמיית PAN חושפת גישה ישירה למרחב המשתמש מהליבה, דבר שאינו מותר. יש לשנות את הנהגים המנסים לגשת לזיכרון שטח המשתמש כדי להשתמש במקום זאת בפונקציות copy_to_user() / copy_from_user() .