---
# System prepended metadata

title: 软件安全原理 第二次作业 组2

---

# 威胁建模实践报告---组2

## 分解目标软件（系统）
### 威胁模型信息 (Threat Model Information)
| | |
| --------- | -------- |
| 目标软件名称 | LightFTP |
| 目标软件版本 | 2.3 |
| 目标软件描述 | 轻量级的可在Windows,Linux等平台运行的FTP服务|

### 过程 (Process)
| 过程名称 | 过程描述 |
| ---- | ----|
| 配置文件解析 | 该步骤会根据键入的命令行参数寻找相关的配置文件并解析其中的配置参数，错误的解析/不安全的配置可能导致敏感信息等的暴露 |
| 套接字初始化与绑定 | 设置监听传入连接的相关数据，不恰当的配置可导致服务器暴露在未预期的网路与接口 |
| 事件驱动的线程处理 | 服务器通过事件驱动的方式处理多个连接，通过pthread_create的方式创建新线程处理事件，不正确的处理可导致条件竞争，拒绝服务等 |
| 用户认证状态管理 | 对于连接的用户进行不同的权限分组，并保存相关的登录，认证状态。 |
| 文件路径转换 | 对用户传入的虚拟文件路径转化为服务器上真实的文件路径，错误或限制不当的路径转换可能导致任意文件读写问题 |
| 文件传输 | 通过创建新的线程并监听相关端口完成数据的传输，包括读写文件等操作 |
| 响应构建 | 生成对用户FTP命令的处理结构的响应 |


### 外部依赖项 (External Dependencies)
| 外部依赖项名称 | 外部依赖项描述 |
| -- | -- |
| C标准库 |如 <stdio.h>、<stdlib.h>、<string.h> 和 <time.h>等，用于文件I/O、内存分配、字符串处理、数学运算、日期和时间处理等|
|系统库 |如<sys/types.h>、<sys/stat.h>、<unistd.h> 和 <fcntl.h>等，提供了与底层操作系统交互的函数和数据类型。允许程序访问文件系统、执行系统调用、进行文件和进程操作等|
| POSIX线程库 | 包括头文件<pthread.h>。定义了与多线程编程相关的API，用于程序创建、管理和同步多个线程，以实现并发和并行编程|
|网络库|<sys/socket.h>、<netinet/in.h>、<netinet/tcp.h> 和 <arpa/inet.h>，包含了与网络编程相关的函数和数据结构，用于访问底层网络协议和套接字编程|
### 外部实体 (External Entities)
| 外部实体名称 | 外部实体描述 |
| --- | --- |
| 普通FTP用户 | 通过FTP Client访问服务器提供的文件的普通用户，他们的目的是获取相关的文件 |
| 更新权限FTP用户 | 通过FTP Client访问服务器，同时可以给服务器上传文件的用户，他们的目的是更新，上传相关的文件 |
| admin用户 | 通过FTP Client访问服务器，对服务器文件具有上传，下载，删除文件的权限，他们的目的是可以远程管理该FTP服务器的文件 |
| 服务器管理员 | 保障服务器正常运行，安全并满足业务需求，可能会配置服务器，更新软件或监控性能 |
### 入口点 (Entry Points)
| 入口点 | 入口点描述 |
| --- | --- |
| 配置文件信息 | 服务器启动指定的配置文件中的参数，这些参数指定了FTP的具体信息 |
| 文件系统访问 | 服务器从文件系统中读写相关文件来传输，响应FTP请求，服务器应当限制其目录，权限，避免读写敏感文件  |
| FTP用户请求 | 用户发送FTP命令给服务器，服务器通过不同命令的解析，执行不同的操作并响应。来自外部的请求可能包含恶意数据或攻击向量 |

### 出口点 (Exit Points)
| 出口点 | 出口点描述 |
| --- | --- |
| FTP响应 | 服务器发送给用户的响应，包括请求的文件，错误消息，执行结果等，应当只包含预期的内容 |
| 错误和日志 | 服务器可能生成的错误与日志消息，会写入LOG文件 |
| 文件系统 | 服务器从具有UPDATE权限的用户处接受的文件 |
### 资产 (Assets)
| 资产名 | 资产描述 |
| ---- | ---- |
| 服务器数据 | 服务器上存放的所有文件内容 |
| 配置信息 | 服务器的配置文件 |
| 日志信息 | 服务器生成的日志信息 |
| 认证信息 | 服务器中存放的关于认证相关的信息 |
| 其余用户文件 | 其他用户存放的合法信息 |

### 信任等级 (Trust Levels)
| 信任等级 | 信任等级描述 | 关联的实体 |
| ---- | ---- | ---- |
| 完全信任 | 系统完全信任该实体，并允许它执行所有操作，这样的实体一般具有完全的系统访问权 | 服务器管理员 |
| 受限信任 | 虽然系统信任该实体，但它的操作受到某些限制，这样的实体可能只能访问特定的资源或执行特定的操作。 | 操作系统 admin用户 UPDATE用户 |
| 不信任 | 系统不信任该实体，并且对其实施严格的限制，通常，这样的实体只能访问公共资源，并且其操作受到严格的限制。 | 普通FTP用户 |

### 绘制数据流图 (Data Flow Diagrams)
![](https://hackmd.io/_uploads/H1EYasDG6.png)


## 威胁分析
使用 **STRIDE-per-interaction** 方法对LightFTP进行威胁分析
| 编号 |      目标元素      |                             交互                             |  S   |  T   |  R   |  I   |  D   |  E   |
| :--: | :----------------: | :----------------------------------------------------------: | :--: | :--: | :--: | :--: | :--: | :--: |
|  1   |    配置文件解析    |                 FTP服务器读取并解析配置文件                  |  √   |      |      |  √   |      |      |
|  2   | 套接字初始化与绑定 |         服务器初始化进行网络链接的相关数据，监听相应的端口         |      |      |      |  √   |  √   |      |
|  3   | 事件驱动的线程处理 | 服务器通过事件驱动的方式管理多个连接，接收用户的请求，创建新线程处理事件 |      |      |      |  √   |  √   |  √   |
|  4   |  用户认证状态管理  | 服务器根据不同权限分组管理用户，并在用户登录时通过口令进行验证 |  √   |      |  √   |  √   |      |  √   |
|  5   |    文件路径转换    | 服务器接收用户传入的虚拟文件路径，将其转为服务器上真实的文件路径 |      |  √   |      |  √   |      |  √   |
|  6   |      文件传输      | 服务器通过创建新的线程并监听相关端口完成数据的传输，在服务器和客户端之间进行文件传输和读写操作 |      |  √   |      |  √   |  √   |  √   |
|  7   |      响应构建      |           服务器生成对用户FTP命令的处理结构的响应            |      |      |      |  √   |      |      |



+ 1.S: 未正确设置或错误解析配置文件中的证书配置项，可能导致攻击者冒充其他用户与FTP服务器进行交互。
+ 1.I: 未正确设置配置文件，可能会导致存储在FTP服务器中的敏感信息泄露，例如通过错误消息，日志文件或者FTP响应等。
+ 2.I: 未正确配置初始化或者绑定相关信息，可能导致服务器暴露在与原先计划不同的网络环境中，从而导致敏感信息泄露。
+ 2.D: 未正确配置初始化或者绑定相关信息，可能导致服务器无法正常工作，也可能导致服务器暴露在与预期不同的网络环境中从而被攻击者实施拒绝服务攻击。
+ 3.I: 敏感信息未脱敏存储，未正确处理命令均可能会导致敏感信息泄露，例如通过错误消息或日志。
+ 3.D: 采用事件驱动的方式，且创建新线程处理事件，线程的最大数量成为性能瓶颈之一。攻击者可能伪造大量事件或触发特制的恶意事件，对 FTP 服务器进行拒绝服务攻击。
+ 3.E: 采用多线程工作的方式，线程间通信、同步等机制可能存在竞态条件漏洞。命令处理过程也可能存在漏洞。攻击者可能利用这些漏洞进行提升权限攻击。
+ 4.S: 攻击者可能通过口令破解等方式伪造认证信息，假冒其他用户的身份与FTP服务器交互。 
+ 4.R: 攻击者伪造认证信息，导致无法溯源。
+ 4.I: 攻击者可能冒充其他用户登录，访问未授权的数据，造成信息泄露。
+ 4.E: 攻击者可能通过冒充其他用户身份获取高权限。
+ 5.T: 路径转换如果不加以限制或者实现有错误，攻击者可能修改自己无权限修改的文件，从而篡改或者破坏数据。
+ 5.I: 路径转换如果不加以限制或者实现有错误，攻击者可能读取自己无权限读取的文件，从而造成信息泄露。
+ 5.E: 攻击者可能利用路径转换机制中的漏洞进行注入攻击，从而获取高权限。
+ 6.T: 在文件传输过程中，若未正确配置使用的安全协议，攻击者可能进行中间人攻击，篡改或者破坏传输的数据。
+ 6.I: 在文件传输过程中，若未正确配置使用的安全协议，攻击者可能窃听或者截获传输的数据，造成信息泄露。
+ 6.D: 文件传输通过创建新的线程并监听相关端口完成数据的传输，攻击者可能伪造大量传输请求或者特制恶意的传输请求，对 FTP 服务器进行拒绝服务攻击。
+ 6.E: 文件传输采用多线程工作的方式，线程间通信、同步等机制可能存在竞态条件漏洞。攻击者可能利用这一类漏洞进行提升权限攻击。同时如果文件传输机制缺乏隔离、文件筛查等防护措施，攻击者可能通过将恶意代码伪装成普通文件实施攻击。
+ 7.I: 在返回给用户数据时，如果没有进行边界检查，敏感信息未脱敏，或者对存储信息的解析出现错误，则可能导致信息泄露。




## 风险评级
使用**OWASP**方法对1.I、3.E、4.S、5.T、6.D供五个威胁进行风险评级。

**1.I**: 未正确设置配置文件，可能会导致存储在FTP服务器中的敏感信息泄露，例如通过错误消息，日志文件或者FTP响应等。

<table style="text-align:center;">
<thead>
  <tr>
    <th colspan="4">攻击者因素</th><th></th><th colspan="4">漏洞因素</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td>技术水平</td><td>动机</td><td>机会</td><td>规模</td><td></td><td>发现难易程度</td><td>利用难易程度</td><td>知名度</td><td>检测漏洞难度</td>
  </tr>
  <tr>
    <td>4</td><td>4</td><td>7</td><td>4</td>
    <td></td>
    <td>7</td><td>5</td><td>6</td><td>3</td>
  </tr>
  <tr>
    <td colspan="9">总体的可能性=5.000 (中)</td>
  </tr>
</tbody>
</table>


<table style="text-align:center;">
<thead>
  <tr>
    <th colspan="4">技术影响因素</th><th></th><th colspan="4">整体业务因素</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td>损失保密性</td><td>损失完整性</td><td>损失可用性</td><td>损失问责性</td><td></td><td>财务损失</td><td>声誉损失</td><td>不合规性</td><td>隐私侵犯</td>
  </tr>
  <tr>
    <td>7</td><td>2</td><td>1</td><td>7</td>
    <td></td>
    <td>3</td><td>4</td><td>5</td><td>7</td>
  </tr>
  <tr>
    <td colspan="4">整体技术影响=4.250 (中)</td>
    <td></td>
    <td colspan="4">整体业务影响=4.750 (中)</td>
  </tr>
</tbody>
</table>


综合风险评级表，该项风险评级为 <font color= orange> **中**</font> 



**3.E**: 采用多线程工作的方式，线程间通信、同步等机制可能存在竞态条件漏洞。命令处理过程也可能存在漏洞。攻击者可能利用这些漏洞进行提升权限攻击。

<table style="text-align:center;">
<thead>
  <tr>
    <th colspan="4">攻击者因素</th><th></th><th colspan="4">漏洞因素</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td>技术水平</td><td>动机</td><td>机会</td><td>规模</td><td></td><td>发现难易程度</td><td>利用难易程度</td><td>知名度</td><td>检测漏洞难度</td>
  </tr>
  <tr>
    <td>6</td><td>9</td><td>7</td><td>9</td>
    <td></td>
    <td>7</td><td>7</td><td>6</td><td>8</td>
  </tr>
  <tr>
    <td colspan="9">总体的可能性=7.375 (高)</td>
  </tr>
</tbody>
</table>


<table style="text-align:center;">
<thead>
  <tr>
    <th colspan="4">技术影响因素</th><th></th><th colspan="4">整体业务因素</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td>损失保密性</td><td>损失完整性</td><td>损失可用性</td><td>损失问责性</td><td></td><td>财务损失</td><td>声誉损失</td><td>不合规性</td><td>隐私侵犯</td>
  </tr>
  <tr>
    <td>6</td><td>7</td><td>7</td><td>9</td>
    <td></td>
    <td>7</td><td>9</td><td>7</td><td>7</td>
  </tr>
  <tr>
    <td colspan="4">整体技术影响=7.250 (高)</td>
    <td></td>
    <td colspan="4">整体业务影响=7.500 (高)</td>
  </tr>
</tbody>
</table>


综合风险评级表，该项风险评级为 <font color=red> **高**</font> 



**4.S**: 攻击者可能通过口令破解等方式伪造认证信息，假冒其他用户的身份与FTP服务器交互。 

<table style="text-align:center;">
<thead>
  <tr>
    <th colspan="4">攻击者因素</th><th></th><th colspan="4">漏洞因素</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td>技术水平</td><td>动机</td><td>机会</td><td>规模</td><td></td><td>发现难易程度</td><td>利用难易程度</td><td>知名度</td><td>检测漏洞难度</td>
  </tr>
  <tr>
    <td>5</td><td>4</td><td>5</td><td>4</td>
    <td></td>
    <td>7</td><td>5</td><td>6</td><td>3</td>
  </tr>
  <tr>
    <td colspan="9">总体的可能性=4.750 (中)</td>
  </tr>
</tbody>
</table>


<table style="text-align:center;">
<thead>
  <tr>
    <th colspan="4">技术影响因素</th><th></th><th colspan="4">整体业务因素</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td>损失保密性</td><td>损失完整性</td><td>损失可用性</td><td>损失问责性</td><td></td><td>财务损失</td><td>声誉损失</td><td>不合规性</td><td>隐私侵犯</td>
  </tr>
  <tr>
    <td>7</td><td>2</td><td>1</td><td>7</td>
    <td></td>
    <td>3</td><td>4</td><td>5</td><td>7</td>
  </tr>
  <tr>
    <td colspan="4">整体技术影响=4.250 (中)</td>
    <td></td>
    <td colspan="4">整体业务影响=4.750 (中)</td>
  </tr>
</tbody>
</table>


综合风险评级表，该项风险评级为 <font color=orange> **中**</font> 



**5.T**: 路径转换如果不加以限制或者实现有错误，攻击者可能修改自己无权限修改的文件，从而篡改或者破坏数据。

<table style="text-align:center;">
<thead>
  <tr>
    <th colspan="4">攻击者因素</th><th></th><th colspan="4">漏洞因素</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td>技术水平</td><td>动机</td><td>机会</td><td>规模</td><td></td><td>发现难易程度</td><td>利用难易程度</td><td>知名度</td><td>检测漏洞难度</td>
  </tr>
  <tr>
    <td>5</td><td>6</td><td>6</td><td>7</td>
    <td></td>
    <td>6</td><td>6</td><td>5</td><td>4</td>
  </tr>
  <tr>
    <td colspan="9">总体的可能性=5.625 (中)</td>
  </tr>
</tbody>
</table>


<table style="text-align:center;">
<thead>
  <tr>
    <th colspan="4">技术影响因素</th><th></th><th colspan="4">整体业务因素</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td>损失保密性</td><td>损失完整性</td><td>损失可用性</td><td>损失问责性</td><td></td><td>财务损失</td><td>声誉损失</td><td>不合规性</td><td>隐私侵犯</td>
  </tr>
  <tr>
    <td>6</td><td>7</td><td>5</td><td>5</td>
    <td></td>
    <td>5</td><td>5</td><td>6</td><td>6</td>
  </tr>
  <tr>
    <td colspan="4">整体技术影响=5.750 (中)</td>
    <td></td>
    <td colspan="4">整体业务影响=5.500 (中)</td>
  </tr>
</tbody>
</table>


综合风险评级表，该项风险评级为 <font color=orange> **中**</font> 



**6.D**: 文件传输通过创建新的线程并监听相关端口完成数据的传输，攻击者可能伪造大量传输请求或者特制恶意的传输请求，对 FTP 服务器进行拒绝服务攻击。

<table style="text-align:center;">
<thead>
  <tr>
    <th colspan="4">攻击者因素</th><th></th><th colspan="4">漏洞因素</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td>技术水平</td><td>动机</td><td>机会</td><td>规模</td><td></td><td>发现难易程度</td><td>利用难易程度</td><td>知名度</td><td>检测漏洞难度</td>
  </tr>
  <tr>
    <td>4</td><td>6</td><td>5</td><td>4</td>
    <td></td>
    <td>5</td><td>4</td><td>5</td><td>5</td>
  </tr>
  <tr>
    <td colspan="9">总体的可能性=4.750 (中)</td>
  </tr>
</tbody>
</table>


<table style="text-align:center;">
<thead>
  <tr>
    <th colspan="4">技术影响因素</th><th></th><th colspan="4">整体业务因素</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td>损失保密性</td><td>损失完整性</td><td>损失可用性</td><td>损失问责性</td><td></td><td>财务损失</td><td>声誉损失</td><td>不合规性</td><td>隐私侵犯</td>
  </tr>
  <tr>
    <td>3</td><td>3</td><td>8</td><td>3</td>
    <td></td>
    <td>6</td><td>7</td><td>4</td><td>3</td>
  </tr>
  <tr>
    <td colspan="4">整体技术影响=4.250 (中)</td>
    <td></td>
    <td colspan="4">整体业务影响=5.000 (中)</td>
  </tr>
</tbody>
</table>


综合风险评级表，该项风险评级为 <font color= orange> **中**</font> 

 