考取CWASP CSSD(注册软件安全开发人员)时遇到的一些知识点
前言:
本来是想考PTE的,贫穷限制了我的学习......先简单介绍一下CWASP CSSD:
“CWASP CSSP培训认证体系”由中国信息安全测评中心和深圳开源互联网安全技术有限公司联合研发,是国内业界首创的软件安全开发人员专业培训认证体系。“CWASP CSSD(注册软件安全开发人员)培训认证”是该培训认证体系下的重要认证之一,旨在提升软件开发从业人员有关“软件安全开发”的基本意识和技能,从软件诞生的源头减少软件的安全缺陷与漏洞,提高软件运行的安全性。
在考证的过程中还是学到了很多,证书不能说明什么,考证的过程就是学习的过程,以考代学也未尝不可,打铁还需自身硬。
部分常用知识点(有点乱,将就看...)
- “净化”是指检查在程序组件中要传递的数据,尤其是将恶意数据和不必要的数据清除干净。
- “增加或删除用户账号”事件需要记录在日志中。
- 《安全编码规范检查列表》可用于对软件开发团队在编码过程提供安全指导。
- ApacheStruts2S2-045(CVE-2017-5638)和 S2-046(CVE-2017-5638)远程执行漏洞 在 OWASPTop10 中属于“使用已知含有漏洞的组件”
- BSIMM 和 SAMM 都是软件安全成熟度模型。
- Cookie 中有这么一个值“Set-cookie: domain=.facebook.com”,该值说明此 cookie 在 facebook.com 的所有子域名中都有效。
- OWASPDependencyCheck 是一个非常好的第三方组件安全漏洞检测工具。
- OWASPTop10 的评估标准中包括哪些元素:a) 攻击向量 b) 漏洞的普遍性 c) 漏洞的可检测性 d) 技术影响
- OWASPTop10 是业界公认的应用安全标准,描述了 10 类最常见的应用软件安全风险。
- Retire.js 可以检测出 web 应用以及 Nodejs 中使用的 javascript 库的漏洞
- SAMM 软件安全成熟度模型针对的业务功能,包括:a) 监管(Governace) b) 构建(Construction) c) 验证(Verification) d) 部署(Deployment)
- S-SDLC 流程中的关键要素包括:a) 培训、政策和组织。 b) 设计审核、攻击面分析和威胁分析。 c) 安全开发、代码审核、安全测试、安全加固等
- STRIDE 是一种有效的威胁模型。
- X-Frame-Options:Deny 这个 http 头,可以防止点击劫持(clickjacking)攻击。
- XSS 攻击可以被攻击用来做什么?a) 盗取用户 Cookie b) 篡改用户界面 c) 盗用用户身份
- XSS 跨站有什么危害? a) 盗取会话 cookie b) 修改当前网站的内容 c) 钓鱼
- X-XSS-Protection:1;block 这个 http 头,在某些情况下可以防止 XSS 攻击。
- 不要把文件上传到可以直接访问的web文件夹中,而是推荐上传到文件服务器或者数据库中去。
- 常见的密码策略包括: a) 设置最小长度。 b) 包含大小写字母。 c) 包含数字和特殊字符。
- 对 CSRF 跨站请求伪造攻击可以通过增加令牌环(token)来进行防范,这个 Token 有什么特点? a) 对于每个用户 Token 唯一 b)Token 不可预测 c)Token 不能用 GET 发送
- 对于 OWASPTop10 中的注入,假设下列值:攻击向量可利用性=1,漏洞的普遍性 =2,漏洞可检测性=2,漏洞的影响=1,则其风险=(1+2+2)/3*1=1.67。
- 攻击者发现一个链接是:http://www.bank.com/account?id=1001,其中 1001 是他 自己的账号 ID,他把 1001 改成 1009 并且可以查看到 1009 的账号信息,这种威胁 叫做“不安全的直接对象引用”。
- 攻击者可以操纵下列应用程序的引用,来访问他本没有权限访问的资源: a) 文件路径 b)URL 或表单参数 c) 数据库主键
- 关闭目录列表功能。
- OWASPTop10 由 Open WebApplicationSecurity Project (OWASP)安全组织编制、 发布和维护。
- OWASPTop10 的适用对象:适用于软件编码人员、软件测试人员、软件安全人员等与软件开发相关的各类人员。
- OWASPTop10 中包含的 10 大类,是指 10 大软件安全风险
- STRIDE 建模方法:S 指仿冒(Spoofing) , T 指篡改(Tampering) ,R 指抵赖(Repudiation),I 指信 息泄露(InformationDisclosure),D 指拒绝服务(DenialofService),E 指权限提升 (ElevationofPrivilege)。
- 仿冒(Spoofing),常用的技术方法是用户名/密码、IPSec、SSH 等。
- 拒绝服务(DenialofService) ,常用的技术方法是高可用性设计、访问控制、过滤等。
- 权限提升(ElevationofPrivilege),常用的技术方法是输入验证、基于角色的访 问控制。
- 企业级软件中经常根据用户的工作角色来设定权限。
- 权限的控制与设置跟企业的组织架构有关。
- 敏感数据传输时应使用 Post 而不是 Get。
- 定期移除服务器端存放的敏感数据文件。
- 检测异常的数据访问。
- JSP、ASPX 和 PHP 均存在注入攻击风险
- 威胁建模步骤的逻辑顺序:绘制数据流图、威胁分析、缓解威胁、审核威胁模型。
- 计算 OWASPTop10 风险可以根据公式:风险 = 可能性 * 影响来进行计算。
- 将敏感信息如密码写在源代码里的危害: a) 攻击者可以反编译从而获取密码 b) 用户无法修改密码 c) 不符合软件安全开发最佳实践
- 跨站脚本简单的说就是用户输入的内容(如:javascript)在浏览器上被执行。
- 如果可能,尽量不要使用“+”来拼接 SQL 语句,以防止发生 SQL 注入。
- 如果使用第三方组件,在生产环境中,一定要修改默认的用户名和密码。
- 如果一个验证既需要密码,又需要令牌,则这个验证可以称为“双因子验证”。
- 软件安全成熟度模型包括: a)BSIMM 模型 b)SAMM 模型。
- 软件安全开发流程的阶段主要包括:设计、实施、验证、发布与响应。
- 上传文件应该检查文件的大小,一般在系统中可以预设一个指定值(如10M),超过此预设值可以提示用户上传文件太大,这样可以防止恶意用户上传若干个大文件(如2G)而引起系统拒绝服务。
48:生产环境中,所有使用的操作系统,数据库以及应用服务器都要进行加固。 - 使用哈希,推荐使用 SHA256 或更高级算法,而不是使用 MD5。
- 使用哈希算法时,推荐加盐。
- 授权验证失败最好记录到日志中去,便于以后进行分析。
- 授予最低权限,以限制用户只能访问为完成任务所需要的功能、数据和系统信息
- 输出编码是防止 XSS 跨站攻击的一种有效的方式。
- 数据流图可用于执行威胁模型的威胁分析。
- 数字签名既可以保证数据的完整性,又可以保证数据的不可抵赖性。
- 通常而言,“SQL 注入”是用户输入的内容被当作 SQL 语句执行而引发的威胁。
- 威胁分析对后续的安全设计、安全开发、安全测试和安全部署具有指导下意义。
- 为了保证传输安全,我们不要使用 SSL1.0、SSL2.0、SSL3.0、TLS1.0 等协议,而是 推荐使用 TLS1.2。
- 系统设置权限的时候应该遵循最小特权原则。
- 系统应该使用安全的随机算法,如使用 java.security.SecureRandom 类而不是 java.util.Random 类。
- 防止 CSRF 跨站请求伪造攻击?a) 增加一个 form 隐藏字段表示随机令牌 b) 在 Ajax 请求头中增加一个随机令牌 c) 对重要的操作进行二次身份验证,让用户重新输入密码
- 权限控制正确的实现方式? a) 永远在服务器端进行服务控制,而不是客户端。 b) 权限检测应该应用到所有的层。c) 基于角色的访问(RBAC。
- 防止不安全的直接对象引用? a) 尽量不要暴露内部的直接对象应用 b) 使用难以预测的 Key,如 GUID c) 使用哈希令牌增加完整性校验
- 防止 XSS 跨站脚本攻击:执行输入验证、输出验证和内容安全策略(CSP)
- cookie 中的哪个属性可以保证 cookie 的值在网络中安全传输? Secure
- 哪些信息应该被记录在日志中? a) 增加或删除的用户账号。 b) 登录和登出的成功或失败记录。 c) 失败的数据库连接尝试记录。
- 哪一种方式能比较小的影响系统功能的前提下比较好的防止暴力破解?登录失败一定的次数(如3次),提示用户输入 CAPTCHA。
- 哪种方式可以保护会话? a)Login 成功以后,马上使会话失效。 b)Logout 成功以后,马上使会话失效。 c) 有需要验证的地方,必须有 Logout。
- 下面那种方式适合做为“SQL 注入”的防范措施? a) 参数化查询。 b) 存储过程。 c) 输入转义。
- 成功的 SQL 注入会引起哪些后果? a) 从数据库中读取敏感数据。 b) 修改数据库中的数据。 c) 执行数据库中的一些 administration 操作。
- 哪些文档可作为软件开发团队的软件安全开发参考? a)《OWASPSecureCodingPractice》 b) 《OWASPCheatSheet》 c) 《安全编码规范检查列表》
- 在 S-SDLC 流程中,设计审核的内容包括: a) 输入验证、授权和身份认证。 b) 配置管理、会话管理和例外管理。 c) 敏感数据、加密、日志和审计。
- 在软件安全开发流程(S-SDLC)中的发布和响应阶段,我们需要进行安全加固、补丁管理、漏洞管理以及安全事件响应。
- 在软件安全开发流程(S-SDLC)中的设计阶段,我们需要进行威胁分析以及攻击面分析。
- 在软件安全开发流程(S-SDLC)中的验证阶段,我们需要进行动态工具扫描以及渗透测试。
- 在软件安全开发流程的风险评估时,我们需要考虑哪些因素? a) 应用程序是否处理个人信息? b) 应用程序是否处理商业敏感数据? c) 应用程序是否为提供某项服务起到关键作用。
- 在应用程序连接数据库的时候,不推荐使用 admin 账户,而是创建一个新用户,并给它最少而必要的权限。