{"id":121109,"date":"2022-08-31T09:00:00","date_gmt":"2022-08-31T16:00:00","guid":{"rendered":""},"modified":"2025-06-25T00:51:11","modified_gmt":"2025-06-25T07:51:11","slug":"vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/","title":{"rendered":"Vulnerability in TikTok Android app could lead to one-click account hijacking"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Microsoft discovered a high-severity vulnerability in the TikTok Android application, which could have allowed attackers to compromise users\u2019 accounts with a single click. The vulnerability, which would have required several issues to be chained together to exploit, has been fixed and we did not locate any evidence of in-the-wild exploitation. Attackers could have leveraged the vulnerability to hijack an account without users\u2019 awareness if a targeted user simply clicked a specially crafted link. Attackers could have then accessed and modified users\u2019 TikTok profiles and sensitive information, such as by publicizing private videos, sending messages, and uploading videos on behalf of users.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The vulnerability allowed the app\u2019s deeplink verification to be bypassed. Attackers could force the app to load an arbitrary URL to the app\u2019s WebView, allowing the URL to then access the WebView\u2019s attached JavaScript bridges and grant functionality to attackers. We\u2019ve <a href=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/05\/27\/android-apps-with-millions-of-downloads-exposed-to-high-severity-vulnerabilities\/\">previously researched<\/a> JavaScript bridges for their potential wide-reaching implications. Emphasizing the importance of exercising caution when clicking unknown links, this research also displays how collaboration within the security community is necessary to improve defenses for the overall digital ecosystem.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">TikTok has two flavors of its Android app: one for East and Southeast Asia under the package name <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.ss.android.ugc.trill\"><em>com.ss.android.ugc.trill<\/em><\/a>, and another for the remaining countries under the package name <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.zhiliaoapp.musically\"><em>com.zhiliaoapp.musically<\/em><\/a>. Performing a vulnerability assessment of TikTok, we determined that the issues were affecting both flavors of the app for Android, which have over <strong>1.5 billion installations combined <\/strong>via the Google Play Store. After carefully reviewing the implications, a Microsoft security researcher notified TikTok of the issues in February 2022, as part of our responsible disclosure policy through <a href=\"https:\/\/www.microsoft.com\/msrc\/cvd\">Coordinated Vulnerability Disclosure<\/a>&nbsp;(CVD) via <a href=\"https:\/\/www.microsoft.com\/msrc\/msvr\">Microsoft Security Vulnerability Research<\/a> (MSVR). TikTok quickly responded by releasing a fix to address the reported vulnerability, now identified as <a href=\"https:\/\/cve.mitre.org\/cgi-bin\/cvename.cgi?name=CVE-2022-28799\">CVE-2022-28799<\/a>, and users can refer to the CVE entry for more information. We commend the efficient and professional resolution from the TikTok security team. TikTok users are encouraged to ensure they\u2019re using the latest version of the app.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this blog post, we share information on the issues we discovered, examine how they could have been leveraged in an attack to quickly and quietly take over targeted users\u2019 accounts, and walk-through best practices and protections. As threats across platforms continue to grow, we also share details of our research, disclosure, and collaboration with the larger security community in the effort to continually improve security for all, regardless of the platform or device in use.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"javascript-interfaces\">JavaScript interfaces<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Exploitation of the vulnerability relies on the app\u2019s implementation of JavaScript interfaces, which are provided by a component of the Android operating system called WebView. WebView allows applications to load and display web pages and, using the <em>addJavascriptInterface<\/em> API call, can also provide bridge functionality that allows JavaScript code in the web page to invoke specific Java methods of a particular class in the app. Loading untrusted web content to WebView with application-level objects accessible via JavaScript code renders the application vulnerable to JavaScript interface injection, which may lead to data leakage, data corruption, or, in some cases, arbitrary code execution.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In our example, the code below demonstrates how a JavaScript interface is used, an instance of the <em>JsObject<\/em> class is injected into WebView (line 8) and it is referenced by the <em>injectObject<\/em> variable within the JavaScript code, which is loaded via the <em>loadUrl<\/em> API method (line 10):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"354\" src=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-1.-Adding-a-JavaScript-interface-to-a-WebView-object.png\" alt=\"Code depicting adding a JavaScript interface to a WebView object\" class=\"wp-image-121115\" style=\"width:720px;height:266px\" srcset=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-1.-Adding-a-JavaScript-interface-to-a-WebView-object.png 960w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-1.-Adding-a-JavaScript-interface-to-a-WebView-object-300x111.png 300w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-1.-Adding-a-JavaScript-interface-to-a-WebView-object-768x283.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><figcaption class=\"wp-element-caption\">Figure 1. Adding a JavaScript interface to a WebView object<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Prior to Android API level 18 (released in 2013 with Android 4.3), any method of the injected class was exposed to this JavaScript code. From API level 18 onwards, only class methods with the \u201c@JavascriptInterface\u201d annotation can be invoked (depicted above in line 2).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"javascript-bridge\">JavaScript bridge<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">TikTok for Android uses JavaScript interfaces extensively, enhancing WebView capabilities that are used within the app. We identified a class of interest that makes use of such a WebView. It registers a JavaScript bridge that has access to every type of functionality implemented by the classes of the <strong>[redacted<\/strong>]<em>.bridge.*<\/em> package. This bridge exposes the method depicted below:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"192\" src=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-2.-Rendering-the-method-callable-via-the-JavaScript-code.png\" alt=\"Code depicting rendering the method callable via the JavaScript code\" class=\"wp-image-121118\" srcset=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-2.-Rendering-the-method-callable-via-the-JavaScript-code.png 960w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-2.-Rendering-the-method-callable-via-the-JavaScript-code-300x60.png 300w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-2.-Rendering-the-method-callable-via-the-JavaScript-code-768x154.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><figcaption class=\"wp-element-caption\">Figure 2. Rendering the method callable via the JavaScript code<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The <em>arg1<\/em> corresponds to a JSON string that consists of several attributes, with the <em>func<\/em> and <em>params<\/em> attributes as the most relevant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <em>func<\/em> attribute corresponds to the name of the Java method that is invoked from the JavaScript code, while the <em>params<\/em> attribute sets arguments that this method takes. For example, to call the Java method with signature <em>String foo(String arg1, String arg2)<\/em> from the JavaScript code, the following statement must be used:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"142\" src=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-3.-Example-code-invoking-a-Java-method-via-the-JavaScript-interface..png\" alt=\"Code depicting a Java method being invoked via the JavaScript interface\" class=\"wp-image-121121\" srcset=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-3.-Example-code-invoking-a-Java-method-via-the-JavaScript-interface..png 960w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-3.-Example-code-invoking-a-Java-method-via-the-JavaScript-interface.-300x44.png 300w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-3.-Example-code-invoking-a-Java-method-via-the-JavaScript-interface.-768x114.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><figcaption class=\"wp-element-caption\">Figure 3. Example code invoking a Java method via the JavaScript interface.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The result is returned as a JSON string to a callback defined in the JavaScript code, which takes a single string as an argument.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"603\" src=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-4.-Interaction-between-Java-and-web-components-using-the-JavaScript-interface.png\" alt=\"Diagram depicting the interaction between Java and web components using the JavaScript interface, further detailed in the text below.\" class=\"wp-image-121124\" srcset=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-4.-Interaction-between-Java-and-web-components-using-the-JavaScript-interface.png 960w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-4.-Interaction-between-Java-and-web-components-using-the-JavaScript-interface-300x188.png 300w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-4.-Interaction-between-Java-and-web-components-using-the-JavaScript-interface-768x482.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><figcaption class=\"wp-element-caption\">Figure 4. Interaction between Java and web components using the JavaScript interface<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The above figure visualizes the concept and depicts the following steps:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">The application loads the website <em>example.com<\/em> to its WebView<\/li>\n\n\n\n<li class=\"wp-block-list-item\">The JavaScript code, which is fetched from the remote server, invokes the Java method<\/li>\n\n\n\n<li class=\"wp-block-list-item\">The method is executed<\/li>\n\n\n\n<li class=\"wp-block-list-item\">The result is returned as a parameter to the callback function<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, the <em>handler<\/em> method can process the result locally or send it to an external server using an <em>XMLHttpRequest<\/em>, a built-in browser object that can also be leveraged during an attack to send stolen data to an attacker\u2019s server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"diving-into-deeplinks\">Diving into deeplinks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The vulnerability itself was ultimately found to reside in the app\u2019s handling of a particular deeplink. In the context of the Android operating system, a deeplink is a special hyperlink that links to a specific component within a mobile app and consists of a <em>scheme<\/em> and (usually) a <em>host<\/em> part. When a deeplink is clicked, the Android package manager queries all the installed applications to see which one can handle the deeplink and then routes it to the component declared as its handler. A deeplink must be declared in the application\u2019s manifest to be used by components outside of the application\u2019s context:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"644\" src=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-5.-An-example-of-adding-an-intent-filter-in-the-apps-manifest-for-deep-linking..png\" alt=\"Code depicting an example of adding an intent filter in the app's manifest for deep linking\" class=\"wp-image-121127\" srcset=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-5.-An-example-of-adding-an-intent-filter-in-the-apps-manifest-for-deep-linking..png 960w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-5.-An-example-of-adding-an-intent-filter-in-the-apps-manifest-for-deep-linking.-300x201.png 300w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-5.-An-example-of-adding-an-intent-filter-in-the-apps-manifest-for-deep-linking.-768x515.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><figcaption class=\"wp-element-caption\">Figure 5. An <a href=\"https:\/\/developer.android.com\/training\/app-links\/deep-linking\">example<\/a> of adding an intent filter in the app\u2019s manifest for deep linking.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In the example above in Figure 5,<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">The user clicks the link <em>http:\/\/www.example[.]com\/gizmos<\/em>. Since more than one application can handle the scheme, the system then presents a dialog box, also known as ambiguity dialog, similar to the one depicted below in Figure 6.<\/li>\n<\/ol>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">A deeplink in the form of <em>example:\/\/gizmos<\/em> is routed directly to the activity <em>GizmosActivity<\/em>, the component declared as the deeplink handler in this case.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"646\" src=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-6-FULL.png\" alt=\"Image of an ambiguation dialog requesting the user to complete the action using either the Chrome browser or an Android app called DeepLinkingExample. It also prompts the user to select whether it should complete the action with the selected application just once or every time. \" class=\"wp-image-121130\" srcset=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-6-FULL.png 960w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-6-FULL-300x202.png 300w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-6-FULL-768x517.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><figcaption class=\"wp-element-caption\">Figure 6. Ambiguity dialog<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">To avoid the ambiguity dialog for <em>http<\/em> and <em>https<\/em> schemes, an application may declare an <a href=\"https:\/\/developer.android.com\/training\/app-links\/verify-site-associations\">Android App Link<\/a> by using the <em>autoVerify<\/em> attribute in its intent filter to signal the system to verify the association between the app and the declared URL domain. Additionally, a JSON file that contains the application\u2019s package name and its certificate\u2019s SHA256 fingerprint must be published under <em>https:\/\/domain.name\/.well-known\/directory. <\/em>TikTok for Android uses this feature for the domain <em>m.tiktok.com<\/em>, meaning all the links matching to the specific domain will be routed to the application without presenting the ambiguity dialog.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Besides deeplinks that are exported in the Android manifest, an application can also exchange data between its components using internal deeplinks. Trying to open an internal deeplink from outside the application, like in a web browser, will return an \u201cunable to resolve Intent\u201d error message as the system can\u2019t route it to the appropriate handler.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"vulnerability-findings\">Vulnerability findings<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">It\u2019s important to understand the various components at play that allow the vulnerability to be exploited, such as the app\u2019s implementation of JavaScript interfaces, since they determine the impact of the vulnerability itself. While reviewing the app\u2019s handling of a specific deeplink, we discovered several issues that, when chained together, could have been used to force the application to load an arbitrary URL to the application\u2019s WebView. By crafting this URL with additional query parameters, it was possible to inject an instance of the JavaScript bridge that provides full access to the functionality implemented by the <strong>[redacted]<\/strong><em>.bridge.*<\/em> package.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What follows is a technical description of the vulnerability, which we analyzed using the TikTok Android application with the package name <em>com.zhiliaoapp.musically<\/em>. The same description applies for the TikTok Android application <em>com.ss.android.ugc.trill<\/em>, as the vulnerabilities were found in common SDKs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"triggering-the-app-s-internal-deeplinks\">Triggering the app\u2019s internal deeplinks<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">TikTok for Android uses multiple deeplink schemes, some of which are exported via the manifest, while some are used only internally by the application. Among the exported ones, the <em>https:\/\/m.tiktok[.]com\/redirect<\/em> link is handled by the <strong>[redacted]<\/strong> class and is used to redirect URIs to various components of the application via a query parameter:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"470\" src=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-7.-Identifying-deeplinks-and-their-targeted-activities-using-Medusa.png\" alt=\"Code depicting how to identify deeplinks and their targeted activities using the linked Medusa tool.\" class=\"wp-image-121133\" srcset=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-7.-Identifying-deeplinks-and-their-targeted-activities-using-Medusa.png 960w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-7.-Identifying-deeplinks-and-their-targeted-activities-using-Medusa-300x147.png 300w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-7.-Identifying-deeplinks-and-their-targeted-activities-using-Medusa-768x376.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><figcaption class=\"wp-element-caption\">Figure 7. Identifying deeplinks and their targeted activities using <a href=\"https:\/\/github.com\/Ch0pin\/medusa\">Medusa<\/a><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We determined that it\u2019s possible to trigger internal deeplinks via the query parameter and call non-exported activities, expanding the attack surface of the application. According to TikTok, this redirection to internal deeplinks doesn\u2019t raise any additional concerns.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As a proof of concept, we crafted a URL that uses a particular non-exported scheme to load <em>https:\/\/www.tiktok[.]com<\/em> to the application\u2019s WebView, as displayed below in Figure 8:&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"397\" height=\"763\" src=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-8.-Using-a-link-to-trigger-an-internally-used-scheme-and-load-Tiktok.com_..png\" alt=\"An image of the TikTok application's WebView successfully loading Tiktok.com. The WebView displays a prompt to Accept all or Decline all cookies from TikTok on this browser, while the app's display has been redacted for privacy. \" class=\"wp-image-121154\" srcset=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-8.-Using-a-link-to-trigger-an-internally-used-scheme-and-load-Tiktok.com_..png 397w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-8.-Using-a-link-to-trigger-an-internally-used-scheme-and-load-Tiktok.com_.-156x300.png 156w\" sizes=\"auto, (max-width: 397px) 100vw, 397px\" \/><figcaption class=\"wp-element-caption\">Figure 8. Using a link to trigger an internally used scheme and load Tiktok.com.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Although the <strong>[redacted-internal-scheme]<\/strong><em>:\/\/webview?url=&lt;website&gt;<\/em> deeplink can be used to load URLs to the <em>CrossPlatformActivity\u2019s<\/em> WebView via a query parameter, the application imposes filters to reject untrusted hosts. In contrast to the <em>Tiktok.com<\/em> domain successfully loading, as shown in Figure 8 above, Figure 9 below displays the domain <em>Example.com<\/em> being rejected by the application filters:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"419\" height=\"698\" src=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-9.-The-applications-filters-rejecting-the-deeplink.png\" alt=\"An image of the TikTok app's WebView trying to load Example.com with an error that states: &quot;https:\/\/www.example.com This link may be unsafe. To protect our community, we restrict certain content on our platform&quot; followed by a button for the user to go back\" class=\"wp-image-121139\" srcset=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-9.-The-applications-filters-rejecting-the-deeplink.png 419w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-9.-The-applications-filters-rejecting-the-deeplink-180x300.png 180w\" sizes=\"auto, (max-width: 419px) 100vw, 419px\" \/><figcaption class=\"wp-element-caption\">Figure 9. The application\u2019s filters rejecting the <strong>[redacted-internal-scheme]<\/strong>:\/\/webview?url=https:\/\/www.example[.]com deeplink<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The filtering takes place on the server-side and the decision to load or reject a URL is based on the reply received from a particular HTTP GET request. Our static analysis indicated that it is possible to bypass the server-side check by adding two additional parameters to the deeplink.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The WebView attached to the activity creates instances of the JavaScript bridge, which we verified dynamically using <a href=\"https:\/\/github.com\/ch0pin\/medusa\">Medusa\u2019s<\/a> WebView module. From this point on, the website assigned to the query parameter of the <strong>[redacted-scheme]<\/strong><em>:\/\/webview<\/em> scheme has full access to the JavaScript bridge, meaning the website\u2019s JavaScript code can now access and invoke any exposed functionality found under the <strong>[redacted]<\/strong><em>.bridge.*<\/em> package.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"exposed-functionality\">Exposed functionality<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Reviewing the functionality accessible to the JavaScript code in web pages loaded to WebView, we identified more than 70 exposed methods. When paired with an exploit to hijack WebView, such as the vulnerability we discovered, these methods can be invoked to grant functionality to attackers. Some of the exposed methods can access or modify users\u2019 private information, while others can perform authenticated HTTP requests to any URL given as a parameter. Moreover, the method accepts a set of parameters in the form of a JSON string that can be used to form the body of a POST request and returns the server\u2019s reply, including the headers.<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By invoking such methods, an attacker can:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Retrieve the user\u2019s authentication tokens by triggering a request to a controlled server and logging the cookie and the request headers.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Retrieve or modify the user\u2019s TikTok account data, such as private videos and profile settings, by triggering a request to a TikTok endpoint and retrieving the reply via the JavaScript callback.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>In short, by controlling any of the methods able to perform authenticated HTTP requests, a malicious actor could have compromised a TikTok user account.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"proof-of-concept\">Proof of concept<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In the following proof of concept, the attacker sends a crafted link to a targeted TikTok user. Once the user clicks the link, the video uploading authentication tokens are sent back to the attacker and, subsequently, the script modifies the user\u2019s biography information to read \u201c!! SECURITY BREACH !!\u201d:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once the attacker\u2019s specially crafted malicious link is clicked by the targeted TikTok user, the attacker\u2019s server, <em>https:\/\/www.attacker[.]com\/poc,<\/em> is granted full access to the JavaScript bridge and can invoke any exposed functionality. The attacker\u2019s server returns an HTML page containing JavaScript code to send video upload tokens back to the attacker as well as change the user\u2019s profile biography.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The video uploading authentication tokens are sent back to the attacker via an <em>XMLHttpRequest<\/em>. The attacker also receives the reply body and the header, depicted in Figure 10 and 11 below:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"497\" height=\"600\" src=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-10.-The-request-headers-retrieved-by-the-attack.png\" alt=\"Code depicting the request headers retrieved by the attack\" class=\"wp-image-121142\" srcset=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-10.-The-request-headers-retrieved-by-the-attack.png 497w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-10.-The-request-headers-retrieved-by-the-attack-249x300.png 249w\" sizes=\"auto, (max-width: 497px) 100vw, 497px\" \/><figcaption class=\"wp-element-caption\">Figure 10. The request headers retrieved by the attack<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"369\" height=\"604\" src=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-11.-The-servers-reply-including-the-headers.png\" alt=\"Code depicting the server's reply including the headers\" class=\"wp-image-121145\" srcset=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-11.-The-servers-reply-including-the-headers.png 369w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-11.-The-servers-reply-including-the-headers-183x300.png 183w\" sizes=\"auto, (max-width: 369px) 100vw, 369px\" \/><figcaption class=\"wp-element-caption\">Figure 11. The server\u2019s reply including the headers<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, the message \u201c!! SECURITY BREACH !!!\u201d is set in the user profile\u2019s biography:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"760\" height=\"674\" src=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-12.-Compromising-the-users-profile-integrity.png\" alt=\"An image of a TikTok user's profile with the biography information reading &quot;!! SECURITY BREACH !!!&quot;\" class=\"wp-image-121148\" srcset=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-12.-Compromising-the-users-profile-integrity.png 760w, https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/Figure-12.-Compromising-the-users-profile-integrity-300x266.png 300w\" sizes=\"auto, (max-width: 760px) 100vw, 760px\" \/><figcaption class=\"wp-element-caption\">Figure 12. Compromising the user\u2019s profile integrity<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"javascript-interface-best-practices\">JavaScript interface best practices<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As this case and our <a href=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/05\/27\/android-apps-with-millions-of-downloads-exposed-to-high-severity-vulnerabilities\/\">prior research<\/a> has shown, from a programming perspective, using JavaScript interfaces poses significant risks. A compromised JavaScript interface can potentially allow attackers to execute code using the application\u2019s ID and privileges. Thus, we recommend that the developer community be aware of the risks and take extra precautions to secure WebView.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In cases where using JavaScript interfaces cannot be avoided, we suggest using an approved list of trusted domains to be loaded to the application\u2019s WebView to prevent loading malicious or untrusted web content. Additionally, we suggest the following secure coding practices:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Use the default browser to open URLs that don\u2019t belong to the application\u2019s approved list.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Keep the approved list up to date and track the expiration dates of the included domains. This can prevent attackers from hijacking WebView by claiming an expired domain on the approved list.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Avoid using partial string comparison methods to compare and verify a URL with the approved list of trusted domains.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Avoid adding stage or internal network domains to the approved list as these domains could be spoofed by an attacker to hijack WebView.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"responsible-disclosure-and-industry-collaboration-improves-security-for-all\">Responsible disclosure and industry collaboration improves security for all<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Leveraging new threats, techniques, and attacker capabilities, adversaries continue to focus on identifying and taking advantage of unpatched vulnerabilities and misconfigurations as a vector to access systems and sensitive information for malicious purposes. Responding to the changing threat landscape requires us to expand our knowledge and expertise into other devices and platforms as part of our commitment to continuously improve security <em>from<\/em> Microsoft, not just <em>for<\/em> Microsoft.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We use collaborative research such as this to improve our protection technologies across platforms, ensuring <a href=\"https:\/\/docs.microsoft.com\/microsoft-365\/security\/defender-vulnerability-management\/defender-vulnerability-management?view=o365-worldwide\">Microsoft Defender Vulnerability Management<\/a> detects and alerts on installed applications with known vulnerabilities\u2014including those affecting non-Windows devices. While we\u2019re not aware of any active exploitation of this vulnerability in the wild, users can further follow the security guidelines below to defend against this and similar types of issues:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Avoid clicking links from untrusted sources<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Always keep the device and the installed applications updated<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Never install applications from untrusted sources<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Immediately report any strange application behavior to the vendor, such as setting changes triggered without user interaction.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">As part of our responsible disclosure policy through <a href=\"https:\/\/www.microsoft.com\/msrc\/cvd\">Coordinated Vulnerability Disclosure<\/a>&nbsp;(CVD) via <a href=\"https:\/\/www.microsoft.com\/msrc\/msvr\">Microsoft Security Vulnerability Research<\/a> (MSVR), <a href=\"https:\/\/hackerone.com\/reports\/1500614\">we disclosed the vulnerability<\/a> to TikTok in February 2022 as <a href=\"https:\/\/support.tiktok.com\/en\/safety-hc\/reporting-security-vulnerabilities\/reporting-the-security-vulnerabilities\">directed on its website<\/a>. The vulnerability, <a href=\"https:\/\/cve.mitre.org\/cgi-bin\/cvename.cgi?name=CVE-2022-28799\">CVE-2022-28799<\/a>, was quickly rated as high severity with a score of 8.3, and a fix for the issue was included in an updated version of the app released less than a month after the initial disclosure. We wish to thank the TikTok security team for collaborating quickly and efficiently in resolving these issues.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This case displays how the ability to coordinate research and threat intelligence sharing via expert, cross-industry collaboration is necessary to effectively mitigate issues. As threats across platforms continue to grow in numbers and sophistication, vulnerability disclosures, coordinated response, and other forms of threat intelligence sharing are needed to help secure users\u2019 computing experience, regardless of the platform or device in use. We will continue to work with the larger security community to share research and intelligence about threats in the effort to build better protection for all.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Dimitrios Valsamaras&nbsp;<\/em><\/strong><em><br>Microsoft 365 Defender Research Team<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"references\">References<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\"><a href=\"https:\/\/developer.android.com\/reference\/android\/webkit\/WebView#addJavascriptInterface(java.lang.Object,%20java.lang.String)\">WebView | Android Developers<\/a><\/li>\n\n\n\n<li class=\"wp-block-list-item\"><a href=\"https:\/\/support.google.com\/faqs\/answer\/9095419?hl=en\">Remediation for JavaScript Interface Injection Vulnerability &#8211; Google Help<\/a><\/li>\n\n\n\n<li class=\"wp-block-list-item\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Mobile_deep_linking\">Mobile deep linking &#8211; Wikipedia<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Microsoft discovered a high-severity vulnerability in the TikTok Android application, now identified as CVE-2022-28799 and fixed by TikTok, which could have allowed attackers to compromise users&#8217; accounts with a single click.<\/p>\n","protected":false},"author":153,"featured_media":121178,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","ms-ems-related-posts":[],"footnotes":""},"post_tag":[3741],"threat-intelligence":[3739],"content-type":[3663],"job-role":[],"product":[],"topic":[3687],"coauthors":[3380],"class_list":["post-121109","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-android","threat-intelligence-vulnerabilities-and-exploits","content-type-research","topic-threat-intelligence","review-flag-1694638265-576","review-flag-1-1694638265-354","review-flag-2-1694638266-864","review-flag-3-1694638266-241","review-flag-4-1694638266-512","review-flag-5-1694638266-171","review-flag-6-1694638266-691","review-flag-7-1694638266-851","review-flag-8-1694638266-352","review-flag-9-1694638266-118","review-flag-alway-1694638263-571","review-flag-never-1694638263-791","review-flag-new-1694638263-340"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Vulnerability in TikTok Android app could lead to one-click account hijacking | Microsoft Security Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vulnerability in TikTok Android app could lead to one-click account hijacking | Microsoft Security Blog\" \/>\n<meta property=\"og:description\" content=\"Microsoft discovered a high-severity vulnerability in the TikTok Android application, now identified as CVE-2022-28799 and fixed by TikTok, which could have allowed attackers to compromise users&#039; accounts with a single click.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Security Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-31T16:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-25T07:51:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/TikTok-featured-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Microsoft Threat Intelligence\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Microsoft Threat Intelligence\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/author\/microsoft-security-threat-intelligence\/\",\"@type\":\"Person\",\"@name\":\"Microsoft Threat Intelligence\"}],\"headline\":\"Vulnerability in TikTok Android app could lead to one-click account hijacking\",\"datePublished\":\"2022-08-31T16:00:00+00:00\",\"dateModified\":\"2025-06-25T07:51:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/\"},\"wordCount\":2721,\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/TikTok-featured-image.png\",\"keywords\":[\"Android\"],\"articleSection\":[\"Cybersecurity\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/\",\"name\":\"Vulnerability in TikTok Android app could lead to one-click account hijacking | Microsoft Security Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/TikTok-featured-image.png\",\"datePublished\":\"2022-08-31T16:00:00+00:00\",\"dateModified\":\"2025-06-25T07:51:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#primaryimage\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/TikTok-featured-image.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/TikTok-featured-image.png\",\"width\":1200,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vulnerability in TikTok Android app could lead to one-click account hijacking\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#website\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/\",\"name\":\"Microsoft Security Blog\",\"description\":\"Expert coverage of cybersecurity topics\",\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#organization\",\"name\":\"Microsoft Security Blog\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2018\/08\/cropped-cropped-microsoft_logo_element.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2018\/08\/cropped-cropped-microsoft_logo_element.png\",\"width\":512,\"height\":512,\"caption\":\"Microsoft Security Blog\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#\/schema\/person\/fa785acae88a9b0cfe278a692ce196f5\",\"name\":\"Microsoft Security Threat Intelligence\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/6da614d6e26efc7ec75a4b5a98d63c541af444fa76a10c41a66be5b3de0a63aa?s=96&d=microsoft&r=g430eaf64ccad6ceda364c6ea504461c5\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6da614d6e26efc7ec75a4b5a98d63c541af444fa76a10c41a66be5b3de0a63aa?s=96&d=microsoft&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6da614d6e26efc7ec75a4b5a98d63c541af444fa76a10c41a66be5b3de0a63aa?s=96&d=microsoft&r=g\",\"caption\":\"Microsoft Security Threat Intelligence\"},\"url\":\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/author\/v-katiemc\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Vulnerability in TikTok Android app could lead to one-click account hijacking | Microsoft Security Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/","og_locale":"en_US","og_type":"article","og_title":"Vulnerability in TikTok Android app could lead to one-click account hijacking | Microsoft Security Blog","og_description":"Microsoft discovered a high-severity vulnerability in the TikTok Android application, now identified as CVE-2022-28799 and fixed by TikTok, which could have allowed attackers to compromise users' accounts with a single click.","og_url":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/","og_site_name":"Microsoft Security Blog","article_published_time":"2022-08-31T16:00:00+00:00","article_modified_time":"2025-06-25T07:51:11+00:00","og_image":[{"width":1200,"height":800,"url":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/TikTok-featured-image.png","type":"image\/png"}],"author":"Microsoft Threat Intelligence","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Microsoft Threat Intelligence","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/author\/microsoft-security-threat-intelligence\/","@type":"Person","@name":"Microsoft Threat Intelligence"}],"headline":"Vulnerability in TikTok Android app could lead to one-click account hijacking","datePublished":"2022-08-31T16:00:00+00:00","dateModified":"2025-06-25T07:51:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/"},"wordCount":2721,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#organization"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/TikTok-featured-image.png","keywords":["Android"],"articleSection":["Cybersecurity"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/","url":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/","name":"Vulnerability in TikTok Android app could lead to one-click account hijacking | Microsoft Security Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#primaryimage"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/TikTok-featured-image.png","datePublished":"2022-08-31T16:00:00+00:00","dateModified":"2025-06-25T07:51:11+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#primaryimage","url":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/TikTok-featured-image.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2022\/08\/TikTok-featured-image.png","width":1200,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2022\/08\/31\/vulnerability-in-tiktok-android-app-could-lead-to-one-click-account-hijacking\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/"},{"@type":"ListItem","position":2,"name":"Vulnerability in TikTok Android app could lead to one-click account hijacking"}]},{"@type":"WebSite","@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#website","url":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/","name":"Microsoft Security Blog","description":"Expert coverage of cybersecurity topics","publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#organization","name":"Microsoft Security Blog","url":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2018\/08\/cropped-cropped-microsoft_logo_element.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-content\/uploads\/2018\/08\/cropped-cropped-microsoft_logo_element.png","width":512,"height":512,"caption":"Microsoft Security Blog"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/#\/schema\/person\/fa785acae88a9b0cfe278a692ce196f5","name":"Microsoft Security Threat Intelligence","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/6da614d6e26efc7ec75a4b5a98d63c541af444fa76a10c41a66be5b3de0a63aa?s=96&d=microsoft&r=g430eaf64ccad6ceda364c6ea504461c5","url":"https:\/\/secure.gravatar.com\/avatar\/6da614d6e26efc7ec75a4b5a98d63c541af444fa76a10c41a66be5b3de0a63aa?s=96&d=microsoft&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6da614d6e26efc7ec75a4b5a98d63c541af444fa76a10c41a66be5b3de0a63aa?s=96&d=microsoft&r=g","caption":"Microsoft Security Threat Intelligence"},"url":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/author\/v-katiemc\/"}]}},"bloginabox_animated_featured_image":null,"bloginabox_display_generated_audio":false,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Security Blog","distributor_original_site_url":"https:\/\/www.microsoft.com\/en-us\/security\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/posts\/121109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/users\/153"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/comments?post=121109"}],"version-history":[{"count":2,"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/posts\/121109\/revisions"}],"predecessor-version":[{"id":140212,"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/posts\/121109\/revisions\/140212"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/media\/121178"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/media?parent=121109"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/post_tag?post=121109"},{"taxonomy":"threat-intelligence","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/threat-intelligence?post=121109"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/content-type?post=121109"},{"taxonomy":"job-role","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/job-role?post=121109"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/product?post=121109"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/topic?post=121109"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/security\/blog\/wp-json\/wp\/v2\/coauthors?post=121109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}