面试提升题库(更新中-)

安全运营

安全理解

★★★☆☆如何理解安全左移?

在传统的软件开发流程中,安全测试和评估通常在开发周期的后期进行,比如在测试阶段或部署前。然而,这种方法往往会导致在产品即将发布时才发现安全问题,从而增加了修复成本和风险。

安全左移(Shift-Left Security)是一种软件开发实践,其核心思想是将安全措施提前到软件开发生命周期(SDLC)的更早阶段。安全左移的目标是在软件开发的早期阶段,甚至是在编码之前,就开始考虑和实施安全措施。这样,潜在的安全问题可以在它们变得更加根深蒂固和难以修复之前被发现和解决。

★★★☆☆如何系统地制定漏洞相关指标?

营者层面漏洞管理的理想效果是“所有系统漏洞均应得到及时发现、及时处置”,其底线目标是“系统漏洞不被攻击者利用并产生危害影响”

01 资产覆盖率

此度量指标主要考察漏洞管理计划中资产覆盖面有无短板以及疏漏。

  • **管理覆盖面:**应该确定漏洞管理计划是否覆盖网络空间所有联网资产。除传统IT资产外,行业特有的如工控、物联网等专有资产,新兴技术如云、微服务、容器等,以及开发团队依赖的多个层面的开源组件等。
  • **资产数据标准:**资产库并非资产数据堆积,应建立资产数据标准,形成有标准的资产数据库,利于数据交换、数据共享,盘活资产数据。
  • **SBOM技术:**应形成软件物料清单SBOM,目前SBOM的主要安全用例是识别软件供应链中的已知漏洞和风险。可通过供应商申报、SAST、SCA等多种功能方式形成清单。SBOM可大幅度避免扫描,提升响应能力。
  • **扫描技术覆盖面:**扫描应覆盖所有资产类型和范围,避免形成扫描孤岛,可供选择的扫描技术有DAST、SAST、IAST、SCA等。重要资产可使用多品牌工具交叉扫描。

02 风险资产识别粒度

此度量指标考察对风险资产的识别能力和管理粒度。

  • **已不受厂家支持产品:**应识别并重点关注已经结束寿命的老旧系统、组件等。此类产品造成的隐患往往很大,原因或是厂家消失,或是厂家已不再针对该产品发布漏洞补丁、更新程序。
  • **P2P软件:**应识别网内运行的P2P软件。P2P软件往往会带来恶意代码安装、数据泄露、易受攻击、拒绝服务、感染病毒等风险。
  • **远程桌面共享:**识别并形成远程桌面共享资产清单。避免允许NetBIOS的传入流量(UDP 137和138、TCP 135-139和445)。监测TCP 3389(RDP)服务等。
  • **高危端口和服务:**应定义高危端口和服务列表,尤其是对互联网开放的端口和服务,重点关注其关联漏洞。监测允许远程会话的协议的所有公共端口,例如TCP 22(SSH)、TCP 23(Telnet)、TCP 3389(RDP)以及TCP 20和21(FTP)等。
  • **互联网暴露:**互联网暴露资产受攻击机率较大,应充分识别互联网暴露资产,建立暴露面资产清单。

03 检测能力完备程度

此度量指标考察漏洞检测能力。以此反映掌握漏洞态势的时效性能力。

  • **检测周期和频率:**应针对资产重要程度形成不同的周期性检测的机制,并可用自动化手段落实。
  • **检测场景:**应针对不同的检测场景,如资产存活、资产指纹、端口服务、漏洞等场景,或DevSecOps、暴露面监测等场景细化检测手段、检测策略、检测机制等。
  • **时效指标:**应形成每个场景的时效性量化指标。如单位资产(如100IP)的漏洞检测时间要在30分钟内完成,全网暴露面资产检测要在2个小时内完成。

04 漏洞数据管理分析能力

此度量考察漏洞数据质量管理、漏洞跟踪分析能力。

  • **多源异构漏洞归一化:**应具备漏洞数据标准,在标准化的基础上对多来源数据进归一化,方便统一分析管理,压缩减少漏洞数量。
  • **原始扫描数据清洗过滤:**应对扫描原始数据中的非风险、干扰性数据进行清洗过滤,筛选出有价值的漏洞数据,再次减少需要分析处置的漏洞数量。
  • **随时间变化平均漏洞数:**统计分析资产、系统、部门、组织整体的漏洞数量(级别、POC/EXP漏洞、关键漏洞)在生命周期过程中变化趋势,体现漏洞处置效果,掌握风险的态势,优化处置措施。
  • **随时间变化新增漏洞数:**统计分析新披露漏洞(级别、POC/EXP漏洞、关键漏洞)、增加新资产带来漏洞,优化新增漏洞处置措施。

05 优先级(VPT)应用程度

此度量考察对海量漏洞、关键漏洞风险管理能力。不同组织根据自身能力和管理要求选择不同的优先级方案。

  • **基于漏洞级别:**制定基于超危、高、中、低等不同级别的优先级措施,如超危、高危级别漏洞要优先处置。
  • 基于威胁情报关联的可利用漏洞:通过威胁情报关联漏洞,查看漏洞当时是否有POC/EXP。有POC/EXP漏洞可作为高优先级漏洞处置。
  • **基于实战化的关键漏洞列表:**基于CISA KEV、VKB关键漏洞列表的实战化漏洞,作为优先处置对象。大型组织中,经过数据清洗过滤、关联POC/EXP后,待处理漏洞仍然是海量的,可把此类漏洞作为关键风险优先处置。
  • **基于多属性决策算法:**多属性包括了资产各类属性、漏洞各类属性、情报各类属性、生命周期管理各类属性,可作为 VPT风险计算因子。

06 整改措施完备性

此度量考察漏洞处置、风险控制手段的丰富性及管理能力。

  • **补丁数量:**在给定时间范围内应用补丁数量,帮助改进补丁管理策略。
  • **缓解措施数量:**使用缓解措施的漏洞数量,条件满足时升级设备或应用更新补丁。
  • **网关防御措施数量或虚拟补丁数量:**无法升级或无法及时升级补丁、使用缓解措施情况下,使用IPS、WAF等网关防御措施进行风险缓解的漏洞数量。

07 关闭漏洞百分比

此度量考察成功处置漏洞的结果,体现阶段性漏洞处置成果。

  • **基于漏洞总数:**以漏洞总数作为基数,关闭状态漏洞占漏洞总数的百分比。某些行业或企业会以漏洞总数修复率为考核管理要求。
  • **基于漏洞级别:**已关闭漏洞级别数量占该漏洞级别总数的百分比。某些行业以超危、高危漏洞的修复率作为漏洞管理人员的考核指标。
  • **基于资产权重:**以资产权重作为漏洞修复的前置条件,资产权重作为优先级VPT的计算因子。
  • **SLA或考核指标:**基于行业、企业监管或管理要求而关闭的漏洞数量。根据可用的时间和资源评估修复的有效性。

08 响应时效性

此度量考察漏洞响应的及时性。

  • **漏洞捕获时间:**从情报、爬虫中获取漏洞信息的时间。
  • **预警时间:**组织内发布预警信息的时间。
  • **网内排查时间:**漏洞的影响范围,受影响资产定位所需时间。风险越长,受攻击几率越大,风险越高。方式有人工排查、扫描工具扫描、SBOM清单关联等。
  • **处置时间:**受影响资产上漏洞的处置的时间,或处置的时间要求。

09 漏洞复现率

此度量考察漏洞修复的成功率。

  • **漏洞复现率:**加固措施不到位、补丁没有完全修复等导致漏洞在关闭后重新被检测到。复现率为复现漏洞数量占关闭漏洞数量百分比。

10 运营管理完备程度

此度量考察漏洞管理体系的健全程度,漏洞运营管理能力成熟度。

  • **闭环流程:**是否具备生命周期闭环流程管理能力。
  • **专职人员:**是否配置专门的人员。
  • **部门协同度:**闭环流程中涉及部门的参与、配合程度。包括与上级监管单位、外部漏洞收录组织、情报组织、服务单位的协同。
  • **系统协同度:**闭环流程中涉及到的工具、系统、平台间API接口打通、数据共享程度。
  • **运营制度:**是否有健全的漏洞管理运营制度。
  • **考核办法:**是否有可落实的考核指标和管理办法。 (以上内容按照理解根据面试实际回答)

★★★☆☆SDL和DevSecOps有何差异?

帮助开发人员构建更安全的软件和解决安全合规要求的同时降低开发成本的软件开发过程

SDL的核心理念就是将安全考虑集成在软件开发的每一个阶段:需求分析、设计、编码、测试和维护。从需求、设计到发布产品的每个阶段每都增加了相应的安全活动,以减少软件开发过程中产生的漏洞数量,在上线前将安全风险降到最低。

相对于SDL,DevSecOps不再是一个单纯的安全开发模型,它所强调的是人人为安全负责,人人参与安全,安全嵌入到开发到运维的每个阶段

从角色角度,安全团队不再置身于业务之外,也不再是安全团队兜底安全,安全是一个开发、安全、运维一起协作的过程。

而DevSecOps强调的是:

  • 人人为安全负责,人人参与安全构建
  • 自动化工具,将安全嵌入到开发到运维的每个阶段
  • 进一步的流程融入,加强不同团队间的协作

在不同阶段需要开展不同的安全工作,都需要不同的工具支撑。

我们就可以看到在软件发布运行一段时间后,才发现的漏洞,需要运维,发布的介入,修复成本大量上升,给企业带来相当大的风险和成本压力,若漏洞已被黑客发现或利用,造成的损失和影响将更大。

而在研发阶段,发现的漏洞可以由开发直接修复,成本低,效率高。

所以越早发现漏洞问题,修复成本越低

安全规范

★★★☆☆ 安全规范的意义是什么?

避免持续不断的发现漏洞、应急漏洞,⽽是为了让不出现漏洞建⽴各种规范。就像是交通法规不是为了限制路权,是为了保障⼈身财产安全。安全规范绝不是消灭代码的创造性、优雅性,⽽是限制过度灵活,推⾏标准化,以⼀种共识去写代码,提升效率。

安全解决⽅案

★★☆☆☆ 如何规避绕⼝令带来的⻛险?

(一)根据账号重要程度设置密码 根据账号重要程度和网站知名程度,应该分别设置通用密码和重要密码。

(二)设置通用密码但不相同 为防止通用密码被“撞库”攻击,又避免过多的密码容易遗忘,建议在设置密码时采用“通用密码”+“自设标志”的习惯方式进行。

(三)密码设置建议 如何设置密码才比较安全和便于记忆呢,推荐大家可以用自己喜欢的单词、数字、特殊字符等,创建自己独有的一种编码缩写形式,采用混合组合方式创建。

★★★☆☆ 硬编码密钥有何⻛险以及如何系统解决?

方案1:使用RSA加密保存

方案很简单,使用RSA的私钥进行加密,RSA的公钥写死在客户端里,使用的时候使用RSA进行一次解密操作。

优点: 简单容易实现,一般项目里都需要使用非对称的加密方法,利用公开的秘钥做一次解密。 缺点: 如果知道了算法很容易破解。

方案2:使用Base64进行编码,再保存

对秘钥进行Base64编码,然后再解码。

方案3:使用AES再次加密

再使用一次对称加密,两次不要使用相同的秘钥

方案4:自定义方案

下面给一个方案,对数据进行变形。算法如下:

  1. 对每一个字节做一次循环右移
  2. 对每一个字节用一个表的数据做位异或操作
  3. 转为16进制数

推荐方案5: 随机+固定

  1. 本地固定使用一段随机数16字节,使用上面的方法或自定义方法做一层变换后再存储。
  2. 启动后随机生成16字节的数据,持久化到本地(可以保存到keychain里)。后面如果有保存就直接使用。
  3. 两个做拼接后生成32字节作为对称秘钥。

好处:

  1. 秘钥是每个设备随机生成的,所以拿到固定秘钥和算法不会影响其他设备。
  2. 两段进行拼接加大了相关破解的难度

缺点:

  1. 首次读取持久化的秘钥有一定耗时
  2. 能破解一定能破解

最后

目前没有安全的方法保存秘钥,除非使用硬件来解决(后台的加密机使用的就是硬件,秘钥放在芯片里),所以本地保存数据需要遵循:

  1. 需要长久更安全的保存,使用keychain的方式保存
  2. 不要保存敏感信息,如果要保存需要先做脱敏
  3. 任何时候都不要保存密码

★★★★☆ 0day漏洞如何防御

一、防护0day的总体思路

“0day不可知,漏洞利用可防”原则

0day漏洞的未知性决定了无法完全预测,但其利用行为(如异常内存操作、提权行为、异常SQL查询)可被检测和阻断。

防护关键思路
  1. 立体防御:结合边界、主机、网络多层防护。
  2. 分层检测:通过行为分析、WAF、EDR、沙箱多点检测。
  3. 最小化攻击面:减少可被攻击的入口。
与已知威胁防护体系结合的必要性

0day防护需与现有安全体系整合,复用WAF、SIEM等基础设施,降低部署成本。

二、演练中防护0day的重点措施

4.1 减小攻击面
  • 系统与软件最小化安装:仅安装必要服务和组件,如禁用Windows SMBv1协议。

  • 严格的补丁管理与替代方案:定期检查补丁,优先应用高危漏洞补丁。无补丁时,使用虚拟补丁(如WAF规则)。

    • 示例:WAF规则拦截SQL注入:

      location / {
      if ($args ~* "(\b(union|select|insert|delete|update|drop|truncate|exec)\b)") {
      return 403;
      }
      }
  • 高危服务、组件的关闭与隔离:禁用不必要的服务(如RDP),隔离高危组件。

4.2 增强检测与阻断能力

  • 行为检测弥补特征缺失:监控异常SQL查询、文件上传、权限提升行为。

    • 示例:WAF检测任意文件上传:

      rule file_upload_suspicious {
      condition: request.content_type contains "multipart/form-data" and request.body contains "php|asp|jsp"
      action: block
      }
    • 示例:EDR检测异常PowerShell执行:

      rule powershell_suspicious {
      condition: process.name == "powershell.exe" and process.command_line contains "invoke|script"
      action: alert
      }
  • EDR/主机防护系统:部署EDR(如CrowdStrike、SentinelOne)拦截可疑行为。

  • 威胁情报与沙箱联动:通过沙箱分析未知文件,结合威胁情报快速识别0day攻击。

Web系统0day防护具体措施
  1. SQL注入防护

    • 使用参数化查询或ORM框架(如SQLAlchemy)避免动态SQL拼接。

      # 安全示例
      from sqlalchemy import create_engine, text
      engine = create_engine("mysql://user:pass@localhost/db")
      result = engine.execute(text("SELECT * FROM users WHERE id = :id"), {"id": user_input})
    • 部署WAF过滤高危SQL关键字(如UNION、SELECT)。

  2. RCE防护

    • 限制危险函数(如eval、exec)使用,启用代码沙箱。

    • 监控异常进程启动,如PHP执行system()调用。

      # 使用auditd监控异常命令
      auditctl -w /bin/sh -p x -k suspicious_exec
  3. 未授权访问/权限绕过防护

    • 严格验证用户身份和权限,检查请求中的JWT或Session有效性.

      # Flask权限验证示例
      from flask import request, abort
      def check_permission():
      token = request.headers.get('Authorization')
      if not validate_token(token):
      abort(403, description="Unauthorized")
    • 检测异常URL访问模式,如直接访问/admin路径。

  4. 任意文件上传防护

    • 限制上传文件类型和大小,验证文件头。

      # Python文件上传验证
      def validate_upload(file):
      allowed_types = ['image/png', 'image/jpeg']
      if file.content_type not in allowed_types:
      raise ValueError("Invalid file type")
      if len(file.read()) > 1024 * 1024: # 限制1MB
      raise ValueError("File too large")
    • 保存上传文件到非Web根目录,禁用执行权限。

  5. 任意文件读取防护

    • 禁止路径穿越,过滤../和./字符。

      # 路径穿越过滤
      import os
      def safe_path(path):
      base_dir = "/var/www/uploads"
      abs_path = os.path.abspath(os.path.join(base_dir, path))
      if not abs_path.startswith(base_dir):
      raise ValueError("Invalid path")
      return abs_path
    • 限制Web服务器访问范围,如Nginx配置:

      location / {
      root /var/www/html;
      deny all;
      }

4.3 强化内网隔离与纵深防御

  • 分段分域设计:通过VLAN划分网络区域,限制攻击者横向移动。
  • 最小权限原则:为用户分配最低权限,减少0day提权影响。
  • 多因素认证与堡垒机:对关键资产启用MFA,堡垒机记录操作日志。

4.4 应急响应与快速处置

  • 异常行为监控:实时监控网络流量和主机行为。

    • 示例:使用Zeek检测异常流量:

      zeek -r capture.pcap -e "http.request"
  • 日志审计与取证:通过SIEM(如Splunk)分析日志,溯源攻击。

  • 快速封禁:隔离可疑主机/账号,防止进一步渗透。

三、借助外部能力:情报与合作

  • 威胁情报实时更新:订阅外部情报(如FireEye、Talos)获取0day预警。
  • 与安全厂商协作:与厂商共享0day样本,提升响应速度。
  • 红蓝对抗验证:通过红蓝对抗发现防护薄弱点。 0day防护需持续演进,攻防演练是检验防护能力的试金石。企业应重视演练后的整改与投入,构建多层次防御体系。

0day的有以下几种类型

常见0day漏洞类型

  1. 内核漏洞:如Windows内核提权漏洞,攻击者可通过本地提权获得系统权限。
  2. 浏览器漏洞:如Chrome、Edge的V8引擎漏洞,常用于水坑攻击或恶意网页。
  3. 第三方组件漏洞:如Apache Log4j漏洞,广泛存在于供应链中。
  4. 硬件固件漏洞:如UEFI固件漏洞,难以检测和修复。
  5. Web系统漏洞
    • SQL注入:通过未过滤的输入构造恶意SQL语句,窃取数据或提权。
    • 远程代码执行(RCE):利用代码执行漏洞运行任意代码。
    • 未授权访问/权限绕过:绕过认证逻辑访问受限资源。
    • 任意文件上传:上传恶意文件导致代码执行或后门植入。
    • 任意文件读取:读取敏感配置文件或系统文件。

攻击者利用0day的典型链路

  1. 漏洞挖掘
    • 接口Fuzz:通过自动化工具(如Burp Suite、AFL)对Web接口进行模糊测试,发现参数处理漏洞。
    • 代码审计:分析开源或泄露的Web应用源码,寻找逻辑漏洞或不安全函数。
  2. 漏洞打包:将漏洞封装为可执行的Exploit,结合混淆技术规避检测。
  3. 定向投放:通过钓鱼邮件、水坑攻击等方式投递。
  4. 后门植入:利用漏洞执行恶意代码,植入持久化后门。