תוכנית ה-RAR המכובדת, קיצור של הארכיון של רושל לאחר היוצר המקורי שלו, היה פופולרי בחוגי שיתוף הקבצים והפצת התוכנה במשך עשרות שנים, לא מעט בגלל תכונות שחזור השגיאות המובנות שלו ושחזור קבצים.
משתמשי אינטרנט מוקדמים יזכרו, במעט חיבה, את הימים שבהם העברות קבצים גדולות נשלחו כארכיונים דחוסים מפוצלים על פני מספר תקליטונים, או שהועלו לפורומים מקוונים בעלי מודעות לגודל כסדרה של נתחים בגודל צנוע שנדחסו לראשונה כדי לשמור החלל ולאחר מכן התרחב לצורת טקסט מקודדת ASCII בלבד.
אם תקליטון אחד נעלם או לא היה קורא בחזרה כמו שצריך, או אם חלק אחד של העלאת ארכיון של 12 חלקים נמחק מהשרת בטעות, לא היה לך מזל.
RAR, או WinRAR בצורת Windows העכשווית שלו, עזר להתמודד עם בעיה זו על ידי הצעת מה שנקרא נפחי התאוששות.
נתוני תיקון שגיאה מאוחסנים כאלה, כך שניתן היה לשחזר ארכיונים מרובי חלקים באופן אוטומטי ומוחלט גם אם נתח שלם אחד (או יותר, תלוי בכמות מידע השחזור שנשמר) בסופו של דבר אובד או בלתי ניתן לשחזור.
שמירת גלגל רזרבי בתא המטען/תא המטען
ככל הנראה, ארכיוני RAR עד וכולל גרסה 4 בשימוש מה שנקרא תיקון זוגיות; גרסאות חדשות יותר משתמשות במערכת תיקון שגיאות מורכבת יותר מבחינה חישובית אך חזקה יותר המכונה קודים של ריד-שלמה.
תיקון מבוסס זוגיות מסתמך על פעולת XOR, אותה נסמן כאן בסמל ⊕ (סימן פלוס בתוך עיגול).
XOR הוא קיצור של OR בלעדי, המציין "או X נכון או Y נכון, אבל לא שניהם בו זמנית", ובכך בעקבות זאת שולחן האמת, שאנו בונים על ידי הנחה ש-X ו-Y יכולים לקבל רק את הערכים 0 (false) או 1 (true):
אם X=0 ו-Y=0 אז X ⊕ Y = 0 (שני כוזבים עושים שקר) אם X=1 ו-Y=0 אז X ⊕ Y = 1 (אחד יכול להיות נכון, אבל לא שניהם) אם X=0 ו Y=1 ואז X ⊕ Y = 1 (אחד יכול להיות נכון, אבל לא שניהם) אם X=1 ו-Y=1 אז X ⊕ Y = 0 (זה חייב להיות כזה או אחר)
פונקציית XOR פועלת קצת כמו השאלה "האם תרצה קפה או תה?"
אם אתה אומר "כן", אז אתה צריך לבחור קפה לבד, או לבחור תה לבד, כי אתה לא יכול לשתות כוס אחת מכל אחד.
כפי שניתן להבין מטבלת האמת שלמעלה, ל-XOR יש את המאפיינים הנוחים X ⊕ 0 = X
, ו X ⊕ X = 0
.
כעת תארו לעצמכם שיש לכם שלושה נתחי נתונים המסומנים A, B ו-C, ואתם מחשבים נתח רביעי P על ידי XOR של A ו-B ו-C ביחד, כך P = (A ⊕ B ⊕ C)
.
בהתחשב בטבלת האמת שלמעלה, ובהתחשב בכך ש-XOR הוא מה שמכונה חִלוּפִי, כלומר ניתן להחליף את סדר הערכים בחישוב אם תרצה, כך X ⊕ Y = Y ⊕ Z
, או A ⊕ B ⊕ C = C ⊕ B ⊕ A = B ⊕ C ⊕ A
וכן הלאה, אנו יכולים לראות ש:
A ⊕ B ⊕ C ⊕ P = A ⊕ B ⊕ C ⊕ (A ⊕ B ⊕ C) = (A⊕A) ⊕ (B⊕B) ⊕ (C⊕C) = 0 ⊕ 0 ⊕ 0 = 0
עכשיו תראה מה קורה אם אחד מ-A, B או C הולך לאיבוד:
A ⊕ B ⊕ P = A ⊕ B ⊕ (A ⊕ B ⊕ C) = (A⊕A) ⊕ (B⊕B) ⊕ C = 0 ⊕ 0 ⊕ C = C <- הנתח החסר חוזר! A ⊕ C ⊕ P = A ⊕ C ⊕ (A ⊕ B ⊕ C) = (A⊕A) ⊕ (C⊕C) ⊕ B = 0 ⊕ 0 ⊕ B = B <-הנתח החסר חוזר! B ⊕ C ⊕ P = B ⊕ C ⊕ (A ⊕ B ⊕ C) = (B⊕B) ⊕ (C⊕C) ⊕ A = 0 ⊕ 0 ⊕ A = A <- הנתח החסר חוזר!
כמו כן, אם P אבד, נוכל להתעלם ממנו כי אנו יכולים לחשב A ⊕ B ⊕ C
בכל מקרה.
במילים פשוטות, קיום נתח נתוני הזוגיות P אומר שנוכל תמיד לשחזר כל נתח חסר, ללא קשר לאיזה מהם הוא.
שגיאת שחזור השגיאה
ובכן, לאחר מה שאנו מניחים שלא הבחינו בו שנים רבות, באג מדובב כעת CVE-2023-40477 עלה על פני השטח ב-WinRAR.
באג זה יכול להיגרם (למרבה האירוניה, אולי) כאשר המוצר עושה שימוש במערכת שחזור נתונים זו.
עד כמה שאנו יכולים לראות, נתח נתוני זוגיות ממולכד המוכנס לארכיון יכול להערים על קוד WinRAR לכתוב נתונים מחוץ לאזור הזיכרון שהוקצה לו.
זה מוביל לניצול הצפת מאגר פגיעות.
בסופו של דבר מתייחסים לנתונים שנכתבים במקום שבו הם אינם שייכים כאל קוד תוכנית שמתבצע, במקום כאל נתונים ישנים רגילים לשימוש בתהליך הוצאת הארכיון.
הבאג הזה לא קיבל ציון חומרה של 10/10 ב"סקאלת הסכנות" של CVSS, והגיע ל-7.8/10 בטענה שלא ניתן לנצל את הפגיעות ללא סיוע כלשהו מהמשתמש שאליו מתמקדים.
באג את השני
מעניין לציין שבאג אבטחה שני תוקן במהדורת WinRAR האחרונה, ולמרות שזה נשמע פחות בעייתי מהפגם CVE-2023-40477 שהוזכר לעיל, TechCrunch מציע שהוא נוצל בחיים האמיתיים באמצעות ארכיונים ממולכדים "פורסם בלפחות שמונה פורומים ציבוריים [המכסים] מגוון רחב של נושאים הקשורים למסחר, השקעות ונושאים הקשורים למטבעות קריפטוגרפיים."
אנחנו לא יכולים למצוא מספר CVE עבור זה, אבל WinRAR מתאר את זה בפשטות כך:
WinRAR עלולה להפעיל קובץ שגוי לאחר שמשתמש לחץ פעמיים על פריט בארכיון בעל מבנה מיוחד.
במילים אחרות, משתמש שפתח ארכיון והחליט להסתכל בתוכו קובץ תמים לכאורה (קובץ טקסט README, למשל, או תמונה לא מזיקה למראה) עלול להפעיל במפתיע קובץ אחר מהארכיון במקום, כגון כסקריפט או תוכנית להפעלה.
זה קצת כמו לקבל אימייל המכיל קובץ מצורף שנראה בטוח יחד עם קובץ בעל מראה מסוכן, להחליט להתחיל בחקירה רק את הקובץ שנראה בטוח, אבל מבלי לדעת את הקובץ המסוכן במקום זאת.
ממה שאנו יכולים לדעת, ובאירוניה נוספת, הבאג הזה היה קיים בקוד של WinRAR לפירוק קבצי ZIP, לא בקוד לעיבוד פורמט קובץ RAR משלו.
קובצי ZIP דו-פרצופיים הם בעיית אבטחת סייבר במשך שנים, מכיוון שהאינדקס של קבצים וספריות בכל ארכיון ZIP מופיע פעמיים, פעם אחת בסדרה של בלוקים של נתונים המשולבים לאורך הקובץ, ואז שוב בגוש אחד של נתונים ב- סוֹף. קוד שמאמת קבצים על סמך אינדקס אחד אך מחלץ ומשתמש בהם על בסיס השני, מבלי לבדוק ששני האינדקסים עקביים, הוביל למספר רב של נקודות תורפה שניתנות לניצול לאורך השנים. איננו יודעים אם בעיית האינדקס הכפולה הזו היא הסיבה העיקרית לבאג ה-WinRAR האחרון, אך זוהי תזכורת שפריקת קבצי ארכיון יכולה להיות תהליך מורכב ונוטה לשגיאות הדורש תשומת לב קפדנית לאבטחה, אפילו במחיר של עיבוד נוסף וביצועים מופחתים.
מה לעשות?
אם אתה משתמש WinRAR, ודא שאתה ב- הגרסה העדכנית ביותר, שהוא 6.23 בזמן כתיבת שורות אלה [2023-08-23T16:30Z]
ככל הנראה, אין מערכת עדכונים אוטומטית בתוכנת WinRAR, אז אתה צריך להוריד את המתקין החדש ולהפעיל אותו בעצמך כדי להחליף גרסה ישנה.
אם אתה מתכנת, זכור לסקור קוד מדור קודם שעדיין קיים בתוכנה שלך אך נראה כ"פרש" או "כבר לא מומלץ למשתמשים חדשים".
ככל שאנו יכולים לראות, WinRAR לא מייצרת יותר נתוני שחזור בסגנון ישן, והשתמשה באלגותימים חכמים יותר לתיקון שגיאות מאז גרסה 5, אך מסיבות של תאימות לאחור עדיין מעבדת קבצים בסגנון ישן אם הם מוצגים.
זכור שכאשר תוקפים יוצרים קבצים ממולכדים בתקווה להכשיל את התוכנה שלך, הם בדרך כלל לא משתמשים בתוכנה שלך ליצירת קבצים אלה בכל מקרה, כך שבדיקת שגרות הקלט שלך רק מול קבצים ששגרות הפלט שלך יצרו במקור אף פעם לא מספיקה.
אם לא שקלת תעלול, מונח ז'רגון המתייחס לטכניקת בדיקה שבה מיליוני כניסות מתוקנות, שגויות ושגויות בכוונה מוצגות לתוכנה שלך תוך ניטור אחר התנהגות לא נכונה...
...אז אולי זה הזמן לחשוב על זה.
Fuzzers טובים לא רק מריצים את הקוד שלך שוב ושוב, אלא גם מנסים לעשות זאת להתאים את השינויים, פריצות ושינויים שהם מבצעים בנתוני הקלט המזויפים שלהם כדי שכמה שיותר מהקוד שלך יתנסה.
זה עוזר לך לקבל את מה שידוע כטוב כיסוי קוד במהלך בדיקות, כולל אילץ את התוכנית שלך לרדת בנתיבי קוד נדירים ויוצאי דופן שכמעט ואינם מופעלים בשימוש רגיל, ושבהם פגיעויות שלא נחקרו אולי אורבות ללא תשומת לב במשך שנים.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. רכב / רכבים חשמליים, פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- PlatoHealth. מודיעין ביוטכנולוגיה וניסויים קליניים. גישה כאן.
- ChartPrime. הרם את משחק המסחר שלך עם ChartPrime. גישה כאן.
- BlockOffsets. מודרניזציה של בעלות על קיזוז סביבתי. גישה כאן.
- מקור: https://nakedsecurity.sophos.com/2023/08/23/using-winrar-be-sure-to-patch-against-these-code-execution-bugs/
- :יש ל
- :הוא
- :לֹא
- :איפה
- ][עמ'
- $ למעלה
- 1
- 125
- 15%
- 23
- 25
- 7
- 700
- a
- אודות
- בנוגע לזה
- מֵעַל
- מוּחלָט
- לרוחב
- לאחר
- שוב
- נגד
- תעשיות
- מוּקצֶה
- לבד
- לאורך
- גם
- למרות
- תמיד
- an
- ו
- אחר
- כל
- מופיע
- ארכיון
- ארכיון
- ARE
- AREA
- סביב
- AS
- סיוע
- לְהַנִיחַ
- At
- תשומת לב
- מחבר
- המכונית
- מכני עם סלילה אוטומטית
- באופן אוטומטי
- בחזרה
- רקע תמונה
- מבוסס
- BE
- כי
- היה
- להיות
- קצת
- אבני
- גבול
- שניהם
- תַחתִית
- חרק
- מובנה
- אבל
- by
- CAN
- זהיר
- לגרום
- מרכז
- מאפיינים
- בדיקה
- בחרו
- מעגל
- חוגים
- קוד
- קָפֶה
- צֶבַע
- תאימות
- לחלוטין
- מורכב
- לחשב
- נחשב
- עִקבִי
- לבנות
- עכשווי
- נוֹחַ
- עלות
- יכול
- לכסות
- כיסוי
- לִיצוֹר
- נוצר
- יוצר
- כוס
- Cve
- אבטחת סייבר
- נתונים
- ימים
- עסקה
- עשרות שנים
- החליט
- מחליטים
- מציין
- תלוי
- ספריות
- לְהַצִיג
- הפצה
- do
- לא
- לא
- מטה
- להורדה
- דיבוב
- בְּמַהֲלָך
- כל אחד
- או
- אמייל
- סוף
- מסתיים
- מספיק
- שלם
- שגיאה
- אֲפִילוּ
- אי פעם
- דוגמה
- יצא לפועל
- הוצאת להורג
- מורחב
- ומנוצל
- נוסף
- תמציות
- מְזוּיָף
- שקר
- רחוק
- תכונות
- שלח
- קבצים
- ירי
- ראשון
- פגם
- הבא
- בעד
- טופס
- פוּרמָט
- פורומים
- רביעית
- החל מ-
- פונקציה
- בדרך כלל
- ליצור
- לקבל
- נתן
- טוב
- עילה
- פריצות
- קורה
- יש
- יש
- גובה
- עזר
- עוזר
- כאן
- מקווה
- לרחף
- איך
- HTML
- HTTPS
- if
- תמונה
- תמונה
- in
- כולל
- מדד
- מדדים
- מידע
- תמים
- קלט
- תשומות
- בתוך
- במקום
- אינטרנט
- אל תוך
- חקירה
- השקעה
- באופן אירוני
- אירוניה
- סוגיה
- IT
- שֶׁלָה
- בז'רגון
- שמר
- לדעת
- ידוע
- גָדוֹל
- האחרון
- לשגר
- מוביל
- הכי פחות
- הוביל
- עזבו
- מוֹרֶשֶׁת
- פחות
- החיים
- כמו
- קְצָת
- עוד
- נראה
- נראה
- אבוד
- מזל
- לעשות
- עושה
- רב
- שולים
- max-width
- מאי..
- משמעות
- אומר
- זכרון
- מוּזְכָּר
- יכול
- מיליונים
- חסר
- טעות
- שינויים
- ניטור
- יותר
- הרבה
- מספר
- צורך
- צרכי
- לעולם לא
- חדש
- לא
- ללא חתימה
- נוֹרמָלִי
- עַכשָׁיו
- מספר
- רב
- of
- הצעה
- זקן
- on
- פעם
- ONE
- באינטרנט
- רק
- נפתח
- מבצע
- or
- להזמין
- מְקוֹרִי
- בְּמָקוֹר
- אחר
- הַחוּצָה
- תפוקה
- בחוץ
- יותר
- שֶׁלוֹ
- זוגיות
- תיקון
- פול
- ביצועים
- אוּלַי
- מישור
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- ועוד
- פופולרי
- עמדה
- אפשרי
- הודעות
- חזק
- מוצג
- בעיה
- תהליך
- תהליכים
- תהליך
- המוצר
- תָכְנִית
- מְתַכנֵת
- כמו שצריך
- ציבורי
- גם
- שאלה
- רכס
- נדיר
- במקום
- חומר עיוני
- ממשי
- חיים אמיתיים
- סיבות
- קבלה
- לאחרונה
- מוּמלָץ
- התאוששות
- מופחת
- מתייחס
- ללא קשר
- רגיל
- קרוב משפחה
- לשחרר
- לזכור
- להחליף
- סקירה
- תקין
- מְסוּכָּן
- שורש
- הפעלה
- s
- אותו
- שמור
- לומר
- ציון
- שְׁנִיָה
- אבטחה
- לִרְאוֹת
- סדרה
- שיתוף
- shipped
- קצר
- סִימָן
- בפשטות
- since
- יחיד
- חכם יותר
- So
- תוכנה
- מוצק
- כמה
- מֶרחָב
- במיוחד
- לפצל
- התחלה
- עוד
- מאוחסן
- כזה
- בטוח
- SVG
- סמל
- מערכת
- שולחן
- ממוקד
- תֵה
- לספר
- טווח
- בדיקות
- מֵאֲשֶׁר
- זֶה
- השמיים
- שֶׁלָהֶם
- אותם
- אז
- אלה
- הֵם
- לחשוב
- זֶה
- אלה
- שְׁלוֹשָׁה
- בכל
- כָּך
- זמן
- ל
- יַחַד
- חלק עליון
- מסחר
- העברות
- מַעֲבָר
- שָׁקוּף
- ניסיתי
- מופעל
- טיול
- נָכוֹן
- אמת
- לנסות
- פעמים
- שתיים
- הוצאה
- עדכון
- נטען
- על
- כתובת האתר
- להשתמש
- מְשׁוּמָשׁ
- משתמש
- משתמשים
- שימושים
- באמצעות
- ערכים
- גרסה
- גירסאות
- מאוד
- באמצעות
- פגיעויות
- פגיעות
- היה
- we
- הלכתי
- היו
- מה
- גַלגַל
- מתי
- אם
- אשר
- בזמן
- מי
- רָחָב
- טווח רחב
- רוחב
- יצטרך
- חלונות
- עם
- לְלֹא
- מילים
- תיק עבודות
- להתאמן
- עובד
- כתיבה
- כתוב
- טעות
- X
- שנים
- אתה
- עצמך
- זפירנט
- רוכסן