- 注册
- 09 10, 2024
- 消息
- 186
JavaScript:
## Django上传文件目录穿越漏洞——CVE-2021-31542
## 漏洞描述
Django 3.2.1, 3.1.9, and 2.2.21: CVE-2021-31542: Potential
directory-traversal via uploaded files
在这些版本的Django中使用`MultiPartParser`, `UploadedFile`, 和 `FieldFile` 时,存在构造特别的文件名../等进行目录穿越漏洞。
构造文件名参考:/tmp/../path
## 修复方案:
空文件名和带..的文件名都将拒绝
在文件:django/core/files/utils.py 中添加方法:
```
def validate_file_name(name):
if name != os.path.basename(name):
raise SuspiciousFileOperation("File name '%s' includes path elements" % name)
# Remove potentially dangerous names
if name in {'', '.', '..'}:
raise SuspiciousFileOperation("Could not derive file name from '%s'" % name)
return name
```
**参考 commit**
https://github.com/django/django/commit/04ac1624bdc2fa737188401757cf95ced122d26d