The fuzzer plugins for libkeymint_support are designed based on the understanding of the source code and try to achieve the following:
The configuration parameters are not hardcoded, but instead selected based on incoming data. This ensures more code paths are reached by the fuzzers.
The plugins feed the entire input data to the module. This ensures that the plugins tolerate any kind of input (empty, huge, malformed, etc) and dont exit()
on any input and thereby increasing the chance of identifying vulnerabilities.
KeyMintAttestation supports the following parameters:
Parameter | Valid Values | Configured Value |
---|---|---|
padding | PaddingMode | Value obtained from FuzzedDataProvider |
digest | Digest | Value obtained from FuzzedDataProvider |
idx | size_t | Value obtained from FuzzedDataProvider |
timestamp | uint64_t | Value obtained from FuzzedDataProvider |
authSet | uint32_t | Value obtained from FuzzedDataProvider |
issuerSubjectName | uint8_t | Value obtained from FuzzedDataProvider |
AttestationChallenge | string | Value obtained from FuzzedDataProvider |
AttestationApplicationId | string | Value obtained from FuzzedDataProvider |
blockmode | BlockMode | Value obtained from FuzzedDataProvider |
minMacLength | uint32_t | Value obtained from FuzzedDataProvider |
macLength | uint32_t | Value obtained from FuzzedDataProvider |
$ mm -j$(nproc) keymint_attestation_fuzzer
$ adb sync data $ adb shell /data/fuzz/arm64/keymint_attestation_fuzzer/keymint_attestation_fuzzer
KeyMintAuthSet supports the following parameters:
Parameter | Valid Values | Configured Value |
---|---|---|
authSet | AuthorizationSet | Value obtained from FuzzedDataProvider |
params | AuthorizationSet | Value obtained from FuzzedDataProvider |
numKeyParam | size_t | Value obtained from FuzzedDataProvider |
tag | Tag | Value obtained from FuzzedDataProvider |
$ mm -j$(nproc) keymint_authSet_fuzzer
$ adb sync data $ adb shell /data/fuzz/arm64/keymint_authSet_fuzzer/keymint_authSet_fuzzer
KeyMintRemoteProv supports the following parameters:
Parameter | Valid Values | Configured Value |
---|---|---|
challengeSize | uint8_t | Value obtained from FuzzedDataProvider |
challenge | std::vector<uint8_t> | Value obtained from FuzzedDataProvider |
numKeys | uint8_t | Value obtained from FuzzedDataProvider |
$ mm -j$(nproc) keymint_remote_prov_fuzzer
$ adb sync data $ adb shell /data/fuzz/arm64/keymint_remote_prov_fuzzer/keymint_remote_prov_fuzzer
KeyMintRemoteKeyProvSupport supports the following parameters:
Parameter | Valid Values | Configured Value |
---|---|---|
supportedEekCurve | uint8_t | Value obtained from FuzzedDataProvider |
length | uint8_t | Value obtained from FuzzedDataProvider |
serialNoProp | string | Value obtained from FuzzedDataProvider |
instanceName | string | Value obtained from FuzzedDataProvider |
value | uint8_t | Value obtained from FuzzedDataProvider |
$ mm -j$(nproc) keymint_rkpsupport_fuzzer
$ adb sync data $ adb shell /data/fuzz/arm64/keymint_rkpsupport_fuzzer/keymint_rkpsupport_fuzzer