آسیب پذیری حمله StrandHogg / Task Affinity
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
دسته OWASP: MASVS-PLATFORM: پلتفرم تعامل
نمای کلی
حمله StrandHogg / آسیبپذیری Task Affinity فعال شد / به دلیل یک اشکال طراحی در نحوه مدیریت چندین کار اندروید، به ویژه ویژگی به نام تکثیر مجدد، ایجاد شد. Application task reparenting قابلیتی است که به برنامه اجازه می دهد تا یک فعالیت را از یک کار به کار دیگر منتقل کند.
حمله StrandHogg از فقدان وضوح در مورد نحوه بررسی فعالیتهای پشته وظیفه برنامههای ورودی استفاده میکند و به یک برنامه مخرب اجازه میدهد یکی از موارد زیر را انجام دهد:
- یک فعالیت مخرب را به یا از پشته قربانی منتقل کنید
- پس از اتمام یک فعالیت قربانی، فعالیت مخرب را به عنوان پشته بازگشتی تنظیم کنید
این آسیب پذیری با دستکاری تنظیمات allowTaskReparenting
و taskAffinity
مورد سوء استفاده قرار می گیرد.
تاثیر
یک برنامه مخرب می تواند taskAffinity یکی از فعالیت های خود را طوری تنظیم کند که با packageName یک برنامه هدف مطابقت داشته باشد. سپس میتوان این کار را با ربودن قصد همراه کرد تا دفعه بعد که برنامه هدف توسط کاربر راهاندازی شد، برنامه مخرب نیز راهاندازی شده و در بالای برنامه هدف نمایش داده شود.
سپس میتوان از آسیبپذیری Task Affinity برای ربودن اقدامات قانونی کاربر استفاده کرد.
کاربر ممکن است فریب داده شود تا اعتبار یک برنامه مخرب را ارائه دهد. بهطور پیشفرض، هنگامی که یک فعالیت شروع میشود و با یک کار مرتبط میشود، آن ارتباط برای کل چرخه حیات فعالیت ادامه مییابد. با این حال، تنظیم allowTaskReparenting روی true این محدودیت را می شکند و به یک فعالیت موجود اجازه می دهد تا دوباره به یک کار "بومی" جدید ایجاد شود.
به عنوان مثال، برنامه A می تواند توسط برنامه B مورد هدف قرار گیرد، و پس از بازگشت از فعالیت تکمیل شده برنامه A، فعالیت های برنامه A را به پشته فعالیت برنامه B هدایت کند. این انتقال از یک برنامه به برنامه دیگر از کاربر پنهان است و یک تهدید فیشینگ قابل توجهی ایجاد می کند.
کاهش
به روز رسانی به android:minSdkVersion="30"
.
آسیبپذیری حمله StrandHogg/Task affinity در اصل در مارس 2019 وصله شد و یک نسخه جدیدتر و جامعتر در سپتامبر 2020 وصله شد. نسخههای Android SDK نسخه 30 و جدیدتر (Android 11) حاوی وصلههای سیستم عامل مناسب برای جلوگیری از این آسیبپذیری هستند. در حالی که می توان تا حدی نسخه 1 حمله StrandHogg را از طریق پیکربندی برنامه فردی کاهش داد، نسخه 2 حمله فقط با این وصله نسخه SDK قابل جلوگیری است.
منابع
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-29 بهوقت ساعت هماهنگ جهانی."],[],[],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)"]]