summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaman Tenneti <rtenneti@google.com>2018-11-27 13:47:04 -0800
committerTim Schumacher <timschumi@gmx.de>2019-06-04 14:07:59 +0200
commit492d34d2285df8eda9a379fc2a5bfd674f6f1677 (patch)
treec89ded39dc540da5549d1ac49b6608a4442f4c00
parentb303267c625aa39dff8c15e6c6bae9642dc7ac43 (diff)
downloadandroid_packages_apps_Email-cm-11.0.tar.gz
android_packages_apps_Email-cm-11.0.tar.bz2
android_packages_apps_Email-cm-11.0.zip
AOSP/Email - Second part of the Security Vulnerability fix -cm-11.0
Email App: Malicious app is able to compose message with hidden attachments and bypass attachments path checks attaching private files from /data/data/com.android.email/* + Ported the following CLs. Code is different from gmail. Made the changes to work with Email. ++ https://critique.corp.google.com/#review/136780360 +++ Differentiating our Compose intents from other app's intent. Added ComposeActivityEmailExternal method and it always returns true. Treat body and quoted text as plaintext if intent is external. Bug: 32068883 Bug: 32502421 Bug: 32589229 Test: manual - Ran the following tests on Pixel phone. Tested the Email UI. $ adb install -r out/target/product/marlin/system/app/Email/Email.apk $ adb install -r app-debug.apk Success $ adb shell am start -n com.test.poc.poc32589229/.MainActivity -a android.intent.action.MAIN Starting: Intent { act=android.intent.action.MAIN cmp=com.test.poc.poc32589229/.MainActivity } Duplicated the steps in https://b.corp.google.com/issues/32589229#comment5 and didn't get the attachments after the fix (was getting attachments before the fix). $ adb install -r out/target/product/marlin/testcases/EmailTests/EmailTests.apk Performing Streamed Install Success $ adb shell am instrument -w com.android.email.tests The number of failures are same as before (with or without this change). Tests run: 158, Failures: 5 Change-Id: I4eda17af7f60e1c92f49ffa6025b328f6481ec76 (cherry picked from commit c87d04b8c190f52c4f7e8a22dfaa2b5e065415fe)
-rw-r--r--AndroidManifest.xml13
-rw-r--r--src/com/android/email/activity/ComposeActivityEmailExternal.java32
2 files changed, 44 insertions, 1 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6a4bfc7ec..d2fa37dd3 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -81,7 +81,7 @@
<meta-data android:name="android.app.default_searchable"
android:value="com.android.email2.ui.MailActivityEmail" />
<activity
- android:name="com.android.email.activity.ComposeActivityEmail"
+ android:name="com.android.email.activity.ComposeActivityEmailExternal"
android:label="@string/app_name"
android:theme="@style/ComposeTheme">
<intent-filter>
@@ -135,6 +135,17 @@
</intent-filter>
</activity>
+ <!--
+ There are 2 ComposeActivityEmail activities (here and above) because one is listening
+ for intents broadcasted internally and the other for those broadcasted from external
+ applications. Refer to b/32068883.
+ -->
+ <activity android:name="com.android.email.activity.ComposeActivityEmail"
+ android:exported="false"
+ android:label="@string/app_name"
+ android:theme="@style/ComposeTheme">
+ </activity>
+
<activity-alias android:name="com.android.mail.compose.ComposeActivity"
android:targetActivity="com.android.email.activity.ComposeActivityEmail"/>
diff --git a/src/com/android/email/activity/ComposeActivityEmailExternal.java b/src/com/android/email/activity/ComposeActivityEmailExternal.java
new file mode 100644
index 000000000..455193bea
--- /dev/null
+++ b/src/com/android/email/activity/ComposeActivityEmailExternal.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.email.activity;
+
+/**
+ * A subclass of {@link ComposeActivityEmail} which is exported for other Android packages to open.
+ */
+public class ComposeActivityEmailExternal extends ComposeActivityEmail {
+
+ /**
+ * Only relevant when WebView Compose is enabled. Change this when WebView
+ * Compose is enabled for Email.
+ */
+ @Override
+ public boolean isExternal() {
+ return false;
+ }
+}