MongoDB Go driver Collection and Client. Queries built from user input via bson.D or bson.M with string interpolation are NoSQL injection sinks. The filter argument on Find/Update/Delete operations is where tainted input lands.
.Find().FindOne().UpdateOne().UpdateMany().DeleteOne().DeleteMany().Aggregate().Find()SinkFind(ctx context.Context, filter any, opts ...*options.FindOptions) (*Cursor, error)
Queries documents matching filter. NoSQL injection sink if filter is built from user input.
1.FindOne()SinkFindOne(ctx context.Context, filter any, opts ...*options.FindOneOptions) *SingleResult
Returns one document matching filter. Same NoSQL injection risk.
1.UpdateOne()SinkUpdateOne(ctx context.Context, filter, update any, opts ...*options.UpdateOptions) (*UpdateResult, error)
Updates one document matching filter. Both filter and update are injection sinks.
1.UpdateMany()SinkUpdateMany(ctx context.Context, filter, update any, opts ...*options.UpdateOptions) (*UpdateResult, error)
Updates all matching documents. Injection sink on filter and update arguments.
1.DeleteOne()SinkDeleteOne(ctx context.Context, filter any, opts ...*options.DeleteOptions) (*DeleteResult, error)
Deletes first document matching filter. NoSQL injection sink.
1.DeleteMany()SinkDeleteMany(ctx context.Context, filter any, opts ...*options.DeleteOptions) (*DeleteResult, error)
Deletes all matching documents. NoSQL injection sink.
1.Aggregate()SinkAggregate(ctx context.Context, pipeline any, opts ...*options.AggregateOptions) (*Cursor, error)
Runs an aggregation pipeline. Each stage can be an injection sink if built from user input.
1.InsertOne()NeutralInsertOne(ctx context.Context, document any, opts ...*options.InsertOneOptions) (*InsertOneResult, error)
Inserts a document. Generally safe because fields are typed, but tainted document fields reach storage.
| FQN | Field | |
|---|---|---|
| go.mongodb.org/mongo-driver/mongo.Collection | fqns[0] | |
| go.mongodb.org/mongo-driver/mongo.Client | fqns[1] | |
| *.Collection | patterns | |
| *.Client | patterns |
Wrong FQN → 0 findings. Verify with: change fqns to garbage → must produce 0 results.
require go.mongodb.org/mongo-driver v1.14.0
from codepathfinder.go_rule import GoMongoCollection