目录关于目录目录前言简介发布说明安全失效的对象级别授权失效的用户身份验证过度的数据暴露资源缺乏和速率限制失效的功能级授权批量分配安全配置错误注入资产管理不当日志和监控不足开发人员下一步做什么下一步做什么方法和数据致谢安全风险开源应用安全项目是一个开放的社区致力于帮助各企业组织开发购买和维护可信任的应用程序在您可以找到以下免费和开源的信息应用安全工具和标准关于应用安全测试安全代码开发和安全代码审查方面的完整书籍演示文稿和视频关于常见风险的标准的安全控制和安全库全球各地分会尖端技术研究专业的全球会议邮件列表更多信息请访问更多中文信息请访问所有的工具文档论坛和全球各地分会都是开放的并对所有致力于改进应用程序安全的人士开放我们主张将应用程序安全问题看作是人过程和技术的问题因为提供应用程序安全最有效的方法是在这些方面提升是一个新型组织我们没有商业压力使得我们能够提供无偏见实用低成本的应用安全信息尽管支持合理使用商业安全技术但不隶属于任何技术公司和许多开源软件项目一样以一种协作开放的方式制作了许多不同种类的材料基金会是确保项目长期成功的非营利性组织几乎每一个与相关的人都是一名志愿者这包括了董事会全球各地分会会长项目领导和项目成员我们用资金和基础设施来支持创新的安全研究我们期待您的加入本文档的发布基于前言在当今应用驱动的世界中创新的一个基本要素是应用程序编程接口从银行零售运输到物联网自动驾驶汽车智能城市都是现代移动和应用程序的一个关键组成部分并且在面向客户面向合作伙伴和面向内部的应用中都会使用到一般来说会公开应用程序的逻辑和敏感数据如个人识别信息正因为如此越来越成为攻击者的目标如果没有安全的快速创新将不可能虽然更为宽泛的仍然具有重要意义但由于的特殊性质我们需要一份特定的安全风险清单安全聚焦于策略和解决方案以便理解并且缓解与相关的独特脆弱点和安全风险如果您熟悉那么您会发现这两个文件之间的相似之处它们的目的都是为了更容易阅读和被采纳如果您还不熟悉系列您可能需要先阅读本文安全风险部分和方法和数据部分然后再阅读十大风险列表您可以在我们上的项目仓库为提出您的问题意见和想法您可以在以下链接找到安全我们感谢所有这个项目的贡献者并将他们全部列致谢部分谢谢您们简介欢迎参阅年版安全欢迎阅读第一版安全如果您熟悉系列您会注意到它们之间的相似之处它们的目的都是为了更容易阅读和被采纳但是如果您不熟悉这个系列请考虑先访问安全项目的维基页面然后再深入挖掘最关键的安全风险在现代应用程序架构中发挥着非常重要的作用虽然安全意识和创新发展不同步但专注于常见的安全弱点仍然很重要安全的主要目的是教育在开发和维护期间的参与者例如开发人员设计师架构师管理人员或组织机构在方法和数据部分您可以阅读有关我们是如何创建本文第一版的更多信息在未来的版本中我们希望让安全从业人员参与并公开征集数据现在我们鼓励每个人通过我们的仓库或邮件列表提出问题评论和想法发布说明这是第一版安全我们计划每三或四年更新一版与这个版本不同在未来的版本中我们希望公开征集数据让安全行业的同行参与这项工作在方法和数据部分中您将了解到我们如何构建此版本的详细信息若想了解更多有关安全风险的详细信息请参阅安全风险部分重要的是要认识到在过去的几年里应用程序架构发生了显著变化目前在微服务单页应用程序移动应用程序物联网等新体系架构中扮演着非常重要的角色安全是一项必要的工作旨在提高人们对现代安全问题的认识由于志愿者们的不懈努力这项工作才成为可能这些志愿者都列在致谢部分参与本中文版本项目的成员名单也列在致谢部分谢谢安全风险本项目采用了风险评级方法进行风险分析下表汇总了与风险评分相关的术语威胁来源详情可利用性弱点普遍性弱点可检测性技术影响易广泛易严重平均常见平均中等难少见难业务影响小业务详情注意此方法没有考虑威胁来源的可能性它也没有考虑与特定应用程序相关的各种技术细节这些因素都可能影响攻击者发现和利用特定漏洞的总体可能性这个评估方法也没有考虑到您业务的实际影响基于企业文化行业和监管环境您的组织将决定接受多少应用程序和带来的安全风险安全的目的不是为您做风险分析参考资料资料外部资料安全失效的对象级别授权失效的用户身份验证过度的数据暴露资源缺乏和速率限制失效的功能级授权批量分配安全配置错误注入资产管理不当日志和监视不足倾向于公开处理对象标识符的端点从而产生广泛的攻击表层访问控制问题在使用用户输入访问数据源的每个函数中都应考虑对象级授权检查身份验证机制的实现往往不正确使得攻击者能够破坏身份验证令牌或利用漏洞临时或永久地盗用其他用户的身份破坏了系统识别客户端用户的能力损害的整体安全性依赖通用方法开发人员倾向于公开所有对象属性而不考虑其各自的敏感度依赖客户端在向用户显示数据前执行数据筛选通常不会对客户端用户可以请求的资源的大小或数量施加任何限制这不仅会影响服务器的性能导致拒绝服务而且还会为诸如暴力破解等身份验证缺陷敞开大门具有不同层次结构组和角色的复杂访问控制策略以及管理功能和常规功能之间不明确的分离往往会导致授权漏洞通过利用这些漏洞攻击者可以访问其他用户的资源和或管理功能将客户端提供的数据例如绑定到数据模型而无需基于白名单进行适当的属性筛选通常会导致批量分配无论是猜测对象属性探索其他端点阅读文档或在请求负载中提供其他对象属性攻击者都可以修改它们不被允许修改的对象属性安全错误配置通常是由于不安全的默认配置不完整或临时配置开放云存储配置错误的头不必要的方法允许跨域资源共享和包含敏感信息的详细错误消息造成的当不受信任的数据作为命令或查询的一部分发送给解释器时就会出现注入缺陷如命令注入等攻击者的恶意数据可诱使解释器在未经恰当授权的情况下执行非预期的命令或访问数据与传统应用程序相比倾向于公开更多的端点这使得恰当的文档编制和更新变得非常重要正确的主机和已部署的版本清单对于缓解弃用的版本和公开的调试终端节点等问题也起着重要的作用日志记录和监控不足加上与事件响应的集成缺失或无效使得攻击者可以进一步攻击系统保持持久性转向更多系统以篡改提取或销毁数据大多数违规研究表明检测违规行为的时间超过天通常由外部方而不是内部程序或监控发现威胁来源详情失效的对象级授权攻击向量可利用性攻击者可以在发送的请求中改变对象的来攻击存在失效的对象级授权漏洞的这将导致敏感数据的未授权访问该问题在基于的应用中非常普遍因为服务器通常不会完整地跟踪用户的状态而是依赖用户请求参数中的对象来决定访问哪些目标对象安全弱点普遍性影响可检测性技术这已经成为最普遍且影响广泛的攻击授权和访问控制机制在现代应用中已经非常复杂并广泛使用即使应用已经实现了适当的鉴权设施开发者在访问敏感对象时仍可能忘记使用这些鉴权设施通常在静态或动态测试中并不检查访问控制机制业务详情未授权访问将导致数据向未授权的组织披露数据丢失或数据篡改未授权的对象访问也能导致整个账户被控制脆弱吗如何防止对象级授权是一种通常在代码层面实现的访问控制机制用于校验用户仅能访问其有权访问的对象基于用户策略和继承关系来实现适当的授权机制所有接收对象并对对象执行任何操作的应该实现对象级授权检查此检查应该校验该登录用户确实有权对其所请求的对象进行所请求的操作此校验机制失效通常将会导致数据的未授权信息披露修改或销毁建议使用不可预测的随机作为信息记录的通过测试来评估授权机制不要部署带有脆弱点的变更这将破坏测试攻击案例场景场景一个在线电子商务平台为他们的入驻商户提供了一个带有利润图表的列表页通过查看浏览器发出的请求攻击者可以识别到为此图表提供数据源的端点及其模式通过另一个端点攻击者可以获取入驻平台的商户名列表用一个简单的脚本即可获取到入驻商户名通过替换中的攻击者获取到数千入驻商户的销售数据场景通过监控可穿戴设备的网络流量其请求中的自定义请求头部字段引起了攻击者的注意通过替换字段的值为攻击者接收到成功的响应并可以修改其他用户的账户数据在接收用户输入并访问数据库的所有函数中都通过一种授权机制来检查该登录用户是否有权在该记录上执行其所请求的操作参考资料外部资料失效的用户身份认证威胁来源详情攻击向量安全弱点普遍性可利用性的认证机制是一个复杂且容易使人迷惑的机制软件工程师和安全工程师对认证的边界和如何正确实现它可能存在误解并且对攻击者来说认证机制是比较容易接触到的目标因为它是对所有人开放的这两点使得认证组件成为很多攻击的潜在风险点影响可检测性技术有两个子问题缺少保护机制负责认证的端点必须区别于普通端点对待并且实现额外的保护错误实现保护机制所使用的保护机制没有考虑攻击向量或不是其所适合的使用场景如为物联网设计的认证机制可能并不适用于应用业务详情攻击者可以访问用户在系统中的账户读取他们的个人数据并以他们的身份执行敏感操作例如转账和发送私人消息脆弱吗如何防止应用端点和工作流是应该被保护的资产忘记密码重置密码应该和认证机制一样被同等看待确保您知晓所有用于认证的工作流移动应用应用执行一键认证的等询问您的工程师看是否存在您遗漏了的工作流阅读您所使用的认证机制文档确保您理解它是如何使用的是一种协议它不是一种认证也不是不要在认证凭据生成密码存储方面自创算法使用标准的算法凭据重置忘记密码端应被视作认证端点在暴力破解请求频率限制和锁定保护上同等对待使用如有可能尽量使用多因素认证在您的认证端上使用反暴力破解机制来缓解凭据填充字典攻击和暴力破解风险此机制应该比您一般具有更严格的请求频率限制实现账号锁定验证码机制来防止对特定用户的暴力破解实现弱密码检查不应用于用户认证而用于客户端应用程序或项目认证如果含有以下项则则其存在风险当攻击者拥有有效的用户名和密码列表时可以进行凭据填充缺失验证码或没有账号锁定机制攻击者可以对同一用户账号进行暴力破解允许弱密码未校验令牌的真实性接受未签名或弱签名的令牌或未校验令牌过期时间使用明文密码弱加密或者弱哈希密码发送用于认证的敏感信息例如在中发送令牌和密码使用弱秘钥攻击案例场景参考资料场景凭据填充使用用户名密码列表是一种常见的攻击如果应用没有实现自动的威胁保护或者凭据填充保护这个应用就能被当作密码验证器来检测凭据是否有效资料场景攻击者通过向发起一个请求并在请求体中提供用户名来启动重置密码工作流然后一个位数字的短信验证码发送到受害者的手机由于该没有实现调用频率限制攻击者可以用多线程脚本向发送请求来尝试所有可能的验证码组合从而在几分钟内破解验证码外部资料威胁来源详情过度的数据暴露攻击向量可利用性利用过度暴露的数据十分容易通常通过嗅探流量分析的响应获取不应该返回给用户的多余敏感信息安全弱点普遍性影响可检测性技术业务详情依赖客户端实现数据过滤当被用作数过度的数据暴露通常导致敏感数据据源时有时开发者会尝试将用于通用的的泄露方法而不去考虑所暴露数据的敏感性自动化工具通常无法检测到该类漏洞因为在没有对应用有深入理解的情况下很难区分返回的合法数据和不应该返回的敏感数据脆弱吗如何防止在设计上将敏感数据返回
OWASP API安全-十大关键API安全风险 2019中文版
文档预览
中文文档
21 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共21页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 路人甲 于 2022-05-26 12:09:46上传分享