את'ריס, ערכת כלים לבדיקת קוד פייתון

גוגל חשפה לאחרונה שחרורו של פרויקט אתריס, שהיא התפתחות של קבוצה של כלי קוד פתוח מתמחה לבדיקות מטשטשות של קוד פיתון והרחבות ל- CPython שנכתבו ב- C / C ++.

proyecto אל משתמש במנוע מבוסס libFuzzer וניתן להשתמש בה בשילוב עם כלי Sanitizer של Address ו- Sanitizer התנהגות בלתי מוגדרת כדי לאתר שגיאות נוספות. הקוד פתוח תחת רישיון Apache 2.0.

אודות גוגל אתריס

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

תמיכה בבדיקת קוד עבור Python 2.7 ו- Python 3.3+, אך לכיסוי מודרך מלא, מומלץ להשתמש בסניפי Python 3.8 ו- 3.9, התומכים כעת בסטטיסטיקה של opcode לפי opcode.

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

לדוגמא, בעת בדיקת ספריית הניתוח של YAML באתריס, נמצא כי מבני YAML מסוימים, כגון ציון "-_" במקום ערך שלם או שימוש ברשימה במקום מפתח, זורקים חריג לא צפוי במקום שגיאות תקן ב- YAMLE.

מבחן ה- fuzz הוא טכניקה ידועה לגילוי שגיאות תכנות. לרבים מהשגיאות הניתנות לזיהוי השלכות אבטחה חמורות. גוגל מצאה אלפי פרצות אבטחה ותקלות אחרות בשימוש בטכניקה זו. Fuzzing משמש באופן מסורתי בשפות מקומיות כמו C או C ++, אך בשנה שעברה יצרנו מנוע fuzzing חדש של פייתון. היום שחררנו את מנוע ה- fuzzing של את'ריס כמקור פתוח.

את'ריס יכול לשמש גם לזיהוי הבדלים בהתנהגות ספריות המתמקדות במשימות זהות. לדוגמא, בדיקת סיכום של חבילת הפייתון "idna" והספרייה "libidn2", שמבצעת את המשימה לפענח שמות דומיינים בינלאומיים, גילתה שהם לא תמיד מניבים את אותה התוצאה.

אחד השימושים הטובים ביותר עבור אתריס הוא עבור מפזרים דיפרנציאליים. מדובר בתמיהות המחפשות הבדלים בהתנהגותן של שתי ספריות שנועדו לעשות את אותו הדבר. אחת הדוגמאות הפוזרות המצורפות לאתריס עושה בדיוק את זה כדי להשוות את חבילת "idna" של פייתון עם חבילת C "libidn2".

בפרט, אם התחום השתמש ברצפי Unicode, אז "idna" ו- "libidn2" המירו את שם התחום הבינלאומי למארחים שונים.

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

חשוב לקחת בחשבון את זה בדיקות מטושטשות מייצרות זרם של כל מיני שילובים אקראיים של נתוני קלט, קרוב לנתונים בפועל (למשל דפי HTML עם פרמטרים אקראיים של תגים, קבצים או תמונות עם כותרות לא תקינות וכו ') ולתקן תקלות אפשריות בתהליך.

אם רצף כלשהו גורם לחריג או שאינו תואם את התגובה הצפויה, ככל הנראה התנהגות זו מצביעה על באג או פגיעות.

לבסוף, כאמור את'ריס עובד עם קוד פייתון בגרסאות 2.7 ו- 3.3+, אם כי גוגל ממליצה בחום להשתמש בתוספות 3.8+ ותוספים מקוריים שנכתבו עבור CPython.

חלונות עדיין אינם בין מערכות ההפעלה הנתמכותאז המנוע מעניין רק משתמשי לינוקס ו- Mac OS X לעת עתה.

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

אם אתה רוצה לדעת יותר על זה, אתה יכול לבדוק את ההערה המקורית ב- הקישור הבא.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.