Skip to content

Commit a624254

Browse files
authored
Update hardcoded_credentials.go fix: adaper equal expr which const value at left (#917)
* Update hardcoded_credentials.go adaper equal expr which const value at left. ``` if "Tr0ub4dour_UPL&&LOlo" == pwd ``` * Update hardcoded_credentials.go check ident not equal nil * adapter const == key hardcoded, add testcases
1 parent 9432e67 commit a624254

File tree

2 files changed

+46
-6
lines changed

2 files changed

+46
-6
lines changed

rules/hardcoded_credentials.go

+13-6
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,19 @@ func (r *credentials) matchValueSpec(valueSpec *ast.ValueSpec, ctx *gosec.Contex
101101

102102
func (r *credentials) matchEqualityCheck(binaryExpr *ast.BinaryExpr, ctx *gosec.Context) (*gosec.Issue, error) {
103103
if binaryExpr.Op == token.EQL || binaryExpr.Op == token.NEQ {
104-
if ident, ok := binaryExpr.X.(*ast.Ident); ok {
105-
if r.pattern.MatchString(ident.Name) {
106-
if val, err := gosec.GetString(binaryExpr.Y); err == nil {
107-
if r.ignoreEntropy || (!r.ignoreEntropy && r.isHighEntropyString(val)) {
108-
return gosec.NewIssue(ctx, binaryExpr, r.ID(), r.What, r.Severity, r.Confidence), nil
109-
}
104+
ident, ok := binaryExpr.X.(*ast.Ident)
105+
if !ok {
106+
ident, _ = binaryExpr.Y.(*ast.Ident)
107+
}
108+
109+
if ident != nil && r.pattern.MatchString(ident.Name) {
110+
valueNode := binaryExpr.Y
111+
if !ok {
112+
valueNode = binaryExpr.X
113+
}
114+
if val, err := gosec.GetString(valueNode); err == nil {
115+
if r.ignoreEntropy || (!r.ignoreEntropy && r.isHighEntropyString(val)) {
116+
return gosec.NewIssue(ctx, binaryExpr, r.ID(), r.What, r.Severity, r.Confidence), nil
110117
}
111118
}
112119
}

testutils/source.go

+33
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,17 @@ package main
113113
114114
import "fmt"
115115
116+
func main() {
117+
var password string
118+
if "f62e5bcda4fae4f82370da0c6f20697b8f8447ef" == password {
119+
fmt.Println("password equality")
120+
}
121+
}`}, 1, gosec.NewConfig()},
122+
{[]string{`
123+
package main
124+
125+
import "fmt"
126+
116127
func main() {
117128
var password string
118129
if password != "f62e5bcda4fae4f82370da0c6f20697b8f8447ef" {
@@ -124,6 +135,17 @@ package main
124135
125136
import "fmt"
126137
138+
func main() {
139+
var password string
140+
if "f62e5bcda4fae4f82370da0c6f20697b8f8447ef" != password {
141+
fmt.Println("password equality")
142+
}
143+
}`}, 1, gosec.NewConfig()},
144+
{[]string{`
145+
package main
146+
147+
import "fmt"
148+
127149
func main() {
128150
var p string
129151
if p != "f62e5bcda4fae4f82370da0c6f20697b8f8447ef" {
@@ -135,6 +157,17 @@ package main
135157
136158
import "fmt"
137159
160+
func main() {
161+
var p string
162+
if "f62e5bcda4fae4f82370da0c6f20697b8f8447ef" != p {
163+
fmt.Println("password equality")
164+
}
165+
}`}, 0, gosec.NewConfig()},
166+
{[]string{`
167+
package main
168+
169+
import "fmt"
170+
138171
const (
139172
pw = "KjasdlkjapoIKLlka98098sdf012U/rL2sLdBqOHQUlt5Z6kCgKGDyCFA=="
140173
)

0 commit comments

Comments
 (0)