crypto/x509 MTC: Strictly parse extensions in MTC verification Add the missing check that the MTCProof's extensions field is a well-formed list of MTCLogEntryExtension structures in strictly ascending order by type, as required by section 5.2.1. Previously the field was hashed wholesale as opaque bytes without being parsed. No extension types are defined, so well-formed extensions are otherwise still ignored. Bug: 571178555 Change-Id: Ib25e7318ad9c27a4af5c972f34f93f3f6a6a6964 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/104509 Reviewed-by: David Benjamin <davidben@google.com> Commit-Queue: Lily Chen <chlily@google.com>
diff --git a/crypto/x509/test/mtc/README.txt b/crypto/x509/test/mtc/README.txt index 860a2ae..c5b1b18 100644 --- a/crypto/x509/test/mtc/README.txt +++ b/crypto/x509/test/mtc/README.txt
@@ -3,7 +3,7 @@ Test certificates were generated by running the demo tool github.com/ietf-plants-wg/merkle-tree-certs/demo at revision -7f5561c8f105f40fcb32a420825778eb2964759b. +cc8797a94f4933e660f6ce369f3bfa5c6573db01. The main corpus in this directory was generated using the demo tool with the config at ./mtc_testdata_config.json. (The demo tool also generates unneeded
diff --git a/crypto/x509/test/mtc/cert_34_0.pem b/crypto/x509/test/mtc/cert_34_0.pem new file mode 100644 index 0000000..ca557bb --- /dev/null +++ b/crypto/x509/test/mtc/cert_34_0.pem
@@ -0,0 +1,66 @@ +-----BEGIN CERTIFICATE PROPERTIES----- +AB0AAAAEgf1ZAQABABEADw6B/VmB/VkBAQICAIAAgA== +-----END CERTIFICATE PROPERTIES----- +-----BEGIN CERTIFICATE----- +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 +Rw== +-----END CERTIFICATE-----
diff --git a/crypto/x509/test/mtc/cert_35_0.pem b/crypto/x509/test/mtc/cert_35_0.pem new file mode 100644 index 0000000..8077e25 --- /dev/null +++ b/crypto/x509/test/mtc/cert_35_0.pem
@@ -0,0 +1,65 @@ +-----BEGIN CERTIFICATE PROPERTIES----- +AB0AAAAEgf1ZAQABABEADw6B/VmB/VkBAQICAIAAgA== +-----END CERTIFICATE PROPERTIES----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE-----
diff --git a/crypto/x509/test/mtc/cert_36_0.pem b/crypto/x509/test/mtc/cert_36_0.pem new file mode 100644 index 0000000..6dcf9e3 --- /dev/null +++ b/crypto/x509/test/mtc/cert_36_0.pem
@@ -0,0 +1,65 @@ +-----BEGIN CERTIFICATE PROPERTIES----- +AB0AAAAEgf1ZAQABABEADw6B/VmB/VkBAQICAIAAgA== +-----END CERTIFICATE PROPERTIES----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE-----
diff --git a/crypto/x509/test/mtc/cert_37_0.pem b/crypto/x509/test/mtc/cert_37_0.pem new file mode 100644 index 0000000..8582569 --- /dev/null +++ b/crypto/x509/test/mtc/cert_37_0.pem
@@ -0,0 +1,65 @@ +-----BEGIN CERTIFICATE PROPERTIES----- +AB0AAAAEgf1ZAQABABEADw6B/VmB/VkBAQICAIAAgA== +-----END CERTIFICATE PROPERTIES----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE-----
diff --git a/crypto/x509/test/mtc/mtc_testdata_config.json b/crypto/x509/test/mtc/mtc_testdata_config.json index e503c76..f8e0f9f 100644 --- a/crypto/x509/test/mtc/mtc_testdata_config.json +++ b/crypto/x509/test/mtc/mtc_testdata_config.json
@@ -123,7 +123,59 @@ ] }, { - "Repeat": 2000, + "//0": "Well-formed MTCEntryExtensions of unrecognized types 1 and 2, which are ignored: 0001 0000 0002 0001 ff", + "MTCEntryExtensions": "AAEAAAACAAH/", + "PublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxiC16lts+SOL87OwHhGDzK9/dyUd7sM80jAf53VL+AV38HoHKpmA7LJoYLf4yVhcVleNcxufsAfcPueTLX0Vg==", + "NotBefore": "2020-01-01T00:00:00Z", + "NotAfter": "2030-12-31T23:59:59Z", + "DNSNames": ["a.example"], + "KeyUsage": ["DigitalSignature"], + "ExtKeyUsage": ["ServerAuth"], + "Certificates": [ + {"SubtreeStart": 32, "SubtreeEnd": 64, "Cosigners": ["32473.1"]} + ] + }, + { + "//0": "Invalid because MTCEntryExtensions is truncated: 0001 0005 ff", + "MTCEntryExtensions": "AAEABf8=", + "PublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxiC16lts+SOL87OwHhGDzK9/dyUd7sM80jAf53VL+AV38HoHKpmA7LJoYLf4yVhcVleNcxufsAfcPueTLX0Vg==", + "NotBefore": "2020-01-01T00:00:00Z", + "NotAfter": "2030-12-31T23:59:59Z", + "DNSNames": ["a.example"], + "KeyUsage": ["DigitalSignature"], + "ExtKeyUsage": ["ServerAuth"], + "Certificates": [ + {"SubtreeStart": 32, "SubtreeEnd": 64, "Cosigners": ["32473.1"]} + ] + }, + { + "//0": "Invalid because MTCEntryExtensions has a duplicate type: 0001 0000 0001 0000", + "MTCEntryExtensions": "AAEAAAABAAA=", + "PublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxiC16lts+SOL87OwHhGDzK9/dyUd7sM80jAf53VL+AV38HoHKpmA7LJoYLf4yVhcVleNcxufsAfcPueTLX0Vg==", + "NotBefore": "2020-01-01T00:00:00Z", + "NotAfter": "2030-12-31T23:59:59Z", + "DNSNames": ["a.example"], + "KeyUsage": ["DigitalSignature"], + "ExtKeyUsage": ["ServerAuth"], + "Certificates": [ + {"SubtreeStart": 32, "SubtreeEnd": 64, "Cosigners": ["32473.1"]} + ] + }, + { + "//0": "Invalid because MTCEntryExtensions types are in descending order: 0002 0000 0001 0000", + "MTCEntryExtensions": "AAIAAAABAAA=", + "PublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxiC16lts+SOL87OwHhGDzK9/dyUd7sM80jAf53VL+AV38HoHKpmA7LJoYLf4yVhcVleNcxufsAfcPueTLX0Vg==", + "NotBefore": "2020-01-01T00:00:00Z", + "NotAfter": "2030-12-31T23:59:59Z", + "DNSNames": ["a.example"], + "KeyUsage": ["DigitalSignature"], + "ExtKeyUsage": ["ServerAuth"], + "Certificates": [ + {"SubtreeStart": 32, "SubtreeEnd": 64, "Cosigners": ["32473.1"]} + ] + }, + { + "Repeat": 1996, "Subject": {"CommonName": "Some more filler certificates"}, "PublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxiC16lts+SOL87OwHhGDzK9/dyUd7sM80jAf53VL+AV38HoHKpmA7LJoYLf4yVhcVleNcxufsAfcPueTLX0Vg==", "NotBefore": "2020-01-01T00:00:00Z",
diff --git a/crypto/x509/x509_mtc.cc b/crypto/x509/x509_mtc.cc index 85cb04c..5853f8f 100644 --- a/crypto/x509/x509_mtc.cc +++ b/crypto/x509/x509_mtc.cc
@@ -144,6 +144,29 @@ return EVP_DigestUpdate(ctx, CBS_data(&element), CBS_len(&element)); } +// CheckMTCLogEntryExtensions returns whether `extensions` is a well-formed list +// of MTCLogEntryExtension structures, sorted in strictly ascending order by +// extension type (see section 5.2.1). No extension types are currently +// recognized, so the contents are otherwise ignored (see section 12.5). +bool CheckMTCLogEntryExtensions(CBS extensions) { + std::optional<uint16_t> prev_type; + while (CBS_len(&extensions) > 0) { + uint16_t type; + CBS data; + if (!CBS_get_u16(&extensions, &type) || + !CBS_get_u16_length_prefixed(&extensions, &data)) { + OPENSSL_PUT_ERROR(X509, X509_R_INVALID_MTC_PROOF); + return false; + } + if (prev_type.has_value() && *prev_type >= type) { + OPENSSL_PUT_ERROR(X509, X509_R_INVALID_MTC_PROOF); + return false; + } + prev_type = type; + } + return true; +} + // MTCCACosigner represents a Merkle Tree CA and its corresponding CA cosigner // (see draft-ietf-plants-merkle-tree-certs, section 5.5). // Only id-pe-mtcCertificationAuthority-SHA256 is supported. @@ -433,6 +456,9 @@ OPENSSL_PUT_ERROR(ASN1, ASN1_R_DECODE_ERROR); return 0; } + if (!CheckMTCLogEntryExtensions(extensions)) { + return 0; + } // Iterate through the subtree signatures array to check that they conform to // spec, and identify the subtree signature from the CA cosigner.
diff --git a/crypto/x509/x509_test.cc b/crypto/x509/x509_test.cc index 054bde5..e2e669d 100644 --- a/crypto/x509/x509_test.cc +++ b/crypto/x509/x509_test.cc
@@ -12681,6 +12681,41 @@ EXPECT_EQ(X509_V_OK, VerifyMTC(mtc_33_empty_unrecognized_cosignature.get())); } +TEST_P(X509VerifyMTCTest, UnrecognizedEntryExtensions) { + UniquePtr<X509> mtc_34_unrecognized_extensions = + CertFromPEM(GetTestData("crypto/x509/test/mtc/cert_34_0.pem")); + ASSERT_TRUE(mtc_34_unrecognized_extensions); + EXPECT_EQ(X509_V_OK, VerifyMTC(mtc_34_unrecognized_extensions.get())); +} + +TEST_P(X509VerifyMTCTest, InvalidEntryExtensions) { + UniquePtr<X509> mtc_35_truncated_extensions = + CertFromPEM(GetTestData("crypto/x509/test/mtc/cert_35_0.pem")); + ASSERT_TRUE(mtc_35_truncated_extensions); + EXPECT_EQ(X509_V_ERR_CERT_SIGNATURE_FAILURE, + VerifyMTC(mtc_35_truncated_extensions.get())); + EXPECT_TRUE( + ErrorEquals(ERR_get_error(), ERR_LIB_X509, X509_R_INVALID_MTC_PROOF)); + ERR_clear_error(); + + UniquePtr<X509> mtc_36_duplicate_extensions = + CertFromPEM(GetTestData("crypto/x509/test/mtc/cert_36_0.pem")); + ASSERT_TRUE(mtc_36_duplicate_extensions); + EXPECT_EQ(X509_V_ERR_CERT_SIGNATURE_FAILURE, + VerifyMTC(mtc_36_duplicate_extensions.get())); + EXPECT_TRUE( + ErrorEquals(ERR_get_error(), ERR_LIB_X509, X509_R_INVALID_MTC_PROOF)); + ERR_clear_error(); + + UniquePtr<X509> mtc_37_misordered_extensions = + CertFromPEM(GetTestData("crypto/x509/test/mtc/cert_37_0.pem")); + ASSERT_TRUE(mtc_37_misordered_extensions); + EXPECT_EQ(X509_V_ERR_CERT_SIGNATURE_FAILURE, + VerifyMTC(mtc_37_misordered_extensions.get())); + EXPECT_TRUE( + ErrorEquals(ERR_get_error(), ERR_LIB_X509, X509_R_INVALID_MTC_PROOF)); +} + TEST_P(X509VerifyMTCTest, InvalidSerial) { // This cert with index 2 is below the minSerial for the CA, which is: // {"Log": 1, "Index": 8}.
diff --git a/gen/sources.bzl b/gen/sources.bzl index b7de20f..6404ca2 100644 --- a/gen/sources.bzl +++ b/gen/sources.bzl
@@ -1034,6 +1034,10 @@ "crypto/x509/test/mtc/cert_33_7.pem", "crypto/x509/test/mtc/cert_33_8.pem", "crypto/x509/test/mtc/cert_33_9.pem", + "crypto/x509/test/mtc/cert_34_0.pem", + "crypto/x509/test/mtc/cert_35_0.pem", + "crypto/x509/test/mtc/cert_36_0.pem", + "crypto/x509/test/mtc/cert_37_0.pem", "crypto/x509/test/mtc/cert_5036_0.pem", "crypto/x509/test/mtc/large_merkle_tree_consistency_proof_tests.txt", "crypto/x509/test/mtc/large_merkle_tree_inclusion_proof_tests.txt",
diff --git a/gen/sources.cmake b/gen/sources.cmake index fa6b0a0..af59729 100644 --- a/gen/sources.cmake +++ b/gen/sources.cmake
@@ -1066,6 +1066,10 @@ crypto/x509/test/mtc/cert_33_7.pem crypto/x509/test/mtc/cert_33_8.pem crypto/x509/test/mtc/cert_33_9.pem + crypto/x509/test/mtc/cert_34_0.pem + crypto/x509/test/mtc/cert_35_0.pem + crypto/x509/test/mtc/cert_36_0.pem + crypto/x509/test/mtc/cert_37_0.pem crypto/x509/test/mtc/cert_5036_0.pem crypto/x509/test/mtc/large_merkle_tree_consistency_proof_tests.txt crypto/x509/test/mtc/large_merkle_tree_inclusion_proof_tests.txt
diff --git a/gen/sources.gni b/gen/sources.gni index e4abad1..545adbf 100644 --- a/gen/sources.gni +++ b/gen/sources.gni
@@ -1034,6 +1034,10 @@ "crypto/x509/test/mtc/cert_33_7.pem", "crypto/x509/test/mtc/cert_33_8.pem", "crypto/x509/test/mtc/cert_33_9.pem", + "crypto/x509/test/mtc/cert_34_0.pem", + "crypto/x509/test/mtc/cert_35_0.pem", + "crypto/x509/test/mtc/cert_36_0.pem", + "crypto/x509/test/mtc/cert_37_0.pem", "crypto/x509/test/mtc/cert_5036_0.pem", "crypto/x509/test/mtc/large_merkle_tree_consistency_proof_tests.txt", "crypto/x509/test/mtc/large_merkle_tree_inclusion_proof_tests.txt",
diff --git a/gen/sources.json b/gen/sources.json index f3fbb43..348e4c8 100644 --- a/gen/sources.json +++ b/gen/sources.json
@@ -1013,6 +1013,10 @@ "crypto/x509/test/mtc/cert_33_7.pem", "crypto/x509/test/mtc/cert_33_8.pem", "crypto/x509/test/mtc/cert_33_9.pem", + "crypto/x509/test/mtc/cert_34_0.pem", + "crypto/x509/test/mtc/cert_35_0.pem", + "crypto/x509/test/mtc/cert_36_0.pem", + "crypto/x509/test/mtc/cert_37_0.pem", "crypto/x509/test/mtc/cert_5036_0.pem", "crypto/x509/test/mtc/large_merkle_tree_consistency_proof_tests.txt", "crypto/x509/test/mtc/large_merkle_tree_inclusion_proof_tests.txt",
diff --git a/gen/sources.mk b/gen/sources.mk index f1b8c6f..1721bfc 100644 --- a/gen/sources.mk +++ b/gen/sources.mk
@@ -1019,6 +1019,10 @@ crypto/x509/test/mtc/cert_33_7.pem \ crypto/x509/test/mtc/cert_33_8.pem \ crypto/x509/test/mtc/cert_33_9.pem \ + crypto/x509/test/mtc/cert_34_0.pem \ + crypto/x509/test/mtc/cert_35_0.pem \ + crypto/x509/test/mtc/cert_36_0.pem \ + crypto/x509/test/mtc/cert_37_0.pem \ crypto/x509/test/mtc/cert_5036_0.pem \ crypto/x509/test/mtc/large_merkle_tree_consistency_proof_tests.txt \ crypto/x509/test/mtc/large_merkle_tree_inclusion_proof_tests.txt \