Skip to content

Commit

Permalink
feat: add net http rule (#172)
Browse files Browse the repository at this point in the history
* feat: support hash in http_detection_rule

* chore: update rule name
  • Loading branch information
cfabianski committed Nov 28, 2022
1 parent d5a6e41 commit 16c548b
Show file tree
Hide file tree
Showing 18 changed files with 184 additions and 42 deletions.
16 changes: 16 additions & 0 deletions integration/flags/.snapshots/TestInitCommand-init
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,22 @@ scan:
root_lowercase: false
metavars: {}
stored: false
ruby_http_detection:
disabled: false
type: risk
languages:
- ruby
patterns:
- |
URI.encode_www_form(<$DATA_TYPE>)
- |
Net::HTTP.post_form(<$DATA_TYPE>)
param_parenting: false
processors: []
root_singularize: false
root_lowercase: false
metavars: {}
stored: false
debug: false
disable-domain-resolution: false
domain-resolution-timeout: 3s
Expand Down
14 changes: 14 additions & 0 deletions pkg/commands/process/settings/custom_detector.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
ruby_http_detection:
type: "risk"
languages:
- ruby
patterns:
- |
URI.encode_www_form(<$DATA_TYPE>)
- |
Net::HTTP.post_form(<$DATA_TYPE>)
# - |
# $HTTP_CLIENT.$METHOD(<$DATA_TYPE>)
param_parenting: false
metavars: {}
stored: false
ruby_file_detection:
type: "risk"
languages:
Expand Down
2 changes: 1 addition & 1 deletion pkg/detectors/csharp/datatype/datatype.go
Original file line number Diff line number Diff line change
Expand Up @@ -217,5 +217,5 @@ func standardizeDataType(node *parser.Node, content string) string {
return schema.SimpleTypeObject
}

return schema.SimpleTypeUknown
return schema.SimpleTypeUnknown
}
3 changes: 1 addition & 2 deletions pkg/detectors/custom/custom.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,6 @@ func (detector *Detector) extractData(captures []parser.Captures, rule config.Co
var err error

if param.ArgumentsExtract || param.ClassNameExtract {
// @ToDo: This is where we need to define the parent that will get sent as parent
paramTypes, err = detector.extractArguments(lang, capture[param.BuildFullName()], idGenerator, fileinfo, filePath)
if err != nil {
return err
Expand Down Expand Up @@ -222,7 +221,7 @@ func (detector *Detector) extractData(captures []parser.Captures, rule config.Co
matchType := &schemadatatype.DataType{
Node: matchNode,
Name: string(match),
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
Properties: make(map[string]schemadatatype.DataTypable),
}
matchNodeID := matchNode.ID()
Expand Down
2 changes: 1 addition & 1 deletion pkg/detectors/java/datatype/datatype.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,5 +145,5 @@ func standardizeDataType(node *parser.Node, content string) string {
return schema.SimpleTypeObject
}

return schema.SimpleTypeUknown
return schema.SimpleTypeUnknown
}
4 changes: 2 additions & 2 deletions pkg/detectors/javascript/datatype/objects.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func addObjects(tree *parser.Tree, datatypes map[parser.NodeID]*schemadatatype.D
datatypes[objectNode.ID()] = &schemadatatype.DataType{
Node: objectNode,
Name: "",
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
Properties: make(map[string]schemadatatype.DataTypable),
}
Expand All @@ -50,7 +50,7 @@ func addObjects(tree *parser.Tree, datatypes map[parser.NodeID]*schemadatatype.D
datatypes[objectNode.ID()].Properties[propertyName] = &schemadatatype.DataType{
Node: propertyNode,
Name: propertyNode.Content(),
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
Properties: make(map[string]schemadatatype.DataTypable),
}
Expand Down
6 changes: 3 additions & 3 deletions pkg/detectors/javascript/datatype/properties.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func addProperties(tree *parser.Tree, helperDatatypes map[parser.NodeID]*schemad
helperDatatypes[rootPropertyNode.ID()] = &schemadatatype.DataType{
Node: rootPropertyNode,
Name: id,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
Properties: make(map[string]schemadatatype.DataTypable),
UUID: "",
Expand All @@ -49,7 +49,7 @@ func addProperties(tree *parser.Tree, helperDatatypes map[parser.NodeID]*schemad
helperDatatypes[rootPropertyNode.ID()] = &schemadatatype.DataType{
Node: rootPropertyNode,
Name: id,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
Properties: make(map[string]schemadatatype.DataTypable),
UUID: "",
Expand All @@ -65,7 +65,7 @@ func addProperties(tree *parser.Tree, helperDatatypes map[parser.NodeID]*schemad
helperDatatypes[objectNode.ID()] = &schemadatatype.DataType{
Node: propertyNode,
Name: id,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
Properties: make(map[string]schemadatatype.DataTypable),
UUID: "",
Expand Down
4 changes: 2 additions & 2 deletions pkg/detectors/php/datatype/datatype.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ func discoverClassProperties(tree *parser.Tree, datatypes map[parser.NodeID]*sch
datatypes[classNode.ID()].Properties[propertyName] = &schemadatatype.DataType{
Node: propertyNode,
Name: propertyName,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
}
}
Expand All @@ -114,7 +114,7 @@ func discoverClassFunctions(tree *parser.Tree, datatypes map[parser.NodeID]*sche
datatypes[classNode.ID()].Properties[functionName] = &schemadatatype.DataType{
Node: functionNameNode,
Name: functionName,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
}
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/detectors/php/datatype/properties.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func addProperties(tree *parser.Tree, helperDatatypes map[parser.NodeID]*schemad
helperDatatypes[propertyNode.ID()] = &schemadatatype.DataType{
Node: propertyNode,
Name: id,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
Properties: make(map[string]schemadatatype.DataTypable),
UUID: "",
Expand All @@ -52,7 +52,7 @@ func addProperties(tree *parser.Tree, helperDatatypes map[parser.NodeID]*schemad
helperDatatypes[objectNode.ID()] = &schemadatatype.DataType{
Node: objectNode,
Name: id,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
Properties: make(map[string]schemadatatype.DataTypable),
UUID: "",
Expand Down
4 changes: 2 additions & 2 deletions pkg/detectors/python/datatype/datatype.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func discoverClassProperties(tree *parser.Tree, datatypes map[parser.NodeID]*sch
datatypes[classNode.ID()].Properties[propertyName] = &schemadatatype.DataType{
Node: propertyNode,
Name: propertyName,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
Properties: make(map[string]schemadatatype.DataTypable),
TextType: "",
}
Expand All @@ -128,7 +128,7 @@ func discoverClassFunctions(tree *parser.Tree, datatypes map[parser.NodeID]*sche
datatypes[classNode.ID()].Properties[functionName] = &schemadatatype.DataType{
Node: functionNameNode,
Name: functionName,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
}
}
Expand Down
8 changes: 4 additions & 4 deletions pkg/detectors/python/datatype/properties.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func addProperties(tree *parser.Tree, helperDatatypes map[parser.NodeID]*schemad
helperDatatypes[childNode.ID()] = &schemadatatype.DataType{
Node: childNode,
Name: id,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
Properties: make(map[string]schemadatatype.DataTypable),
UUID: "",
Expand All @@ -47,7 +47,7 @@ func addProperties(tree *parser.Tree, helperDatatypes map[parser.NodeID]*schemad
helperDatatypes[elementNode.ID()] = &schemadatatype.DataType{
Node: idNode,
Name: idNode.Content(),
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
Properties: make(map[string]schemadatatype.DataTypable),
UUID: "",
Expand All @@ -63,7 +63,7 @@ func addProperties(tree *parser.Tree, helperDatatypes map[parser.NodeID]*schemad
helperDatatypes[childNode.ID()] = &schemadatatype.DataType{
Node: childNode,
Name: id,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
Properties: make(map[string]schemadatatype.DataTypable),
UUID: "",
Expand All @@ -78,7 +78,7 @@ func addProperties(tree *parser.Tree, helperDatatypes map[parser.NodeID]*schemad
helperDatatypes[elementNode.ID()] = &schemadatatype.DataType{
Node: idNode,
Name: id,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
Properties: make(map[string]schemadatatype.DataTypable),
UUID: "",
Expand Down
5 changes: 2 additions & 3 deletions pkg/detectors/ruby/custom_detector/extract_arguments.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ func (detector *Detector) ExtractArguments(node *parser.Node, idGenerator nodeid

joinedDatatypes := make(map[parser.NodeID]*schemadatatype.DataType)

// handle classs name
// handle class name
if node.Type() == "constant" {
datatype := &schemadatatype.DataType{
Node: node,
Expand All @@ -35,7 +35,6 @@ func (detector *Detector) ExtractArguments(node *parser.Node, idGenerator nodeid
singleArgument := node.Child(i)

if singleArgument.Type() == "identifier" || singleArgument.Type() == "simple_symbol" || singleArgument.Type() == "bare_symbol" {

content := singleArgument.Content()

if singleArgument.Type() == "simple_symbol" {
Expand All @@ -45,7 +44,7 @@ func (detector *Detector) ExtractArguments(node *parser.Node, idGenerator nodeid
datatype := &schemadatatype.DataType{
Node: singleArgument,
Name: content,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
Properties: make(map[string]schemadatatype.DataTypable),
}
joinedDatatypes[datatype.Node.ID()] = datatype
Expand Down
6 changes: 3 additions & 3 deletions pkg/detectors/ruby/datatype/class_assignment.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
var classAssignmentQuery = parser.QueryMustCompile(ruby.GetLanguage(),
`(assignment
left: (constant) @param_id
right:
right:
(call
receiver: (constant) @helper_Class
method: (identifier) @helper_new
Expand Down Expand Up @@ -70,7 +70,7 @@ func discoverClassAssignmentProperties(tree *parser.Tree, datatypes map[parser.N
datatypes[classNode.ID()].Properties[propertyName] = &schemadatatype.DataType{
Node: propertyNode,
Name: propertyName,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
Properties: make(map[string]schemadatatype.DataTypable),
TextType: "",
}
Expand All @@ -92,7 +92,7 @@ func discoverClassAssignmentFunctions(tree *parser.Tree, datatypes map[parser.No
datatypes[classNode.ID()].Properties[functionName] = &schemadatatype.DataType{
Node: functionNameNode,
Name: functionName,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
}
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/detectors/ruby/datatype/datatype.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ func discoverClassProperties(tree *parser.Tree, datatypes map[parser.NodeID]*sch
datatypes[classNode.ID()].Properties[propertyName] = &schemadatatype.DataType{
Node: propertyNode,
Name: propertyName,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
Properties: make(map[string]schemadatatype.DataTypable),
TextType: "",
}
Expand All @@ -109,7 +109,7 @@ func discoverClassFunctions(tree *parser.Tree, datatypes map[parser.NodeID]*sche
datatypes[classNode.ID()].Properties[functionName] = &schemadatatype.DataType{
Node: functionNameNode,
Name: functionName,
Type: schema.SimpleTypeUknown,
Type: schema.SimpleTypeUnknown,
TextType: "",
}
}
Expand Down
Loading

0 comments on commit 16c548b

Please sign in to comment.