מחקר

Anthropic הריצה את Claude על 25 פרויקטי קוד פתוח ומצאה 493 ממצאים

במקום לחפש פרצות אחת-אחת, Claude מיפה קוד שחשוף יותר מהנדרש, ובכלל זה כ-4,500 שורות ב-OpenSSH שאפשר היה להגיע אליהן בלי הזדהות.

4 דק׳ קריאה
צילום מסך של דף המחקר של Anthropic בשם "Using Claude to reduce the attack surface of code", עם טקסט המחקר על צמצום משטח התקיפה.
צילום מסך: anthropic.com
בכתבה הזו
  1. הגישה: לצמצם חשיפה במקום לרדוף אחרי כל באג
  2. מה נמצא
  3. OpenSSH: 4,500 שורות שלא היו צריכות להיות חשופות
  4. כלי לשימוש חוזר
  5. מה עדיין לא ברור
  6. מה זה אומר בשבילכם

Anthropic פרסמה מחקר שבו Claude סרק 25 פרויקטי קוד פתוח גדולים, בשפות כמו C, C++, Java, PHP ו-Python, ומצא 493 ממצאים. המחקר, שכתב Chris Rohlf, עוסק בצמצום "משטח התקיפה": קוד שתוקף יכול להגיע אליו, גם כשהמערכת לא צריכה לחשוף אותו. בפוסט של Anthropic נכתב שהנתונים הם תצוגה מקדימה של מחקר רחב יותר.

הגישה: לצמצם חשיפה במקום לרדוף אחרי כל באג

לפי Anthropic, תיקון פרצה בודדת מלמד מעט על הפרצות שנשארו. לכן החברה בחנה גישה אחרת: להקטין את כמות הקוד שאפשר להגיע אליו, ובכך להפחית את חומרתן של פרצות שעדיין לא התגלו, כולל כאלה שכבר מנוצלות. הפרצות עצמן לא נעלמות, אבל קשה יותר להגיע אליהן.

Claude עבד בשלוש שיטות. הראשונה חיפשה קוד שנגיש בהגדרות ברירת המחדל בלי שפונקציה כלשהי צריכה אותו. השנייה חיפשה זוגות של אפשרויות הגדרה שנראות סבירות לבד, אך יחד מכבות בשקט מנגנון אבטחה. השלישית חיפשה קוד רגיש ומורכב שרץ לפני בדיקת הרשאות כמו הזדהות. הפרויקטים כללו יותר מחמישה מיליון שורות קוד. Claude מנה בהם יותר מ-17,000 אפשרויות הגדרה, ו-3,842 מהן קשורות לאבטחה.

מה נמצא

בכל 11 הפרויקטים שדורשים הזדהות לפני שימוש נמצא קוד שנגיש בלי כוונה, אם כי לא נתח גדול מהקוד. הממצאים כללו 93 חשיפות מיותרות לפני הזדהות בהגדרות ברירת המחדל, 37 מקומות שבהם קוד רץ או מצב נשמר לפני הזדהות, ו-61 שילובי הגדרות שמחלישים בשקט בקרה שהמנהל הגדיר. Anthropic מציינת שאף אחד מאלה לא היה ניתן לניצול מיידי בפני עצמו.

הממצאים המעניינים ביותר נוגעים לשילובי הגדרות: 162 שילובים רגישים לאבטחה התקבלו בלי שגיאה, בלי אזהרה ובלי תיעוד. ב-94 מהם השילוב כיבה בקרת אבטחה בשקט, וב-68 האחרים נמצאו אי-עקביות, למשל מאזין שנשאר פתוח אף שההגדרה אומרת שהוא כבוי.

דפוס אחד הופיע באופן עצמאי בארבעה פרויקטים. מנהל כותב כלל גישה לפי שם מחשב או תבנית, אבל אם בדיקת שם מתוך כתובת (reverse DNS) כבויה, לשרת יש רק כתובת IP, ותבנית של שם לא תתאים לה לעולם. התוצאה: כלל חסימה לא נאכף והרשימה "נכשלת לכיוון פתוח". בתיעוד חלק מהפרויקטים יש אזכור שהכללים תלויים בבדיקות DNS, אך אף אחד לא מזכיר את ההשלכה הזו.

במקרה אחר, שני הגדרות שהתנגשו ביטלו לגמרי דרישה שכל לקוח יזדהה בתעודה. שרת שהוגדר לקבל רק לקוחות מהימנים קיבל חיבור מכל אחד. השילוב הזה היה בתוכנה 21 שנה. בפרויקט נוסף, אפשרות שדורשת תעודת לקוח נאכפה ברוב נקודות הקצה אך הושמטה בשקט בכמה מהן, תלוי בצורת הכתיבה של שם ההגדרה.

OpenSSH: 4,500 שורות שלא היו צריכות להיות חשופות

OpenSSH היא תוכנת גישה מרחוק מאובטחת, ומדובר בקוד C שנחשב לאיכותי ומבוקר היטב. Claude עקב אחרי נתיבי הקלט של שרת ה-SSH בגרסה 10.4 ומצא כ-4,500 שורות קוד חדש וניסיוני לאלגוריתם חתימה עמיד לתקיפות קוונטיות בשם ML-DSA-44, שלקוח לא מזוהה יכול היה להגיע אליו בהגדרות ברירת המחדל. האלגוריתם לא מופעל כברירת מחדל, אבל הקוד נגיש גם כשמנהל מוציא אותו במפורש: השרת פירש את המפתח ורק אחר כך בדק אם סוג המפתח מותר. הקוד הזה מהווה כ-16% מהקוד של OpenSSH שרץ לפני הזדהות.

Anthropic דיווחה למפתחים עם תיקונים, וגרסה 10.5 העבירה את הבדיקה לפני הפירוש. Claude מצא שני פערים בבדיקה: לקוח יכול היה להצהיר על אלגוריתם מותר ולשלוח בפועל מפתח ML-DSA, וכן תעודות הועברו לפירוש ולאימות חתימה מלא לפני בדיקת ההגדרות. החברה בנתה הוכחת היתכנות ועבדה עם המתחזקים על תיקון, ששולח בגרסה 10.6. לפי Anthropic, התיקון הסיר כחמישית מהקוד שלקוח לא מזוהה יכול היה להגיע אליו בבנייה רגילה.

כלי לשימוש חוזר

Anthropic אחדה את השיטות ל"סקיל" (יכולת ארוזה) אחד של Claude, והיא עובדת לשלבו ב-OSS-Scanner. הוא רץ בשלושה מעברים, וכל אחד מתחיל בהקשר ריק עם תקציר קצר מהקודם. בכל מעבר Claude בונה רשימת נקודות כניסה ומאשר כל ממצא באמצעות מעקב דינמי אחרי התוכנית. בממצאי ברירת מחדל הוא מתכנן חסימה ובודק מול חבילת הבדיקות של הפרויקט שהתנהגות ברירת המחדל לא השתנתה. שינוי שנוגע להגדרות שאינן ברירת מחדל מועבר להחלטת אדם.

מה עדיין לא ברור

הפוסט מציג את המספרים כתצוגה מקדימה. הוא לא מפרט אילו 25 פרויקטים נסרקו, באיזה מודל של Claude נעשה שימוש, כמה זה עלה, כמה מ-493 הממצאים אושרו כפגיעויות אמיתיות וכמה תוקנו, ואיך דורגה החומרה. בפוסט של Rohlf ב-X נכתב "מעל 500 ממצאים", ואילו הפוסט של Anthropic מדבר על 493, ולכן המספר המדויק הוא זה שבפוסט המחקר. בנוסף, הנתונים אינם מאומתים באופן עצמאי: הם של Anthropic עצמה.

מה זה אומר בשבילכם

המחקר מיועד בעיקר לצוותי פיתוח ואבטחה ולמתחזקי קוד פתוח. Anthropic ממליצה לארגונים לנסות את השיטה על התוכנות שהם תלויים בהן, וכותבת שגם בלי הסקיל הספציפי המתודולוגיה צפויה לעבוד. הסקיל עצמו עוד לא משולב ב-OSS-Scanner, והפוסט לא מפרט מחיר או זמינות בישראל. מי שמפעיל שרת OpenSSH יכול לבדוק אם הוא על גרסה 10.6 ומעלה.

הכלים בכתבה

תגובות

היו הראשונים להגיב

המייל לא יוצג באתר. תגובה ראשונה מתפרסמת אחרי אישור. כללי התגובות