Fortify Audit Workbench 笔记 Privacy Violation 隐私泄露

Privacy Violation 隐私泄露

Abstract

对各种机密信息处理不当,如客户密码或社会保障号码,会危及到用户的个人隐私,这是一种非法行为。

Explanation

Privacy Violation 会在以下情况下发生:

  1. 用户私人信息进入了程序。
  2. 数据被写到了一个外部介质,例如控制台、 file system 或网络。
    例: 以下代码包含了一个日志指令,该日志指令通过在日志文件中储存记录信息的方式跟踪添加到数据库中的各条记录信息。 在储存的其他数值中, getPassword() 函数可以返回一个与用户帐号相关且由用户提供的明文密码。
pass = getPassword();
...
dbmsLog.println(id+":"+pass+":"+type+":"+tstamp);

在上面例子中,代码采用日志的形式将明文密码记录到了 file system 中。 虽然许多开发人员认为 file system是存储数据的安全场所,但是不应对其予以绝对的信任,特别是在涉及到隐私问题时。 可以通过多种方式将私人数据输入到程序中:
— 以密码或个人信息的形式直接从用户处获取
— 由应用程序访问数据库或者其他数据存储形式
— 间接地从合作者或者第三方处获取
有时,某些数据并没有贴上私人数据标签,但在特定的上下文中也有可能成为私人信息。 比如,通常认为学生的学号不是私人信息,因为学号中并没有明确而公开的信息用以定位特定学生的个人信息。 但是,如果学校用学生的社会保障号码生成学号,那么这时学号应被视为私人信息。 安全和隐私似乎一直是一对矛盾。 从安全的角度看,您应该记录所有重要的操作,以便日后可以鉴定那些非法的操作。 然而,当其中牵涉到私人数据时,这种做法事实上就存在一定风险了。 虽然不安全地处理私人数据有多种形式,但是常见的风险来自于盲目的信任。 程序员通常会信任程序运行的操作系统,因此认为将私人信息存放在 file system、注册表或者获得局部控制的资源中是值得信任的。 尽管已经限制了某些资源的访问权限,但仍无法保证所有访问这些资源的个体都是值得信任的。 例如, 2004 年,一个不道德
的 AOL 员工把大约 9200 万个客户的私人电子邮件地址卖给了一个通过垃圾邮件进行营销的赌博网站[1]。
鉴于此类备受瞩目的信息盗取事件,私人信息的收集与管理正日益规范化。 要求各个组织应根据其经营地点、所从事的业务类型及其处理的私人数据性质,遵守下列一个或若干个联邦和州的规定: - Safe Harbor Privacy Framework [3]

  • Gramm-Leach Bliley Act (GLBA) [4]
  • Health Insurance Portability and Accountability Act (HIPAA) [5]
  • California SB-1386 [6]
    尽管制定了这些规范, Privacy Violation 的情况仍时有发生。

Recommendation

当安全和隐私的需要发生矛盾时,通常应优先考虑隐私的需要。 为满足这一要求,同时又保证信息安全的需要, 应在退出程序前清除所有私人信息。 为加强隐私信息的管理,应不断改进保护内部隐私的原则,并严格地加以执行。 这一原则应具体说明应用程序应该如何处理各种私人数据。 在贵组织受到联邦或者州法律的制约时,应确保您的隐私保护原则尽量与这些法律法规保持一致。 即使没有针对贵组织的相应法规,您也应当保护好客户的私人信息,以免失去客户的信任。 保护私人数据的最好做法就是最大程度地减少私人数据的暴露。 不应允许应用程序、流程处理以及员工访问任何私人数据,除非是出于职责以内的工作需要。 正如最小授权原则一样,不应该授予访问者超出其需求的权限,访问私人数据的权限应严格限制在尽可能小的范围内。

posted @ 2020-05-10 12:51  马洪彪  阅读(1515)  评论(0编辑  收藏  举报