Skip to content

Commit

Permalink
chore: Update documentation with latest fuzzers and arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
en-milie committed Jan 21, 2025
1 parent 109793c commit ad4ed35
Show file tree
Hide file tree
Showing 10 changed files with 99 additions and 13 deletions.
1 change: 1 addition & 0 deletions docs/commands-and-arguments/arguments.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ You can get the full list of arguments by running `cats -h`. Below is a short de
- `--ignoreResponseWords` COUNT_LIST a comma separated list of words count in the response that will be considered as SUCCESS, even if the Fuzzer will typically report it as WARN or ERROR
- `--ignoreResponseLines` LINES_COUNT a comma separated list of lines count in the response that will be considered as SUCCESS, even if the Fuzzer will typically report it as WARN or ERROR
- `--ignoreResponseRegex` a REGEX that will match against the response that will be considered as SUCCESS, even if the Fuzzer will typically report it as WARN or ERROR
- `--ignoreErrorLeaksCheck`If supplied (no value needed) it won't check if the response body contains sensitive information and will return the test result as SUCCESS instead of ERROR
- `--filterResponseCodes` HTTP_CODES_LIST a comma separated list of HTTP response codes that will be filtered and not included in the final report. You can use response code families as `2xx`, `4xx`, etc.
- `--filterResponseSize` SIZE_LIST a comma separated list of response sizes that will be filtered and not included in the final report
- `--filterResponseWords` COUNT_LIST a comma separated list of words count in the response that will be filtered and not included in the final report
Expand Down
15 changes: 10 additions & 5 deletions docs/fuzzers/field-fuzzers/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Field Fuzzers

CATS has currently 60 registered `Field` Fuzzers:
CATS has currently 65 registered `Field` Fuzzers:
- `AbugidasInStringFields` - iterate through each field and send values containing abugidas chars
- `DecimalFieldsLeftBoundaryFuzzer` - iterate through each Number field (either float or double) and send requests with outside the range values on the left side in the targeted field
- `DecimalFieldsRightBoundaryFuzzer` - iterate through each Number field (either float or double) and send requests with outside the range values on the right side in the targeted field
Expand All @@ -12,6 +12,7 @@ CATS has currently 60 registered `Field` Fuzzers:
- `ExtremeNegativeValueIntegerFieldsFuzzer` - iterate through each Integer field and send requests with the lowest value possible in the targeted field
- `ExtremePositiveValueDecimalFieldsFuzzer` - iterate through each Number field and send requests with the highest value possible in the targeted field
- `ExtremePositiveValueInIntegerFieldsFuzzer` - iterate through each Integer field and send requests with the highest value possible in the targeted field
- `InsertWhitespacesInFieldNamesField` - iterates through each request field name and insert random whitespaces
- `IntegerFieldsLeftBoundaryFuzzer` - iterate through each Integer field and send requests with outside the range values on the left side in the targeted field
- `IntegerFieldsRightBoundaryFuzzer` - iterate through each Integer field and send requests with outside the range values on the right side in the targeted field
- `InvalidValuesInEnumsFieldsFuzzer` - iterate through each ENUM field and send invalid values
Expand All @@ -21,10 +22,12 @@ CATS has currently 60 registered `Field` Fuzzers:
- `LeadingControlCharsInFieldsTrimValidateFuzzer` - iterate through each field and send requests with Unicode control chars prefixing the current value in the targeted field
- `LeadingSingleCodePointEmojisInFieldsTrimValidateFuzzer` - iterate through each field and send values prefixed with single code points emojis
- `LeadingMultiCodePointEmojisInFieldsTrimValidateFuzzer` - iterate through each field and send values prefixed with multi code points emojis
- `MaxLengthExactValuesInStringFieldsFuzzer` - iterate through each **String** fields that have maxLength declared and send requests with values matching the maxLength size/value in the targeted field
- `MaximumExactValuesInNumericFieldsFuzzer` - iterate through each **Number and Integer** fields that have maximum declared and send requests with values matching the maximum size/value in the targeted field
- `MinLengthExactValuesInStringFieldsFuzzer` - iterate through each **String** fields that have minLength declared and send requests with values matching the minLength size/value in the targeted field
- `MinimumExactValuesInNumericFieldsFuzzer` - iterate through each **Number and Integer** fields that have minimum declared and send requests with values matching the minimum size/value in the targeted field
- `LowercaseExpandingBytesInStringFields` - iterate to string fields and send values that expand the byte representation when lowercased
- `LowercaseExpandingLengthInStringFields` - iterate to string fields and send values that expand their length when lowercased
- `MaxLengthExactValuesInStringFieldsFuzzer` - iterate through each string fields that have maxLength declared and send requests with values matching the maxLength size/value in the targeted field
- `MaximumExactValuesInNumericFieldsFuzzer` - iterate through each integer fields that have maximum declared and send requests with values matching the maximum size/value in the targeted field
- `MinLengthExactValuesInStringFieldsFuzzer` - iterate through each string fields that have minLength declared and send requests with values matching the minLength size/value in the targeted field
- `MinimumExactValuesInNumericFieldsFuzzer` - iterate through each number fields that have minimum declared and send requests with values matching the minimum size/value in the targeted field
- `NewFieldsFuzzer` - send a 'happy' flow request and add a new field inside the request called 'catsFuzzyField'
- `NullValuesInFieldsFuzzer` - iterate through each field and send requests with null values in the targeted field
- `OnlyControlCharsInFieldsTrimValidateFuzzer` - iterate through each field and send values with control chars only
Expand All @@ -50,6 +53,8 @@ CATS has currently 60 registered `Field` Fuzzers:
- `TrailingControlCharsInFieldsTrimValidateFuzzer` - iterate through each field and send requests with trailing with Unicode control chars in the targeted field
- `TrailingSingleCodePointEmojisInFieldsTrimValidateFuzzer` - iterate through each field and send values trailed with single code point emojis
- `TrailingMultiCodePointEmojisInFieldsTrimValidateFuzzer` - iterate through each field and send values trailed with multi code point emojis
- `UppercaseExpandingBytesInStringFields` - iterate to string fields and send values that expand the byte representation when uppercased
- `UppercaseExpandingLengthInStringFields` - iterate to string fields and send values that expand their length when uppercased
- `UserDictionaryFieldsFuzzer` - iterates through each request fields and sends values from the user supplied dictionary
- `VeryLargeStringsFuzzer` - iterate through each String field and send requests with very large values (40000 characters) in the targeted field
- `VeryLargeDecimalsInNumericFieldsFuzzer` - iterate through each numeric field and send requests with very large numbers (40000 characters) in the targeted field
Expand Down
Empty file.
20 changes: 20 additions & 0 deletions docs/fuzzers/field-fuzzers/lowercase-expanding-bytes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
hide_table_of_contents: true
---

# Lowercase Expanding Bytes in String Fields

| Item | Description |
|:--------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Full Fuzzer Name** | LowercaseExpandingBytesInStringFieldsFuzzer |
| **Log Key** | **LEBISF** |
| **Description** | This fuzzer send characters that expand their byte representation when lower cased. The expectation is that APIs will either respond with `2xx` or `4xx`. |
| **Enabled by default?** | Yes |
| **Target field types** | All array fields |
| **Expected result when fuzzed field is required** | `2XX` or `4XX` |
| **Expected result when fuzzed field is optional** | `2XX` or `4XX` |
| **Expected result when fuzzed value is not matching field pattern** | `2XX` or `4XX` |
| **Fuzzing logic** | Iteratively **replaces** string fields with characters such as `Ⱥ` or `Ⱦ` |
| **Conditions when this fuzzer will be skipped** | When field is not a string |
| **HTTP methods that will be skipped** | None |
| **Reporting** | Reports `error` if: *1.* response code is `5xx`; <br/><br/> Reports `warn` if: *1.* response code is expected and documented, but not matches response schema; *2.* response code is expected, but not documented; *3.* response code is `501`. <br/><br/> Reports `success` if: *1.* response code is expected, documented and matches response schema. |
20 changes: 20 additions & 0 deletions docs/fuzzers/field-fuzzers/lowercase-expanding-length.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
hide_table_of_contents: true
---

# Lowercase Expanding Length in String Fields

| Item | Description |
|:--------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Full Fuzzer Name** | LowercaseExpandingLengthInStringFieldsFuzzer |
| **Log Key** | **LELISF** |
| **Description** | This fuzzer send characters that expand their length when lower cased. The expectation is that APIs will either respond with `2xx` or `4xx`. |
| **Enabled by default?** | Yes |
| **Target field types** | All array fields |
| **Expected result when fuzzed field is required** | `2XX` or `4XX` |
| **Expected result when fuzzed field is optional** | `2XX` or `4XX` |
| **Expected result when fuzzed value is not matching field pattern** | `2XX` or `4XX` |
| **Fuzzing logic** | Iteratively **replaces** string fields with characters such as `İ` |
| **Conditions when this fuzzer will be skipped** | When field is not a string |
| **HTTP methods that will be skipped** | None |
| **Reporting** | Reports `error` if: *1.* response code is `5xx`; <br/><br/> Reports `warn` if: *1.* response code is expected and documented, but not matches response schema; *2.* response code is expected, but not documented; *3.* response code is `501`. <br/><br/> Reports `success` if: *1.* response code is expected, documented and matches response schema. |
Loading

0 comments on commit ad4ed35

Please sign in to comment.