安全配置错误及敏感数据泄露

应用、框架、Web服务器、数据库服务器、区块链的节点 和各种应用平台的良好的安全性需要一份定义好的、部署好的安全配置。安全配置必需进行良好的定义、实现、维护,默认配置通常情况下是不安全的,另外软件应该及时更新。

安全配置错误

应用、框架、Web服务器、数据库服务器、区块链的节点 和各种应用平台的良好的安全性需要一份定义好的、部署好的安全配置。安全配置必需进行良好的定义、实现、维护,默认配置通常情况下是不安全的,另外软件应该及时更新。

(1)我易受到攻击吗?

我们的应用程序是否对整个程序堆栈实施了恰当的安全加固。这些措施包括:

1)是否有软件没有被及时更新?这包括操作系统、Web/应用服务器、区块链的各个节点、数据库管理系统、应用程序和其他所有的代码库文件。

2)是否使用或安装了不必要的功能(例如,端口、服务、网页、帐户、 权限)?

3)默认帐户的密码是否仍然可用或没有更改?

4)错误处理设置是否防止堆栈跟踪和其他含有大量信息的错误消息被泄露?

5)开发框架(比如:Struts、Spring、ASP.NET、REMIX, Ethereum)和库文件中的安全设置是否理解正确并配置恰当?

缺少一个协定的、可重复的应用程序安全配置的过程,系统将处于高风险中。

(2)我如何防止

主要的建议建立在以下几个方面。

1)一个可以快速且易于部署在另一个锁定环境的可重复的加固过程。开发、质量保证和生产环境都应该配置相同(每个环境中使用不同的密码)。这个过程应该是自动化的,以尽量减少安装一个新安全环境的耗费。

2)一个能及时了解并部署每个已部署环境的所有最新软件更新和补丁的过程。这需要包括通常被忽略的所有代码的库文件(详见本节“使用已知易受攻击组件”) 。

3)一个能在组件之间提供有效的分离和安全性的强大应用程序架构。

4)一个自动化过程来验证在所有环境中配置和设置是否正确。

5)区块链的联盟链或者私有链可以考虑配置加固的标准的节点,不容许没有经过加固的,非标准的服务器成为区块链的节点。

(3)攻击案例

案例 #1:应用程序服务器管理员控制台自动安装后没有被删除。而默认帐户也没有被改变。攻击者在服务器上发现了标准的管理员页面,通过默认密码登录,从而接管了服务器。

案例 #2:目录列表在服务器上未被禁用。攻击者发现只需列出目录,就可以找到服务器上的任意文件。攻击者找到并下载所有已编译的Java类,她通过反编译获得了所有自定义代码。然后,她在应用程序中找到一个访问控制的严重漏洞。

案例 #3:应用服务器配置允许堆栈跟踪返回给用户,这 样就暴露了潜在的漏洞,例如已知易受攻击框架版本。

案例 #4:应用服务器自带的示例应用程序没有从生产服务器中删除。该示例应用有已知安全漏洞,攻击者可以利用这些漏洞破坏服务器。

许多Web应用没有正确地保护敏感数据,例如信用卡卡号、税号、身份认证证书等。攻击者可以通过偷窃、更改这种弱保护的数据,以进行信用卡诈骗、身份窃取、或者其他犯罪。这类敏感数据值得进行额外的保护,例如,加密传输、在于客户端浏览器交换数据时进行的特殊保护。

敏感数据泄露

许多Web应用没有正确地保护敏感数据,例如信用卡卡号、税号、身份认证证书等。攻击者可以通过偷窃、更改这种弱保护的数据,以进行信用卡诈骗、身份窃取、或者其他犯罪。这类敏感数据值得进行额外的保护,例如,加密传输、在于客户端浏览器交换数据时进行的特殊保护。

(1)我易受攻击么

首先需要确认的是哪些数据是敏感数据而需要被加密。例如:密码、信用卡、医疗记录、个人信息应该被加密。

对于这些数据,要确保以下几个方面。:第一,当这些数据被长期存储的时候,无论存储在哪里,它们是否都被加密,特别是对这些数据的备份?第二,无论内部数据还是外部数据,传输时是否是明文传输?在互联网中传输明文数据是非常危险的。第三,是否还在使用任何旧的或脆弱的加密算法?第四,加密密钥的生成是否是脆弱的,或者缺少恰当的密钥管理或缺少密钥回转?

(2)我如何防止

有关使用不安全的加密算法、 SSL使用和数据保护的风险超出了Top 10的范围。尽管如此,对一些需要加密的敏感数据,应该起码做到以下几点:

1)预测一些威胁(比如内部攻击和外部用户),加密这些数据的存储以确保免受这些威胁。

2)对于没必要存放的、重要的敏感数据,应当尽快清除。

3)确保使用了合适的强大的标准算法和强大的密匙,并且密匙管理到位。可参考FIPS 140 validated cryptographic modules.

4)确保使用国密专用算法存储密码。

5)禁用自动完成防止敏感数据收集,禁用包含敏感数据的缓存页面。

6)在公有链上避免存储如何敏感数据。可以把敏感数据存储到链下,也可以采用联盟或者私有链方法利用身份管理和访问控制来设定对敏感数据的访问权限。

(3)攻击案例

案例 #1:一个应用程序加密存储在数据库的信用卡信息,以防止信用卡信息暴露给最终用户。但是,数据库设置为对信用卡表列的查询进行自动解密,这就使得SQL注入漏洞能够获得所有信用卡信息的明文。备选方案包括不存储信用卡号码,使用标记化或使用公钥加密。

案例#2:一个网站上所有需要身份验证的网页都没有使 用SSL。攻击者只需监控网络数据流(比如一个开放的无 线网络或其社区的有线网络),并窃取一个已验证的受害 者的会话cookie。然后,攻击者利用这个cookie执行重放 攻击并接管用户的会话从而访问用户的隐私数据。

案例#3:密码数据库使用unsalted的哈希算法去存储每个 人的密码。一个文件上传漏洞使黑客能够获取密码文件。 所有这些unsalted哈希的密码通过彩虹表暴力破解方式破解。

下一章我们将介绍功能级访问控制缺失及跨站请求伪造

感谢机械工业出版社华章分社的投稿,本文来自于华章出版的著作《区块链安全技术指南》。

作者简介:

黄连金

硅谷Dynamic Fintech Group管理合伙人

吴思进

33复杂美创始人及CEO

曹锋

PCHAIN发起人,中物联区块链协会首席科学家

季宙栋

Onchain分布科技首席战略官,本体联合创始人,

马臣云

北京信任度科技CEO、信息安全专家、产品管理专家

李恩典

美国分布式商业应用公司董事与中国区总裁

徐浩铭

CyberVein数脉链项目技术负责人

翁俊杰

IBM 10余年开发及解决方案经验,批Fabric应用开发者,NEO核心开发者之一

扫描上方微信

备注“入群”,小助手拉你进群

活动多多,交流多多

矩阵财经出品

转载请注明:矩阵财经(矩阵数字经济智库)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180724G07NQT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券