Format of a numeric header is unknown
Issue ID: response-header-numerical-unknown-format
Average severity: Low
Description
The format you have defined for a numeric header does not match formats defined in either the OpenAPI Specification (OAS) or JSON Schema Specification. Unknown formats cannot be enforced to protect your API, so it is like you had not defined a format at all.
For more details, see the OpenAPI Specification and JSON Schema Validation.
Example
The following is an example of how this type of risk could look in your API definition. The parameter type is set to integer
but there is a typo in the format, rendering it unknown:
{
"responses": {
"200": {
"description": "OK",
"headers": {
"x-ids": {
"type": "integer",
"format": "int3"
}
}
}
}
}
Possible exploit scenario
Attackers strive to make your APIs behave in an unexpected way to learn more about your system or to cause a data breach. It is unlikely that the format of numeric items can cause a significant breach, but we highly recommend that you minimize any risks and clearly specify the data that your API produces in each method.
Using your internal, company-specific formats is not currently supported.
Remediation
Define a known format
for numeric headers. This provides an extra layer of safety ensuring that your API only returns data formats that you expect it to return.
Numeric parameters type integer
can have the format int32
or int64
. Numeric parameters type number
can have the format float
or double
.
{
"responses": {
"200": {
"description": "OK",
"headers": {
"x-ids": {
"type": "integer",
"format": "int32"
}
}
}
}
}
If you want to use your internal, company-specific format, make sure to also use properties like maximum
, minimum
, pattern
, and maxLenght
to constrain the accepted values.