דוח ביקורת Snap Metamask עבור Qtum

תקציר ניהול

Qtum יצרה קשר עם Sayfer Security על מנת לבצע בדיקות חדירה ב- MetaMask Snap של Qtum ב-05/2024.

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

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

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

לאחר בדיקה של צוות Sayfer, אנו מאשרים שכל בעיות האבטחה המוזכרות בדוח זה טופלו על ידי צוות Qtum.

מתודולוגיית סיכונים

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

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

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

הסיכון מוגדר כדלקמן:

פגיעויות לפי סיכון

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

חומרה
# בעיות
גָבוֹהַ
0
בינוני
0
נמוך
3
מידע
2

גישה

מבוא

Qtum יצרה קשר עם Sayfer כדי לבצע בדיקות חדירה באפליקציית MetaMask Snap שלהם.

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

מחזור החיים של פרויקט בדיקת החדירה שלנו:

01

סקירת היקף

02

סקירה טכנית

03

אימות היקף

04

מודל איומים

05

הערכת אבטחה

06

הערכת אבטחה

סקירת היקף

במהלך הפגישה הראשונה שלנו ולאחר הבנת צרכי החברה, הגדרנו את היקף האפליקציה השוכן בכתובות ה-URL הבאות כהיקף הפרויקט:

  • MetaMask Snap של Qtum

הבדיקות שלנו בוצעו מ-24/05/2024 עד 07/06/2024.

אל תיתן לזה להיות מאוחר מדי!

התחל את הביקורת שלך עם Sayfer

אימות היקף

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

מודל איומים

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

אל תיתן לזה להיות מאוחר מדי!

התחל את הביקורת שלך עם Sayfer

מתודולוגיית הערכת אבטחה

סייפר משתמש OWASP WSTG כסטנדרט הטכני שלנו בעת סקירת יישומי אינטרנט. לאחר הבנה מעמיקה של המערכת החלטנו אילו בדיקות OWASP נדרשות להערכת המערכת.

הערכת אבטחה

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

תיאור טבלת הנושא

כותרת גיליון

ID אמר-??: מזהה לתקשורת קלה על כל פגיעות
מצב פתוח/תוקן/אושר
הסיכון מייצג את גורם הסיכון של הנושא. לתיאור נוסף עיין ב פגיעויות לפי סיכון סָעִיף.
השפעה עסקית הסיכון העיקרי של הפגיעות ברמה העסקית.
מקום כתובת האתר או הקובץ שבו זוהתה בעיה זו. לבעיות ללא מיקום אין מיקום מסוים והן מתייחסות למוצר בכללותו.

תיאור

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

הקלות

הציע אפשרויות פתרון לבעיה זו וקישורים לאתרים מומלצים לתיקון נוסף.

הערכת אבטחה

הבדיקות הבאות נערכו תוך כדי ביקורת המערכת

איסוף מידע

איסוף מידע שם המבחן
WSTG-INFO-01 ערכו סיור של גילוי מנוע חיפוש לאיתור דליפת מידע
WSTG-INFO-02 שרת טביעות אצבע
WSTG-INFO-03 סקור את המטא-קבצים של שרת האינטרנט לאיתור דליפת מידע
WSTG-INFO-04 ספור יישומים בשרת אינטרנט
WSTG-INFO-05 סקור את תוכן דף האינטרנט לאיתור דליפת מידע
WSTG-INFO-06 זיהוי נקודות כניסה לאפליקציה
WSTG-INFO-07 מפה נתיבי ביצוע באמצעות אפליקציה
WSTG-INFO-08 מסגרת יישום אינטרנט טביעת אצבע
WSTG-INFO-09 יישום אינטרנט טביעת אצבע
WSTG-INFO-10 ארכיטקטורת יישומי מפה

בדיקות ניהול תצורה ופריסה

בדיקות ניהול תצורה ופריסה שם המבחן
WSTG-CONF-01 בדוק את תצורת תשתית הרשת
WSTG-CONF-02 בדוק את תצורת פלטפורמת היישום
WSTG-CONF-03 בדיקת הרחבות קבצים לטיפול במידע רגיש
WSTG-CONF-04 סקור את הגיבוי הישן וקבצים ללא הפניה למידע רגיש
WSTG-CONF-05 מנה ממשקי ניהול תשתיות ואפליקציות
WSTG-CONF-06 בדוק שיטות HTTP
WSTG-CONF-07 בדוק HTTP Strict Transport Security
WSTG-CONF-08 בדוק את מדיניות RIA חוצת דומיינים
WSTG-CONF-09 בדוק הרשאת קובץ
WSTG-CONF-10 בדיקת השתלטות על תת-דומיין
WSTG-CONF-11 בדוק אחסון בענן

בדיקת ניהול זהויות

בדיקת ניהול זהויות שם המבחן
WSTG-IDNT-01 הגדרות תפקידי בדיקה
WSTG-IDNT-02 בדוק תהליך רישום משתמש
WSTG-IDNT-03 תהליך הקצאת חשבון לבדיקה
WSTG-IDNT-04 בדיקה של ספירת חשבון וחשבון משתמש שניתן לנחש
WSTG-IDNT-05 בדיקת מדיניות שמות משתמש חלשה או לא נאכפת

בדיקת אימות

בדיקת אימות שם המבחן
WSTG-ATHN-01 בדיקת אישורים שהועברו בערוץ מוצפן
WSTG-ATHN-02 בדיקת אישורי ברירת מחדל
WSTG-ATHN-03 בדיקת מנגנון נעילה חלש
WSTG-ATHN-04 בדיקת עקיפת סכימת אימות
WSTG-ATHN-05 בדיקה לאיתור פגיעים לזכור סיסמה
WSTG-ATHN-06 בדיקת חולשות מטמון הדפדפן
WSTG-ATHN-07 בדיקת מדיניות סיסמאות חלשה
WSTG-ATHN-08 בדיקת תשובה לשאלת אבטחה חלשה
WSTG-ATHN-09 בדיקת פונקציות של שינוי סיסמה חלשה או איפוס
WSTG-ATHN-10 בדיקת אימות חלש יותר בערוץ חלופי

בדיקת הרשאות

בדיקת הרשאות שם המבחן
WSTG-ATHZ-01 בדיקת קובץ מעבר מדריך כלול
WSTG-ATHZ-02 בדיקת סכמת עקיפת הרשאות
WSTG-ATHZ-03 בדיקה להסלמה של הרשאות
WSTG-ATHZ-04 בדיקה לאיתור אובייקט ישיר לא מאובטח

בדיקות ניהול מפגשים

בדיקות ניהול מפגשים שם המבחן
WSTG-SESS-01 בדיקה עבור סכימת ניהול הפעלות
WSTG-SESS-02 בדיקת תכונות של קובצי Cookie
WSTG-SESS-03 בדיקה לקיבוע הפעלה
WSTG-SESS-04 בדיקה של משתני הפעלה חשופים
WSTG-SESS-05 בדיקה לזיוף בקשות חוצות אתרים
WSTG-SESS-06 בדיקת פונקציונליות התנתקות
WSTG-SESS-07 פסק זמן של הפעלת בדיקה
WSTG-SESS-08 בדיקה עבור תמוה סשן
WSTG-SESS-09 בדיקת חטיפת הפעלה

בדיקת אימות נתונים

בדיקת אימות נתונים שם המבחן
WSTG-INPV-01 בדיקה עבור סקריפטים חוצי אתרים משותקפים
WSTG-INPV-02 בדיקה עבור Scripting Cross Site Stored
WSTG-INPV-03 בדיקה של שיבוש פעולת HTTP
WSTG-INPV-04 בדיקת זיהום פרמטר HTTP
WSTG-INPV-05 בדיקה עבור הזרקת SQL
WSTG-INPV-06 בדיקה להזרקת LDAP
WSTG-INPV-07 בדיקה עבור הזרקת XML
WSTG-INPV-08 בדיקה עבור הזרקת SSI
WSTG-INPV-09 בדיקת הזרקת XPath
WSTG-INPV-10 בדיקת הזרקת IMAP SMTP
WSTG-INPV-11 בדיקה עבור הזרקת קוד
WSTG-INPV-12 בדיקה להזרקת פקודה
WSTG-INPV-13 בדיקה להזרקת מחרוזת פורמט
WSTG-INPV-14 בדיקה לאיתור פגיעות דגירה
WSTG-INPV-15 בדיקת הברחת פיצול HTTP
WSTG-INPV-16 בדיקה עבור בקשות נכנסות HTTP
WSTG-INPV-17 בדיקה עבור הזרקת כותרת מארח
WSTG-INPV-18 בדיקה עבור הזרקת תבנית בצד השרת
WSTG-INPV-19 בדיקת זיוף בקשות בצד השרת

טיפול בשגיאה

טיפול בשגיאה שם המבחן
WSTG-ERRH-01 בדיקה לאיתור שגיאות לא תקין
WSTG-ERRH-02 בדיקת עקבות מחסנית

קריפטוגרפיה

קריפטוגרפיה שם המבחן
WSTG-CRYP-01 בדיקה לאבטחת שכבת תחבורה חלשה
WSTG-CRYP-02 בדיקה עבור ריפוד אורקל
WSTG-CRYP-03 בדיקת מידע רגיש שנשלח בערוצים לא מוצפנים
WSTG-CRYP-04 בדיקת הצפנה חלשה

בדיקת לוגיקה עסקית

בדיקת לוגיקה עסקית שם המבחן
WSTG-BUSL-01 בדיקת אימות נתוני לוגיקה עסקית
WSTG-BUSL-02 בדיקת יכולת לזייף בקשות
WSTG-BUSL-03 בדיקות תקינות
WSTG-BUSL-04 בדיקה לתזמון תהליך
WSTG-BUSL-05 בדיקה מספר הפעמים שניתן להשתמש בפונקציה מגביל
WSTG-BUSL-06 בדיקה לעקיפה של זרימות עבודה
WSTG-BUSL-07 בדוק הגנה מפני שימוש שגוי ביישום
WSTG-BUSL-08 בדיקת העלאה של סוגי קבצים בלתי צפויים
WSTG-BUSL-09 בדוק העלאה של קבצים זדוניים

בדיקות צד לקוח

בדיקות צד לקוח שם המבחן
WSTG-CLNT-01 בדיקה עבור Scripting Cross Sites מבוסס DOM
WSTG-CLNT-02 בדיקה לביצוע JavaScript
WSTG-CLNT-03 בדיקה להזרקת HTML
WSTG-CLNT-04 בדיקה להפניה מחדש של כתובת URL בצד הלקוח
WSTG-CLNT-05 בדיקה להזרקת CSS
WSTG-CLNT-06 בדיקה עבור מניפולציה של משאבים בצד הלקוח
WSTG-CLNT-07 בדוק שיתוף משאבים חוצה מקור
WSTG-CLNT-08 בדיקה עבור הבהוב חוצה אתרים
WSTG-CLNT-09 בדיקה ל-Clickjacking
WSTG-CLNT-10 בדיקת WebSockets
WSTG-CLNT-11 בדיקת הודעות אינטרנט
WSTG-CLNT-12 בדיקת אחסון דפדפן
WSTG-CLNT-13 בדיקה עבור הכללת סקריפט חוצה אתרים

בדיקת API

בדיקת API שם המבחן
WSTG-APIT-01 בדיקת GraphQL

הזמינו ביקורת מסיפר

    אתר זה מוגן על ידי reCAPTCHA ו- Google מדיניות פרטיות ו תנאי שימוש באתר להגיש מועמדות.

    ממצאי הערכת אבטחה

    אין שיטה להסיר רשתות שנוספו

    ID SAY-01
    מצב תוקן
    הסיכון נמוך
    השפעה עסקית לא ניתן להסיר רשתות בודדות שנוספו מה-Snap.
    מקום – packages/snap/src/helpers.ts:105

    תיאור

    הקוד מיישם את היכולת להוסיף רשתות נוספות, ומרחיב את הרשימה שלהן מעבר לברירת המחדל. עם זאת, צוין כי אין דרך להסיר אותם אלא על ידי התקנה מחדש של ה-Snap. הפונקציונליות הזו כנראה תוכננה, כי יש פונקציה removeNetwork() אבל לא ניתן לקרוא לה משיטות זמינות לציבור.

    export const networks = {
        get: getNetworks,
        setCurrent: setCurrentNetwork,
        add: addNetwork,
        remove: removeNetwork,
    };

    הקלות

    אנו ממליצים ליישם שיטה זו, כפי שכנראה התכוונה.

     

    חסרה בקשת אישור לייצוא מפתחות פרטיים

    ID SAY-02
    מצב תוקן
    הסיכון נמוך
    השפעה עסקית סכנת דליפת המפתח הפרטי כאשר הוא מוצג בטעות על מסך, למשל במקום ציבורי.
    מקום – packages/snap/src/index.ts:145

    תיאור

    ברוב הפונקציות הקריטיות ב-snap, מוצגת תיבת דו-שיח, המיידעת את המשתמש על הפעולה המתבצעת ומבקשת את אישורו.

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

    הקלות

    לפני הצגת המפתח הפרטי, הוסף בקשת אישור המבקשת את אישור המשתמש.

     

    שיטות מרובות בלתי מיושמות

    ID SAY-03
    מצב תוקן
    הסיכון נמוך
    השפעה עסקית קיים סיכון שחלק מהשיטות שנותרו לא מיושמות עשויות להיות חשובות לפונקציונליות של ה-Snap והן התעלמו בטעות.
    מקום – packages/snap/src/index.ts:163, 169, 260, 266, 272, 278, 284, 290, 296, 302, 308, 314, 320, 326, 472, 509, 541, 568, 574, 580, 586 , 592, 609, 615, 637, 643, 649, 655, 696, 735, 741, 747, 753, 759, 765, 771, 777, 783, XNUMX

    תיאור

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

    הקלות

    אנו ממליצים לסקור את השיטות שתרצה ליישם ב-Snap שלך ולוודא שכולן מכילות היגיון ממשי. לא אמור להיות לאפשר למשתמש לקרוא לשיטות מיותרות שאינך מתכוון ליישם.

     

    קוד מיותר

    ID SAY-04
    מצב תוקן
    הסיכון מידע
    השפעה עסקית שיטות שעושות את אותו הדבר ומחזירות את אותם נתונים מגדילות ללא צורך את גודל בסיס הקוד של ה-snap.
    מקום – packages/snap/src/index.ts:332, 338

    תיאור

    במהלך הניתוח שלנו, שמנו לב ששתי שיטות RPC, EthRequestAccounts ו-EthAccounts, עושות את אותו הדבר ומחזירות את אותם ערכים.

    case RPCMethods.EthRequestAccounts: {
        const wallet = await getWallet();
        return [wallet.address];
    }
    case RPCMethods.EthAccounts: {
        console.log('RPCMethods.EthAccounts');
        console.log('request.params', JSON.stringify(request.params));
        const wallet = await getWallet();
        return [wallet.address];
    }

    בשני המקרים, שיטות אלו מאחזרות את נתוני הארנק הפעיל באמצעות getWallet() ולאחר מכן מחזירות את הכתובת שלו. נכון לעכשיו, ההבדל היחיד הוא ש-EthAccounts מתעד בעוד EthRequestAccounts לא.

    הקלות

    שקול להסיר אחת מהשיטות או לשנות אחת כדי להבדיל אותה מהשנייה

     

    שאריות תגובות של TODO

    ID SAY-05
    מצב תוקן
    הסיכון מידע
    השפעה עסקית הערות TODO וקטעי קוד הערות יכולים לספק לתוקפים פוטנציאליים מידע רב ערך, מלבד להיראות לא מקצועיים.
    מקום – packages/snap/src/index.ts:460, 550
    – packages/snap/src/polyfill.ts:7
    – packages/snap/src/helpers/parsers/tx.ts:55

    תיאור

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

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

    הקלות

    אנו מציעים להסיר הערות המסומנות כ-TODO ושברי קוד שאינם בשימוש בענף הייצור שלך.

    אתה יכול למצוא מידע נוסף על זה בבלוג שלנו

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

    שמור על קשר

    טלפון
    מקום
    תל אביב
    כתובת אימייל
    שליחים:
    אתם מוזמנים ליצור איתנו קשר, נשמח להגיב!

      אתר זה מוגן על ידי reCAPTCHA ו- Google מדיניות פרטיות ו תנאי שימוש באתר להגיש מועמדות.
      עבור לתוכן