我正在为我正在托管的其中一个应用程序编写威胁模型文档。它是一个Apache网站,允许用户登录,通过添加一些最畅销的产品来创建他们的小部件等。有人能指点我吗关于如何开始这个?
前端使用javascript + perl,后端是cpp。我们接受来自用户的敏感信息,例如他的姓名,SSN等,我们会进行商店会话ID
答案 0 :(得分:3)
尽可能多地询问人们如何思考打破系统的方法。他们很可能会想到你不会想到的事情。在盒子外面思考是至关重要的。
正确的威胁树分析开始于一系列不良后果(“敏感数据泄露”,“服务器被劫持以托管恶意软件/发送垃圾邮件/成为僵尸网络的一部分/无论如何”,“公司因使用被盗信用卡详细信息而受到欺骗“,你可以想到更多)并向后工作:这将会发生什么?通常,您会发现每个不良结果都会有几个必需的启用事件 - 因果链 - 通过比较它们,您可以识别出弱点并深入规划您的防御。
答案 1 :(得分:2)
这可能无助于构建威胁模型文档,但OWASP howto可能会帮助您根据行业最佳实践验证应用程序的设计。
答案 2 :(得分:1)
我不是安全专家,但这是我的两分钱。
1)你可以放心地将javascript视为完全不安全,因为你并没有真正控制它的执行。
2)因此,perl部分是第一道防线。阅读perldoc perlsec作为入门者。
应检查包含eval
,反引号,system
和open
的Perl代码(始终使用树参数打开,只是为了确定)。
还应审查缺乏严格/警告的代码,并且理想情况下,重写代码。
任何未经彻底检查有效性的输入都是可疑的。当然,没有未处理的输入(除了系统只存储的用户文件除外)应该到达你的后端。
3)根据我最近的经验:
我们基于将输入提供给正则表达式然后eval
来进行JSON反序列化。我设法通过perl代码。的 FAIL 即可。
我们有一大堆代码是模糊的,严格的,没有任何评论,并依赖于外部程序的某些行为,迫使我们使用过时的ssh版本。的 FAIL 即可。 (我承认没有改写它。)
我们有open (FD, "$file");
。虽然从$ file中删除了前导/
和..
,但显然没有检查管道符号(|
)。可以提供精心设计的命令而不是文件名。的 FAIL 即可。始终使用三参数打开。对于system / exec也是如此:只有@array变量是可以的,不要依赖于愚蠢的ls '$file'
。
我希望得到其他人的补充和/或更正。
答案 3 :(得分:0)
有关威胁建模的方法,请查看MyAppSecurity的ThreatModeler。从高级架构图可视化您的应用程序非常容易,并识别潜在威胁,并在安全代码和安全控制方面找到补救控制。
干杯
答案 4 :(得分:0)
声明:
我既不是安全专家,也不是合规专家,也不是律师。不要从表面上看这个建议。在处理机密信息时,您应该寻求专家建议。
我真的不能为你总结,请阅读: http://en.wikipedia.org/wiki/Information_privacy_law
(包括但不限于......)
有标准和法律 http://en.wikipedia.org/wiki/Federal_Information_Security_Management_Act_of_2002 http://en.wikipedia.org/wiki/Federal_Information_Processing_Standards
FIPS 199:http://csrc.nist.gov/publications/fips/fips199/FIPS-PUB-199-final.pdf
FIPS 200:http://csrc.nist.gov/publications/fips/fips200/FIPS-200-final-march.pdf
我们接受来自用户的敏感信息,例如他的名字,SSN等
FIPS 199和200将为您评估需要完成的工作提供良好的起点。
我可以通过哪些方法识别应用程序中的安全漏洞?
e.g。对于perl ... https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=perl
我该怎么做呢?
从信息治理(IG)的定义开始: http://searchcompliance.techtarget.com/definition/information-governance
评估信息的使用方式和位置。
使用CVE / exploit数据库中的相关信息为您自己的软件编写渗透测试。
哪些领域应该成为文件的一部分?
我发现使用系统架构图有助于识别要独立测试和隔离的部分;以及要保护的边界。
如果您已查看过上一节,那么您应该对文档中的内容有所了解。
我应该阅读哪些像DoS等威胁?
这些列在CVE / Exploit数据库中。