> For the complete documentation index, see [llms.txt](https://dizzzzy.gitbook.io/notebook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dizzzzy.gitbook.io/notebook/vulnerability-detection/python-code.md).

# Python Code

## 数据集

主要关注的几种Python漏洞：

* SQL Injection (SQL): 攻击者通过网页向SQL命令中注入恶意代码，非法访问数据库或执行命令。
* Command Injection (CI): 由于输入验证不足，攻击者可以通过易受攻击的应用程序在主机操作系统上执行任何命令，从而使其命令以与易受攻击的应用程序相同的权限执行。
* Cross-site Scripting (XSS): 攻击者将恶意脚本代码注入受信任的网页，以窃取网站用户的敏感信息。
* Cross-site Request Forgery (XSRF): 攻击者窃取网站上的用户身份，并以用户的名义向服务器发送恶意请求。
* Remote Code Execution (RCE): 攻击者通过浏览器提交执行命令。由于服务器确实过滤了执行功能，因此提交的命令可以被执行，从而导致服务器被入侵。
* Path Conflict of interest (PD): 攻击者获取有关Web根路径的信息，并利用此信息攻击服务器。
* Open Redirection (OR): 具有重定向 URL 的 Web 应用程序可能会被篡改，从而将用户引导至外部恶意 URL。

### 数据集构建工具：

PyDriller，GitHub开源漏洞commit

### 公开数据集

#### PyPiBugs <a href="#dlcdetail__pagetitle" id="dlcdetail__pagetitle"></a>

{% embed url="<https://www.microsoft.com/en-us/download/103554>" %}

Allamanis等人\[38]同样采用了人工规则自动构造缺陷数据的方法. 其在DeepBug\[37]规则的基础上, 增加了变量替换与常数替换两种构造规则. 其通过这一方法对PyPI中下载量前4 000名的Python项目进行了变换, 构造了针对Python语言的缺陷代码数据集。数据量只有2k：

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2F6kkmmsRGh6D4xWg8W57e%2Fimage.png?alt=media&amp;token=d5a6c50e-e310-4bc5-83c3-8d99e63a8ddc" alt=""><figcaption></figcaption></figure>

#### CVEfixes（c）

{% embed url="<https://dl.acm.org/doi/10.1145/3475960.3475985>" %}

{% embed url="<https://zenodo.org/records/13118970>" %}

数据集从 [美国国家漏洞数据库 (NVD)](https://nvd.nist.gov/)中的常见漏洞和暴露 (CVE) ，涵盖了截至 2024 年 7 月 23 日的所有已发布 CVE，数据量12GB

#### VULDENC

{% embed url="<https://www.sciencedirect.com/science/article/pii/S0950584921002421?via%3Dihub>" %}

{% embed url="<https://github.com/LauraWartschinski/VulnerabilityDetection>" %}

数据集从 GitHub 上公开的项目收集，数据量9GB

{% embed url="<https://zenodo.org/records/3559203#.XeRoytVG2Hs>" %}

#### DetectVul

代码行级别的分类，每个语句除了所属的漏洞类型label以外，有额外附加的type标签：

````python
```python
    statement_type = {
        "[PAD]'": 0,
        "For": 1,
        "Expr'": 2, 
        "Assign'": 3,
        "Return'": 4,
        "Assert'": 5, 
        "Import'": 6, 
        "AugAssign'":7,
        "Condition": 8,
        "Docstring": 9,
        "AnnAssign'": 10,
        "ImportFrom'": 11,
        "FunctionDef'": 12,
        "AsyncFunctionDef'": 13 
    } 
```
````

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FwKAn6Fe7TXERhDrRJlHU%2Fimage.png?alt=media&amp;token=36e22a34-2571-4f7b-aabd-d3a65b4b12ae" alt=""><figcaption></figcaption></figure>

{% embed url="<https://huggingface.co/datasets/DetectVul/CVEFixes>" %}

{% embed url="<https://huggingface.co/datasets/DetectVul/Vudenc>" %}
