מתקפת StrandHogg / נקודת חולשה שקשורה לזיקה למשימה
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
קטגוריה ב-OWASP: MASVS-PLATFORM: Platform Interaction
סקירה כללית
ההתקפה של StrandHogg או נקודת החולשה של Task Affinity הופעלו או נגרמו בגלל באג בתכנון של האופן שבו Android מטפל במספר משימות, ובמיוחד בתכונה שנקראת 'העברת משימות להורה חדש'. שינוי ההורה של משימה באפליקציה היא תכונה שמאפשרת לאפליקציה להעביר פעילות ממשימה אחת למשימה אחרת.
התקפת StrandHogg מנצלת את חוסר הבהירות לגבי האופן שבו בודקים את הפעילויות הנכנסות של סטאק המשימות של האפליקציה, ומאפשרת לאפליקציה זדונית:
- העברת פעילות זדונית אל או מסטאק של קורבן
- מגדירים את הפעילות הזדונית כמקבץ הפעילויות החוזרות (return stack) בסיום הפעילות של הקורבן.
נקודת החולשה הזו מנוצלת על ידי מניפולציה בהגדרות allowTaskReparenting
ו-taskAffinity
.
השפעה
אפליקציה זדונית יכולה להגדיר את taskAffinity של אחת מהפעילויות שלה כך שתתאים ל-packageName של אפליקציית היעד. לאחר מכן אפשר לשלב את הפעולה הזו עם פריצה לכוונה, כך שבפעם הבאה שהמשתמש יפעיל את אפליקציית היעד, גם האפליקציה הזדונית תופעל ותוצג מעל אפליקציית היעד.
לאחר מכן אפשר להשתמש בנקודת החולשה של Task Affinity כדי לחטוף פעולות חוקיות של משתמשים.
המשתמש עלול להטעות ולמסור פרטי כניסה לאפליקציה זדונית.
כברירת מחדל, ברגע שפעילות מתחילה ומשויכת למשימה, השיוך הזה נשאר למשך כל מחזור החיים של הפעילות. עם זאת, הגדרת allowTaskReparenting כ-true מבטלת את ההגבלה הזו ומאפשרת להקצות פעילות קיימת לפעילות 'ילידים' חדשה שנוצרה.
לדוגמה, אפליקציה א' יכולה לטרגט את אפליקציה ב', כך שפעילויות של אפליקציה א' יועברו לסטאק פעילויות של אפליקציה ב' כשהמשתמשים יחזרו מהפעילות שהושלמו באפליקציה א'. המעבר הזה מאפליקציה אחת לאחרת מוסתר מהמשתמש ויוצר איום פישינג משמעותי.
פעולות מיטיגציה
עדכון לגרסה android:minSdkVersion="30"
.
התיקון המקורי לפגיעה של התקפת StrandHogg / Task affinity פורסם במרץ 2019, וריאנט חדש ומקיף יותר תוקן בספטמבר 2020. גרסאות Android SDK 30 ואילך (Android 11) מכילות את התיקונים המתאימים למערכת ההפעלה כדי למנוע את נקודת החולשה הזו. אפשר לצמצם באופן חלקי את גרסת 1 של התקפת StrandHogg באמצעות הגדרה ספציפית של האפליקציה, אבל אפשר למנוע את גרסת 2 של ההתקפה רק באמצעות התיקון הזה לגרסה של ה-SDK.
משאבים
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-26 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-07-26 (שעון UTC)."],[],[],null,["# StrandHogg Attack / Task Affinity Vulnerability\n\n\u003cbr /\u003e\n\n**OWASP category:** [MASVS-PLATFORM: Platform Interaction](https://mas.owasp.org/MASVS/09-MASVS-PLATFORM)\n\n\nOverview\n--------\n\nThe StrandHogg attack / Task Affinity vulnerability was enabled / caused by a\ndesign bug in the way Android handled multiple tasks, specifically the feature\ncalled task reparenting. Application task reparenting is a feature that allows\nan application to move an activity from one task to another.\n\nThe StrandHogg attack exploits a lack of clarity on how to vet incoming\napplication task stack activities and allows a malicious application to either:\n\n- move a malicious activity to or from a victim stack\n- set the malicious activity as the return stack upon completion of a victim activity\n\nThis vulnerability is exploited by manipulating the `allowTaskReparenting` and\n`taskAffinity` settings.\n\nImpact\n------\n\nA malicious application can set the taskAffinity of one of its activities to\nmatch the packageName of a target application. This can then be coupled with\nintent hijacking so that the next time the target application is launched by the\nuser, the malicious application is also launched and displayed on top of the\ntarget application.\n\nThe Task Affinity vulnerability can then be used to hijack legitimate user\nactions.\n\nThe user could be tricked into providing credentials to a malicious application.\nBy default, once an activity starts and is associated with a task, that\nassociation persists for the activity's entire lifecycle. However, setting\nallowTaskReparenting to true breaks this restriction, allowing an existing\nactivity to be re-parented to a newly created \"native\" task.\n\nFor example, App A can be targeted by App B, redirecting App A activities to an\nApp B activity stack upon return from App A's completed activity. This\ntransition from one app to another is hidden from the user and creates a\nsignificant phishing threat.\n\nMitigations\n-----------\n\nUpdate to `android:minSdkVersion=\"30\"`.\n\nThe StrandHogg attack / Task affinity vulnerability was originally patched in\nMarch 2019 with a newer and more comprehensive variant patched in September\n2020. Android SDK versions 30 and newer (Android 11) contain the appropriate OS\npatches to avoid this vulnerability. While it is possible to partially mitigate\nversion 1 of the StrandHogg attack through individual application configuration,\nversion 2 of the attack can only be prevented by this SDK version patch.\n\nResources\n---------\n\n- [Original academic paper describing the vulnerability at Usenix\n 15](https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-ren-chuangang.pdf){.external}\n- [Promon Security group's expansion of the original\n vulnerability](https://promon.co/security-news/the-strandhogg-vulnerability/){.external}\n- [Android developer documentation for android:allowTaskReparenting](/guide/topics/manifest/activity-element#reparent)\n- [Android developer documentation for android:taskAffinity](/guide/topics/manifest/activity-element#aff)\n- [Android developer documentation for the application element of android:allowTaskReparenting](/guide/topics/manifest/application-element#reparent)"]]