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

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

שיטת ההתקפה הכינה זאת זה כבר רשום תחת CVE-2021-42574 זה מגיע תחת השם Trojan Source ומבוסס על יצירת טקסט שנראה אחרת למהדר/מתורגמן ולאדם הצופה בקוד.

על מקור טרויאני

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

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

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

גילינו דרכים לתפעל את הקידוד של קובצי קוד מקור כך שצופים ומהדרים אנושיים יראו היגיון שונה. שיטה אחת מזיקה במיוחד משתמשת בתווים לעקוף כיווניות Unicode כדי להציג את הקוד כאנגרמה של ההיגיון האמיתי שלו. וידאנו שהתקפה זו פועלת נגד C, C++, C #, JavaScript, Java, Rust, Go ו-Python, ואנו חושדים שהיא תעבוד נגד רוב השפות המודרניות האחרות.

תוך כדי סקירת הקוד, המפתח יעמוד בפני הסדר החזותי של הדמויות ויראה הערה חשודה בעורך טקסט, ממשק אינטרנט או IDE, אבל המהדר והמתורגמן ישתמשו בסדר הלוגי של התווים ויטפלו בקוד הזדוני כפי שהוא, ללא קשר לטקסט הדו-כיווני בהערה. מספר עורכי קוד פופולריים (VS Code, Emacs, Atom), כמו גם ממשקים לצפייה בקוד במאגרים (GitHub, Gitlab, BitBucket וכל מוצרי Atlassian) מושפעים.

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

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

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

חוץ מזה פגיעויות כבר החלו לתקן מוכן עבור GCC, LLVM / Clang, Rust, Go, Python ו-binutils. גם GitHub, Bitbucket וג'ירה כבר בהכנות לפתרון יחד עם GitLab.

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


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

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

*

*

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