{"id":17619,"date":"2021-12-30T16:09:23","date_gmt":"2021-12-30T15:09:23","guid":{"rendered":"https:\/\/herolab.usd.de\/?page_id=17619"},"modified":"2022-01-04T08:27:51","modified_gmt":"2022-01-04T07:27:51","slug":"usd-2021-0009","status":"publish","type":"page","link":"https:\/\/herolab.usd.de\/en\/security-advisories\/usd-2021-0009\/","title":{"rendered":"usd-2021-0009"},"content":{"rendered":"\n\n\n[et_pb_section fb_built=\"1\" _builder_version=\"4.9.4\" _module_preset=\"default\" background_color=\"#2E353D\" custom_padding=\"||0px|||\" global_colors_info=\"{}\"][et_pb_row _builder_version=\"4.9.4\" _module_preset=\"default\" global_colors_info=\"{}\"][et_pb_column type=\"4_4\" _builder_version=\"4.9.4\" _module_preset=\"default\" global_colors_info=\"{}\"][et_pb_text _builder_version=\"4.13.1\" _module_preset=\"cc5ac6f4-ebbd-4b3f-bc92-4dfc1f15fe2c\" global_colors_info=\"{}\"]<h1>usd-2021-0009 | VMware Workspace ONE Intelligent Hub<\/h1>\n<p><strong>Advisory ID<\/strong>: usd-2021-0009<br \/><strong>Affected Product<\/strong>: VMware Workspace ONE Intelligent Hub<br \/><strong style=\"font-size: 16px\"><strong>Affected Version<\/strong><span>:<\/span><\/strong> 21.01.0.24 (Android) and 21.01.0 (Build d3dd95e, iOS)<strong style=\"font-size: 16px\"><span><br \/><\/span>Vulnerability Type<\/strong><span style=\"font-size: 16px\">: CWE-912: Hidden Functionality (Backdoor)<br \/><\/span><strong>Security Risk<\/strong>: MEDIUM (CVSS:3.0\/AV:N\/AC:H\/PR:H\/UI:R\/S:U\/C:H\/I:H\/A:H)<br \/><strong>Vendor URL<\/strong>: <a href=\"https:\/\/www.VMware.com\/de\/products\/workspace-one\/intelligent-hub.html\" target=\"_blank\" rel=\"noopener\">https:\/\/www.VMware.com\/de\/products\/workspace-one\/intelligent-hub.html<\/a><br \/><strong>Vendor Status<\/strong>: Not fixed \/ Disputed<\/p>\n<p>The following behavior was reported to VMware in March 2021. After finishing their investigations, VMware informed us that they do not agree that their dynamic compromise detection would violate app store policies regarding run-time code retrieval and execution. Please find their detailed statement here: <a href=\"https:\/\/code.vmware.com\/docs\/13894\/StatementDeviceCompromiseDetection.pdf\" target=\"_blank\" rel=\"noopener\">https:\/\/code.vmware.com\/docs\/13894\/StatementDeviceCompromiseDetection.pdf<\/a>.<\/p>\n<h3><\/h3>\n<h3>Description<\/h3>\n<p>The VMware Workspace ONE Intelligent Hub Apps for Android and iOS implement and use a mechanism to dynamically load remote code and execute it on mobile phones without indication to end users.<\/p>\n<p>According to Google\u2019s <a href=\"https:\/\/support.google.com\/googleplay\/android-developer\/answer\/11365487\" target=\"_blank\" rel=\"noopener\">Developer Program Policy<\/a>, a backdoor is \u201ecode that allows the execution of unwanted, potentially harmful, remote-controlled operations on a device\u201c.<br \/>Apple\u2019s <a href=\"https:\/\/developer.apple.com\/app-store\/review\/guidelines\/#software-requirements\" target=\"_blank\" rel=\"noopener\">Software Requirements<\/a> for apps enforce that \u201eapps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code which introduces or changes features or functionality of the app, including other apps\u201c.<\/p>\n<p>\u00a0The VMware Hub applications implement a <em>Dynamic Compromise Detection<\/em> mechanism for which JavaScript code is downloaded from external endpoints and then executed in the application context. Further, native interfaces are exposed to the JavaScript code offering the ability to directly run OS commands.<\/p>\n<p><span><\/span><\/p>\n<h3>Proof of Concept (PoC)<\/h3>\n<p>The Workspace ONE Intelligent Hub Apps download remote contents from the following\u00a0endpoints:<\/p>\n<ul>\n<li><a href=\"https:\/\/api.na1.region.data.vmwservices.com\/api\/v1\/sdk\/compliance\/rules\/an5r0i5payl0adg3n3rat0R\" target=\"_blank\" rel=\"noopener\">https:\/\/api.na1.region.data.vmwservices.com\/api\/v1\/sdk\/compliance\/rules\/an5r0i5payl0adg3n3rat0R<\/a>\u00a0(Android Hub App)<\/li>\n<li><a href=\"https:\/\/api.na1.region.data.vmwservices.com\/api\/v1\/sdk\/compliance\/rules\/payl0adg3n3rat0R\" target=\"_blank\" rel=\"noopener\">https:\/\/api.na1.region.data.vmwservices.com\/api\/v1\/sdk\/compliance\/rules\/payl0adg3n3rat0R<\/a>\u00a0(Android Hub App)<\/li>\n<li><a href=\"https:\/\/api.na1.region.data.vmwservices.com\/api\/v1\/sdk\/compliance\/rules\/ws10per8t10nAlD8ta\" target=\"_blank\" rel=\"noopener\">https:\/\/api.na1.region.data.vmwservices.com\/api\/v1\/sdk\/compliance\/rules\/ws10per8t10nAlD8ta<\/a>\u00a0(iOS Hub App)<\/li>\n<\/ul>\n<p>The following request and response illustrate the communication with these endpoints:<\/p>[\/et_pb_text][et_pb_text _builder_version=\"4.9.4\" _module_preset=\"9e260d37-0be2-4a12-a10e-3ed7e27b6ac6\" custom_margin=\"20px||29px||false|false\" global_colors_info=\"{}\"]<p>GET \/api\/v1\/sdk\/compliance\/rules\/an5r0i5payl0adg3n3rat0R HTTP\/1.1<br \/>Host: api.na1.region.data.vmwservices.com<br \/>[...]<\/p>[\/et_pb_text][et_pb_text _builder_version=\"4.9.4\" _module_preset=\"cc5ac6f4-ebbd-4b3f-bc92-4dfc1f15fe2c\" global_colors_info=\"{}\"]<p><span>Response:<\/span><\/p>[\/et_pb_text][et_pb_text _builder_version=\"4.9.4\" _module_preset=\"9e260d37-0be2-4a12-a10e-3ed7e27b6ac6\" custom_margin=\"20px||29px||false|false\" global_colors_info=\"{}\"]<p>HTTP\/1.1 200<br \/>Date: Tue, 02 Mar 2021 12:33:29 GMT<br \/>Content-Type: application\/json<br \/>Connection: close<br \/>vary: accept-encoding<br \/>Content-Length: 13719<\/p>\n<p>{<br \/>\"data\" : {<br \/>\"id\" : \"an5r0i5payl0adg3n3rat0R\",<br \/>\"rules\" : {<br \/><strong>\"payload\" : \"MIInbAYJKoZIhvcNAQcCoIInXTCCJ1kCAQE[...]\"<\/strong>,<br \/>\"payloadVersion\" : \"1\"<br \/>},<br \/>\"created_at\" : 1588726763166,<br \/>\"created_by\" : \"thor\",<br \/>\"modified_at\" : 1588786684777,<br \/>\"modified_by\" : \"thor\"<br \/>}<br \/>}<\/p>[\/et_pb_text][et_pb_text _builder_version=\"4.9.4\" _module_preset=\"cc5ac6f4-ebbd-4b3f-bc92-4dfc1f15fe2c\" custom_margin=\"||27px||false|false\" global_colors_info=\"{}\"]<p>The payload consists of a <em>PKCS#7<\/em> encoded and signed blob. During our assessment it was not possible to bypass the signature validation and inject malicious code.This payload can be decoded using <em>OpenSSL<\/em>, an exemplary excerpt of the downloaded JavaScript code is presented in<br \/>the following:<\/p>[\/et_pb_text][et_pb_text _builder_version=\"4.9.4\" _module_preset=\"9e260d37-0be2-4a12-a10e-3ed7e27b6ac6\" custom_margin=\"20px||29px||false|false\" global_colors_info=\"{}\"]<p>$ cat payload.b64 | base64 -d &gt; payload.txt<br \/>$ openssl asn1parse -inform der -in payload.txt -dump<\/p>[\/et_pb_text][et_pb_text _builder_version=\"4.13.1\" _module_preset=\"cc5ac6f4-ebbd-4b3f-bc92-4dfc1f15fe2c\" custom_margin=\"||27px||false|false\" global_colors_info=\"{}\"]<div class=\"x-text\">\n<p>Excerpt of decoded payload:<\/p>\n<\/div>[\/et_pb_text][et_pb_text _builder_version=\"4.9.4\" _module_preset=\"9e260d37-0be2-4a12-a10e-3ed7e27b6ac6\" custom_margin=\"20px||29px||false|false\" global_colors_info=\"{}\"]<p>[...]<br \/>function u() {<br \/>\u00a0 var t = [], s = <strong>native_Exec(\"id\")<\/strong>;<br \/>\u00a0 if (null != s &amp;&amp; s.length &gt; 0)<br \/>\u00a0 \u00a0 \u00a0for (i = 0; i &lt; s.length; i++)<br \/>\u00a0 \u00a0 \u00a0 \u00a0-1 != s[i].indexOf(\"(root)\") &amp;&amp; (t.push(\"90413-1\"),<br \/>\u00a0 \u00a0 \u00a0k(\"E\", \"Root detected code 90413-1\"));<br \/>\u00a0 \u00a0 \u00a0return null != (s = <strong>native_Exec(\"su -c ls\")<\/strong>) &amp;&amp; s.length &gt; 0 &amp;&amp; (t.push(\"90411-1\"),<br \/>\u00a0 \u00a0 \u00a0 \u00a0k(\"E\", \"Root detected code 90411-1\")),<br \/>\u00a0 \u00a0 \u00a0 \u00a0null != (s = <strong>native_Exec(\"su\")<\/strong>) &amp;&amp; s.length &gt; 0 &amp;&amp; (t.push(\"90412-1\"),<\/p>\n<p>\u00a0 [...]<br \/>}<br \/>[...]<\/p>[\/et_pb_text][et_pb_text _builder_version=\"4.13.1\" _module_preset=\"cc5ac6f4-ebbd-4b3f-bc92-4dfc1f15fe2c\" custom_margin=\"||27px||false|false\" global_colors_info=\"{}\"]<div class=\"x-text\">\n<p>As the above snippet shows, the application provides native interfaces to the JavaScript code. For instance, the <strong>native_Exec()<\/strong> function appears to be a wrapper for the C function <strong>system()<\/strong>\u00a0which allows the execution of arbitrary operating system commands.<\/p>\n<p>The aforementioned mechanism enables VMware to run arbitrary commands which are retrieved from external resources on the user\u2019s device, resulting in backdoor capabilities. <\/p>\n<\/div>[\/et_pb_text][et_pb_text _builder_version=\"4.13.1\" _module_preset=\"cc5ac6f4-ebbd-4b3f-bc92-4dfc1f15fe2c\" global_colors_info=\"{}\"]<div class=\"e16902-22 x-container max width\">\n<div class=\"e16902-23 x-column x-sm x-1-1\">\n<h3>Fix<span><\/span><span><\/span><\/h3>\n<p><span>It is recommended to follow Apple's and Google's guidelines regarding secure app development and distribution. Further, it is recommended to include the entire code within the application bundle.<\/span><\/p>\n<p><span><\/span><\/p>\n<h3>References<\/h3>\n<ul>\n<li><a href=\"https:\/\/cwe.mitre.org\/data\/definitions\/912.html\" target=\"_blank\" rel=\"noopener\"> https:\/\/cwe.mitre.org\/data\/definitions\/912.html<\/a><\/li>\n<li><a href=\"https:\/\/developer.apple.com\/app-store\/review\/guidelines\/#software-requirements\" target=\"_blank\" rel=\"noopener\">https:\/\/developer.apple.com\/app-store\/review\/guidelines\/#software-requirements<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/googleplay\/android-developer\/answer\/11365487\" target=\"_blank\" rel=\"noopener\">https:\/\/support.google.com\/googleplay\/android-developer\/answer\/11365487<\/a>\u00a0<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>Timeline<\/h3>\n<ul>\n<li>2021-03-12: This vulnerability was identified by Leif Enders and Lauritz Holtmann.<\/li>\n<li>2021-03-14: Advisory submitted to vendor via e-mail.<\/li>\n<li>2021-05-07: Vendor states that they won\u2019t fix this issue: <a href=\"https:\/\/code.vmware.com\/docs\/13894\/StatementDeviceCompromiseDetection.pdf\" target=\"_blank\" rel=\"noopener\">https:\/\/code.vmware.com\/docs\/13894\/StatementDeviceCompromiseDetection.pdf<\/a>\u00a0<\/li>\n<li>2021-12-30: Security advisory released by usd AG.<\/li>\n<\/ul>\n<h3><\/h3>\n<h3>Credits<\/h3>\n<p><span>This security vulnerability was found by Leif Enders and Lauritz Holtmann of usd AG.<\/span><\/p>\n<\/div>\n<\/div>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]\n\n\n","protected":false},"excerpt":{"rendered":"<p>usd-2021-0009 | VMware Workspace ONE Intelligent Hub Advisory ID: usd-2021-0009Affected Product: VMware Workspace ONE Intelligent HubAffected Version: 21.01.0.24 (Android) and 21.01.0 (Build d3dd95e, iOS)Vulnerability Type: CWE-912: Hidden Functionality (Backdoor)Security Risk: MEDIUM (CVSS:3.0\/AV:N\/AC:H\/PR:H\/UI:R\/S:U\/C:H\/I:H\/A:H)Vendor URL: https:\/\/www.VMware.com\/de\/products\/workspace-one\/intelligent-hub.htmlVendor Status: Not fixed \/ Disputed The following behavior was reported to VMware in March 2021. After finishing their investigations, VMware informed [&hellip;]<\/p>\n","protected":false},"author":96,"featured_media":17032,"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-17619","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/17619","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\/96"}],"replies":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/comments?post=17619"}],"version-history":[{"count":0,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/17619\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/16124"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/media\/17032"}],"wp:attachment":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/media?parent=17619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}