TideSec/WDScanner
WDScanner平台目前实现了如下功能:分布式web漏洞扫描、客户管理、漏洞定期扫描、子域名枚举、端口扫描、网站爬虫、暗链检测、坏链检测、网站指纹搜集、专项漏洞检测、代理搜集及部署等功能。
- Repository: https://github.com/TideSec/WDScanner
- Commit:
aebfddd4eb2d4f719b56a798f3ff196302baa55e - Generated: 2026-11-13T23:34:09+00:00
- Scorer 0.1.0, scoring prov-4+qual-2+sec-2, report schema v2
Scores
| Pillar | Score | Signal | Confidence | Coverage |
|---|---|---|---|---|
| AI provenance (estimated AI-generated share) | 0 | none-detected | 49% | 100% |
| Code quality | 22 | poor | 90% | 100% |
| Security | 38 | poor | 85% | 100% |
AI provenance
No AI attribution or AI-consistent velocity signals detected.
- Explicitly attributed share (lower bound): 0.0%
- Unattributed share in AI-consistent velocity bursts: 0.0%
- Estimated AI-generated share: 0.0%
| Month | Lines added | Attributed to AI |
|---|---|---|
| 2019-02 | 7,730 | 0% |
| 2019-05 | 175,619 | 0% |
AI provenance describes how code was produced; it is not a quality judgment. Unless attribution is explicit, these are signals consistent with AI generation, not proof. Squash/rebase workflows, imported code, and rewritten history reduce accuracy.
Code quality
Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 29% of function code in complex or long functions; 19% duplicated lines. Weakest area: testing.
| Area | Score |
|---|---|
| Complexity (lizard) | 42 |
| Duplication | 31 |
| Code smells (Opengrep) | 3 |
| Tests and CI | 0 |
| Documentation | 40 |
| Type safety | 40 |
| Process (Scorecard review/maintenance) | n/a |
- Functions: 1,671; mean complexity 3.8, 90th percentile 9; 50 complex and 17 long functions
- Duplicated lines: 19.3% of 11,237 compared
- Tests: 0 test lines for 14,494 source lines (ratio 0.00); CI test commands: none detected; 0% of recent source commits also change tests
- Docs missing or thin: license, contributing, changelog
Most complex functions:
- g in js/shims.js: complexity 90, 1 lines
- _generateHTML in js/jquery-ui.js: complexity 87, 1 lines
- _scan_worker in TaskPython/TaskInfo/BBScan/BBScan.py: complexity 50, 95 lines
- _doKeyDown in js/jquery-ui.js: complexity 45, 2 lines
- drag in js/jquery-ui.js: complexity 44, 1 lines
Security
Security posture is poor: 4 known vulnerabilities in 2 dependencies; 78 high-severity SAST findings. Weakest area: posture.
| Area | Score |
|---|---|
| Secrets (gitleaks, tree + history) | 57 |
| Static analysis (Opengrep) | 4 |
| Vulnerable dependencies (OSV) | 68 |
| CI workflows (zizmor) | n/a |
| Posture (policy, updates, signing, lockfiles) | 0 |
| OpenSSF Scorecard | n/a |
-
Known vulnerabilities: 4 in 2 packages (critical 1, high 2, medium 1, low 0)
-
Posture checks passed: lockfiles; missing: security policy, dependency updates, signed commits
Top findings
| Severity | Finding | Location |
|---|---|---|
| critical | osv/GHSA-x7m3-jprg-wc5g: [email protected] (PyPI) is affected by PYSEC-2023-177, GHSA-x7m3-jprg-wc5g |
TaskPython/TaskInfo/BBScan/requirements.txt |
| high | opengrep/python.lang.security.unverified-ssl-context: Unverified SSL context detected. This will permit insecure connections without verifying SSL certificates. Use 'ssl.create_default_context' instead. [confidence medium] |
TaskPython/TaskInfo/BBScan/BBScan.py:38 |
| high | opengrep/php.lang.security.injection.echoed-request: Echoing user input risks cross-site scripting vulnerability. You should use htmlentities() when showing data to users. [confidence medium] |
TaskPython/TaskInfo/fileinfo.php:14 |
| high | opengrep/python.lang.security.audit.dangerous-system-call-audit: Found dynamic content used in a system call. This is dangerous if external data can reach this function call because it allows a malicious actor to execute commands. Use the 'subprocess' module instead, which is easier to use without accidentally exposing a command injection vulnerability. [confidence low] |
TaskPython/TaskInfo/subDomainsBrute-master/run.py:10 |
| high | opengrep/python.lang.security.audit.dangerous-system-call-audit: Found dynamic content used in a system call. This is dangerous if external data can reach this function call because it allows a malicious actor to execute commands. Use the 'subprocess' module instead, which is easier to use without accidentally exposing a command injection vulnerability. [confidence low] |
TaskPython/TaskInfo/subDomainsBrute-master/utils/banner.py:20 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] |
TaskPython/TaskInfo/subDomainsBrute-master/utils/common.py:69 |
| high | opengrep/python.lang.security.audit.subprocess-shell-true: Found 'subprocess' function 'Popen' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead. [confidence medium] |
TaskPython/TaskInfo/subDomainsBrute-master/utils/common.py:71 |
| high | opengrep/python.lang.security.audit.dangerous-system-call-audit: Found dynamic content used in a system call. This is dangerous if external data can reach this function call because it allows a malicious actor to execute commands. Use the 'subprocess' module instead, which is easier to use without accidentally exposing a command injection vulnerability. [confidence low] |
TaskPython/TaskInfo/subDomainsBrute-master/utils/get_by_ssl.py:126 |
| high | opengrep/python.lang.security.audit.dangerous-system-call-audit: Found dynamic content used in a system call. This is dangerous if external data can reach this function call because it allows a malicious actor to execute commands. Use the 'subprocess' module instead, which is easier to use without accidentally exposing a command injection vulnerability. [confidence low] |
TaskPython/TaskInfo/taskinfo-win.py:273 |
| high | opengrep/python.lang.security.audit.dangerous-system-call-audit: Found dynamic content used in a system call. This is dangerous if external data can reach this function call because it allows a malicious actor to execute commands. Use the 'subprocess' module instead, which is easier to use without accidentally exposing a command injection vulnerability. [confidence low] |
TaskPython/TaskInfo/taskinfo-win.py:305 |
| high | opengrep/python.lang.security.audit.dangerous-system-call-audit: Found dynamic content used in a system call. This is dangerous if external data can reach this function call because it allows a malicious actor to execute commands. Use the 'subprocess' module instead, which is easier to use without accidentally exposing a command injection vulnerability. [confidence low] |
TaskPython/TaskInfo/taskinfo-win.py:311 |
| high | opengrep/python.lang.security.audit.dangerous-system-call-audit: Found dynamic content used in a system call. This is dangerous if external data can reach this function call because it allows a malicious actor to execute commands. Use the 'subprocess' module instead, which is easier to use without accidentally exposing a command injection vulnerability. [confidence low] |
TaskPython/TaskInfo/taskinfo-win.py:317 |
| high | opengrep/python.lang.security.audit.dangerous-system-call-audit: Found dynamic content used in a system call. This is dangerous if external data can reach this function call because it allows a malicious actor to execute commands. Use the 'subprocess' module instead, which is easier to use without accidentally exposing a command injection vulnerability. [confidence low] |
TaskPython/TaskInfo/taskinfo-win.py:326 |
| high | opengrep/python.lang.security.audit.dangerous-system-call-audit: Found dynamic content used in a system call. This is dangerous if external data can reach this function call because it allows a malicious actor to execute commands. Use the 'subprocess' module instead, which is easier to use without accidentally exposing a command injection vulnerability. [confidence low] |
TaskPython/TaskInfo/taskinfo-win.py:341 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
TaskPython/proxy/assess_quality.py:28 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
TaskPython/proxy/assess_quality.py:38 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
TaskPython/proxy/assess_quality.py:48 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
TaskPython/proxy/assess_quality.py:63 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
TaskPython/proxy/assess_quality.py:72 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
TaskPython/proxy/assess_quality.py:119 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
TaskPython/proxy/ip_pool.py:47 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
TaskPython/proxy/ip_pool.py:48 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
TaskPython/proxy/ip_pool.py:49 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
TaskPython/proxy/ip_pool.py:50 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
TaskPython/proxy/ip_pool.py:209 |
Static signals only: the scorer never runs the project's code. Secret findings are pattern matches that were not verified, and secret values are never stored.
Repository profile
- Source lines: 14,494; test lines: 0
| Language | Lines |
|---|---|
| PHP | 6,711 |
| Python | 6,580 |
| JavaScript | 1,203 |