Documentation
¶
Index ¶
Constants ¶
const ( ModuleID = "mass-assignment" ModuleName = "Mass Assignment" ModuleShort = "Detects mass assignment / parameter pollution in JSON APIs" )
Variables ¶
Functions ¶
This section is empty.
Types ¶
type Module ¶
type Module struct {
modkit.BaseActiveModule
// contains filtered or unexported fields
}
Module implements the Mass Assignment active scanner.
func (*Module) CanProcess ¶
func (m *Module) CanProcess(ctx *httpmsg.HttpRequestResponse) bool
CanProcess returns true only for POST/PUT/PATCH with JSON content type.
func (*Module) IncludesBaseCanProcess ¶
IncludesBaseCanProcess returns false since we have fully custom CanProcess.
func (*Module) ScanPerRequest ¶
func (m *Module) ScanPerRequest( ctx *httpmsg.HttpRequestResponse, httpClient *http.Requester, scanCtx *modkit.ScanContext, ) ([]*output.ResultEvent, error)
ScanPerRequest tests mass assignment on the given JSON request.
Detection is differential: a privilege key is only reported when injecting it actually changes the response AND the key appears in the response because of our injection (it is absent from the untouched baseline). A benign canary key is sent first; if the endpoint echoes that too, it reflects arbitrary input indiscriminately and we report nothing — this avoids flagging endpoints that simply ignore or blindly mirror unknown fields without honoring them.