Skip to content

Commit 39812e9

Browse files
authored
tidy & update analysis results (#11)
* remove subtree * move * extraction of functions from reports * clean up * . * . * untrack irrelevant results * add vulnerability information to analysis reports * refacor, tests * . * refactor * refactor 1 * refactor 2 * untrack yaml * cleaned up results * renaming
1 parent a9dca06 commit 39812e9

172 files changed

Lines changed: 15102 additions & 1219 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ data/modules
1010
**/finish.json
1111
**/extraRules/
1212

13-
ml
13+
ml
14+
15+
compose.yaml

cmd/vulncompose/main.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"os/exec"
7+
"path/filepath"
8+
"strings"
9+
10+
"github.com/ASSERT-KTH/go-cryptoapi/internal/compose"
11+
)
12+
13+
func Usage() {
14+
fmt.Println("Usage: ./vulncompose <vulnerability_json_file>")
15+
fmt.Println(" Generates docker-compose file from vulnerability spec and analyses them by running `docker compose up`")
16+
}
17+
18+
func main() {
19+
if len(os.Args) != 2 {
20+
Usage()
21+
os.Exit(1)
22+
}
23+
24+
vulnerabilityFilePath := os.Args[1]
25+
if vulnerabilityFilePath == "" {
26+
fmt.Println("Error: Vulnerability JSON file path is required")
27+
Usage()
28+
os.Exit(1)
29+
}
30+
if !strings.HasSuffix(vulnerabilityFilePath, ".json") {
31+
fmt.Println("Error: Invalid file type. Please provide a JSON file.")
32+
Usage()
33+
os.Exit(1)
34+
}
35+
36+
composeFilePath := filepath.Join("internal", "docker", "compose.yaml")
37+
if err := compose.GenerateCompose(vulnerabilityFilePath, composeFilePath); err != nil {
38+
fmt.Printf("Error generating compose file from %s:\n %v\n", vulnerabilityFilePath, err)
39+
os.Exit(1)
40+
}
41+
42+
if err := os.Chdir("internal/docker"); err != nil {
43+
fmt.Printf("Error changing to docker directory: %v\n", err)
44+
os.Exit(1)
45+
}
46+
47+
// Run docker compose command
48+
dockerComposeCmd := exec.Command("docker", "compose", "up", "--build", "--remove-orphans")
49+
dockerComposeCmd.Stdout = os.Stdout
50+
dockerComposeCmd.Stderr = os.Stderr
51+
52+
if err := dockerComposeCmd.Run(); err != nil {
53+
fmt.Printf("Error running docker compose: %v\n", err)
54+
os.Exit(1)
55+
}
56+
57+
}

cmd/vulnrunner/main.go

Lines changed: 0 additions & 65 deletions
This file was deleted.
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
[
2+
{
3+
"function_name": "AddBodyContentMD5Handler",
4+
"file_path": "/analysis/repo/private/checksum/content_md5.go",
5+
"line_number": 43,
6+
"full_implementation": "func AddBodyContentMD5Handler(r *request.Request) {\n\t// if Content-MD5 header is already present, return\n\tif v := r.HTTPRequest.Header.Get(contentMD5Header); len(v) != 0 {\n\t\treturn\n\t}\n\n\t// if S3DisableContentMD5Validation flag is set, return\n\tif aws.BoolValue(r.Config.S3DisableContentMD5Validation) {\n\t\treturn\n\t}\n\n\t// if request is presigned, return\n\tif r.IsPresigned() {\n\t\treturn\n\t}\n\n\t// if body is not seekable, return\n\tif !aws.IsReaderSeekable(r.Body) {\n\t\tif r.Config.Logger != nil {\n\t\t\tr.Config.Logger.Log(fmt.Sprintf(\n\t\t\t\t\"Unable to compute Content-MD5 for unseekable body, S3.%s\",\n\t\t\t\tr.Operation.Name))\n\t\t}\n\t\treturn\n\t}\n\n\th := md5.New()\n\n\tif _, err := aws.CopySeekableBody(h, r.Body); err != nil {\n\t\tr.Error = awserr.New(\"ContentMD5\", \"failed to compute body MD5\", err)\n\t\treturn\n\t}\n\n\t// encode the md5 checksum in base64 and set the request header.\n\tv := base64.StdEncoding.EncodeToString(h.Sum(nil))\n\tr.HTTPRequest.Header.Set(contentMD5Header, v)\n}",
7+
"vulnerability_info": {
8+
"FuncName": "crypto/md5.New",
9+
"Message": "MD5 - RFC 9155 - Deprecating MD5 Signature Hashes in TLS 1.2 and DTLS 1.2. Use MD5 in HMAC is Acceptable But Not Recommended",
10+
"Slicing_Criteria": {
11+
"SourceCode": "h := md5.New()",
12+
"SourceFilename": "/analysis/repo/private/checksum/content_md5.go",
13+
"SourceLineNum": 43,
14+
"ParentFunction": "AddBodyContentMD5Handler (r *github.com/aws/aws-sdk-go/aws/request.Request)"
15+
},
16+
"Def_Use_Link": null,
17+
"Predicate_Type": "Dangerous_Function"
18+
}
19+
},
20+
{
21+
"function_name": "signEncodedPolicy",
22+
"file_path": "/analysis/repo/service/cloudfront/sign/policy.go",
23+
"line_number": 200,
24+
"full_implementation": "func signEncodedPolicy(randReader io.Reader, jsonPolicy []byte, privKey *rsa.PrivateKey) ([]byte, error) {\n\thash := sha1.New()\n\tif _, err := bytes.NewReader(jsonPolicy).WriteTo(hash); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to calculate signing hash, %s\", err.Error())\n\t}\n\n\tsig, err := rsa.SignPKCS1v15(randReader, privKey, crypto.SHA1, hash.Sum(nil))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to sign policy, %s\", err.Error())\n\t}\n\n\tb64Sig := make([]byte, base64.StdEncoding.EncodedLen(len(sig)))\n\tbase64.StdEncoding.Encode(b64Sig, sig)\n\treturn b64Sig, nil\n}",
25+
"vulnerability_info": {
26+
"FuncName": "crypto/sha1.New",
27+
"Message": "RFC 9155 - Deprecating SHA-1 Signature Hashes in TLS 1.2 and DTLS 1.2. ",
28+
"Slicing_Criteria": {
29+
"SourceCode": "hash := sha1.New()",
30+
"SourceFilename": "/analysis/repo/service/cloudfront/sign/policy.go",
31+
"SourceLineNum": 200,
32+
"ParentFunction": "signEncodedPolicy (randReader io.Reader, jsonPolicy []byte, privKey *crypto/rsa.PrivateKey) ([]byte, error)"
33+
},
34+
"Def_Use_Link": null,
35+
"Predicate_Type": "Dangerous_Function"
36+
}
37+
},
38+
{
39+
"function_name": "signEncodedPolicy",
40+
"file_path": "/analysis/repo/service/cloudfront/sign/policy.go",
41+
"line_number": 205,
42+
"full_implementation": "func signEncodedPolicy(randReader io.Reader, jsonPolicy []byte, privKey *rsa.PrivateKey) ([]byte, error) {\n\thash := sha1.New()\n\tif _, err := bytes.NewReader(jsonPolicy).WriteTo(hash); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to calculate signing hash, %s\", err.Error())\n\t}\n\n\tsig, err := rsa.SignPKCS1v15(randReader, privKey, crypto.SHA1, hash.Sum(nil))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to sign policy, %s\", err.Error())\n\t}\n\n\tb64Sig := make([]byte, base64.StdEncoding.EncodedLen(len(sig)))\n\tbase64.StdEncoding.Encode(b64Sig, sig)\n\treturn b64Sig, nil\n}",
43+
"vulnerability_info": {
44+
"FuncName": "crypto/rsa.SignPKCS1v15",
45+
"Message": "RSA-PKCS1-v1_5 is deprecated, RSASSA-PSS is recommended, that is, \"SignPSS\"",
46+
"Slicing_Criteria": {
47+
"SourceCode": "sig, err := rsa.SignPKCS1v15(randReader, privKey, crypto.SHA1, hash.Sum(nil))",
48+
"SourceFilename": "/analysis/repo/service/cloudfront/sign/policy.go",
49+
"SourceLineNum": 205,
50+
"ParentFunction": "signEncodedPolicy (randReader io.Reader, jsonPolicy []byte, privKey *crypto/rsa.PrivateKey) ([]byte, error)"
51+
},
52+
"Def_Use_Link": null,
53+
"Predicate_Type": "Warning_Function"
54+
}
55+
},
56+
{
57+
"function_name": "LoadEncryptedPEMPrivKey",
58+
"file_path": "/analysis/repo/service/cloudfront/sign/privkey.go",
59+
"line_number": 45,
60+
"full_implementation": "func LoadEncryptedPEMPrivKey(reader io.Reader, password []byte) (*rsa.PrivateKey, error) {\n\tblock, err := loadPem(reader)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdecryptedBlock, err := x509.DecryptPEMBlock(block, password)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn x509.ParsePKCS1PrivateKey(decryptedBlock)\n}",
61+
"vulnerability_info": {
62+
"FuncName": "crypto/x509.DecryptPEMBlock",
63+
"Message": "Deprecated: Legacy PEM encryption as specified in RFC 1423 is insecure by design. Since it does not authenticate the ciphertext, it is vulnerable to padding oracle attacks that can let an attacker recover the plaintext.",
64+
"Slicing_Criteria": {
65+
"SourceCode": "decryptedBlock, err := x509.DecryptPEMBlock(block, password)",
66+
"SourceFilename": "/analysis/repo/service/cloudfront/sign/privkey.go",
67+
"SourceLineNum": 45,
68+
"ParentFunction": "LoadEncryptedPEMPrivKey (reader io.Reader, password []byte) (*crypto/rsa.PrivateKey, error)"
69+
},
70+
"Def_Use_Link": null,
71+
"Predicate_Type": "Warning_Function"
72+
}
73+
},
74+
{
75+
"function_name": "computeBodyHashes",
76+
"file_path": "/analysis/repo/service/s3/body_hash.go",
77+
"line_number": 47,
78+
"full_implementation": "func computeBodyHashes(r *request.Request) {\n\tif aws.BoolValue(r.Config.S3DisableContentMD5Validation) {\n\t\treturn\n\t}\n\tif r.IsPresigned() {\n\t\treturn\n\t}\n\tif r.Error != nil || !aws.IsReaderSeekable(r.Body) {\n\t\treturn\n\t}\n\n\tvar md5Hash, sha256Hash hash.Hash\n\thashers := make([]io.Writer, 0, 2)\n\n\t// Determine upfront which hashes can be set without overriding user\n\t// provide header data.\n\tif v := r.HTTPRequest.Header.Get(contentMD5Header); len(v) == 0 {\n\t\tmd5Hash = md5.New()\n\t\thashers = append(hashers, md5Hash)\n\t}\n\n\tif v := r.HTTPRequest.Header.Get(contentSha256Header); len(v) == 0 {\n\t\tsha256Hash = sha256.New()\n\t\thashers = append(hashers, sha256Hash)\n\t}\n\n\t// Create the destination writer based on the hashes that are not already\n\t// provided by the user.\n\tvar dst io.Writer\n\tswitch len(hashers) {\n\tcase 0:\n\t\treturn\n\tcase 1:\n\t\tdst = hashers[0]\n\tdefault:\n\t\tdst = io.MultiWriter(hashers...)\n\t}\n\n\tif _, err := aws.CopySeekableBody(dst, r.Body); err != nil {\n\t\tr.Error = awserr.New(\"BodyHashError\", \"failed to compute body hashes\", err)\n\t\treturn\n\t}\n\n\t// For the hashes created, set the associated headers that the user did not\n\t// already provide.\n\tif md5Hash != nil {\n\t\tsum := make([]byte, md5.Size)\n\t\tencoded := make([]byte, md5Base64EncLen)\n\n\t\tbase64.StdEncoding.Encode(encoded, md5Hash.Sum(sum[0:0]))\n\t\tr.HTTPRequest.Header[contentMD5Header] = []string{string(encoded)}\n\t}\n\n\tif sha256Hash != nil {\n\t\tencoded := make([]byte, sha256HexEncLen)\n\t\tsum := make([]byte, sha256.Size)\n\n\t\thex.Encode(encoded, sha256Hash.Sum(sum[0:0]))\n\t\tr.HTTPRequest.Header[contentSha256Header] = []string{string(encoded)}\n\t}\n}",
79+
"vulnerability_info": {
80+
"FuncName": "crypto/md5.New",
81+
"Message": "MD5 - RFC 9155 - Deprecating MD5 Signature Hashes in TLS 1.2 and DTLS 1.2. Use MD5 in HMAC is Acceptable But Not Recommended",
82+
"Slicing_Criteria": {
83+
"SourceCode": "md5Hash = md5.New()",
84+
"SourceFilename": "/analysis/repo/service/s3/body_hash.go",
85+
"SourceLineNum": 47,
86+
"ParentFunction": "computeBodyHashes (r *github.com/aws/aws-sdk-go/aws/request.Request)"
87+
},
88+
"Def_Use_Link": null,
89+
"Predicate_Type": "Dangerous_Function"
90+
}
91+
},
92+
{
93+
"function_name": "newMD5ValidationReader",
94+
"file_path": "/analysis/repo/service/s3/body_hash.go",
95+
"line_number": 160,
96+
"full_implementation": "func newMD5ValidationReader(reader io.ReadCloser, payloadLen int64) *md5ValidationReader {\n\th := md5.New()\n\treturn \u0026md5ValidationReader{\n\t\trawReader: reader,\n\t\tpayload: io.TeeReader(\u0026io.LimitedReader{R: reader, N: payloadLen}, h),\n\t\thash: h,\n\t\tpayloadLen: payloadLen,\n\t}\n}",
97+
"vulnerability_info": {
98+
"FuncName": "crypto/md5.New",
99+
"Message": "MD5 - RFC 9155 - Deprecating MD5 Signature Hashes in TLS 1.2 and DTLS 1.2. Use MD5 in HMAC is Acceptable But Not Recommended",
100+
"Slicing_Criteria": {
101+
"SourceCode": "h := md5.New()",
102+
"SourceFilename": "/analysis/repo/service/s3/body_hash.go",
103+
"SourceLineNum": 160,
104+
"ParentFunction": "newMD5ValidationReader (reader io.ReadCloser, payloadLen int64) *github.com/aws/aws-sdk-go/service/s3.md5ValidationReader"
105+
},
106+
"Def_Use_Link": null,
107+
"Predicate_Type": "Dangerous_Function"
108+
}
109+
},
110+
{
111+
"function_name": "computeKeyMD5",
112+
"file_path": "/analysis/repo/service/s3/sse.go",
113+
"line_number": 80,
114+
"full_implementation": "func computeKeyMD5(keyHeader, keyMD5Header, key string, r *http.Request) {\n\tif len(key) == 0 {\n\t\t// Backwards compatiablity where user just set the header value instead\n\t\t// of using the API parameter, or setting the header value for an\n\t\t// operation without the parameters modeled.\n\t\tkey = r.Header.Get(keyHeader)\n\t\tif len(key) == 0 {\n\t\t\treturn\n\t\t}\n\n\t\t// In backwards compatiable, the header's value is not base64 encoded,\n\t\t// and needs to be encoded and updated by the SDK's customizations.\n\t\tb64Key := base64.StdEncoding.EncodeToString([]byte(key))\n\t\tr.Header.Set(keyHeader, b64Key)\n\t}\n\n\t// Only update Key's MD5 if not already set.\n\tif len(r.Header.Get(keyMD5Header)) == 0 {\n\t\tsum := md5.Sum([]byte(key))\n\t\tkeyMD5 := base64.StdEncoding.EncodeToString(sum[:])\n\t\tr.Header.Set(keyMD5Header, keyMD5)\n\t}\n}",
115+
"vulnerability_info": {
116+
"FuncName": "crypto/md5.Sum",
117+
"Message": "MD5 - RFC 9155 - Deprecating MD5 Signature Hashes in TLS 1.2 and DTLS 1.2. Use MD5 in HMAC is Acceptable But Not Recommended",
118+
"Slicing_Criteria": {
119+
"SourceCode": "sum := md5.Sum([]byte(key))",
120+
"SourceFilename": "/analysis/repo/service/s3/sse.go",
121+
"SourceLineNum": 80,
122+
"ParentFunction": "computeKeyMD5 (keyHeader string, keyMD5Header string, key string, r *net/http.Request)"
123+
},
124+
"Def_Use_Link": null,
125+
"Predicate_Type": "Dangerous_Function"
126+
}
127+
},
128+
{
129+
"function_name": "checksumsMatch",
130+
"file_path": "/analysis/repo/service/sqs/checksums.go",
131+
"line_number": 102,
132+
"full_implementation": "func checksumsMatch(body, expectedMD5 *string) error {\n\tif body == nil {\n\t\treturn errChecksumMissingBody\n\t} else if expectedMD5 == nil {\n\t\treturn errChecksumMissingMD5\n\t}\n\n\tmsum := md5.Sum([]byte(*body))\n\tsum := hex.EncodeToString(msum[:])\n\tif sum != *expectedMD5 {\n\t\treturn fmt.Errorf(\"expected MD5 checksum '%s', got '%s'\", *expectedMD5, sum)\n\t}\n\n\treturn nil\n}",
133+
"vulnerability_info": {
134+
"FuncName": "crypto/md5.Sum",
135+
"Message": "MD5 - RFC 9155 - Deprecating MD5 Signature Hashes in TLS 1.2 and DTLS 1.2. Use MD5 in HMAC is Acceptable But Not Recommended",
136+
"Slicing_Criteria": {
137+
"SourceCode": "msum := md5.Sum([]byte(*body))",
138+
"SourceFilename": "/analysis/repo/service/sqs/checksums.go",
139+
"SourceLineNum": 102,
140+
"ParentFunction": "checksumsMatch (body *string, expectedMD5 *string) error"
141+
},
142+
"Def_Use_Link": null,
143+
"Predicate_Type": "Dangerous_Function"
144+
}
145+
}
146+
]

data/analysis/cve/vulnerabilties_conservative/github.com-aws-aws-sdk-go-65-1/results.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@
5151
"FuncName": "crypto/md5.New",
5252
"Message": "MD5 - RFC 9155 - Deprecating MD5 Signature Hashes in TLS 1.2 and DTLS 1.2. Use MD5 in HMAC is Acceptable But Not Recommended",
5353
"Slicing_Criteria": {
54-
"SourceCode": "h := md5.New()",
54+
"SourceCode": "md5Hash = md5.New()",
5555
"SourceFilename": "/analysis/repo/service/s3/body_hash.go",
56-
"SourceLineNum": 160,
57-
"ParentFunction": "newMD5ValidationReader (reader io.ReadCloser, payloadLen int64) *github.com/aws/aws-sdk-go/service/s3.md5ValidationReader"
56+
"SourceLineNum": 47,
57+
"ParentFunction": "computeBodyHashes (r *github.com/aws/aws-sdk-go/aws/request.Request)"
5858
},
5959
"Def_Use_Link": null,
6060
"Predicate_Type": "Dangerous_Function"
@@ -63,10 +63,10 @@
6363
"FuncName": "crypto/md5.New",
6464
"Message": "MD5 - RFC 9155 - Deprecating MD5 Signature Hashes in TLS 1.2 and DTLS 1.2. Use MD5 in HMAC is Acceptable But Not Recommended",
6565
"Slicing_Criteria": {
66-
"SourceCode": "md5Hash = md5.New()",
66+
"SourceCode": "h := md5.New()",
6767
"SourceFilename": "/analysis/repo/service/s3/body_hash.go",
68-
"SourceLineNum": 47,
69-
"ParentFunction": "computeBodyHashes (r *github.com/aws/aws-sdk-go/aws/request.Request)"
68+
"SourceLineNum": 160,
69+
"ParentFunction": "newMD5ValidationReader (reader io.ReadCloser, payloadLen int64) *github.com/aws/aws-sdk-go/service/s3.md5ValidationReader"
7070
},
7171
"Def_Use_Link": null,
7272
"Predicate_Type": "Dangerous_Function"

data/analysis/cve/vulnerabilties_conservative/github.com-aws-aws-sdk-go-65-1/vulnerability_info.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33
"package": "github.com/aws/aws-sdk-go/service/s3/s3crypto",
44
"go_version": "1.11",
55
"vul_name": "Use of a Broken or Risky Cryptographic Algorithm",
6+
"references": [
7+
"https://github.com/aws/aws-sdk-go/pull/3403",
8+
"https://github.com/sophieschmieg/exploits/tree/master/aws_s3_crypto_poc"
9+
],
610
"publish": "Introduced: 12 Aug 2020",
7-
"cwe": "",
8-
"cve": "",
11+
"cwe": "CWE-327",
12+
"cve": "CVE-2020-8912",
913
"summary": "github.com/aws/aws-sdk-go/service/s3/s3crypto is an AWS SDK for the Go programming language.\nAffected versions of this package are vulnerable to Use of a Broken or Risky Cryptographic Algorithm. A vulnerability in the in-band key negotiation exists in the AWS S3 Crypto SDK for GoLang versions prior to V2. An attacker with write access to the targeted bucket can change the encryption algorithm of an object in the bucket, which can then allow them to change AES-GCM to AES-CTR. Using this in combination with a decryption oracle can reveal the authentication key used by AES-GCM as decrypting the GMAC tag leaves the authentication key recoverable as an algebraic equation. It is recommended to update your SDK to V2 or later, and re-encrypt your files.",
1014
"level": "medium",
1115
"score": "4.1",

data/analysis/cve/vulnerabilties_conservative/github.com-aws-aws-sdk-go-66-1/extracted_functions.json renamed to data/analysis/cve/vulnerabilties_conservative/github.com-aws-aws-sdk-go-66-1/gopher_analysis_with_samples.json

File renamed without changes.

data/analysis/cve/vulnerabilties_conservative/github.com-aws-aws-sdk-go-66-1/results.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@
5151
"FuncName": "crypto/md5.New",
5252
"Message": "MD5 - RFC 9155 - Deprecating MD5 Signature Hashes in TLS 1.2 and DTLS 1.2. Use MD5 in HMAC is Acceptable But Not Recommended",
5353
"Slicing_Criteria": {
54-
"SourceCode": "md5Hash = md5.New()",
54+
"SourceCode": "h := md5.New()",
5555
"SourceFilename": "/analysis/repo/service/s3/body_hash.go",
56-
"SourceLineNum": 47,
57-
"ParentFunction": "computeBodyHashes (r *github.com/aws/aws-sdk-go/aws/request.Request)"
56+
"SourceLineNum": 160,
57+
"ParentFunction": "newMD5ValidationReader (reader io.ReadCloser, payloadLen int64) *github.com/aws/aws-sdk-go/service/s3.md5ValidationReader"
5858
},
5959
"Def_Use_Link": null,
6060
"Predicate_Type": "Dangerous_Function"
@@ -63,10 +63,10 @@
6363
"FuncName": "crypto/md5.New",
6464
"Message": "MD5 - RFC 9155 - Deprecating MD5 Signature Hashes in TLS 1.2 and DTLS 1.2. Use MD5 in HMAC is Acceptable But Not Recommended",
6565
"Slicing_Criteria": {
66-
"SourceCode": "h := md5.New()",
66+
"SourceCode": "md5Hash = md5.New()",
6767
"SourceFilename": "/analysis/repo/service/s3/body_hash.go",
68-
"SourceLineNum": 160,
69-
"ParentFunction": "newMD5ValidationReader (reader io.ReadCloser, payloadLen int64) *github.com/aws/aws-sdk-go/service/s3.md5ValidationReader"
68+
"SourceLineNum": 47,
69+
"ParentFunction": "computeBodyHashes (r *github.com/aws/aws-sdk-go/aws/request.Request)"
7070
},
7171
"Def_Use_Link": null,
7272
"Predicate_Type": "Dangerous_Function"

0 commit comments

Comments
 (0)