דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ניתוח חולשת PwnKit (תגובות)

ניתוח חולשת PwnKit (תגובות)

מתוזמן נעוץ נעול הועבר תכנות
15 פוסטים 5 כותבים 690 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • WWWW מנותק
    WWWW מנותק
    WWW
    השיב לnigun ב נערך לאחרונה על ידי
    #4

    @nigun אמר בניתוח חולשת PwnKit (תגובות):

    לא הבנתי מה נמצא בargv[0] כשאני מריץ pkexec בשורת הפקודה בלי פרמטר

    שם הקובץ.

    WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

    nigunN תגובה 1 תגובה אחרונה
    1
    • nigunN מנותק
      nigunN מנותק
      nigun
      השיב לWWW ב נערך לאחרונה על ידי
      #5

      @www
      איזה? pkexec?

      מייל: nigun@duck.com

      WWWW תגובה 1 תגובה אחרונה
      0
      • WWWW מנותק
        WWWW מנותק
        WWW
        השיב לnigun ב נערך לאחרונה על ידי WWW
        #6

        @nigun אמר בניתוח חולשת PwnKit (תגובות):

        pkexec

        כן.
        ככה זה בכל קובץ שאתה מריץ.
        אתה כותב בשורת הפקודה:

        filname arg1 arg2
        

        מתקבל מערך:

        { 
        0: filname,
        1: arg1,
        2: arg2
        }
        

        WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

        תגובה 1 תגובה אחרונה
        3
        • yossizY מנותק
          yossizY מנותק
          yossiz
          השיב לnigun ב נערך לאחרונה על ידי yossiz
          #7

          @nigun
          יש מוסכמה, שמי שמריץ את התוכנה שם ב-argv[0] את השם של הקובץ של התוכנה, כלומר אם אתה מריץ pkexec מתוך bash אז bash (בתור תוכנה שמכבדת את המוסכמה הזו) תכניס את המילה pkexec ב-argv[0].

          אבל חשוב להבין שזו רק מוסכמה. אין משהו שמחייב את זה. אפשר להכניס שם מחרוזת אקראית, או אפשר להכניס שם null pointer שמסמן את סוף מערך ה-argv.

          ניצול החולשה מסתמכת על זה שהכנסת שם הקובץ הוא אופציונאלי.

          אגב, משהו מעניין,

          יש הרבה פקודות שמנצלים מוסכמה זו כדי שתוכל לקבל התנהגויות שונות מאותה פקודה, ההתקנה של הפקודה מתקינה כמה קישורים לאותו קובץ (hardlinks) ולכל אחד שם שונה, והפקודה מחליטה לפי השם ב-argv[0] איך להתנהג.
          דוגמה לזה הוא busybox

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

          תגובה 1 תגובה אחרונה
          6
          • MusiCodeM מנותק
            MusiCodeM מנותק
            MusiCode
            כתב ב נערך לאחרונה על ידי
            #8

            מה הכוונה "משאבים משותפים"?

            yossizY תגובה 1 תגובה אחרונה
            0
            • yossizY מנותק
              yossizY מנותק
              yossiz
              השיב לMusiCode ב נערך לאחרונה על ידי
              #9

              @musicode אתה מתייחס למילים אלו שלי:

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

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

              מקווה שזה יותר ברור עכשיו. תודה על ההערה.

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              תגובה 1 תגובה אחרונה
              3
              • צדיק תמיםצ מנותק
                צדיק תמיםצ מנותק
                צדיק תמים
                כתב ב נערך לאחרונה על ידי
                #10

                @yossiz אמר בניתוח חולשת PwnKit:

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

                לא הבנתי, זה שזה הגיע לחולשה זה מעלה או חיסרון? ובאיזה שפה מדובר פה? סליחה על הבורות.

                Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                טיפים

                yossizY תגובה 1 תגובה אחרונה
                0
                • yossizY מנותק
                  yossizY מנותק
                  yossiz
                  השיב לצדיק תמים ב נערך לאחרונה על ידי
                  #11

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

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

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  תגובה 1 תגובה אחרונה
                  3
                  • WWWW מנותק
                    WWWW מנותק
                    WWW
                    כתב ב נערך לאחרונה על ידי
                    #12

                    @yossiz

                    pkexec תיקח תוצאה זו ותכניס אותה חזרה ל... משתנה הסביבה הראשונה. יוצא שהצלחנו להזריק משתנה הסביבה לא בטוחה לתוך התהליך. משתנה הסביבה נראית כך עכשיו: GCONV_PATH=./xxx:.‎

                    לא הבנתי למה?

                    WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                    yossizY תגובה 1 תגובה אחרונה
                    1
                    • yossizY מנותק
                      yossizY מנותק
                      yossiz
                      השיב לWWW ב נערך לאחרונה על ידי
                      #13

                      @www על איזה חלק בדיוק אתה שואל?

                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                      WWWW תגובה 1 תגובה אחרונה
                      0
                      • WWWW מנותק
                        WWWW מנותק
                        WWW
                        השיב לyossiz ב נערך לאחרונה על ידי
                        #14

                        @yossiz אמר בניתוח חולשת PwnKit (תגובות):

                        @www על איזה חלק בדיוק אתה שואל?

                        איפה ראינו שהוא מחזיר את התוצאה למשתנה הסביבה הראשון?

                        WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                        yossizY תגובה 1 תגובה אחרונה
                        0
                        • yossizY מנותק
                          yossizY מנותק
                          yossiz
                          השיב לWWW ב נערך לאחרונה על ידי
                          #15

                          @www

                          610   path = g_strdup (argv[n]);
                          ...
                          629   if (path[0] != '/')
                          630     {
                          ...
                          632       s = g_find_program_in_path (path);
                          ...
                          639       argv[n] = path = s;
                          

                          שורה 639 מכניס את המצביע למחרוזת החדשה שהוחזרה על ידי g_find_program_in_path לתוך argv[n] שכנתבאר נמצא ב-envp[0]

                          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                          תגובה 1 תגובה אחרונה
                          1
                          • dovidD dovid העביר נושא זה מ-תכנות ב-

                          בא תתחבר לדף היומי!
                          • התחברות

                          • אין לך חשבון עדיין? הרשמה

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