导图社区 CISSP学习笔记-域8(软件开发安全)
这是一篇关于CISSP学习笔记-域8(软件开发安全)的思维导图,主要内容包括:复习题,知识点。
编辑于2024-04-09 10:41:18CISSP学习笔记-域8(软件开发安全)
知识点
8.1. 理解并整合软件开发生命周期 (SDLC) 中的安全问题
8.1.1. 开发方法(例如,敏捷、瀑布、DevOps、 Dev SecOps)
1. 软件开发生命周期 (SDLC) 和安全
•SDLC 是软件开发过程中各个阶段的集合,包括需求收集、设计、实现、测试、部署和维护等。
•传统的瀑布模型 :严格的线性过程,每个阶段的任务全部完成后才能进行下一个阶段。
·敏捷方法:更灵活、迭代的方法,可适应需求变化,例如 Scrum 和极限编程XP。
•软件安全应从 SDLC 开始阶段就纳入考虑,确保系统的安全性。
•开发者、管理员和审计员应共同合作,确保软件安全。
2.敏捷方法
•组织应制定安全策略和准则,以引导软件开发过程中的安全实践。
•敏捷方法强调跨功能团队合作、持续改进和适应变化。
•Scrum:基于小型团队的敏捷方法,由产品负责人、Serum Master 和开发团队组成。使用时间盒(Sprint) 进行迭代开发。
•极限编程 (XP):强调编码、测试和持续集成,以提高软件质量和响应变更。
•用户在开发过程中发挥积极作用,提供反馈和需求。
•敏捷方法可以提高项目的可见性、灵活性和适应性,但可能会在项目规划和管理方面带来挑战。
3.DevOps 和 DevsecOps
•DevOps:将开发和运维团队整合在一起,实现更好的协作和沟通,加快软件交付速度。
•DevOps 实践:自动化、频繁测试、软件集成和部署、质量内建。
•QA:在Devops 团队中负责交叉功能沟通,关注测试和反馈。
•DevsecOps:将安全整合到 DevOps 中,确保在开发和运维过程中考虑安全性。
•Devsecops 原则:迭代优于完美、数据和安全科学、红蓝队实战测试等。
4.其他方法论:
•修改过的瀑布模型:相较于传统瀑布模型,提供了稍微灵活的选择。
•螺旋模型:重点关注风险评估、分析和评估,适用于大型、复杂和高成本的项目。
·原型模型 :通过反复迭代,基于反馈改进系统或应用程序。
•Cleanroom 方法论:专注于缺陷预防,目标是生产满足特定可靠性水平的软件。
8.1.2 成熟度模型
成熱度模型用于组织在某一领域(如安全管理成软件开发) 持续改进的进展。这些模型可以帮助组织评估现狀,设定目标,并提供系统性的改进建议。成熱度模型通常具有以下相似组件:
•领域:模型用于衡量的过程或业务方面。
•等级:成熟度模型将实践分为 1至 5 个递增等级。
•标准:为达到特定成熱度等级,组织必须满足该等级的标准。
•目标:描述组织期望的成熟度等级。
2.常见的成熟度模型
1) 能力成熟度模型 (CMM)
是最早被广泛采用的成熱度模型之一,提供了一种方法来评估一个组织的软件开发项目,并确定需要改进的地方。一个组织的软件开发工作的成熱度可以通过检查其:管理质量、软件开发人员、培训、 开发方法,以及最终的软件质量来衡量。
2) 能力成熟度模型集成 (CMMI)
由 SEI 设计,适用于开发、服务、产品和服务获取等领域。
CMMI 分为五个成熟度等级,分别是:
•初始(nitial):流程不可预测,被动应对,仅执行临时流程。
•管理(Managed):流程针对项目描述或记录,部分项目管理良好且可重复。
•定义(Defined);针对组织的流程,主动应对,不同项目有记录的流程,进行项目风险管理。
•量化管理(Quantitatively managed);流程测量并控制,收集并响应度量。
·优化(Optimizing);专注于过程改进,有记录的过程,主动控制,强大的监督与管理功能。
3)软件保证成熟度模型 (SAMM)
由OWASP 维护,是一种用于实施软件安全计划的规范性框架,旨在将安全活动整合到现有的 SDLC中。
SAMM 模型包含以下内容:
•治理:战略和衡量标淮、政策和合规性、教育和指导
•设计:威胁评估、 安全要求、安全架构
•实施:安全构建、安全部署、缺陷管理
•验证:架构评估、需求驱动的测试、安全测试
•运营:事故管理、环境管理、运营管理
4)构建安全内置成熟度模型 (BSIMM)
BSIMM 关注确定当前安全软件开发能力的状态,它的实施依赖于软件安全小组(SSG)包合四个实践领域:治理、情报、软件安全开发生命周期(SSDL)和部署。
5)网络安全成熟度模型认证 (CMMC)
由美国国防部发布,旨在为承包商处理政府客户的受控非机密信息提供指南。
8.1.3.操作和维护
在运行和维护阶段,关键任务包括:
连续性:确保业务连续性、次难恢复和网络韧性。
监控与事件响应 :关注生产系统的安全事件,进行调查和恢复。
漏洞与补丁管理:持续扫描和修复系统漏洞。
访问控制:关注操作系统的访问权限管理。
变更与配置管理 :维护安全基线,实施系统級变更和配置。
8.1.4.变更管理
1.常规的变更灌流
变更管理目标 :维持系统在已知安全状态的基础上,实现灵活适应变化的需求。
变更管理组织:通常由跨部门的变更管理委员会(CMB)负责。
变更管理阶段与安全实践:
•请求:提交详细的变更请求。
•分析与批准:CMB 评估变更对安全的影响并批准。
•变更开发:制定执行变更的计划。
•实施:按照批准的变更程序进行实施。
•测试:确保变更有效且安全控制正常运行。
•事后总结:记录变更、用户培训和改进机会。
2.紧急变更管理:
•紧急变更管理目的:在需要迅速应对重大事故或新发现的关键漏洞时,实施快速变更。
•紧急变更与常规变更的区别:紧急变更具有更高的优先级,执行速度更快,审批和测试流程相对简化。
•紧急变更管理流程:
•快速批准:由单个CMB 成员批准,或允许人员在无需事先批准的情况下实施
•简化测试:对单个系统进行有限的或临时测试,然后推广到所有系统。
•紧急变更管理的关键原则:依然需要遵循一定的流程和记录,但目标是加快执行速度。
•事后宙查:在紧急变更实施后,进行事后車查以了解任何意外后果或未预见的影响,并确保适当处理。
8.1.5.集成产品团队 (IPT)
1. IPT:跨学科团队,负责交付产品或流程。
目标:集合项目相关资源,消除障碍。1PT促进用户、开发者和安全从业者之间的紧密协作。
2. IPPD:整合产品和流程设计, 满足全面需求。
8.2.识别和应用软件开发生态系统中的安全控制措施
8.2.1. 编程语言
1.编程语言
是用于构建计算机执行的程序的一组指令。它们有特定的语法和数据处理方法,可以组合成算法以实现特定的数据处理目标。
2.语言类型:
编译型语言在运行之前需要先被翻译成机器可读的形式,如C#和 Swift;解释到语言在运行时被翻译成机器可读的格式,如Javascript 和 Python。编译型语言通常具有较好的性能和源代码保护,而解释型语言具有较好的跨平合兼容性。
3.数据库语言:
例如 SQL,包括用于定义数据结构、操作存储数据和管理数据库的子语言。
4.类型检查和类型安全语言:
类型检查可以在编译时(静态类型检查)或运行时(动态类型检查)确保程序处理的数据符合预期的类型。类型安全的语言可以在一定程度上支持数据完整性。
5.编程范式:
声明式编程关注任务的逻辑,而不关注执行方式,如SQL;命令式编程使用改变程序状态的语句或命令;面向对象编程(OOP)关注对象而非行为,将数据和功能都视为对象。OOP 的一些关键概念包括封装、继承、多态和多实例化。
6.标记和脚本语言:
例如 HTML、CSS、Javascript 和 Python。尽管这些语言相对简单,但它们在移动代码环境(如网页)中的使用仍然需要考虑安全性。
8.2.2.库
•软件库:是预先编写好的公共功能、代码、类、脚本、过程或其他软件元素的仓库。它们可以帮助开发人员在不需要从头开始编写代码的情况下,快速轻松地将功能集成到程序中。
•SDK:帮助开发人员快速构建与特定平合集成的程序。
·组织对库的使用:确保库的安全性和合规性。
8.2.3. 工具集
8.2.3.1 常见工具
1. 开发工具
•源代码编辑器:编写和检查代码,具有开发特定功能。
·编译器:为特定平合创建应 用程序二进制文件。
•调试器:发现并修复代码问题。
2. 协作与版本控制
•代码仓库:集中存储代码,支持多人协作。
•版本控制:代码完整性保护,确保开发者的工作不受千扰。
3.测试工具
•静态代码分析 :在不运行程序的情况下检查代码问题。
•单元测试工具:针对程序各部分功能进行测试。
8.2.3.2 安全及培训
1.安全实践
•配置管理:保持工具和系统设置的一致性。
•补丁管理:及时更新和修复工具中的漏洞。
•审计:定期审查工具和流程的安全性。
2.培训和使用
培训开发者:正确使用和维护工具集的安全。
遵循组织的安全SDLC程序:确保实施有效的安全控制。
8.2.4.集成开发环境 (IDE)
IDE是一种软件应用,它将多个开发工具整合在一个统一的界面中,以提高程序员的工作效率并确保开发过程的一致性。IDE 旨在使编程任务更加简便,从而使开发人员能够专注于实现程序的遇辑和功能。
功能包括:源代码编辑器、调试工具、编译器等构建自动化工具、测试工具和部署自动化等。
8.2.5. 运行时(Run Time)
1. 定义:
运行时环境包括运行应用所需的所有硬件和软件,如固件、设备驱动、操作系统。
以及编译后的程序代码或解释器。
简言之,运行时环境就是让应用程序能够正常运行和执行的基础设施。
2. 安全性考虑
考虑并解决运行时环境各元素的安全漏洞;高安全应用可能需要可信计算基础(TCB) 进行访问控制和执行安全策略。
3.管理措施
针对 TCB、操作系统和信息系统组件实施配置和交更管理,包括技术安全控制(如加密) 和过程安全控制(如补丁管理)
4. 补充:
IoT 与边缘计算:传统运行时环境扩展至物联网设备和边缘计算,需纳入组织的安全计划。
8.2.6. 持续集成和持续交付(C1和 CD)
1. 持续集成 (Continuous Integration, Cl) :
持续将开发人员的代码合并到共享的主仓库,以减少大规模代码合并和调试所需的时间和成本。
2.代码仓库:
实施配置管理的一种方式,对进入和离开受控状态的项目施加规则。
3.持续交付 (Continuous Delivery, CD):
自动将代码交付到非生产环境,或在部署到生产环境时需要进行一些手动操作。
通常用于需要手动测试流程的软件开发,例如处理受监管或敏感数据的系统,或者自动化不可行的复杂系统。
4.持续部署 (Continuous Deployment):
在持续交付的基础上,将集成的代码自动部署到生产环境,无需手动干预,除非自动化步骤失败。实现持续部署需要组织在自动化质量保证和测试过程中具有高度成熟度,以确保代码在部署前经过充分测试并通过。
5.CICD 管道 (Pipeline):
实现CI/CD的工具和流程组合,包括将功能软件交付到生产环境所需的所有步果和要求。这特包括手动步骤(如编写代码和解决错误)以及自动化步聚(如运行测试和扫描)。打包代码(如构建容器)和部署是管道的最后阶段。
6.安全控制:
在CI/CD 管道的每个系统和步骤中,都可以实施安全控制,如完整性验证、保护机密性的加密以及手动或自动化的测试和审查。
7. 自动化:
CI/CD管道依赖自动化以提高速度,其中包括基础设施即代码 (laC)和应用安全(AppSec)。lac 简化了配置管理、测试和审计,而 AppSec通过自动化测试提高了安全性。自动化测试工具将安全测试结果直接传达给开发人员,降低了信息丢失或误解的风险。
8.2.7. 安全编排、自动化和响应 (SOAR)
安全编排、自动化和响应(SOAR) 是一个集成多个流程和领域的软件平台或一组集成工具,旨在提高检测和响应安全事件的速度。SOAR 包含三个主要部分 :编排、自动化和响应:
1)编排:
将不同系统的数据整合为可操作的智能信息,SOAR 与 SIEM 有重叠,它们都将来自不同系统的数据整合到一个数据集中。SOAR 的数据来源包括日志、UEBA、IDS/IPS、外部威胁情报服务以及针对特定领域的解决方案。
2)自动化:
SOAR 通过机器可执行规则自动执行响应,以加快执行速度。自动化有助于减少安全事件的持续时间和影响。例如,自动更改受恶意软件影响的用户的密码,隔离受影响的计算机,以及在其他用户的收件箱中隔离或删除恶意邮件。
3)响应:
升级传统人工检测和响应,提高决策速度,减少响应时间,优化安全团队的工作效率。
8.2.8. 软件配置管理 (SCM)
软件配置管理(SCM)是一种确保软件开发过程中关键资源完整性的实践。
以下是SCM 的主要概念和组件。以及它们之间的逻辑关系:
•配置项 (CI):
SCM 涉及对关键软件资源(如源代码、软件库和配置设置)的管理,这些资源被称为配置项。
•基线:
由一组已知良好的配置项组成,代表了系统的稳定状态。
•更改管理:
所有对配置项的更改必须遵循严格的更改流程,以确保更改不会引入缺陷或破坏功能。
•分支
当对基线进行更改时,通常会创建一个分支。分支是一组正在进行开发或更改的版本控制配置项,与已知基线分开。在分支合并回基线之前,必领满足测试、质量保证和验收标准。
•版本控制:
SCM 使用版本控制来识别和管理软件元素。版本控制通过版本号来跟踪和控8.2.9. 代码库制软件元素的更改。
8.2.9 代码仓库(repos)
是现代软件开发的基石,提供了支持多用户团队开发软件所需的关键功能。它们提供集中存储位置,支持多用户访问和更改,实现诸如分支等限制。
1. 保护源代码:
代码仓库支持保护 CIANA(保密性、完整性、可用性、不可否认性和真实性) 安全基本原则。通过在代码仓库上实施控制,可以实现以下安全目标:
•保密性:实现访问控制与权限管理:
•完整性:实现配置管理和版本控制:
•可用性:集中式仓库备份和恢复;
•不可否认性:通过访问控制机制追踪用户操作;
•真实性:确保数据未被篡改或损坏。
2 保护代码仓库本身:
代码仓库本身也是有价值的资产,需要采取相应的安全措施加以保护。以下是一些常见的安全措施:
•教据保护:部署教据丟失项防 (DLP) 和入侵检测工具:
•通信与网络安全:实施适当的安全措施来控制和监控对仓库的访问,如使用HTTPS、TLS 或 VPN等;
•访问控制:实施最小权限原则和最低特权原则,以及访问控制流程;
•备份和可用性:确保代码仓库的高可用性和弹性配置。
8.2.10. 应用安全测试
应用程序安全测试包括四种方法:
1) 静态应用程序安全测试 (SAST):
针对源代码评估,易于与开发工具集成。
2) 动态应用程序安全测试 (DAST):
通过执行应用程序查找漏洞,适用于多种语言。
缺点:可能导致生产环境性能问题。
3) 交互式应用程序安全测试 (IAST):
结合 SAST、DAST 和渗透测试,利用机器学习分析源代码。
4)运行时应用程序自我保护 (RASP):
在应用程序运行时分析异常行为并采取纠正措施。
缺点:误报导致服务中断;
8.3.评估软件安全的有效性
8.3.1.审计和记录变化
1.软件安全评估:测量并改进软件安全,确保软件完整性。
2.审计与日志记录:审计检在安全控制,日志记录事件;确保可追湖性和不可抵赖
3.应用:审计和日志记录应用于交更管理、安全事件、性能管理和云环境变更。
4.软件开发审计:确保在软件开发过程中遵循安全控制措施。
5.审计CI/CD 环境:采用特续监控和自动化审计方法,适应快速交付的软件环境。
8.3.2. 风险分析和缓解
1. 风险评估与处理:
在整个组织或者单个信息系统中执行风险评估的最佳安践标准,包括ISO 和 NIST。
技术和信息安全风险评估框架包括操作关键威胁、资产和漏洞评估 (OCTAVE)和失效模式及影响分析 (FMEA)。
2.软件风险分析:
包括数据风险、新技术风险、系统变更和代码风险。风险评估应关注这些方面,以便在软件开发环境和实践中确定分析目标。
3.SDLC 阶段中的风险来源:
规划、要求、设计、开发、操作和维护。在软件开发过程中,需要关注每个阶段可能带来的风险,从而采取相应的风险缓解措施。
4. 风险识别和缓解策略:
在识别风险后,需要制定缓解计划,将可能性或影响降至低于组织定义的风险阈值。在确定风险缓解策略时,通常需要基于非安全利益来证明安全控制的价值,并向管理层清楚地展示用于缓解、转移和最终接受剩余风险的各种替代方案。
8.4. 评估所购软件的安全影响
8.4.1. 商业现成软件(COTS)
商业现成软件 (Commercial Off-the-Shelf, COTS)
•优势:COTS 提供了可获得的文持、丰富的功能集和快速部署能力。
•安全隐患:COTS 存在源代码和开发实践的不透明性,组织无法直接修改。
•风险:广泛使用的COTS 软件容易受到威胁,需权衡利弊并纳入组织风险决
•攻击方法:COTS 可能面临惡意修改、远程代码执行 (RCE)漏洞或 Dos 攻击等问题。
风险缓解:组织应实施风险管理,包括汇总 COTS 清单、查找漏洞信息来源以及采用纠正和补偿控制措施。
8.4.2. 开放源代码
开源软件 (Open-source software .Oss) :
•优势:源代码可见性,便于共享和协作。
•安全影响:开放性有助于发现漏洞,但 OSS的复杂性和缺乏支持可能影响吸引力
评估:充分评估 OSS以发现潜在漏洞,不能仅依較社区或管理员。
•源代码完整性:审查 OSS交更,从官方存储库下载。
•商业支持:寻找为 OSS提供支持的公司,如Reed Hat,以提高整体质量和安全
8.4.3. 第三方
•第三方软件开发具有专业优势,减少项目风险并提高效率。
•放弃软件开发过程的控制带来风险,需要通过合同、服务水平协议 (SLAS) 等措施进行缓解。
•考虑源代码可 用性和代码托管安排,以确保在第三方开发商倒闭等情况下能够持续支持和开发系统。
8.4.4. 管理云服务
1. 评估共享责任:
在不同的服务模型下,云服务提供商(CSP) 和云消费者之间的安全任务费任划分有所不同。
·laas 模型下,用户对软件部署和评估具有较大的灵活性和能力。
•Paas模型下,用户需通过审查审计报告和SLAS 进行补偿措施。
•Saas模型下,用户在直接评估方面的选项较少,但通常有关于 CSP 软件开发、测试和托管安全实践的审计报告和详细控制档。
2.审计和保证:
•由于组织无法直接负责软件开发,因此引入可信的第三方进行审计以获取关于安全控制设计、实施和有效性方面的信息。
•涉及云计算的安全和合规框架(如 SOC, CSA STAR 和 1ISO 27000 系列)为云服务和应用提供了一定程度的保证。
•csp 的优势在于提供强大的安全控制和监督计划,而劣势在于消费者需放弃一定程度的直接风险控制。
8.5. 定义并应用安全编码准则和标准
8.5.1. 源代码层面的安全弱点和漏洞
8.5.1.1 源代码级别的安全弱点和漏洞:
•弱点和漏洞的区别:弱点指源代码中可能导致安全漏润的缺陷或错误;漏洞是指可以利用弱点的途径。
·不同类型的弱点:安全弱点和非安全弱点。安全弱点可能导致漏洞,而非安全弱点则可能影响系统性能。
•漏洞评估挑战:确定弱点是否可被利用的难度,需要依靠主观判断。
•漏洞跟踪与分类:根据软件及受影响的版本对漏洞进行跟踪,以帮助组织判断漏洞影响范围。
•优先修复与补偿控制:利用漏洞评分系统确定修复优先级,部署补偿控制以降低安全风险。
8.5.1.2 CWE、CWSS、CVE 和 CVSS
1.Common Weakness Enumeration (CWE):由 Mitre Corporation 与美国政府机构美同维护提供软硬件弱点类型列表,作为识别、缓解和预防弱点的基准。包括:描述、关系、引入方式、适用平台、后果、实例等。
2.Common Weakness Scoring System (CWSS):对弱点进行评分,以确定处理优先级。包括基本发现、攻击面和环境三个方面的因素。
3.EtanoReher sormias and Espoawvas (CVE):提供一致的方式来识別和描述常见的网络安全漏洞。CVE与 CWE相关,例如 Apple 的“goto fail" 漏洞 (CVE.2014-1266) 与 CWE-561 (死代码)相关。
4.Common Vuinerability Scoring System (CVSS):为每个 CVE提供影响和严重程度相关的信息。包括基本评分、时间评分和环境评分三个类别的度量。
评分
CVSS 评分范围:0 至10. 分为五个级别:None (0) 、Low (0.1-3.9) 、Medium(4.0-6.9)、High (7.0-8.9)和 Critical (9.0-10)。通过 CVsS 评分可以优先修复高危漏洞。
8.5.1.3 OWASP 10
是由开放网络应用安全项目(OWASP) 组织发布的一份列出 Web 应用中最常见的 10个安全漏洞的清单。目的是提供开发人员、质量保证和测试从业者以及安全从业者的指导,以便在编程、测试和安全监控中识别和防范这些常见漏洞。
8.5.1.4 软件组成分析 (SCA)
随着开源组件在现代程序中的广泛使用,软件组成分析(SCA) 应运而生,以解决开源组件的安全隐患。
•SCA 工具用于创建依赖项清单并识别包含的漏洞,类似于操作系统发布关于漏洞和更新的通知。
•识别到依赖项中的漏洞后,通常的补救措施是应用更新,但某些情况下可能无需采取措施。
•为了解决组件漏洞,可以利用 DevOps 和DevSecOps 实践,例如将自动检查和更新依赖项集成到 CI/CD 管道中,安現自动修复漏洞,但可能会影响可用性
8.5.2. 应用程序编程接口 (API) 的安全
APl提供标准化访问系统功能的方法,现代应用程序架构通常依赖 API 在复杂系统的功能、模块或层之间传输数据。
API安全最佳实践:
1.身份验证和访问控制:API 身份验证的目标与 web 应用类似,需要验证用户(消费者) 身份并根据身份授权访问资源。可采用基本认证、密钥认证、证书认证、联合和单点登录认证等方法。实现访问控制的方法包括基于 角色的访问控制、访问控制列表等。
2.输入验证与清理 :将外部系统或用户提供的数据视为不可信并进行适当处理,以避免代码注入攻击和数据完整性问题。API 层应实施输入验证检查。
3.资源保护:API 设计应确保暴露的功能不会被利用来攻击系统的机密性、完整性或可用性。
4.通信保护:API访问应与 Web 应用程序实施类似的通信保护,如使用TLS 进行数据传输加密。
5. 加密:API安全可利用加密实现机密性、完整性、真实性、 不可抵赖性和访问控制等功能。加密技术的选择应根据系统需求来定。
6.安全日志、监控与报警:API 操作应纳入日志和监控策略,确保 API 使用满足安全要求。可通过人工审查或使用自动化工具(如SIEM)对日志进行监控。
7.API 安全测试:API 需要经过安全、性能和用户需求测试。测试方法和注意事项与常规系统功能相同。根据 API的风险特点,选择合适的测试工具和策略。
8.OWASP API 安全项目提供了关于 API安全的资源,包括安全 Top 10 和API安全速查表。
8.5.3. 安全编码实践
8.5.3.1 常见的安全编码实践的列表:
。输入验证 :检查所有输入数据,以确保它是有效的,不包含任何恶意代码。
•输出编码:对输出数据进行编码,使其不能被攻击者解释。
•认证和密码管理:使用强密码和认证机制来保护敏感数据。
•会话管理:跟踪用户会话,以防止攻击者劫持它们。
•访问控制:限制只有经授权的用户才能访问敏感数据。
•密码学实践:使用强大的加密技术来保护敏感数据。
·错误处理和记录:正确地处理错误和记录它们,以便以后可以进行调查。
•通信安全:使用安全协议保护传输中的数据。
•系统配置:安全地配置系统以防止攻击。
•数据库安全:保护数据库免受攻击。
•文件管理:安全地管理文件以防止攻击。
•内存管理:安全地管理内存以防止攻击。
•一般编码实践:遵循有助于提高安全性的一般编码实践,如使用防御性编程技术。
•安全线码标准:常见安全输码标准的清单,如 OWASP、CMU SE1 发布的涵盖安全编码实践和标准的指南等
8.5.3.2 安全教育和文化
•设计安全:一个原则,要求在系统开始时,在设计阶段就包括安全。
•默认安全:提供更安全的软件的最佳实践的集合,如包含分层安全控制和为安全而设计的保守的默认设置。
Devsecops:一组实践,将安全活动转移到软件开发生命周期的早期,而不是在系统建立和部署后才制定安全策略。
•构建安全:一套可用于推动企业向安全文化转变的实践和原则。
8.5.4. 软件定义安全
软件定义安全 (Software Defined Securiy, SDS)是一种创新的安全方法,通过虚拟化技术和自动化实现对系统和网络的保护。SDS 脱离了传统的基于硬件的安全解决方案,转向基于软件的安全控制,以适应现代云计算和动态基础设施环境。
1) 可扩展性和灵活性:
SDS 允许组织更快速地调整和部署安全控制,以适应不断变化的 I T环境。通过自动化和虛拟化,SDS 可以轻松地应对新的威胁和业务需求。
2) 基础设施中立:
SDS 可以在不同的硬件和软件平台上工作,为组织提供统一的安全管理方法。这有助于简化安全配置和管理,降低了对特定平合知识的依赖。
3)自动化和集成:
SDS 利用自动化和集成来部署、监控和管理安全控制,从而减少人为错误和提高效率。通过标准化的定义文件,SDS 可以在不同的基础设施组件之问实现互操作性。
4)集中管理:
SDS 提供了集中式的安全管理,使安全从业者能够全面了解组织内的安全策略和控制实施情況。这有助于提高安全可见性并确保一致的安全战略执行。
5)动态响应:
SDS 能够快速响应新的安全威胁和事件,利用自动化和编排功能 (SOAR) 部署预防措施。这有助于减少安全风险并降低攻击者的成功几率。
复习题
1.Susan 为她所在的组织提供了一个公共的 RESTful API, 但希望将其使用限制在可信赖的合作伙伴范围内。她打算使用 API密钥。你会给 Susan什么其他建议来限制服务的潜在滥用? A.限制请求速率 B. 强制使用仅限 HTTP 的请求 C.避免使用令牌以避免带宽限制 D.将GET、POST 和PUT 等 HTTP 方法列入黑名单
A
记住
2.Darren 正在进行威胁猎杀演练,并希望寻找僵尸网络的入侵指标。以下哪些是攻击者利用僵尸网络的常见方式?(选择所有适用的选项。) A.挖矿加密货币 B. 进行暴力破解攻击 C.扫描易受攻击的系统 D. 进行中间人攻击
ABC
3.以下哪个陈述关于代码审查是不正确的? A.代码审查应该是一个由多个开发人员参与的同行驱动的过程。 B. 代码审查可以自动化。 C. 代码审查发生在设计阶段。 D.代码审查者每小时可能期望审查几百行代码。
C
4. Kathleen 正在审查下面展示的Ruby代码。这段代码使用了哪种安全技术? Insert.new.userE = db.prepare. "INSERT info users (name. userid,gender.usertyre)VALUES (?, ?,?,?,)" insert new. user.execute "davids', '194567', 'male', 'admin A. 参数化 B.类型转换 C. Gem 切割 D.存储过程
A
5.Jessica 正在审查她所在组织的变更管理流程,并希望验证软件变更是否包括 验收测试。哪个流程负责实现这个目标了 A. 请求控制 B.变更控制 C.发布控制 D. 配置控制
C
P743 请求变更:用户发起,管理者可以进行成本/效益分析,开发人员优化人物 变更控制:遵守质量控制约束,开发用于变更的工具,正确记录变更,最小化代码对安全的影响 发布变更:包括验收测试,变更已经批准,确保变更过程中作为变成辅助插入的任何代码(后门)都被删除
6.AsMov正在调在一起入侵事件,该事件入侵了她一个用户的账户。在这次攻击中,攻击着通是利用用浏览器中的信任关系,强制提交了一个经过身份安证的请求到第三方网站。最可能发生了哪种类型的攻击? A. xSS(跨站脚本) B. CSRF(跨站请求伪造) C. SQL注入 D.会话劫持
B
P786 跨站脚本XSS:将他们自己的html代码插入网页(服务端)。确定允许输入的类型和输出编码技术可以防止,应用程序应该不允许用户在可反射字段输入<SCRIPT> 跨站请求伪造CSRF或者SSRF:利用信任关系,让用户(客户端)对远程服务器执行命令 会话劫持:拦截用户和服务端的通信
7.amovd 正在的建一个新的软件包,并使用了 openssL 库。最适合描达他正在使用的库的术语是什么? A.开源 B. COTS(现成的软件) C. 第三方 D. 管理型
A
一般带有open的都是开源
8 jaime 是一名技术 支特分析师,被要求访问一个用户的计算机,该计算机显示了下面的错误信息。这台计算机进入了哪种状态? A.失效开放 B. 无法恢复的错误 C.内存耗尽 D. 失效安全
D
9.Joshua 正在为他所在组织开发一个软件威胁建模程序。下面哪些是该程序的合适目标?(选择所有适用的选项。) A. 减少安全相关设计缺陷的数量 B.减少安全相关编码缺陷的数量 C.减少非安全相关缺陷的严重程度 D.减少威胁向量的数量
ABC
记住
10. 在下面展示的图表中,哪一个是一个方法(method)的例子? Account Balance: currency = 0 Owner: string AddFunds(deposit: currency) RemoveFunds(withdrawal: currency) A. 账户 B.拥有者 C.添加资金 D. 余额
C
11.Wanda 正在审查她所在组织使用的应用程序开发文档,并发现了下面展示的生命周期示意图。她的组织正在使用哪种应用程序开发方法? A. 瀑布模型 B. 螺旋模型 C.敏捷模型 D. RAD(快速应用程序开发)
D
12. 以下哪种测试方法通常在没有源代码访问权限的情况下进行? A.动态测试 B. 静态测试 C.白盒测试 D. 代码审查
A
13. Lucca 正在分析他所在组织从第三方供应商获得的一个web 应用程序。Lucca确定应用程序包包含一个缺陷,使得已登陆的用户能够在其角色中执行中不应该能够执行的操作。这种安全漏洞应该被归类为哪种类型? A.数据验证 B. 会话管理 C. 授权 D.错误处理
C
14.Bobby 正在调查一个经授权的数据库用户如何获取超出其正常权限级别的信息。Bobby 认为用户正在使用一种汇总数据的函数类型。哪个术语描述了这种类型的函数? A. 推断 B. 多态 C. 聚合 D.模块化
C
15. Taylor希望更好地保护她所在组织开发的应用程序免受缓冲区溢出攻击。以下哪种控制措施最能提供这种保护? A. 加密 B. 输入验证 C. 防火墙 D.人侵防御系统
B
16.Kayla最近对她因队开发的软件进行了彻底的风险分析和缓解审查,并确定了三个持久性问题: 1. 跨站脚本 (XSS) 2. SQL注入 3.缓冲区溢出 这些问题中,哪个是她团队工作中最重要的缺陷? A.缺乏 API 安全 B.不正确的错误处理 C不正确或缺失的输入验证 D.源代码设计问题
C
这三种威胁都可以使用输入验证措施解除威胁
对于回题 17-20,请参考以下情景: Robert 是一名顾问,帮助组织创建和发展成熱的软件开发实践。他倾向使用软件能力成熱度模型(SW-CMM) 通过独立审查和自我评估来评估组织的当前和末来状态。他目前正在与两个不同的客户合作。 Acme widgets 在软件开发实践方面组织得不大好。它有一支专门的开发团队,他们会尽一切努力发布软件,但是他们没有任何正式的流程。 Beta Particles 是一家有多年经验的公司,使用正式的、文档化的软件开发流程开发软件。它使用标淮的软件开发模型,但没有对这些流程进行定量管理。 17. 根据 SW-CMM,Robert 应报告 Acme Widgets 的当前状态处于哪个阶段? A. 己定义 B.可重复的 C. 初始的 D.管理的 18.Robert 正在与 Acme Widgets 合作制定推进他们的软件开发实践的战略。他们的下一个目标里程碑应该是SW-CMM 的哪个阶段? A. 已定义 B.可重复的 C.初始的 D.管理的 19. 根据 SW-CMM,Robert 应报告 Beta Particles 的当前状态处于哪个阶段? A.已定义 B.可重复的 C.优化的 D.管理的 20.Robert 还在与Beta Particles 合作制定推进他们的软件开发实践的战略。他们的下一个目标里程碑应该是SW-CMM 的哪个阶段? A. 己定义 B. 可重复的 C.优化的 D.管理的
C
SW-CMM 初始级:几乎没有或者完全没有定义软件开发过程 可重复级:引入最基本的生命周期管理过程,有组织的重用代码;有:需求管理、计划编织、跟踪和监督、合同管理、质量保障和配置管理 定义级:开发人员按照一系列的正式的、文档化的软件开发过程进行操作。所有工作都在标准化的模型下进行。有:组织过程关注点、组织过程定义、培训、集成软件管理、软件产品工程、组间协调和同行评审 管理级:定量过程管理和软件质量管理 优化级:持续改进的过程。成熟的软件开发过程已经确立。有:缺陷预防、技术变更管理和过程变更管理。
B
A
D
21.下列哪个数据库键用于强制表之间的参照完整性关系? A. 主键 B. 候选键 C 外键 D.主键
C
主键:唯一标识 候选键:唯一标识属性的子集(比如电话号码,部门如果存在两个人在同一个部门不能用做候选键) 备用键:所有未被选为主键的候选键都是 外键:强制两个表之间建立关系
22,8rynn 认为她组织的系统可能被一种宏病毒人侵。下列哪个文件最有可能是罪魁祸首? A. projections.doc B. command.com C. command.exe D. loopmaster.exe
A
23. Victor 创建了一个包含有关组织员工信息的数据库表。该表包含员工的用户 ID、三个不同的电话号码宇段(家庭、工作和移动)、员工的办公室位置和员工的职称。表中有16条记录。这个表的度是多少? A. 3 B. 4 C. 6 D. 16
C
24.Carrie 正在分析她的基于Web 的应用程序的应用程序日志,发现了以下字 符串: /////./etc/passwd 对 Carrie 的应用程序进行了什么类型的攻击? A. 命令注入 B. 会话劫持 C. 目录遍历 D.暴力破解
C
25 在按照软件开发生命周期SDLC方法进行软件开发时,设计审查应在何时进行 A. 代码审查之后 B. 用户验收测试之后 C.功能需求开发之后 D.单元测试完成之后
C
26. Tracy 正准备为组织的企业资源规划系统应用补丁。她担心补丁可能引入之前版本中不存在的缺陷,因此她计划进行一项测试,将先前的输入响应与新修补的应用程序产生的响应进行比较。Tracy 计划进行的是哪种类型的测试? A. 单元测试 B. 验收测试 C.回归测试 D.漏洞测试
C
27. 用什么术语来描述软件没有漏洞的程度,无论是故意设计到软件中的漏洞,还是在其生命周期中的任何时间意外插入的漏洞,并且软件按照预期的方式运行? A. 验证 B.认证 C. 置信区间 D. 保证
D
记住
28.victor最近在一个在线约会网站上担任新职位,并负责领导一个开发团队。 他很快意识到,开发人员在处理不同的项目时会对生产代码进行冲突修改,这导致了生产代码的问题。Victor 应投资改进哪个流程? A. 请求控制 B. 发布控制 C. 变更控制 D.配置控制
C
29.Tom 正在评估与他管理的数据库相关的安全风险。检查用户访问控制,他确定用户可以访问与其权限匹配的表中的单个记录,但是如果他们提取多个记录,则那些事实的集合的分类比任何单独事实的分类更高,并超过了允许的访问权限。Tom 识别出了哪种类型的问题? A. 推理 B. SQL注入 C.多级安全 D.聚合
D
30. Ron 领导一个软件开发团队,他们经常重新创建执行常见功能的代码。他应该使用哪个软件开发工具来最好地解决这个问题? A. 代码仓库 B. 代码库 C.集成开发环境 (IDE) D.动态应用安全测试 (DAST)
B
代码库:代码库对于将组件打包并重复使用是非常方便的方法。 集成开发环境IDE:集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。 DAST(Dynamic Application Security Testing)是在应用程序处于生产阶段时发现安全漏洞的过程,它包括使用各种测试工具进行手动和自动化测试。这是一种黑盒测试的类型,测试者无需了解架构、网络或者代码,而是从一个恶意攻击者的角度来测试应用程序。依赖输入、输出。
31. Vivian 希望聘请一名软件测试员来评估一个新的 Web 应用程序,从用户的角度进行评估。下列哪个测试最好地模拟了这种角度? A. 黑盒测试 B.灰盒测试 C.蓝盒测试 D.白盒测试
A
32. 如果在Accounts 表中没有账户号码为 1001 的账户,会发生什么情况? BEGIN TRANSACTION UPDATE accounts SET balance = balance + 250 WHERE account _number = 1001; UPDATE accounts SET balance = balance - 250 WHERE account number = 2002; COMMIT TRANSACTION A. 数据库会创建一个新的账户,并给它250 美元的余额。 B数据库会忽略该命令,并仍然将第二个账户的余额减少 250 美元。 C.数据库会回滚事务,忽略两个命令的结果。 D.数据库会生成错误消息。
B
P753 书中原代码,不可以这么写。应该用下面的写法: START TRANSACTION; COMMIT; ROLLBACK; SAVEPOINT savepoint_name; START TRANSACTION; -- 扣除账户A的余额 UPDATE accounts SET balance = balance - 100 WHERE account_id = 'A'; -- 增加账户B的余额 UPDATE accounts SET balance = balance + 100 WHERE account_id = 'B'; -- 记录交易信息 INSERT INTO transactions (from_account, to_account, amount) VALUES ('A', 'B', 100); -- 提交事务 COMMIT;
33. Brandon 是一名软件开发人员,希望将他的软件与一家知名社交媒体网站集成。该网站提供给他可以用来更好地集成他的代码的软件库,以及其他使他的工作更容易的工具。哪个术语最好地描述了 他使用的服务? A. SDK (软件开发工具包) B. DLP(数据丢失预防) C. IDE(集成开发环境) D.API(应用程序接口)
A
软件开发工具包(Software Development Kit,SDK )一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
34. kim 正在排除一台应用程序防火墙的故障,该防火墙作为组织的网络和主机防火墙以及入侵防御系统的补充,提供额外的保护,防止基于 Web 的攻击。组织遇到的问题是防火墙会经常重新启动,导致其在一段时间内不可用,每次重新启动需要 10 分钟。kim 可以考虑采用以下哪种配置,在该期间以对公司成本最低的方式保持可用性? A. 高可用性集群 B. 故障切换设备 C. 故障开放 D.冗余磁盘
C
记住
35. 当攻击者可以通过分析多个低级别的信息来推断出更敏感的信息时,会出现哪种类型的安全问题? A. SQL注入 B. 多级安全 C.参数化 D.推理•
D
36. Greg 正在与他所在组织的恶意软件爆发作斗争。他使用专门的惡意软件公 析工具从三个不同的系统中捕获了恐意软件样本,并注意到代码在每次感染时都会略有变化。Greg 认为这就是导致防病毒软件难以击败爆发的原因。Greg 应怀疑哪种类型的恶意软件负责这起安全事件? A. 隐形病毒 B. 多态病毒 C. 多部分病毒 D.加密病毒
B
对于问题 37-40,请参考以下场景: Linda 正在审查公司网站上用户论坛的站子,当她浏览特定的站时,一个弹出 以下代码片段: 窗口上显示了一个消息框,上面写着“警告。。她查看了站子的源代码,发现 <script>alert('Alert"'); </script> 37. Linda 的留言板上肯定存在什么漏洞? A. 跨站脚本攻击 B. 跨站请求伪造 C.SQL注入 D.不正确的身份验证 38. 在论坛上发布包含此代码的消息的用户的动机可能是什么? A. 侦察 B. 盗取敏感信息 C. 窃取凭证 D. 社会工程学 39. Linda 与供应商进行沟通,并确定没有可用的补丁来修复这个漏洞。以下哪种设备最有助于帮助她防御进一步的攻击? A. VPN(虚拟专用网络) B. WAF (web 应用程序防火墙) C.DLP(数据丢失预防) D.IDS(入侵检测系统) 40,在与供应商进一步讨论中,linda发现他们愿意解决整个问题,但是不知道如何更新他们的软件。以下哪种技术在减轻应用程序对此类攻击的漏洞方面最有效? A. 边界检查 B. 同行评审 C. 输入验证 D.操作系统修补
A
<script>出现基本就是跨站脚本攻击XSS
A
B
C
41. Hannah 是一名软件开发人员,正在使用R编程语言创建统计软件。她使用如下所示的RStudio 工具来帮助她编写代码。哪个术语最好地描述了这个工具? A. SDK(软件开发工具包) B. IDE(集成开发环境) C.API(应用程序接口) D.DLP(数据丢失预防)
B
集成开发环境IDE:集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
42. Lauren 希望为她正在开发的应用程序使用一种软件审查过程。如果她是一个远程工作者,并且与其团队的其他成员工作时间不同,以下哪种过程最适合她? A. 传递 B.成对编程 C. 团队审查 D. Fagan检查
A
Fagan检查:“法甘检查法”作为一个方法论被广泛应用并获得显著效果的背后,是它清晰的步骤和极强的可操作性,如下图,法甘检查法(Fagan Inspection)共有6步 计划---概览---预备---会议---修订---跟进
43. Alan 正在将Java 代码部署到他的环境中的各种机器上,并必须首先在这些机器上安装JVM。在这种情况下,哪个术语最好地描述了 JVM? A. 存储库 B. 变更管理器 C.运行时 D.沙箱
C
Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一。具有平台无关性。
44.Christine 即将完成对一个新软件包的测试的最后阶段。以下哪种类型的软件测试通常是最后进行的,针对测试场景执行? A. 单元测试 B. 集成测试 C.用户验收测试 D.系统测试
C
45.Alexis 的组织最近采用了 CI/CD 的软件开发方法,他们打算加快支持其网站的代码部署速度。使用这种方法,他们可以合理地预期达到多大的频率? A. 每月部署 B. 每周部署 C.每日部署 D.每日数百次部署
D
46.Amber 正在进行威胁情报项目,并希望找到关于她组织的 Web 应用程序威胁的信息来源。以下哪个组织被广泛认为是关于基于 Web 的攻击向量信息的权威来源? A. (ISC)2 B. ISACA C. OWASP D. Mozilla Foundation
C
47.Chris 是一名软件开发人员,他正在积极编写应用程序的代码。他在敏捷过程的哪个阶段? A. 计划 B. 冲刺 C部署 D.开发
B
48. Ayssa 的团队最近实施了一个新系统,该系统从各种不同的日志源收集信息,分析这些信息,然后针对安全事件触发自动化的playbook。哪个术语最好地描迷了这项技术? A.SIEM(安全信息和事件管理) B. 日志存储库 C.IPS(入侵防御系统) D. SOAR(安全自动化和响应)
D
49.Chris 正在市在他计划在组织中使用的开源应用程序的代码。他发现了以下 代码片段: int myarray(10); myarray[10] = 8; 正在发生什么类型的攻击? A. 数据类型不匹配 B.溢出 C. SQL注入 D.隐蔽通道
B
记住
50. 以下哪种数据库问题会发生在一个事务写入数据库时覆盖了较早优先级事务所需的值? A.脏读 B. 错误摘要 C. 丢失更新 D.SQL注入
C
1.丢失修改/更新 两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失 2.不可重复读 不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体地将,不可重复读包括三种情况: (1)事务T1读取某一数据后,事务T2对其进行了修改,当事务T1再次读该数据时,得到与前一次不同的值。 (2)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神秘的消失 (3)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。 后两种情况称为“幻影现象”。 3.读“脏”数据 读“脏”数据是指事务T1修改某一数据并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时被T1修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。
51.Belinda 希望更好地保护组织的 web 应用程序用户免受 Cookie 窃取攻击。 以下哪种控制措施最有效防止这种类型的会话劫持攻击? A.TLS(传输层安全) B.复杂的会话 Cookie C.SSL (安全套接层) D.经常过期的 Cookie
A
52.在软件配置管理计划中,CAB (交更控制委员会)的主要角色是什么? A.批准开发人员的凭据。 B. 促进经验教训会议。 C.审查和批准/拒绝代码更改。 D.优先处理软件开发工作。
C
53 以下哪个工具常被软件开发人员用于与存储在代码仓库中的代码进行交互 和管理? A. grep B. git C. Isof D. gec
B
54. 在评估潜在的安全事件时,Hary 发现了一个来自Web 服务器请求的日志 条目,显示一个用户在一个表单字段中输入了以下输入 CARROT&1=1;--这是什么类型的攻击? A. 缓冲区溢出 B. 跨站脚本 C.SQL注入 D.跨站请求伪造
C
P779 &1=1;-- 典型的SQL注入
55.以下哪项控制措施对抵御 SQL注入攻击不起效果? A. 转义 B. 客户端输入验证 C. 参数化 D.限制数据库权限
B
1. 使用参数化查询 2. 输入验证和过滤 3. 使用存储过程 4. 最小权限原则 5. 使用ORM框架 6. 使用准备语句 7. 使用安全的数据库连接 8. 避免动态拼接SQL语句 9. 使用防火墙和入侵检测系统 10. 定期更新和维护数据库软件 题中B说的客户端,所以不选
56.Jason 正在审核一个软件开发项目的文档,并发现了下面显示的图表。他正在审查什么类型的图表? A. WBS 图 B.PERT 图 C. 甘特图 D.线框图
B
57. 在哪种软件测试技术中,评估者每次软件更改时都会重新测试大量场景,以验证结果是否与标准基线一致? A. 正交数组测试 B. 模式测试 C. 矩阵测试 D.回归测试
D
58.Haley 正在审查由她的组织创建的代码,以评估其可能存在的Web 应用程序漏洞。以下哪种情况可能使应 用程序最容易受到跨站脚本 (XSS)攻击? A. 输入验证 B. 反射输入 C. 未修补的服务器 D.松散的防火墙规则
B
P786 书中原话,记住
59.Roger 正在为他的公司开发的一个税务准备应用程序进行软件测试。最终用户将通过 web 访问该应 用程序,但 Roger 正在进行后端测试,,评估 Web服务器上的源代码。Roger 正在进行什么类型的测试? A. 白盒测试 B. 灰盒测试 C. 蓝盒测试 D.黑盒测试
A
60. 关于基于启发式的反恶意软件软件,以下哪种说法是正确的? A. 它的误报率低于签名检测。 B. 它需要频繁的定义更新以检测新的恶意软件。 C.它比签名检测更有可能检测到零日漏洞利用。 D.它监控系统以查找已知是病毒的内容文件。
C
记住
61. Martin 正在检查一个系统,用户报告了异常活动,包括在系统闲置时的磁盘活动和异常的 CPU 和网络使用。他怀疑机器被病毒感染,但扫描结果却显示清除。这里可能使用了哪种恶意软件技术,解释了扫描结果的干净? A. 文件感染病毒 B. MBR 病毒 C. 服务注入病毒 D.隐蔽病毒
D
内存病毒是指寄生在磁盘主引导记录(MBR),即使格式化重装系统,也无法清除的病毒。
62.Tomas 在应用程序日志中发现了一行,似乎对进行目录遍历攻击的尝试进行了相应。他认为这次攻击是使用URL编码进行的。该行的内容如下 %252E%252E%252F252E%252E%252Fetc/passwd%252E%252E8252F 对应的宇符是什么? A.. B., C. D. /
A
攻击者可以使用%252e%252e/访问根目录并读取或执行目标服务器上的任何文件。
63. 一个攻击者在一个公开讨论论坛上发布了一条包含嵌入恶意脚本的消息,该脚本在用户读取时在用户的系统上执行,但不显示给用户。这是哪种类型的攻击? A. 持久性跨站请求伪造 B. 非持久性跨站请求伪造 C.持久性跨站脚本 D.非持久性跨站脚本
C
持久型XSS(跨站脚本攻击)是一种常见的网络安全漏洞。它的特点是恶意注入的攻击代码会被存储到服务器端或者数据库中,从而导致持久性的攻击行为。
64. 以下哪项不是敏捷软件开发过程的原则? A. 欢迎变化的需求,即使在开发过程的后期。 B. 最大化未完成的工作量是关键。 C.清晰的文档是进展的主要衡量标准。 D. 围绕积极主动的个体构建项目。
C
65.Gavin 是一名内部审计员,负责审查组织的变更管理实践。他想要审查一系列到每个拟议变更的描述?列对软件包进行的变更,以确定是否已经正确记录了这些变更。他应该在哪里 A. CAB(变更控制委员会) B. RFC(变更请求) C. SOAR (安全自动化和响应) D.SIEM(安全信息和事件管理)
B
66. Neal 正在使用 DynamoDB 数据库。该数据库的结构不像关系型数据库,但允许 Neal 使用键-值存储来存储数据。DynamoDB 是什么类型的数据库? A. 关系型数据库 B. 图数据库 C. 分层数据库 D. NoSQL 数据库
D
67. 在这个事务中,如果在第一个和第二个更新语句之间数据库发生故障,会发生什么情况? BEGIN TRANSACTION UPDATE accounts SET balance = balance + 250 WHERE account_number = 1001; UPDATE accounts SET balance = balance - 250 WHERE account_number = 2002; COMMIT TRANSACTION A,数据库会将第一个账户的资金增加250 美元,但不会减少第二个账户的余额。 B.数据库会忽略第一个命令,只减少第二个账户的余额250 美元。 C. 数据库将回滚事务,忽略两个命令的结果。 D.数据库会成功执行两个命令。
C
68. Tareck 的组织大量使用 COTS 软件。他最近在一个对他的业务至关重要的 COTS 软件包的代码中发现了一个重要的缓冲区溢出漏洞。Tareck 最有可能通过哪种方式来纠正这个问题? A. 与软件开发团队合作修改代码。 B.通知供应商并请求补丁。 C. 部署入侵防御系统。 D.更新防火墙规则。
B
69.以下哪项关于软件测试的说法是正确的? A. 静态测试在运行时环境上进行。 B. 静态测试执行代码分析。 C.动态测试使用自动化工具,而静态测试不使用。 D.静态测试是比动态测试更重要的测试技术。
B
70.David 正在为软件开发项目制定项目进度表,他发现了下图所示的图表。这是什么类型的图表? A. 工作分解结构图 B. 功能需求图 C. PERT 图 D.甘特图
71.Barry 是一名软件测试员,他正在使用公司开发的一个新的游戏应用程序。 他正在智能手机上玩游戏,以便在尽可能模拟正常终端用户环境下进行测试,但他在进行测试时参考了源代码。Barry 正在进行哪种类型的测试? A. 白盒测试 B. 黑盒测试 C.蓝盒测试 D.灰盒测试
D
72.Miguel 最近对他的组织用于处理敏感信息的应用程序进行了渗透测试。在测试过程中,他发现了一种情况,攻击者可以利用时间条件来操纵软件,使其允许他执行未经授权的操作。以下哪种攻击类型符合这种情况? A. SQL注入 B.跨站脚本 C. 传递哈希 D. TOC/TOU
D
73. 图中显示的输入参数用于安全审查过程的哪一部分? A. SQL 注入审查 B. 冲刺审查 C.Fagan 检查 D.攻击面识别
D
记住
74以下哪个应用程序安全过程可以用以下三个主要步骤来描述? 1.分解应用程序 2.确定和排序威胁 3. 确定对策和缓解措施 A. Fagan 检查 B.威胁建模 C.渗透测试 D.代码审查
B
记住
75.以下哪种故障管理方法从安全角度来看最保守? A.故障开放 (Fail open) B. 故障缓解 (Fail mitigation) C. 故障清除( Fail clear ) D.故障关闭 (Fail closed)
D
76. 图中显示的软件开发模型是什么? A. 瀑布模型 B.敏捷模型 C. 精益模型 D.螺旋模型
D
77. Mark 正在考虑用一款新的云产品替换他的组织的客户关系管理 (CRM)解决方案。这个新的解決方案完全由供应商管理,Mark的公司不需要编写任何代码或管理任何物理资源。Mark 正在考虑哪种类型的云解决方案? A. laas (基础设施即服务) B. Caas (容器即服务) C. Paas (平合即服务) D.Saas(软件即服务)
D
78. 以下哪种变更管理过程是由用户发起而不是开发人员发起的? A. 变更请求 B. 变更控制 C.发布控制 D.设计审查
A
79.Teagan 想要更好地保护他的组织免受数据库推断攻击。以下哪种技术是有效对抗这些攻击的对策? A.输入验证 B. 参数化 C. 多重实例化 D.服务器端验证
C
记住
80. Ursula 是一名政府网站开发人员,最近创建了一个公开的应用程序,提供房地产记录查询。她希望其他开发人员可以将其集成到他们的应用程序中使用。 为了使开发人员能够直接调用她的代码并将输出集成到他们的应用程序中,Ursula可以创建什么? A. 对象模型 B. 数据宇典 C. API D.主键
C
81. Nathan 最近完成了一个软件开发项目,将组织的网络运营堆栈与开发流程进行了整合。因此,开发人员可以根据需要从他们的代码中修改防火墙规则。 以下哪个术语最能描述这种能力? A.敏捷 B. laC (基础设施即代码) C. SDS(软件定义的安全) D. DevOps
C
82.TJ正在检查一个系统,用户报告了奇怪的错误消息和无法访问文件的问题。他看到了图中显示的窗口。TJ应该怀疑哪种类型的恶意软件? A. 服务注入 B. 加密病毒 C. SQL注入 D.勒索软件
D
83. Charles 正在开发一个对人员安全直接影响重大的关键应用程序。相对于时间和成本,正确运行的软件更为重要。在这些要求下,他应该选择以下哪种软件开发方法论? A. 敏捷 B. DevOps C.螺旋 D.瀑布
D
84.以下哪种人工智能类型试图使用复杂计算来复制人类思维的部分功能? A. 决策支持系统 B. 专家系统 C.知识库 D.神经网络
D
85,在软件能力成熟度模型(SW-CMM)的哪个级别上,组织引入基本的生命 周期管理过程? A. 初始级 B.可重复级 C. 定义级 D.受控级
B
86.Lucas 负责运行他公司的会计系统。在一名重要员工被解雇的次日,系统开始出现信息丢失的情况。Lucas 怀疑这名离职员工在离职前篡改了系统。Lucas应该怀疑哪种攻击类型? A. 特权升级 B. SQL注入 C.逻辑炸弹 D.远程代码执行
C
87. 在敏捷软件开发方法中,以下原则中哪一个不会被青睐? A.过程和工具高于个体和互动 B. 可工作的软件高于详尽的文档 C.与客户的合作高于合同的谈判 D.对变化的响应高于遵循计划
A
88.API 开发人员最常用哪种技术来限制 API 的访问仅限于授权的个人和应用程序? A. 加密 B. 输入验证 C.API密钥 D.IP过滤器
C
89.Reggie 最近收到公司内部审计员的来信,安排了一次对他的团队进行评估的启动会议。在那次会议中,Reggie 不应该期望了解以下哪个方面的内容? A. 审计的范围 B. 审计的目的 C.预期时间框架 D.预期的发现结果
D
记住
90. 软件开发的瀑布模型中,以下哪个是正确的步骤顺序? A. 需求、设计、测试、编码、维护 B. 需求、设计、编码、测试、维护 C. 设计、需求、编码、测试、维护 D.设计、需求、测试、编码、维护
B
91.Renee 是一名软件开发人员,她使用 Node/s 为公司编与代码。公司正考虑从自助托管的 Node/s 环境转变为由云供应商管理的应用程序服务器上运行代码的环境。Renee 的公司考虑的是哪种类型的云解决方案? A. laas(基础设施即服务) B. Caas (容器即服务) C. Paas (平台即服务) D.Saas (软件即服务)
C
92. Tom 正在编写一个软件程序,用于计算不同司法管辖区 在线订单的销售税。该应用程序包括一个用户定义字段,允许输入总销售金额。Tom 希望确保在该字段输入的数据是格式正确的美元金额。他应该使用哪种技术? A. 限制检查 B. 开放失败 C. 安全失败 D.输入验证
D
93.Brian 正在帮助实施组织的一种新的软件测试方法,并希望审查他的工具包的完整性。以下哪些是被认为是动态应用程序安全测试 (DAST)工具?(选择所有适用的) A. 代码审查 B. 模糊测试 C. 静态分析 D.Web应用程序漏洞扫描
BD
94.以下哪种技术管理方法综合了图中所示的技术管理的三个组成部分? A. 敏捷 B. 精益 C. DevOps D.ITIL(T 基础架构库)
C
95.Olivia 正在对她的组织从第三方获取的 Web 应用程序进行风险分析,并担心它可能存在漏洞。以下哪项活动可以最好地减轻风险? A. 部署 WAF (网络应用防火墙) B.实施强大的加密 C.购买保险政策 D.停止使用该软件
A
96. 以下哪个数据库并发问题发生在一个車务读取了由第二个事务写人数据库但从未提交的信息? A. 丢失更新 B. SQL注入 C. 错误摘要 D.脏读取
D
1.丢失修改/更新 两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失 2.不可重复读 不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体地将,不可重复读包括三种情况: (1)事务T1读取某一数据后,事务T2对其进行了修改,当事务T1再次读该数据时,得到与前一次不同的值。 (2)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神秘的消失 (3)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。 后两种情况称为“幻影现象”。 3.读“脏”数据 读“脏”数据是指事务T1修改某一数据并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时被T1修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。
97.以下哪个软件开发概念在20 世纪 90年代由国防部首创,旨在将不同的产品开发团队聚集在一起? A.集成产品团队 B.敏捷方法论 C.Scrum 方法 D.用户故事
A
98.Frank 正在努力选择一个新的云服务,为他的团队开发的应用程序提供对象存储。Frank 计划使用哪个云服务类别? A. Saas(软件即服务) B. laas(基础设施即服务) C. Faas (西数即服务) D.Paas(平台即服务)
B
99. 将编号的代码测试方法与字母的定义进行匹配: 代码测试方法 1. 回归测试 2.集成测试 3. 单元测试 4. 系统测试 定义 A. 在完全集成的产品上进行测试 B. 一种侧重于模块或较小代码部分进行测试的方法 C.用于验证之前测试的软件在进行更改后的表现相同的测试方法 D.用于验证软件模块如何一起工作的测试方法
CDBA
100. 将以下编号的术语与宇母的定义进行匹配: 1.会话劫持 2.跨站脚本 3.跨站请求伪造 4. SQL 注入 A. 将恶意脚本注入到受信任的网站中的攻击 B. 通过不安全的 Web 应用程序设计,旨在执行针对数据库的命令的攻击 C.一种常常涉及 Cookie 或密钥以获取未经授权的对计算机或服务访问的利用方法 D.强制用户在他们当前登录的网站或应用程序中执行不需要的操作的攻击
CADB