Rust תציל את לינוקס מ-AI, אומר גרג קרוה-הרטמן
עקוב אחר ZDNET: הוסף אותנו כמקור מועדף בגוגל.
נקודות המפתח של ZDNET
- Rust תציל את לינוקס מחולשות האבטחה המובנות של C.
- לינוקס, המתמודדת עם מבול של בעיות אבטחה שהתגלו בבינה מלאכותית, יכולה להשתמש בעזרה.
- בהמשך, יותר ויותר קוד לינוקס ייכתב ב- Rust.
ב- כנס שבוע החלודההגדול בעולם שפת חלודה כנס, באוטרכט, הולנד, פתח מתחזק הליבה היציב של לינוקס, גרג קרואה-הרטמן, באומרו: "אני כאן כדי לדבר על נתונים לא מהימנים ולינוקס, ו איך חלודה תציל אותנו." לאחר "חודש או חודשיים ארוכים ברשימת האבטחה של הליבה", הוא דחף את הנקודה הזו עוד יותר: "אני הולך להצהיר אפילו יותר נועז ולומר, 'אתה הולך להציל את לינוקס'. סליחה, הכל תלוי בך."
חִסָכוֹן? לינוקס צריך לשמור?
מה שהוא דיבר עליו זה הפתאומי מבול של חורי אבטחה רציניים של לינוקס שמתגליםכגון Dirty Frag, Copy Fail ו-Fragnesia, שהתגלו הודות לתוכניות האחרונות לזיהוי באגים של AI.
כתוצאה מכך, Kroah-Hartman, ש"ראה כל באג אבטחה ליבה אי פעם" מאז 2005, אמר שצוות הליבה מוציא כעת "13 CVEs [Common Vulnerabilities and Exposures] יום, או משהו, משהו מטורף." הוא חושב ש- Rust היא אחת הדרכים המציאותיות הבודדות לחתוך את קבוצת הבאגים שמגיעים מהמלכודות המסורתיות של טיפול בשגיאות וניהול משאבים של C.
גַם: אחת ההפצות הכי ידידותיות למשתמש של לינוקס שהשתמשתי בהן אי פעם היא גם אחת המאובטחות ביותר
Kroah-Hartman המחיש את המלכודות הללו עם באגים C אמיתיים בקרנל, כולל באג Bluetooth בן 15 שנה שהצביע על מצביע מבלי לבדוק אותו ובאג Xen שבו "שכחנו לפתוח" בנתיב שגיאה. "רוב הבאגים בקרנל הם הדברים הקטנים והמינוריים האלה", הוא הסביר. "תנאי השגיאה לא נבדקים, מנעולים לא נשכחים, זיכרונות שלא שוחררו דולפים, ופגיעויות מצטברות עם הזמן. הם קורסים את הקרנל. זה מה שאנחנו חיים איתו ב-C. זו הסיבה שאנחנו לא אוהבים את זה".
Kroah-Hartman טענה ש"היופי הטוב ביותר של Rust" הוא לתפוס את הטעויות האלה בזמן בנייה ולא בסקירה. לדוגמה, בכל הנוגע לנעילה, הוא הדגיש את הפשטות הנעילה של Rust בקרנל: "הדרך היחידה שבה אתה יכול לקבל גישה למצביעים פנימיים של מבנים היא על ידי אחיזה של המנעול הזה, ושחרור המנעול באופן אוטומטי. המהדר עושה את זה, זה שמור, המנעול קורה, הכל מאושר. אתה פשוט לא יכול לכתוב קוד כדי לגשת לערכים האלה… בלי לתת לך לגשת לערכים האלה… בלי לתת.
המאפיינים האלה, טען, מסירים ישירות חלק עצום מהבאגים שהוא רואה: "זה הולך לחסוך לנו את שני הדברים האלה. ראשית, 60% מהבאגים בקרנל ממש שם, הם נעלמו. תודה." התמורה היא מוקדמת יותר, אכיפה אוטומטית יותר: "אם זה קורה בזמן הבנייה, לא בזמן הבדיקה, אל תהפוך אותי למתחזק שצריך לקרוא את הקוד שלך [and] תגיד, 'אה, אז אתה בודק כראוי את ערך השגיאה הזה. אה, תפסת נכון את המנעולים במקום הנכון?' חלודה נותנת לנו את זה בחינם. זה הדבר הכי טוב אי פעם".
גם אם Rust ייעלם מחר, טען קרואה-הרטמן, זה כבר אילץ את הליבה לנקות את קוד C וממשקים. הוא זיכה את ההשפעה של Rust על הסף: "גנבנו את זה מ-Rust. תודה. זה רעיון טוב, אז אם Rust נעלם מחר, ניקינו את קוד ה-C בקרנל כל כך הרבה וקלטנו את הרעיונות. אנו מודים לכם, הפכתם את לינוקס לטוב יותר עם זה רק על ידי קיומנו".
גַם: לינוקס מקבלת קריאת השכמה באבטחה – למה זה היה בלתי נמנע ואני לא מודאג
הוא תיאר C "שומרים" ומנעולי scoped חדשים בהשראת Rust: "עכשיו יש לנו את זה, יש לנו מנעולים ומקצים C-scoped, והוספנו את הקוד החדש הזה, מה שמקשה עלינו לטעות בו, אבל הכי חשוב, זה הופך את הקידוד לפשוט יותר". עם יותר מ-5,000 מפתחים ורק כ-700 מתחזקים, הוא אמר, זמן הביקורת הוא המשאב הדל ביותר – כך שדפוסים שהופכים את הנכונות ברורה הם חיוניים: "אנחנו מבצעים אופטימיזציה כדי להפוך את הקוד לקל לסקירה… אם אני יכול לסקור את הקוד שלך ביתר קלות, אני יכול להציץ בו ולהגיד, 'היי, תראה, ברור שהבנת נכון כי אתה משתמש במעט והדפוס הזה'.
כריכות חלודה מאלצות שינויים עמוקים יותר גם בצד C. כשנזכר בכנס Rust-for-Linux מוקדם, הוא אמר שכאשר ראה "מאות שורות של קוד Rust להתמודדות עם שתי שורות של קוד C", הוא הבין, "אני יכול לשנות את קוד C. אנחנו יכולים לשנות את קוד C כדי להפוך את קוד Rust לפשוט יותר. אין לנו בעיה לשנות את שני הצדדים של המחסום הזה. בוא נעשה את זה". כעת הוא זוקף את ה צוות חלודה ללינוקס עם עיצוב מחדש של ממשקי מנהל ההתקן: "הכללים המעורבים, וכיצד התכונות והממשקים פועלים עבור ליבת הדרייבר, והאינטראקציה עם קוד ה-C בקרנל יהפכו את מנהלי התקנים לפשוטים יותר לכתיבה וקשים יותר לכתיבה [wrong]… הם עשו עבודה נהדרת, נהדרת".
מעבר לתכונות השפה, Kroah-Hartman קשרה את Rust ישירות לדחיפה רחבה יותר סביב נתונים לא מהימנים והרעיון ש"כל הקלט הוא רע". בהשאלה שורה מאבטחת מיקרוסופט, הוא אמר למשתתפים: "אם אתם אף פעם לא זוכרים שום דבר אחר בהרצאה שלי, רק תזכרו את ארבע המילים האלה. זה בא מאבטחת מיקרוסופט לפני הרבה מאוד שנים. הם הבינו שכל הקלט הוא רע. עליכם לאמת את כל הקלט".
הוא תיאר עבודה מתמשכת על מעטפת מסוג "לא מהימן" ושיטה לאמת ב-Rust שכופה אימות מפורש בנקודה שבה הנתונים עוברים מבלתי מהימן לאמין. "יש לנו משהו שנקרא Untrusted to type הוסף אותו לנתונים, ובכל פעם שאתה רוצה באמת לקבל גישה לנתונים האלה, זה רק סוג, זה לא בעצם קוד, זה הולך לרמוז למהדר. אתה חייב לעבור אימות לפני שאתה באמת ניגש אליו". היתרון המרכזי עבור הסוקרים, הוא אמר, הוא ש"הכל מתמקד" בנקודות המעבר: "הקטע האחד של הקוד, אתה יכול לראות את כל הקוד שעושה את האימות של השינוי ממרחב משתמש, נתונים לא מהימנים לנתונים מהימנים במקום אחד".
גַם: מיקרוסופט מפתיעה עם הפצת לינוקס בשרת הראשונה שלה: Azure Linux 4.0
המודל הזה משתרע לחומרה עוינת יותר ויותר: "הדגם והגרעינים, אנחנו אפילו לא סומכים על חומרה. החומרה מלאה באגים, אבל עכשיו יכולה להיות לך חומרה זדונית, ואנחנו רואים יותר ויותר חומרה זדונית." המטרה שלו היא לסמן נתונים כאלה כבלתי מהימנים ולעקוב אחריהם דרך מערכת הטיפוס, ואז לרכז אנרגיית סקירה: "זה מה שבאמת יציל אותנו, כי אנחנו לא סומכים על נתונים… שאני חושב שאני הולך לעשות את הציטוט הלא מדעי הזה. זה מה שיציל את לינוקס, השילוב של כל הדברים האחרים והנתונים הלא מהימנים. אני חושב שנפטר מה-80% מה-CVE הזה, וייפטר מהכל. מספר עצום, עצום".
חלודה זה לא קסם
עכשיו, זה לא אומר שהוא חושב שרוסט הוא קסם. זה לא. הוא ציטט את אחד ממרכיבי ה-Rust הראשונים שהתמזגו לתוך הליבה: לוגיקה של תצוגת קוד QR בשימוש כאשר הליבה קורסת. "ההיגיון הזה נכתב ב-Rust. כידוע, היה לו באג זיכרון. הוא קיבל מאגר וגודלו, ושאר הקוד הסט מעולם לא בדקו את גודל המאגר… יכול היה לשרבט בכל הזיכרון, כי Rust יכול לקרוס גרוע כמו C." אז, חלודה "איננה כדור כסף."
הוא גם לא מעודד אף אחד לשכתב את ליבת לינוקס ב-Rust. אחד מהמשתתפים שאל, "האם אתה באמת מעודד שכתוב דברים שכבר יש בקרנל איתם [Rust]?" גרג ענה: "לא, אנחנו לא רוצים שכתובים, אז אלא אם כן אתה המנהל והבעלים של הקובץ הזה, פשוט עשה את זה בשביל דברים חדשים. השאר את קוד ה-C הקיים לבד, ובואו נתפתח קדימה אחרי זה." הוא נתן לבינדר, תקשורת בין-תהליכים הליבה של אנדרואיד (IPC)כדוגמה שבה יישומי C ו-Rust מתקיימים במקביל באופן זמני כדי להגיע לשוויון, ולאחר מכן "הם הולכים למחוק את קוד ה-C, כי אני סומך עליהם, והם הבעלים והמתחזקים של שניהם".
גַם: אתה יכול להשתמש בלינוקס 7.0 ב-7 ההפצות האלה היום – הנה למה לצפות
עם הזמן, הוא מצפה שתמיכת חומרה חדשה תטוה מאוד ל-Rust: "Rust הולכת להתפתח בקרנל עם הזמן. חלק מתתי-מערכות אמרו, 'היי, רק מנהלי התקנים חדשים לגרפיקה צריכים להיכתב ב-Rust'… עם הזמן, הגענו לנקודה קריטית שבה אתה יכול לכתוב דרייברים טובים באמת עבור כל סוגי התתי-מערכות השונים ב-Rust וב-Linux בשנה או שנתיים הבאות. באופן טיפוסי של קרוה-הרטמן, הוא סיכם את הדגם כאבולוציוני: "לינוקס זה אבולוציה, זה לא עיצוב אינטליגנטי. אנחנו מתפתחים עם הזמן, ועם הזמן נכנסים דרייברים חדשים לחומרה חדשה. תתחיל להשתמש בחומרה החדשה הזו. הדרייבר הישן פשוט לא יתרגל יותר. בסופו של דבר, נמחק אותם, כפי שאנו עושים לאחר כ-20 שנה".
בינתיים, קראה-הרטמן אמר לקהל: "היום, 36 מיליון שורות של לינוקס נמצאות ב-C, עם 113,000 שורות של Rust. יותר מכל, זה מחייב". מכיוון שמנהלי התקנים מהווים את החלק הארי של הליבה, "אליס ריהל, מתכנתת אנדרואיד מובילה של Rust ומפתחי Rust-for-Linux, נאלצו ללכת ולכתוב כריכות לכל דבר כדי לכתוב דרייבר זעיר ב-Rust." זה אילץ את הקהילה להרפות את הכלל הרגיל שלה נגד קוד שלא נעשה בו שימוש: "אנחנו גם לא אוהבים להוסיף קוד לגרעין שאינו בשימוש, אז קשה להוסיף כריכה… אלא אם כן יש לך משתמש לזה. אז זו קצת בעיה של תרנגולת וביצה. נאלצנו לכופף את הכלל הזה קצת".
הוא גם סימן פריסות בעולם האמיתי בקרוב: "טלפונים של אנדרואיד ייצאו, בתקווה בקרוב, ויפעילו את כל [Rust] קוד ב-Binder. אז זה שוב, מיליארדי מכשירים יכולים להפעיל Rust בלינוקס בקרוב."
מה שמכר בסופו של דבר מספר מתחזקי הליבה, כולל אותו, ב-Rust היה איך זה "מקל על סקירת הקוד". עִם CI [Continuous Integration] בוטים האוכפים בנייה ומערכת הסוג של Rust האוכפת אינווריאציות מפתח, מתחזקים יכולים "להתמקד בלוגיקה" ולא בהנהלת חשבונות משאבים: "יכול להיות שאכפת לי מהפונקציה האחת הזו. אני לא צריך לדאוג לגבי שאר הדברים האלה, כי אני מניח שזה עובד כמו שצריך, כי זה נבנה כמו שצריך."
גַם: לינוס טורוואלדס על טענת הבינה המלאכותית שמכעיסת אותו, ומה שחקרי אבטחה לא צריכים לעשות לעולם
מבחינה פנימית, הוא אמר, המתחזקים המובילים כבר קראו למעמדה של Rust: "מתחזרי ליבת לינוקס, אנחנו מתכנסים כל שנה ומדברים על מה שהתהליכים עושים. בשנה שעברה, אמרנו ניסוי החלודה הסתיים. זה לא ניסוי. זה באמת." הרציונל: "האנשים מאחורי זה אמיתיים. אנחנו סומכים עליהם. אנחנו יודעים מה הם עושים. הם הראו והשקיעו את העבודה כדי להפוך את Rust לשפה בת קיימא בקרנל, ואנחנו הולכים להדביק את זה. בואו נתקדם במלוא המרץ. וכמו תמיד," הוא אמר בפזיזות, "השליטה בעולם ממשיכה".