# nosec with bandit ID doesn't work properly sometimes
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 8.3k
- Forks
- 836
- Avg merge
- 5d 3h
- Merged PRs (30d)
- 1
Description
Describe the bug
Using nosec with a bandit ID like # nosec: B108 doesn't appear to always work. See reproduction steps.
Reproduction steps
1. Run .tox/py312/bin/bandit bandit/plugins/general_hardcoded_tmp.py
2. Notice you get the following issues:
Test results:
>> Issue: [B108:hardcoded_tmp_directory] Probable insecure usage of temp file/directory.
Severity: Medium Confidence: Medium
CWE: CWE-377 (https://cwe.mitre.org/data/definitions/377.html)
More Info: https://bandit.readthedocs.io/en/1.7.7.dev6/plugins/b108_hardcoded_tmp_directory.html
Location: bandit/plugins/general_hardcoded_tmp.py:62:29
61 if name == "hardcoded_tmp_directory":
62 return {"tmp_dirs": ["/tmp", "/var/tmp", "/dev/shm"]}
63
--------------------------------------------------
>> Issue: [B108:hardcoded_tmp_directory] Probable insecure usage of temp file/directory.
Severity: Medium Confidence: Medium
CWE: CWE-377 (https://cwe.mitre.org/data/definitions/377.html)
More Info: https://bandit.readthedocs.io/en/1.7.7.dev6/plugins/b108_hardcoded_tmp_directory.html
Location: bandit/plugins/general_hardcoded_tmp.py:62:37
61 if name == "hardcoded_tmp_directory":
62 return {"tmp_dirs": ["/tmp", "/var/tmp", "/dev/shm"]}
63
--------------------------------------------------
>> Issue: [B108:hardcoded_tmp_directory] Probable insecure usage of temp file/directory.
Severity: Medium Confidence: Medium
CWE: CWE-377 (https://cwe.mitre.org/data/definitions/377.html)
More Info: https://bandit.readthedocs.io/en/1.7.7.dev6/plugins/b108_hardcoded_tmp_directory.html
Location: bandit/plugins/general_hardcoded_tmp.py:62:49
61 if name == "hardcoded_tmp_directory":
62 return {"tmp_dirs": ["/tmp", "/var/tmp", "/dev/shm"]}
63
- Now add a trailing comment of
# nosec: B108 - Notice now you get a warning that B108 was not found on that line.
[tester] WARNING nosec encountered (B108), but no failed test on line 62
Expected behavior
The nosec should not trigger a warning that the issue wasn't found.
Bandit version
1.7.6 (Default)
Python version
3.12 (Default)
Additional context
I suspect the issue is the algorithm in how tester.py:run_tests() is determining whether a test is skipped or not. If it finds no issue for any test ID, it then falls over to the warning message. But this doesn't always happen depending on the order of tests it iterates over and the ID to be skipped.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with bandit/core/tester.py, especially run_tests(), and reproduce the behavior using .tox/py312/bin/bandit bandit/plugins/general_hardcoded_tmp.py. Trace how the trailing # nosec: B108 is matched against the findings on line 62. Done means the valid suppression no longer emits a warning that B108 was not found.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- security
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 43/100