没有项目描述
pytm的Python项目详细描述
#pytm
威胁建模的pythonic框架
对于安全实践者,将威胁添加到威胁对象:
``python
threats={
"df1":{
"description":"dataflow not authenticated",
"target":dataflow,
"condition":"target.authenticatedWith为false"
},
"sr1":{
"description":"server not hardend",
"target":server,
"condition":"target.ishardened为false"
}
}
````
**警告**
threat.py文件包含经过eval \(\)-&;gt的字符串;请确保该文件具有正确的权限,否则有可能让攻击者更改字符串并使您代表它们运行代码。逻辑存在于"条件"中,"目标"的成员可以在逻辑上进行评估。返回true意味着规则生成一个查找,否则,它不是一个查找。**
**用法**
要启动威胁模型,最小代码量是:
`` python
\/usr/bin/env python3
以及命令行参数处理。
可以在命令行上选择助手操作:
``文本
用法:tm.py[-h][--debug][--dfd][--report report][--exclude exclude]
[--seq][--list]
--帮助显示此帮助消息并退出
--调试打印调试消息
--DFD输出DFD(默认值)
--使用命名模板文件的报告输出报告
--排除指定要忽略的威胁ID输出序列图
--列出已知威胁
--描述描述描述给定类的内容
````
>当前可用的元素有:element、server、externalentity、datatpre。演员。进程,进程集,数据流,边界。
可以使用--describe后跟元素名称列出元素的可用属性:
`` text
(py tm)pytm git:(master)/tm.py--describe元素
element
os
check
definesconnectiontimeout
description
dfd
handlessources
implementationsauthenticationscheme
implementationsnance
inboundary
inscope
isadmin
isharded
name
onaws
```
元素包括:TM、元素、服务器、外部实体、数据存储、参与者、进程、进程集、数据流、边界。
输出为[dot]的图表(https://graphviz.gitlab.io/)和[plantuml](https://plantuml.com/)。源文件输出到stdout,数据流和plantuml不需要安装,也不能代替用户运行。
`` python
\/usr/bin/env python3
actor
tm=tm("我的测试tm")
tm.description="另一个测试tm"
user_web=boundary("用户/web")
web_db=boundary("web/db")
user.inboundary=user_web
web=server("web服务器")
web.os="cloudos"
web.isharded=true
db=datastore("sql database(*)")
db.os="centos"
db.ishardened=false
db.inboundary=web数据库
db.issql=true
db.inscope=false
my懔lambda=lambda("每6小时清洗一次")
my懔lambda.hasaccesscontrol=true
my懔lambda.inboundary=web_db
my_lambda_to_db=dataflow(my_lambda,db,"(&;lambda;)定期清理db").
my_lambda_to_db.protocol="sql"
my_lambda_to_db.dstport=3306
user_to_web=dataflow(用户,web,"用户输入注释(*)"
user_to_web.protocol="http"
user_to_web.dstport=80
user_to_web.data='HTML或降价注释'
user_to_web.order=1
web_to_user=dataflow(web,user,"已保存的注释(*)"
web_to_user.protocol="http"
web_to_user.data='保存或错误消息的确认,用json表示'
web_to_user.order=2
web_to_db=dataflow(web,db,"插入带有注释的查询")
web_to_db.protocol="mysql"
web_to_db.dsport=3306
web_to_db.data="mysql insert statement,all literals"
web-to-db.order=3
db-to-web=dataflow(db,web,"comments contents")
db-to-web.protocol="mysql"
db-to-web.data="insert op的结果"
db-to-web.order=4
````
stdout,输入graphviz的点:
`` bash
tm.py--dfd dot-tpng-o sample.png
```
[dfd.png](.gitbook/assets/dfd.png)
可以对数据流进行排序并生成序列图:
`` python
"用户输入注释(*)"
user_to_web.protocol="http"
user_to_web.dstport=80
user_to_web.data='HTML或降价注释'
user_to_web.order=1
``````
``bash
````
生成此图:
![seq.png](.gitbook/assets/seq.png)
可以将图表和结果包含在模板中以创建最终报告:
`` bash
```
报表模板中使用的模板格式非常简单:
``text
[Level 0 DFD](dfd.png)
## Dataflows
Name|From|To |Data|Protocol|Port
----|----|---|----|--------|----
{dataflows:repeat:{{item.name}}|{{item.source.name}}|{{item.sink.name}}|{{item.data}}|{{item.protocol}}|{{item.dstPort}}
}
## 结果
{结果:重复:{item.description}在元素"{item.target}
}
`````
**当前支持的威胁**
```text
au02-对审核数据的潜在弱保护
ac01-进程内存被篡改
ac02-重放攻击
cr01-冲突攻击
au03-日志记录的风险
aa02-已验证的数据流被破坏
in01-潜在的sql注入漏洞
in02-xml dtd和xslt处理
in03-javascript对象表示法处理/xss
in04-跨站点脚本
ac03-数据存储可能已损坏
aa03-sso授权的弱点
ac04-使用模拟提升进程
ot01-跨站点请求伪造
do01-潜在的过度资源消耗
do02-潜在的进程崩溃或停止
do03-数据流可能中断
do04-数据存储不可访问
aa04-授权绕过
de01-数据流嗅探
ac06-资源的弱访问控制
ds01-弱凭据存储
de02-弱凭据传输
aa05-弱身份验证方案
lb01-lambda不验证请求源
lb02-lambda没有访问控制
lb03-lambda不处理资源消耗量
威胁建模的pythonic框架
对于安全实践者,将威胁添加到威胁对象:
``python
threats={
"df1":{
"description":"dataflow not authenticated",
"target":dataflow,
"condition":"target.authenticatedWith为false"
},
"sr1":{
"description":"server not hardend",
"target":server,
"condition":"target.ishardened为false"
}
}
````
**警告**
threat.py文件包含经过eval \(\)-&;gt的字符串;请确保该文件具有正确的权限,否则有可能让攻击者更改字符串并使您代表它们运行代码。逻辑存在于"条件"中,"目标"的成员可以在逻辑上进行评估。返回true意味着规则生成一个查找,否则,它不是一个查找。**
**用法**
要启动威胁模型,最小代码量是:
`` python
\/usr/bin/env python3
以及命令行参数处理。
可以在命令行上选择助手操作:
``文本
用法:tm.py[-h][--debug][--dfd][--report report][--exclude exclude]
[--seq][--list]
--帮助显示此帮助消息并退出
--调试打印调试消息
--DFD输出DFD(默认值)
--使用命名模板文件的报告输出报告
--排除指定要忽略的威胁ID输出序列图
--列出已知威胁
--描述描述描述给定类的内容
````
>当前可用的元素有:element、server、externalentity、datatpre。演员。进程,进程集,数据流,边界。
可以使用--describe后跟元素名称列出元素的可用属性:
`` text
(py tm)pytm git:(master)/tm.py--describe元素
element
os
check
definesconnectiontimeout
description
dfd
handlessources
implementationsauthenticationscheme
implementationsnance
inboundary
inscope
isadmin
isharded
name
onaws
```
元素包括:TM、元素、服务器、外部实体、数据存储、参与者、进程、进程集、数据流、边界。
输出为[dot]的图表(https://graphviz.gitlab.io/)和[plantuml](https://plantuml.com/)。源文件输出到stdout,数据流和plantuml不需要安装,也不能代替用户运行。
`` python
\/usr/bin/env python3
actor
tm=tm("我的测试tm")
tm.description="另一个测试tm"
user_web=boundary("用户/web")
web_db=boundary("web/db")
web=server("web服务器")
web.os="cloudos"
web.isharded=true
db=datastore("sql database(*)")
db.os="centos"
db.ishardened=false
db.inboundary=web数据库
db.issql=true
db.inscope=false
my懔lambda=lambda("每6小时清洗一次")
my懔lambda.hasaccesscontrol=true
my懔lambda.inboundary=web_db
my_lambda_to_db=dataflow(my_lambda,db,"(&;lambda;)定期清理db").
my_lambda_to_db.protocol="sql"
my_lambda_to_db.dstport=3306
user_to_web=dataflow(用户,web,"用户输入注释(*)"
user_to_web.protocol="http"
user_to_web.dstport=80
user_to_web.data='HTML或降价注释'
user_to_web.order=1
web_to_user=dataflow(web,user,"已保存的注释(*)"
web_to_user.protocol="http"
web_to_user.data='保存或错误消息的确认,用json表示'
web_to_user.order=2
web_to_db=dataflow(web,db,"插入带有注释的查询")
web_to_db.protocol="mysql"
web_to_db.dsport=3306
web_to_db.data="mysql insert statement,all literals"
web-to-db.order=3
db-to-web=dataflow(db,web,"comments contents")
db-to-web.protocol="mysql"
db-to-web.data="insert op的结果"
db-to-web.order=4
````
stdout,输入graphviz的点:
`` bash
tm.py--dfd dot-tpng-o sample.png
```
[dfd.png](.gitbook/assets/dfd.png)
可以对数据流进行排序并生成序列图:
`` python
"用户输入注释(*)"
user_to_web.protocol="http"
user_to_web.dstport=80
user_to_web.data='HTML或降价注释'
user_to_web.order=1
``````
``bash
````
生成此图:
![seq.png](.gitbook/assets/seq.png)
可以将图表和结果包含在模板中以创建最终报告:
`` bash
```
报表模板中使用的模板格式非常简单:
``text
[Level 0 DFD](dfd.png)
## Dataflows
Name|From|To |Data|Protocol|Port
----|----|---|----|--------|----
{dataflows:repeat:{{item.name}}|{{item.source.name}}|{{item.sink.name}}|{{item.data}}|{{item.protocol}}|{{item.dstPort}}
}
## 结果
{结果:重复:{item.description}在元素"{item.target}
}
`````
**当前支持的威胁**
```text
ac01-进程内存被篡改
ac02-重放攻击
cr01-冲突攻击
au03-日志记录的风险
aa02-已验证的数据流被破坏
in01-潜在的sql注入漏洞
in02-xml dtd和xslt处理
in03-javascript对象表示法处理/xss
in04-跨站点脚本
ac03-数据存储可能已损坏
aa03-sso授权的弱点
ac04-使用模拟提升进程
ot01-跨站点请求伪造
do01-潜在的过度资源消耗
do02-潜在的进程崩溃或停止
do03-数据流可能中断
do04-数据存储不可访问
aa04-授权绕过
de01-数据流嗅探
ac06-资源的弱访问控制
ds01-弱凭据存储
de02-弱凭据传输
aa05-弱身份验证方案
lb01-lambda不验证请求源
lb02-lambda没有访问控制
lb03-lambda不处理资源消耗量