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

</ img>
באמצעות שיטה זו, אתה יכול להוסיף זדוניהוראה לתוך קוד המקור הרגיל, והפוך את הטקסט של הוראה זו לבלתי נראה בעת צפייה בקוד באמצעות הערה לאחר מכן. זה יכניס תווים שונים לחלוטין, שיכולים למעשה להיות קוד שרירותי. קוד המקור הסופי נשאר תקין מבחינה סמנטית, אבל לאחר הידור, משהו אחר לגמרי קורה.
בעת צפייה וניתוח של קוד מקור כזההמתכנת יראה קוד עם הערות שאינן מעוררות חשד, אך המהדר או המתורגמן יהפכו את הסדר הלוגי של הסמלים, וההערה התמימה תהפוך לקוד נוסף שהוכנס לתוכנה. השגיאה קיימת כמעט בכל המהדרים – עבור שפות תכנות C, C++ (gcc ו-clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go ו-Python; במגוון עורכי קוד פופולריים, כולל VS Code, Emacs, Atom וממשקי צפייה בקוד מקור ב-GitHub, Gitlab, BitBucket וכל מוצרי Atlassian.
מקור: trojansource, zdnet
</ p>