In Bouncy Castle JCE Provider version 1.55 and earlier the DSA does not fully validate ASN.1 encoding of signature on verification. It is possible to inject extra elements in the sequence making up the signature and still have it validate, which in some cases may allow the introduction of 'invisible' data into a signed structure.
[
{
"events": [
{
"introduced": "1.38"
},
{
"fixed": "1.56"
}
]
},
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "6.4-NA"
}
]
},
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "6.4"
}
]
},
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "14.04"
}
]
}
]
[
{
"signature_type": "Function",
"signature_version": "v1",
"target": {
"file": "prov/src/test/java/org/bouncycastle/jce/provider/test/DSATest.java",
"function": "performTest"
},
"id": "CVE-2016-1000338-087c7fa8",
"deprecated": false,
"source": "https://github.com/bcgit/bc-java/commit/b0c3ce99d43d73a096268831d0d120ffc89eac7f",
"digest": {
"function_hash": "260934301005839087771033825261480613861",
"length": 2322.0
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"target": {
"file": "prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java"
},
"id": "CVE-2016-1000338-7c04278f",
"deprecated": false,
"source": "https://github.com/bcgit/bc-java/commit/b0c3ce99d43d73a096268831d0d120ffc89eac7f",
"digest": {
"line_hashes": [
"136163138208565596251691075970191609612",
"107562756255838380340501290306204437774",
"256405273294590351025306411110688622024",
"321391742634389090900092687248037489853",
"6668448620659695156447218389951777055",
"114414081459311079942728053419609401083",
"224667266301163910456003187272837519895",
"332764780958810242807759347728695018005",
"2754744943816587054499795256365031272",
"54339207175021658509884097720332228201",
"260804928531546614162744774821933798241",
"78059865186365016316398972156821482959",
"197034695221731228794406326079488881854"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"signature_version": "v1",
"target": {
"file": "prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java",
"function": "derDecode"
},
"id": "CVE-2016-1000338-9c489c5a",
"deprecated": false,
"source": "https://github.com/bcgit/bc-java/commit/b0c3ce99d43d73a096268831d0d120ffc89eac7f",
"digest": {
"function_hash": "62843566931630879095861907111734894785",
"length": 237.0
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"target": {
"file": "prov/src/test/java/org/bouncycastle/jce/provider/test/DSATest.java"
},
"id": "CVE-2016-1000338-d475fda9",
"deprecated": false,
"source": "https://github.com/bcgit/bc-java/commit/b0c3ce99d43d73a096268831d0d120ffc89eac7f",
"digest": {
"line_hashes": [
"27619101407773283894022340957986395790",
"53925406762360604861398560861262849999",
"216990679076247254168542336595971957581",
"14297879978164554187003311429379829455",
"11867573160650489211141619707597149843",
"207007376803811096500197258371319649111",
"312819499243767890488137211355596467932"
],
"threshold": 0.9
}
}
]
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2016-1000338.json"