eslint-plugin-security 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslint-doc-generatorrc.js +9 -0
- package/.eslintrc +29 -1
- package/.github/ISSUE_TEMPLATE/bug-report.yml +85 -0
- package/.github/ISSUE_TEMPLATE/new-rule.yml +39 -0
- package/.github/ISSUE_TEMPLATE/rule-change.yml +61 -0
- package/.github/workflows/ci.yml +55 -0
- package/.github/workflows/pr.yml +19 -0
- package/.github/workflows/release-please.yml +39 -0
- package/.markdownlint.json +4 -0
- package/.markdownlintignore +3 -0
- package/.prettierrc.json +7 -0
- package/CHANGELOG.md +114 -34
- package/README.md +45 -85
- package/docs/avoid-command-injection-node.md +85 -0
- package/docs/bypass-connect-csrf-protection-by-abusing.md +42 -0
- package/docs/regular-expression-dos-and-node.md +83 -0
- package/docs/rules/detect-bidi-characters.md +50 -0
- package/docs/rules/detect-buffer-noassert.md +9 -0
- package/docs/rules/detect-child-process.md +9 -0
- package/docs/rules/detect-disable-mustache-escape.md +9 -0
- package/docs/rules/detect-eval-with-expression.md +7 -0
- package/docs/rules/detect-new-buffer.md +5 -0
- package/docs/rules/detect-no-csrf-before-method-override.md +9 -0
- package/docs/rules/detect-non-literal-fs-filename.md +7 -0
- package/docs/rules/detect-non-literal-regexp.md +7 -0
- package/docs/rules/detect-non-literal-require.md +7 -0
- package/docs/rules/detect-object-injection.md +7 -0
- package/docs/rules/detect-possible-timing-attacks.md +5 -0
- package/docs/rules/detect-pseudoRandomBytes.md +5 -0
- package/docs/rules/detect-unsafe-regex.md +7 -0
- package/docs/the-dangers-of-square-bracket-notation.md +107 -0
- package/index.js +10 -9
- package/package.json +34 -7
- package/rules/detect-bidi-characters.js +101 -0
- package/rules/detect-buffer-noassert.js +66 -55
- package/rules/detect-child-process.js +57 -25
- package/rules/detect-disable-mustache-escape.js +24 -14
- package/rules/detect-eval-with-expression.js +19 -9
- package/rules/detect-new-buffer.js +19 -16
- package/rules/detect-no-csrf-before-method-override.js +32 -25
- package/rules/detect-non-literal-fs-filename.js +86 -33
- package/rules/detect-non-literal-regexp.js +24 -18
- package/rules/detect-non-literal-require.js +25 -17
- package/rules/detect-object-injection.js +61 -59
- package/rules/detect-possible-timing-attacks.js +40 -42
- package/rules/detect-pseudoRandomBytes.js +18 -11
- package/rules/detect-unsafe-regex.js +36 -23
- package/test/detect-bidi-characters.js +74 -0
- package/test/detect-buffer-noassert.js +18 -18
- package/test/detect-child-process.js +49 -23
- package/test/detect-disable-mustache-escape.js +3 -4
- package/test/detect-eval-with-expression.js +4 -5
- package/test/detect-new-buffer.js +4 -5
- package/test/detect-no-csrf-before-method-override.js +3 -4
- package/test/detect-non-literal-fs-filename.js +135 -9
- package/test/detect-non-literal-regexp.js +5 -6
- package/test/detect-non-literal-require.js +11 -8
- package/test/detect-object-injection.js +3 -5
- package/test/detect-possible-timing-attacks.js +8 -10
- package/test/detect-pseudoRandomBytes.js +3 -4
- package/test/detect-unsafe-regexp.js +9 -11
- package/test/utils/import-utils.js +172 -0
- package/utils/data/fsFunctionData.json +51 -0
- package/utils/import-utils.js +196 -0
- package/.npmignore +0 -1
- package/rules/data/fsFunctionData.json +0 -51
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const { format } = require('prettier');
|
|
2
|
+
const prettierRC = require('./.prettierrc.json');
|
|
3
|
+
|
|
4
|
+
/** @type {import('eslint-doc-generator').GenerateOptions} */
|
|
5
|
+
const config = {
|
|
6
|
+
postprocess: (doc) => format(doc, { ...prettierRC, parser: 'markdown' }),
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
module.exports = config;
|
package/.eslintrc
CHANGED
|
@@ -1,3 +1,31 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends": "
|
|
2
|
+
"extends": ["eslint:recommended", "prettier", "plugin:eslint-plugin/recommended"],
|
|
3
|
+
"parserOptions": {
|
|
4
|
+
"ecmaVersion": "latest"
|
|
5
|
+
},
|
|
6
|
+
"env": {
|
|
7
|
+
"node": true,
|
|
8
|
+
"es2020": true
|
|
9
|
+
},
|
|
10
|
+
"rules": {
|
|
11
|
+
"eslint-plugin/prefer-message-ids": "off", // TODO: enable
|
|
12
|
+
"eslint-plugin/require-meta-docs-description": ["error", { "pattern": "^(Detects|Enforces|Requires|Disallows) .+\\.$" }],
|
|
13
|
+
"eslint-plugin/require-meta-docs-url": [
|
|
14
|
+
"error",
|
|
15
|
+
{
|
|
16
|
+
"pattern": "https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/{{name}}.md"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"eslint-plugin/require-meta-schema": "off", // TODO: enable
|
|
20
|
+
"eslint-plugin/require-meta-type": "off" // TODO: enable
|
|
21
|
+
},
|
|
22
|
+
"overrides": [
|
|
23
|
+
{
|
|
24
|
+
"files": ["test/**/*.js"],
|
|
25
|
+
"globals": {
|
|
26
|
+
"describe": "readonly",
|
|
27
|
+
"it": "readonly"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
]
|
|
3
31
|
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
name: "\U0001F41E Report a problem"
|
|
2
|
+
description: 'Report an issue with a rule'
|
|
3
|
+
title: 'Bug: (fill in)'
|
|
4
|
+
labels:
|
|
5
|
+
- bug
|
|
6
|
+
- 'repro:needed'
|
|
7
|
+
body:
|
|
8
|
+
- type: markdown
|
|
9
|
+
attributes:
|
|
10
|
+
value: By opening an issue, you agree to abide by the [Open JS Foundation Code of Conduct](https://eslint.org/conduct).
|
|
11
|
+
- type: input
|
|
12
|
+
attributes:
|
|
13
|
+
label: What version of eslint-plugin-security are you using?
|
|
14
|
+
validations:
|
|
15
|
+
required: true
|
|
16
|
+
- type: textarea
|
|
17
|
+
attributes:
|
|
18
|
+
label: ESLint Environment
|
|
19
|
+
description: |
|
|
20
|
+
Please tell us about how you're running ESLint (Run `npx eslint --env-info`.)
|
|
21
|
+
value: |
|
|
22
|
+
Node version:
|
|
23
|
+
npm version:
|
|
24
|
+
Local ESLint version:
|
|
25
|
+
Global ESLint version:
|
|
26
|
+
Operating System:
|
|
27
|
+
validations:
|
|
28
|
+
required: true
|
|
29
|
+
- type: dropdown
|
|
30
|
+
attributes:
|
|
31
|
+
label: What parser are you using?
|
|
32
|
+
description: |
|
|
33
|
+
Please keep in mind that some problems are parser-specific.
|
|
34
|
+
options:
|
|
35
|
+
- 'Default (Espree)'
|
|
36
|
+
- '@typescript-eslint/parser'
|
|
37
|
+
- '@babel/eslint-parser'
|
|
38
|
+
- 'vue-eslint-parser'
|
|
39
|
+
- '@angular-eslint/template-parser'
|
|
40
|
+
- Other
|
|
41
|
+
validations:
|
|
42
|
+
required: true
|
|
43
|
+
- type: textarea
|
|
44
|
+
attributes:
|
|
45
|
+
label: What did you do?
|
|
46
|
+
description: |
|
|
47
|
+
Please include a *minimal* reproduction case. If possible, include a link to a reproduction of the problem in the [ESLint demo](https://eslint.org/demo). Otherwise, include source code, configuration file(s), and any other information about how you're using ESLint. You can use Markdown in this field.
|
|
48
|
+
value: |
|
|
49
|
+
<details>
|
|
50
|
+
<summary>Configuration</summary>
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
<!-- Paste your configuration here -->
|
|
54
|
+
```
|
|
55
|
+
</details>
|
|
56
|
+
|
|
57
|
+
```js
|
|
58
|
+
<!-- Paste your code here -->
|
|
59
|
+
```
|
|
60
|
+
validations:
|
|
61
|
+
required: true
|
|
62
|
+
- type: textarea
|
|
63
|
+
attributes:
|
|
64
|
+
label: What did you expect to happen?
|
|
65
|
+
description: |
|
|
66
|
+
You can use Markdown in this field.
|
|
67
|
+
validations:
|
|
68
|
+
required: true
|
|
69
|
+
- type: textarea
|
|
70
|
+
attributes:
|
|
71
|
+
label: What actually happened?
|
|
72
|
+
description: |
|
|
73
|
+
Please copy-paste the actual ESLint output. You can use Markdown in this field.
|
|
74
|
+
validations:
|
|
75
|
+
required: true
|
|
76
|
+
- type: checkboxes
|
|
77
|
+
attributes:
|
|
78
|
+
label: Participation
|
|
79
|
+
options:
|
|
80
|
+
- label: I am willing to submit a pull request for this issue.
|
|
81
|
+
required: false
|
|
82
|
+
- type: textarea
|
|
83
|
+
attributes:
|
|
84
|
+
label: Additional comments
|
|
85
|
+
description: Is there anything else that's important for the team to know?
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: "\U0001F680 Propose a new rule"
|
|
2
|
+
description: 'Propose a new rule to be added to the plugin'
|
|
3
|
+
title: 'New Rule: (fill in)'
|
|
4
|
+
labels:
|
|
5
|
+
- rule
|
|
6
|
+
- feature
|
|
7
|
+
body:
|
|
8
|
+
- type: markdown
|
|
9
|
+
attributes:
|
|
10
|
+
value: By opening an issue, you agree to abide by the [Open JS Foundation Code of Conduct](https://eslint.org/conduct).
|
|
11
|
+
- type: input
|
|
12
|
+
attributes:
|
|
13
|
+
label: Rule details
|
|
14
|
+
description: What should the new rule do?
|
|
15
|
+
validations:
|
|
16
|
+
required: true
|
|
17
|
+
- type: input
|
|
18
|
+
attributes:
|
|
19
|
+
label: Related CVE
|
|
20
|
+
description: We only accept new rules that have a published [CVE](https://www.redhat.com/en/topics/security/what-is-cve).
|
|
21
|
+
validations:
|
|
22
|
+
required: true
|
|
23
|
+
- type: textarea
|
|
24
|
+
attributes:
|
|
25
|
+
label: Example code
|
|
26
|
+
description: Please provide some example JavaScript code that this rule will warn about. This field will render as JavaScript.
|
|
27
|
+
render: js
|
|
28
|
+
validations:
|
|
29
|
+
required: true
|
|
30
|
+
- type: checkboxes
|
|
31
|
+
attributes:
|
|
32
|
+
label: Participation
|
|
33
|
+
options:
|
|
34
|
+
- label: I am willing to submit a pull request to implement this rule.
|
|
35
|
+
required: false
|
|
36
|
+
- type: textarea
|
|
37
|
+
attributes:
|
|
38
|
+
label: Additional comments
|
|
39
|
+
description: Is there anything else that's important for the team to know?
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
name: "\U0001F4DD Request a rule change"
|
|
2
|
+
description: 'Request a change to an existing rule'
|
|
3
|
+
title: 'Rule Change: (fill in)'
|
|
4
|
+
labels:
|
|
5
|
+
- enhancement
|
|
6
|
+
- rule
|
|
7
|
+
body:
|
|
8
|
+
- type: markdown
|
|
9
|
+
attributes:
|
|
10
|
+
value: By opening an issue, you agree to abide by the [Open JS Foundation Code of Conduct](https://eslint.org/conduct).
|
|
11
|
+
- type: input
|
|
12
|
+
attributes:
|
|
13
|
+
label: What rule do you want to change?
|
|
14
|
+
validations:
|
|
15
|
+
required: true
|
|
16
|
+
- type: dropdown
|
|
17
|
+
attributes:
|
|
18
|
+
label: What change to do you want to make?
|
|
19
|
+
options:
|
|
20
|
+
- Generate more warnings
|
|
21
|
+
- Generate fewer warnings
|
|
22
|
+
- Implement autofix
|
|
23
|
+
- Implement suggestions
|
|
24
|
+
validations:
|
|
25
|
+
required: true
|
|
26
|
+
- type: dropdown
|
|
27
|
+
attributes:
|
|
28
|
+
label: How do you think the change should be implemented?
|
|
29
|
+
options:
|
|
30
|
+
- A new option
|
|
31
|
+
- A new default behavior
|
|
32
|
+
- Other
|
|
33
|
+
validations:
|
|
34
|
+
required: true
|
|
35
|
+
- type: textarea
|
|
36
|
+
attributes:
|
|
37
|
+
label: Example code
|
|
38
|
+
description: Please provide some example code that this change will affect. This field will render as JavaScript.
|
|
39
|
+
render: js
|
|
40
|
+
validations:
|
|
41
|
+
required: true
|
|
42
|
+
- type: textarea
|
|
43
|
+
attributes:
|
|
44
|
+
label: What does the rule currently do for this code?
|
|
45
|
+
validations:
|
|
46
|
+
required: true
|
|
47
|
+
- type: textarea
|
|
48
|
+
attributes:
|
|
49
|
+
label: What will the rule do after it's changed?
|
|
50
|
+
validations:
|
|
51
|
+
required: true
|
|
52
|
+
- type: checkboxes
|
|
53
|
+
attributes:
|
|
54
|
+
label: Participation
|
|
55
|
+
options:
|
|
56
|
+
- label: I am willing to submit a pull request to implement this change.
|
|
57
|
+
required: false
|
|
58
|
+
- type: textarea
|
|
59
|
+
attributes:
|
|
60
|
+
label: Additional comments
|
|
61
|
+
description: Is there anything else that's important for the team to know?
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches: [main]
|
|
5
|
+
pull_request:
|
|
6
|
+
branches: [main]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
lint:
|
|
10
|
+
name: Lint
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v3
|
|
16
|
+
with:
|
|
17
|
+
persist-credentials: false
|
|
18
|
+
- uses: actions/setup-node@v3
|
|
19
|
+
with:
|
|
20
|
+
node-version: '16.x'
|
|
21
|
+
|
|
22
|
+
- name: Install Packages
|
|
23
|
+
run: npm install
|
|
24
|
+
|
|
25
|
+
- name: Lint Files
|
|
26
|
+
run: npm run lint
|
|
27
|
+
|
|
28
|
+
test:
|
|
29
|
+
name: Test
|
|
30
|
+
strategy:
|
|
31
|
+
matrix:
|
|
32
|
+
os: [ubuntu-latest]
|
|
33
|
+
node: [18.x, 16.x, 14.x, 12.x, '12.22.0']
|
|
34
|
+
include:
|
|
35
|
+
- os: windows-latest
|
|
36
|
+
node: '16.x'
|
|
37
|
+
- os: macOS-latest
|
|
38
|
+
node: '16.x'
|
|
39
|
+
runs-on: ${{ matrix.os }}
|
|
40
|
+
permissions:
|
|
41
|
+
contents: read
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v3
|
|
44
|
+
with:
|
|
45
|
+
persist-credentials: false
|
|
46
|
+
|
|
47
|
+
- uses: actions/setup-node@v3
|
|
48
|
+
with:
|
|
49
|
+
node-version: ${{ matrix.node }}
|
|
50
|
+
|
|
51
|
+
- name: Install Packages
|
|
52
|
+
run: npm install
|
|
53
|
+
|
|
54
|
+
- name: Test
|
|
55
|
+
run: npm test
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
name: Pull Request Titles
|
|
2
|
+
on: pull_request
|
|
3
|
+
|
|
4
|
+
jobs:
|
|
5
|
+
conventional:
|
|
6
|
+
name: Conventional PR
|
|
7
|
+
runs-on: ubuntu-latest
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
steps:
|
|
11
|
+
- uses: actions/checkout@v3
|
|
12
|
+
with:
|
|
13
|
+
persist-credentials: false
|
|
14
|
+
- uses: actions/setup-node@v3
|
|
15
|
+
- uses: beemojs/conventional-pr-action@v2
|
|
16
|
+
env:
|
|
17
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
18
|
+
with:
|
|
19
|
+
config-preset: angular
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
on:
|
|
2
|
+
push:
|
|
3
|
+
branches:
|
|
4
|
+
- main
|
|
5
|
+
name: release-please
|
|
6
|
+
jobs:
|
|
7
|
+
release-please:
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
steps:
|
|
10
|
+
- uses: GoogleCloudPlatform/release-please-action@v2
|
|
11
|
+
id: release
|
|
12
|
+
with:
|
|
13
|
+
release-type: node
|
|
14
|
+
package-name: test-release-please
|
|
15
|
+
# The logic below handles the npm publication:
|
|
16
|
+
- uses: actions/checkout@v3
|
|
17
|
+
# these if statements ensure that a publication only occurs when
|
|
18
|
+
# a new release is created:
|
|
19
|
+
if: ${{ steps.release.outputs.release_created }}
|
|
20
|
+
- uses: actions/setup-node@v3
|
|
21
|
+
with:
|
|
22
|
+
node-version: 16
|
|
23
|
+
registry-url: 'https://registry.npmjs.org'
|
|
24
|
+
if: ${{ steps.release.outputs.release_created }}
|
|
25
|
+
- run: npm ci
|
|
26
|
+
if: ${{ steps.release.outputs.release_created }}
|
|
27
|
+
- run: npm publish
|
|
28
|
+
env:
|
|
29
|
+
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
|
|
30
|
+
if: ${{ steps.release.outputs.release_created }}
|
|
31
|
+
|
|
32
|
+
# Tweets out release announcement
|
|
33
|
+
- run: 'npx @humanwhocodes/tweet "${{ github.event.repository.full_name }} v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}.${{ steps.release.outputs.patch }} has been released!\n\n${{ github.event.repository.html_url }}/releases/tag/v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}.${{ steps.release.outputs.patch }}"'
|
|
34
|
+
if: ${{ steps.release.outputs.release_created }}
|
|
35
|
+
env:
|
|
36
|
+
TWITTER_CONSUMER_KEY: ${{ secrets.TWITTER_CONSUMER_KEY }}
|
|
37
|
+
TWITTER_CONSUMER_SECRET: ${{ secrets.TWITTER_CONSUMER_SECRET }}
|
|
38
|
+
TWITTER_ACCESS_TOKEN_KEY: ${{ secrets.TWITTER_ACCESS_TOKEN_KEY }}
|
|
39
|
+
TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
|
package/.prettierrc.json
ADDED
package/CHANGELOG.md
CHANGED
|
@@ -1,34 +1,114 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
1.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [1.6.0](https://www.github.com/eslint-community/eslint-plugin-security/compare/v1.5.0...v1.6.0) (2023-01-11)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* Add meta object documentation for all rules ([#79](https://www.github.com/eslint-community/eslint-plugin-security/issues/79)) ([fb1d9ef](https://www.github.com/eslint-community/eslint-plugin-security/commit/fb1d9ef56e0cf2705b9e413b483261df394c45e1))
|
|
8
|
+
* detect-bidi-characters rule ([#95](https://www.github.com/eslint-community/eslint-plugin-security/issues/95)) ([4294d29](https://www.github.com/eslint-community/eslint-plugin-security/commit/4294d29cca8af5c627de759919add6dd698644ba))
|
|
9
|
+
* **detect-non-literal-fs-filename:** change to track non-top-level `require()` as well ([#105](https://www.github.com/eslint-community/eslint-plugin-security/issues/105)) ([d3b1543](https://www.github.com/eslint-community/eslint-plugin-security/commit/d3b15435b45b9ac2ee5f0d3249f590e32369d7d2))
|
|
10
|
+
* extend detect non literal fs filename ([#92](https://www.github.com/eslint-community/eslint-plugin-security/issues/92)) ([08ba476](https://www.github.com/eslint-community/eslint-plugin-security/commit/08ba4764a83761f6f44cb28940923f1d25f88581))
|
|
11
|
+
* **non-literal-require:** support template literals ([#81](https://www.github.com/eslint-community/eslint-plugin-security/issues/81)) ([208019b](https://www.github.com/eslint-community/eslint-plugin-security/commit/208019bad4f70a142ab1f0ea7238c37cb70d1a5a))
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* Avoid crash when exec() is passed no arguments ([7f97815](https://www.github.com/eslint-community/eslint-plugin-security/commit/7f97815accf6bcd87de73c32a967946b1b3b0530)), closes [#82](https://www.github.com/eslint-community/eslint-plugin-security/issues/82) [#23](https://www.github.com/eslint-community/eslint-plugin-security/issues/23)
|
|
16
|
+
* Avoid TypeError when exec stub is used with no arguments ([#97](https://www.github.com/eslint-community/eslint-plugin-security/issues/97)) ([9c18f16](https://www.github.com/eslint-community/eslint-plugin-security/commit/9c18f16187719b58cc5dfde9860344bad823db28))
|
|
17
|
+
* **detect-child-process:** false positive for destructuring with `exec` ([#102](https://www.github.com/eslint-community/eslint-plugin-security/issues/102)) ([657921a](https://www.github.com/eslint-community/eslint-plugin-security/commit/657921a93f6f73c0de6113e497b22e7cf079f520))
|
|
18
|
+
* **detect-child-process:** false positives for destructuring `spawn` ([#103](https://www.github.com/eslint-community/eslint-plugin-security/issues/103)) ([fdfe37d](https://www.github.com/eslint-community/eslint-plugin-security/commit/fdfe37d667367e5fd228c26573a1791c81a044d2))
|
|
19
|
+
* Incorrect method name in detect-buffer-noassert. ([313c0c6](https://www.github.com/eslint-community/eslint-plugin-security/commit/313c0c693f48aa85d0c9b65a46f6c620cd10f907)), closes [#63](https://www.github.com/eslint-community/eslint-plugin-security/issues/63) [#80](https://www.github.com/eslint-community/eslint-plugin-security/issues/80)
|
|
20
|
+
|
|
21
|
+
## 1.5.0 / 2022-04-14
|
|
22
|
+
|
|
23
|
+
- Fix avoid crash when exec() is passed no arguments
|
|
24
|
+
Closes [#82](https://github.com/nodesecurity/eslint-plugin-security/pull/82) with ref as [#23](https://github.com/nodesecurity/eslint-plugin-security/pull/23)
|
|
25
|
+
- Fix incorrect method name in detect-buffer-noassert
|
|
26
|
+
Closes [#63](https://github.com/nodesecurity/eslint-plugin-security/pull/63) and [#80](https://github.com/nodesecurity/eslint-plugin-security/pull/80)
|
|
27
|
+
- Clean up source code formatting
|
|
28
|
+
Fixes [#4](https://github.com/nodesecurity/eslint-plugin-security/issues/4) and closes [#78](https://github.com/nodesecurity/eslint-plugin-security/pull/78)
|
|
29
|
+
- Add release script
|
|
30
|
+
[Script](https://github.com/nodesecurity/eslint-plugin-security/commit/0a6631ea448eb0031af7b351c85b3aa298c2e44c)
|
|
31
|
+
- Add non-literal require TemplateLiteral support [#81](https://github.com/nodesecurity/eslint-plugin-security/pull/81)
|
|
32
|
+
- Add meta object documentation for all rules [#79](https://github.com/nodesecurity/eslint-plugin-security/pull/79)
|
|
33
|
+
- Added Git pre-commit hook to format JS files
|
|
34
|
+
[Pre-commit hook](https://github.com/nodesecurity/eslint-plugin-security/commit/e2ae2ee9ef214ca6d8f69fbcc438d230fda2bf97)
|
|
35
|
+
- Added yarn installation method
|
|
36
|
+
- Fix linting errors and step
|
|
37
|
+
[Lint errors](https://github.com/nodesecurity/eslint-plugin-security/commit/1258118c2d07722e9fb388a672b287bb43bc73b3), [Lint step](https://github.com/nodesecurity/eslint-plugin-security/commit/84f3ed3ab88427753c7ac047d0bccbe557f28aa5)
|
|
38
|
+
- Create workflows
|
|
39
|
+
Check commit message on pull requests, Set up ci on main branch
|
|
40
|
+
- Update test and lint commands to work cross-platform
|
|
41
|
+
[Commit](https://github.com/nodesecurity/eslint-plugin-security/commit/d3d8e7a27894aa3f83b560f530eb49750e9ee19a)
|
|
42
|
+
- Merge pull request [#47](https://github.com/nodesecurity/eslint-plugin-security/pull/47) from pdehaan/add-docs
|
|
43
|
+
Add old liftsecurity blog posts to docs/ folder
|
|
44
|
+
- Bumped up dependencies
|
|
45
|
+
- Added `package-lock.json`
|
|
46
|
+
- Fixed typos in README and documentation
|
|
47
|
+
Replaced dead links in README
|
|
48
|
+
|
|
49
|
+
## 1.4.0 / 2017-06-12
|
|
50
|
+
|
|
51
|
+
- 1.4.0
|
|
52
|
+
- Stuff and things for 1.4.0 beep boop 🤖
|
|
53
|
+
- Merge pull request [#14](https://github.com/nodesecurity/eslint-plugin-security/issues/14) from travi/recommended-example
|
|
54
|
+
Add recommended ruleset to the usage example
|
|
55
|
+
- Merge pull request [#19](https://github.com/nodesecurity/eslint-plugin-security/issues/19) from pdehaan/add-changelog
|
|
56
|
+
Add basic CHANGELOG.md file
|
|
57
|
+
- Merge pull request [#17](https://github.com/nodesecurity/eslint-plugin-security/issues/17) from pdehaan/issue-16
|
|
58
|
+
Remove filename from error output
|
|
59
|
+
- Add basic CHANGELOG.md file
|
|
60
|
+
- Remove filename from error output
|
|
61
|
+
- Add recommended ruleset to the usage example
|
|
62
|
+
for [#9](https://github.com/nodesecurity/eslint-plugin-security/issues/9)
|
|
63
|
+
- Merge pull request [#10](https://github.com/nodesecurity/eslint-plugin-security/issues/10) from pdehaan/issue-9
|
|
64
|
+
Add 'plugin:security/recommended' config to plugin
|
|
65
|
+
- Merge pull request [#12](https://github.com/nodesecurity/eslint-plugin-security/issues/12) from tupaschoal/patch-1
|
|
66
|
+
Fix broken link for detect-object-injection
|
|
67
|
+
- Fix broken link for detect-object-injection
|
|
68
|
+
The current link leads to a 404 page, the new one is the proper page.
|
|
69
|
+
- Add 'plugin:security/recommended' config to plugin
|
|
70
|
+
|
|
71
|
+
## 1.3.0 / 2017-02-09
|
|
72
|
+
|
|
73
|
+
- 1.3.0
|
|
74
|
+
- Merge branch 'scottnonnenberg-update-docs'
|
|
75
|
+
- Fix merge conflicts because I can't figure out how to accept pr's in the right order
|
|
76
|
+
- Merge pull request [#7](https://github.com/nodesecurity/eslint-plugin-security/issues/7) from HamletDRC/patch-1
|
|
77
|
+
README.md - documentation detect-new-buffer rule
|
|
78
|
+
- Merge pull request [#8](https://github.com/nodesecurity/eslint-plugin-security/issues/8) from HamletDRC/patch-2
|
|
79
|
+
README.md - document detect-disable-mustache-escape rule
|
|
80
|
+
- Merge pull request [#3](https://github.com/nodesecurity/eslint-plugin-security/issues/3) from jesusprubio/master
|
|
81
|
+
A bit of love
|
|
82
|
+
- README.md - document detect-disable-mustache-escape rule
|
|
83
|
+
- README.md - documentation detect-new-buffer rule
|
|
84
|
+
- Merge pull request [#6](https://github.com/nodesecurity/eslint-plugin-security/issues/6) from mathieumg/csrf-bug
|
|
85
|
+
Fixed crash with `detect-no-csrf-before-method-override` rule
|
|
86
|
+
- Fixed crash with `detect-no-csrf-before-method-override` rule.
|
|
87
|
+
- Finishing last commit
|
|
88
|
+
- Style guide applied to all the code involving the tests
|
|
89
|
+
- Removing a repeated test and style changes
|
|
90
|
+
- ESLint added to the workflow
|
|
91
|
+
- Removed not needed variables
|
|
92
|
+
- Fix to a problem with a rule detected implementing the tests
|
|
93
|
+
- Test engine with tests for all the rules
|
|
94
|
+
- Minor typos
|
|
95
|
+
- A little bit of massage to readme intro
|
|
96
|
+
- Add additional information to README for each rule
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
## 1.2.0 / 2016-01-21
|
|
100
|
+
|
|
101
|
+
- 1.2.0
|
|
102
|
+
- updated to check for new RegExp too
|
|
103
|
+
|
|
104
|
+
## 1.1.0 / 2016-01-06
|
|
105
|
+
|
|
106
|
+
- 1.1.0
|
|
107
|
+
- adding eslint rule to detect new buffer hotspot
|
|
108
|
+
|
|
109
|
+
## 1.0.0 / 2015-11-15
|
|
110
|
+
|
|
111
|
+
- updated desc
|
|
112
|
+
- rules disabled by default
|
|
113
|
+
- update links
|
|
114
|
+
- beep boop
|