Commit Graph

3124 Commits

Author SHA1 Message Date
Edwin Wong
46c2ba1705 [automerger skipped] Merge "[RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability." into oc-mr1-dev am: 1e44ea96ef -s ours am: 0914ef7cd2 -s ours
am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13497770

Change-Id: I0f9e47b06bebcd404589496e8834ddbc106f749a
2021-07-13 21:28:58 +00:00
Edwin Wong
18fe74f4d9 [automerger skipped] Merge "[RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability." into pi-dev am: 9452ee5a55 -s ours
am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13499845

Change-Id: I1c775fc2a6e4c094e003078c167a1256d0d7c776
2021-07-13 21:28:53 +00:00
Edwin Wong
c4600c0f7d [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 1bd967f9a8 -s ours am: 7752248af7 -s ours
am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13462544

Change-Id: I80f78b99b7afc28ff06270f114fd3e7929c3a7c7
2021-07-13 21:28:38 +00:00
Edwin Wong
ee4815ae80 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 0558edfb31 -s ours
am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13459672

Change-Id: I9c8b8f3b2ca9d4891d89a5327f3fca39613989af
2021-07-13 21:28:31 +00:00
TreeHugger Robot
35b1be117e Merge "[RESTRICT AUTOMERGE] L3 Load RSA key from two parts and re-generate build" into qt-dev 2021-06-09 22:40:20 +00:00
Edwin Wong
62e23e0369 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt srcPtr overflow. am: 0253cb580e -s ours am: ad1d8778e4 -s ours
am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13424496

Change-Id: If6f783b3af331eedd1b9f1a1a887990978c0c52e
2021-06-02 22:04:34 +00:00
Edwin Wong
787f7e2158 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt srcPtr overflow. am: a5c14b7afb -s ours
am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13412308

Change-Id: I3fa1dadd8d1294eff10ba86b9a7adf49e08e3bca
2021-06-02 22:04:24 +00:00
Cong Lin
f10acda463 [RESTRICT AUTOMERGE] L3 Load RSA key from two parts and re-generate
build

This is a merge of CL from widevine repo (obfuscated code only):
https://widevine-internal-review.googlesource.com/c/cdm/+/124885

The source code change that produced the obfucated code is also included
in the CL above but will not be merged to Android.

Original commit message from the fix above:
"This is a security improvement against an L3 exploit b/182584472.
The change is to store RSA private key in two parts instead of one,
and load it separately when the key is needed. This will make it
more difficult to find the entire RSA key.

This CL does the key loading part only. Key splitting is done
in Haystack in CL: cl/367515385"

New L3 system IDs included in the obfuscated code:
ID     Description
22585  Android Q ARM L3 Field Provisioning 3.0
22586  Android Q ARM 64 L3 Field Provisioning 3.0
22587  Android Q x86 L3 Field Provisioning 3.0
22588  Android Q x86 64 L3 Field Provisioning 3.0

Bug: 182584472
Test: L3 unit tests
Test: GTS tests
run gts --module GtsMediaTestCases
run gts --module GtsExoPlayerTestCases
run gts --module GtsYouTubeTestCases

Change-Id: I834d3802690c2fda75cb3cfba186c41b6f5dc749
2021-05-18 15:24:57 -07:00
Cong Lin
eb9a027f0a [RESTRICT AUTOMERGE] Refresh L3 libraries after buffer overflow fix qt-dev
Merge of [http://go/wvgerrit/123643]. Fix included:

http://go/wvgerrit/111603
Fix L3 block offset test and re-enable buffer overflow tests

http://go/wvgerrit/111784
Fix heap overflow test in L3 and OEMCrypto ref

Test: Ran L3 unit tests
Test: GTS tests https://android-build.googleplex.com/builds/forrest/run/L68100000872640856
Bug: 182584472

Change-Id: I237f52c715e691a52256bf01fa2422aeb34e45f3
2021-04-29 09:20:52 -07:00
Edwin Wong
0914ef7cd2 [automerger skipped] Merge "[RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability." into oc-mr1-dev am: 1e44ea96ef -s ours
am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13497770

Change-Id: I9d8da4ae123a4c9e963923a89c87a5b9172230b2
2021-04-06 23:06:28 +00:00
Edwin Wong
9452ee5a55 Merge "[RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability." into pi-dev 2021-04-06 22:27:14 +00:00
Edwin Wong
aabd91204a Merge "[RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability." into qt-dev 2021-04-06 22:27:14 +00:00
Edwin Wong
1e44ea96ef Merge "[RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability." into oc-mr1-dev 2021-04-06 22:27:14 +00:00
Edwin Wong
f49a3e5682 [RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability.
The shared memory buffer used by srcPtr can be freed by another
thread because it is not protected by a mutex. Subsequently,
a use after free AIGABRT can occur in a race condition.

SafetyNet logging is not added to avoid log spamming. The
mutex lock is called to setup for decryption, which is
called frequently.

Test is run on rvc-dev branch, using target_hwasan-userdebug build.

Test: sts
  sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Bug_176495665#testPocBug_176495665

Test: push to device with target_hwasan-userdebug build
  adb shell /data/local/tmp/Bug-176495665_sts64

Bug: 176495665
Bug: 176444161
Change-Id: Ie1aca0ceacb4b7a1b6e473b823541607a36d8cb4
2021-04-06 11:45:43 -07:00
Edwin Wong
7752248af7 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 1bd967f9a8 -s ours
am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13462544

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I7ca4e8eeb271574476a23c21aac98540264a81a0
2021-03-10 20:12:37 +00:00
Edwin Wong
93dd56bae2 [RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability.
The shared memory buffer used by srcPtr can be freed by another
thread because it is not protected by a mutex. Subsequently,
a use after free AIGABRT can occur in a race condition.

SafetyNet logging is not added to avoid log spamming. The
mutex lock is called to setup for decryption, which is
called frequently.

The crash was reproduced on the device before the fix.
Verified the test passes after the fix.

Test: sts
  sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Bug_176495665#testPocBug_176495665

Test: push to device with target_hwasan-userdebug build
  adb shell /data/local/tmp/Bug-176495665_sts64

Bug: 176495665
Bug: 176444161
Change-Id: Ie1aca0ceacb4b7a1b6e473b823541607a36d8cb4
2021-03-08 16:08:50 -08:00
Edwin Wong
9c278174c8 [RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability.
The shared memory buffer used by srcPtr can be freed by another
thread because it is not protected by a mutex. Subsequently,
a use after free AIGABRT can occur in a race condition.

SafetyNet logging is not added to avoid log spamming. The
mutex lock is called to setup for decryption, which is
called frequently.

The crash was reproduced on the device before the fix.
Verified the test passes after the fix.

Test: sts
  sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Bug_176495665#testPocBug_176495665

Test: push to device with target_hwasan-userdebug build
  adb shell /data/local/tmp/Bug-176495665_sts64

Bug: 176495665
Bug: 176444161
Change-Id: Ie1aca0ceacb4b7a1b6e473b823541607a36d8cb4
2021-03-08 15:54:00 -08:00
Edwin Wong
f3ad627bcb [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow.
There is a potential integer overflow to bypass the
destination base size check in decrypt. The destPtr
can then point to the outside of the destination buffer.

Test: sts-tradefed
  sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Bug_176444622#testPocBug_176444622

Test: push to device with target_hwasan-userdebug build
  adb shell /data/local/tmp/Bug-17644462264

Bug: 176444622
Bug: 176496353
Change-Id: Id3aece61d46d548c304782d4e1dc3a4747795c01
Merged-In: Id3aece61d46d548c304782d4e1dc3a4747795c01
2021-02-25 21:34:23 +00:00
Edwin Wong
1bd967f9a8 [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow.
There is a potential integer overflow to bypass the
destination base size check in decrypt. The destPtr
can then point to the outside of the destination buffer.

Test: sts-tradefed
  sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Bug_176444622#testPocBug_176444622

Test: push to device with target_hwasan-userdebug build
  adb shell /data/local/tmp/Bug-17644462264

Bug: 176444622
Bug: 176496353
Change-Id: Ic511871dfa3ddf7e66e94f7d58c4c9558add09a2
2021-02-02 23:41:01 -08:00
Edwin Wong
0558edfb31 [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow.
There is a potential integer overflow to bypass the
destination base size check in decrypt. The destPtr
can then point to the outside of the destination buffer.

Test: sts-tradefed
  sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Bug_176444622#testPocBug_176444622

Test: push to device with target_hwasan-userdebug build
  adb shell /data/local/tmp/Bug-17644462264

Bug: 176444622
Bug: 176496353
Change-Id: I2aa944d6db1754d10dacee05f2e06071bbb4a3cc
2021-02-02 23:31:26 -08:00
Edwin Wong
ad1d8778e4 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt srcPtr overflow. am: 0253cb580e -s ours
am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13424496

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Id7fbc45edc5264e942b87394024958550cfeadbf
2021-02-03 00:03:57 +00:00
Edwin Wong
0253cb580e [RESTRICT AUTOMERGE] Fix potential decrypt srcPtr overflow.
Merged from http://go/wvgerrit/114903

There is a potential integer overflow to bypass the
source base size check in decrypt. The source pointer
can then point to the outside of the source buffer,
which could potentially leak arbitrary memory content
to destination pointer.

Test: sts-tradefed
  sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Bug_176496160#testPocBug_176496160

Test: push to device with target_hwasan-userdebug build
  adb shell /data/local/tmp/Bug-17649616064

Bug: 176496160
Bug: 176444786
Change-Id: I0a15d86a87fbf590f39ddf2ce218c83eacb0174e
2021-01-29 22:25:24 +00:00
Edwin Wong
a5c14b7afb [RESTRICT AUTOMERGE] Fix potential decrypt srcPtr overflow.
Merged from http://go/wvgerrit/114903

There is a potential integer overflow to bypass the
source base size check in decrypt. The source pointer
can then point to the outside of the source buffer,
which could potentially leak arbitrary memory content
to destination pointer.

Test: sts-tradefed
  sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Bug_176496160#testPocBug_176496160

Test: push to device with target_hwasan-userdebug build
  adb shell /data/local/tmp/Bug-17649616064

Bug: 176496160
Bug: 176444786
Change-Id: I208e0d5d949e8ef003fcf7d6f129eab66b9b3656
2021-01-29 22:24:18 +00:00
Edwin Wong
c3a24e6c86 Fix potential decrypt src pointer overflow.
Merged from http://go/wvgerrit/114903

There is a potential integer overflow to bypass the
source base size check in decrypt. The source pointer
can then point to the outside of the source buffer,
which could potentially leak arbitrary memory content
to destination pointer.

Test: sts-tradefed
  sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Bug_176496160#testPocBug_176496160

Test: push to device with target_hwasan-userdebug build
  adb shell /data/local/tmp/Bug-17649616064

Bug: 176496160
Bug: 176444786
Change-Id: I208e0d5d949e8ef003fcf7d6f129eab66b9b3656
2021-01-28 17:59:08 +00:00
Rahul Frias
367befa3b7 Merge "Address request license test failures [ DO NOT MERGE ]" into qt-dev 2019-06-02 00:44:31 +00:00
Rahul Frias
999a466275 Merge "Return key request type none after key rotation" into qt-dev 2019-05-31 15:55:05 +00:00
Rahul Frias
e4d432806a Merge "WvCdmExtendedDurationTest#VerifyLicenseRequestTest fixes" into qt-dev 2019-05-30 02:06:42 +00:00
Rahul Frias
b7c6f9b52c Address request license test failures [ DO NOT MERGE ]
[ Merge of http://go/wvgerrit/79883 ]

This corrects test code and undoes CE CDM changes in b/113167010 which
will be resolved in a future release.

The tests failures addressed are
* ProvisioningTestWithServiceCertificate
* ReleaseRetryOfflineKeyTest
* ReleaseRetryL3OfflineKeyTest
* ReleaseRetryL3OfflineKeySessionUsageDisable

ProvisioningInterspersedRetryTest has been disabled and will be
addressed in a post 15.2 OEMCrypto release in 133641240

Bug: 119428680
Test: WV unit/integration tests
Change-Id: I7961b4556a0ac749e4f38d43f1bea8f520d67f20
2019-05-29 19:04:52 -07:00
Rahul Frias
3c9175fec5 Return key request type none after key rotation
[ Merge of http://go/wvgerrit/80084 ]

Corrected the key type being returned after entitled keys from
init data are loaded. Made test changes to validate.

Bug: 133903028
Test: WV unit/integration tests
Change-Id: Icb44587f5c3aba3b0facae6d83dc9344d6b60833
2019-05-29 19:03:43 -07:00
TreeHugger Robot
f246f028b2 Merge "Change move_widevine_data.sh to move L3 files" into qt-dev 2019-05-24 20:59:31 +00:00
Srujan Gaddam
45d02c545c Reverse LD_LIBRARY_PATH order based on liboemcrypto.so
Bug: b/133427576
Test: Unit tests on Taimen and Crosshatch
Merge of http://go/wvgerrit/79804

Currently, the run_all_unit_tests.sh script fails to load in the Level 1
OEMCrypto for some devices that don't have a 64-bit liboemcrypto.so. This
is because the liboemcrypto.so tries to load in libQSEEComAPI.so, which
some devices contain both a 32-bit and 64-bit version of. Since we set
the LD_LIBRARY_PATH to use /vendor/lib64 first, and since we only have a
32-bit liboemcrypto.so, the 32-bit liboemcrypto.so will try to load in the
libQSEEComAPI.so in the lib64 path first. Since the liboemcrypto.so is
32-bit, it will fail to open the 64-bit library. The solution to this is
to conditionally set the LD_LIBRARY_PATH based on if a 64-bit
liboemcrypto.so exists or not.

Change-Id: I80a9e778f31f089f66df0544cb022d810e9d3de3
2019-05-24 10:30:10 -07:00
Rahul Frias
80b8e29c3f WvCdmExtendedDurationTest#VerifyLicenseRequestTest fixes
[ Merge of http://go/wvgerrit/79724 ]

Bug: 122982573
Test: WV unit/integration tests
Change-Id: Icb7b192311dc6bbe630d96f993ccca774160774b
2019-05-22 18:12:06 -07:00
Rahul Frias
48650f74ab Merge "Correct android version number in test" into qt-dev 2019-05-17 14:23:01 +00:00
Rahul Frias
4f273991b9 Correct android version number in test
[ Merge of http://go/wvgerrit/79144 ]

Bug: 132908020
Test: WV unit/integration tests
Change-Id: Idf5cf3e1e886af3bfed157320fa09d66dfa55c0d
2019-05-16 14:44:40 -07:00
TreeHugger Robot
3454ccf51e Merge "Disable failures for LoadKeyWithSuspiciousIV and SelectKeyNotThereAPI15" into qt-dev 2019-05-16 20:34:18 +00:00
Srujan Gaddam
189eb87977 Change move_widevine_data.sh to move L3 files
Bug: b/130252305
Test: nyc-mr2-release -> pi-dev, oc-mr1-release -> pi-dev
nyc-mr2-release -> oc-mr1-release -> pi-dev upgrades with offline
licenses
Merge of http://go/ag/7323341

In N, the L3 files were stored in /data/mediadrm/IDM[uid]/. In O, they
were moved to /data/mediadrm/IDM[uid]/L3/. In P, we moved the contents
of mediadrm to /data/vendor/mediadrm/. For an O->P upgrade, the L3 files
can be read in /data/vendor/mediadrm/IDM[uid]/L3/, but when we upgrade
N->P, the L3 files sit in /data/vendor/mediadrm/IDM[uid]/, unable to be
read. This CL addresses this issue by changing the script to move any L3
files if they exist under this directory to the L3 subdirectory after we
do the bulk move from /data/mediadrm/ to /data/vendor/mediadrm/.

Change-Id: I319c323879766df063d25478046367878023a7cf
(cherry picked from commit 1a6ca36976)
2019-05-16 20:25:54 +00:00
Robert Shih
69c8f488ca Add CdmKeyStatus kKeyStatusUsableInFuture
Bug: 116738851
Test: unit tests
Change-Id: I49728788e57905806b72e891f3654fbf0c8b1bc0
2019-05-15 15:16:05 -07:00
Fred Gylys-Colwell
29becbc2bf Disable failures for LoadKeyWithSuspiciousIV and SelectKeyNotThereAPI15
Merge from Widevine repo of http://go/wvgerrit/78949

LoadKeyWithSuspiciousIV is a new test for OEMCrypto v15.2.  It is
being disabled since we do not require 15.2 for the Q release.

SelectKeyNotThereAPI15 was failing because the error code is
delayed. This is acceptable.

Bug: 132720732
Test: unit tests on taimen
Change-Id: Iea3fabfb3afd800065119ce812fb454be1e82644
2019-05-14 22:32:54 -07:00
TreeHugger Robot
127f87770c Merge "Fix OEMCrypto UsageTableTest.GenerateReportWrongPST" into qt-dev 2019-05-14 22:01:11 +00:00
Rahul Frias
ed833222a6 Merge "Ref count Timer implementation" into qt-dev 2019-05-13 20:24:45 +00:00
Rahul Frias
19c6e57269 Merge "Single PSSH entitlement handling" into qt-dev 2019-05-13 16:26:16 +00:00
Rahul Frias
80f5e283ad Merge "Key Status should reflect key container security level" into qt-dev 2019-05-13 16:25:24 +00:00
Rahul Frias
4d917e3ee8 Ref count Timer implementation
[ Merge of http://go/wvgerrit/78763 ]

The android timer instance is held by a regular pointer rather
than reference counted as all classes that derive from RefBase
should be. This could result in a double deallocation, if the
timer is ever passed to a strong pointer.

Bug: 79364026
Test: WV unit/integration tests. GtsMediaTestCases. Play movies
      playback tests.

Change-Id: I01f622bc045e1012f2240b3775a6d121f9415463
2019-05-12 02:15:12 -07:00
Rahul Frias
7d78609548 Key Status should reflect key container security level
[ Merge of http://go/wvgerrit/77506 ]

Callers of MediaDrm can register to be notified when key status
changes and if they are usable for decryption. A number of factors
are evaluated when making this determination. Key container security
level will now be included in the evaluation.

Bug: 78652608
Test: WV unit/integration test, GtsMediaDrmTest, Play movies playback
      testing.

Change-Id: I20243e5cb160f7957e3239e8d05f715ff0ee6dd6
2019-05-09 22:16:23 -07:00
Fred Gylys-Colwell
5ee5d00514 Report OEMCrypto Build Information in License Request
Merge from Widevine repo of http://go/wvgerrit/78623

This updates the license request client identification to include
OEMCrypto build information.

Bug: 129070445
Test: ExoPlayer on crosshatch with mod mock
Change-Id: I0dbce0cca4e9810e14f60561e4e434f1dbcadfb6
2019-05-09 13:24:04 -07:00
Adam Stone
c71fb10b95 Merge "Correctly sets provisioning state for test." into qt-dev 2019-05-08 23:29:17 +00:00
Adam Stone
3a27d2d649 Correctly sets provisioning state for test.
[ Merge from http://go/wvgerrit/78383 ]

Bug: http://b/121049662

Test: Re-ran the unit test.
Change-Id: I62c00f425c93b588e123ddd8b1093177f2e9b241
2019-05-08 14:13:28 -07:00
John Bruce
8a0ba4d0fa Merge "Disallow Blank App Package Name on Q and Later" into qt-dev 2019-05-08 18:58:40 +00:00
Fred Gylys-Colwell
2f79fe2773 Merge "Update unit tests for v15.2" into qt-dev 2019-05-08 17:36:36 +00:00
Jeff Tinker
83068b97c8 Merge "hidl plugin: add sendKeysChange_1_2" into qt-dev 2019-05-08 17:17:43 +00:00