[Audit] Medium — MCP cross-scan depth and sweep are unbounded
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
Research direction
Start with the named schema and handler locations, then trace how depth and sweep reach user_scanner/core/cross_scan.py:105-180. The issue calls for conservative limits and a shared request fan-out budget across rounds and target types. Add tests showing excessive values fail before scanning and a fake pivot graph cannot exceed the validator-call budget.
Written by the indexing model from the issue text.
Description
- Location:
user_scanner/mcp/schemas.py:38-51,user_scanner/mcp/handlers.py:85-89,142-152,
anduser_scanner/core/cross_scan.py:105-180. - Defect / trigger: schema and handler impose no maximum.
depthdrives serial rounds and
sweepauthorizes repeated all-module passes across thousands of vectors. - Impact / root cause / evidence: an agent mistake or hostile tool request can cause enormous
outbound traffic, cost, runtime, and collection of unrelated people's data. - Smallest robust correction: enforce conservative maximums and an overall request/fan-out
budget shared across rounds and target types. - Proving test: excessive depth/sweep fails before scanning; a fake pivot graph proves the total
validator-call budget cannot be exceeded. - Confidence: high.
- LLM-agent warning: Keep investigating. Model total fan-out, not each knob independently;
permutations, domains, modules, redirects, media, and pivots multiply one another.
- Dominant language
- Python
- Stars
- 5.2k
- Forks
- 530
- Avg merge
- 23h 52m
- Merged PRs (30d)
- 43
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
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.
More from kaifcodec/user-scanner
-
[Audit] Medium — Configuration is stored inside the installed package and rewritten non-atomicallyOpen
Difficulty 5/5 Over a week Newbie friendliness 35/100
kaifcodec/user-scanner#731 ·
Maintainers usually reply within 1 day
-
[Audit] Medium — Terminal output accepts raw control characters from local and remote dataPossibly taken @pchukwuemeka424 claimed this 4 days ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 45/100
kaifcodec/user-scanner#730 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 53/100
kaifcodec/user-scanner#725 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
kaifcodec/user-scanner#724 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
kaifcodec/user-scanner#723 ·
Maintainers usually reply within 1 day
All issues in kaifcodec/user-scanner
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
pytest-dev/pytest-html#1085 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
pollen-robotics/reachy_mini#1527 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 66/100
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
A seed and its negative give the same run, so realizations of a negative seed repeat each otherOpen
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Maintainers usually reply within 1 day