首页 > 其他分享 >从过去5年CWE TOP 25的数据看软件缺陷的防护

从过去5年CWE TOP 25的数据看软件缺陷的防护

时间:2023-09-18 15:08:22浏览次数:46  
标签:25 TOP 斜率 软件缺陷 2019 2023 CWE

作者: Uncle_Tom

原文链接:https://bbs.huaweicloud.com/blogs/410171


1. 前言

2023年的 CWE 危险性最高的安全缺陷已经公布:《2023年最具威胁的25种安全漏洞(CWE TOP 25)》, 这对于安全防护人员、代码检查工具的开发人员非常重要。从2019年开始,CWE 已经连续5年发布了 CWE TOP 25,我们可以从过去5年CWE TOP 25 的变化趋势,去寻找高危安全漏洞的发展趋势,为安全政策和投资决策提供指引。

大家需要注意,美国国家缺陷漏洞库(NVD)Top 25 每年的数据的统计方式都存在很大的变动,这主要原因包括:每年报告的漏洞类型、重新映射策略的更改、在 CWE 映射视图中添加新的 CWE 条目等。因此,由于数据偏差,排名的可靠性存在一定偏差。例如,数据中增加一些 CVE 可能会极大地改变 CWE 在 排名之间的位置。 这个问题也是我们在前面关于CWE定义分类并非完全正交性的讨论中,一直探讨的问题,正是由于这个问题的存在,使CVE在CWE归属的问题上存在歧义,由此可能导致最终数据的偏差。

另外作为防御方,并不能仅仅关注TOP 25 的问题,而需要关注更为广泛的安全问题,例如前40名,甚至前100名的安全问题。因为作为防御方,整体的防御能力取决于防御的最短板。正如我经常举的例子:进攻方是拿一个针,在你系统的各个方面扎来扎去,只要有一个薄弱点,就会使系统被攻破。作为防御方,必须了解整个系统防御体系的每一个弱点,并采取防御手段,投入的成本远高于进攻方。

2. CWE TOP 25数据分析策略

为了更全面的了解CWE TOP 25的变动趋势,我们先得到2019 到 2023年CWE TOP 25 的数据;同时尽可能的降低统计数据给我们带来的数据偏差的干扰,我们将分析数据扩大到TOP 40。这个数据可以从CWE的网页:View historical rank data 得到。

2.1. 2019 -2023 CWE TOP 25 数据

CWE ID

CWE描述

2019

2020

2021

2022

2023

斜率

变动趋势

CWE-787

Out-of-bounds Write 越界写入

12

2

1

1

1

-2.3

up

CWE-79

Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’) 在Web页面生成时对输入的转义处理不恰当(跨站脚本)

2

1

2

2

2

0.1

stable

CWE-89

Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’) SQL命令中使用的特殊元素转义处理不恰当(SQL注入)

6

6

6

3

3

-0.9

stable

CWE-416

Use After Free 释放后使用

7

8

7

7

4

-0.7

stable

CWE-78

Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’) OS命令中使用的特殊元素转义处理不恰当(OS命令注入)

11

10

5

6

5

-1.6

up

CWE-20

Improper Input Validation 不正确的输入验证

3

3

4

4

6

0.7

stable

CWE-125

Out-of-bounds Read 越界读取

5

4

3

5

7

0.5

stable

CWE-22

Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’) 对路径名的限制不恰当(路径遍历)

10

12

8

8

8

-0.8

stable

CWE-352

Cross-Site Request Forgery (CSRF) 跨站请求伪造(CSRF)

9

9

9

9

9

0

stable

CWE-434

Unrestricted Upload of File with Dangerous Type 危险类型文件的不加限制上传

16

15

10

10

10

-1.7

up

CWE-862

Missing Authorization 授权机制缺失

36

25

18

16

11

-5.9

rapid_ascent

CWE-476

NULL Pointer Dereference 空指针解引用

14

13

15

11

12

-0.6

stable

CWE-287

Improper Authentication 认证机制不恰当

13

14

14

14

13

0

stable

CWE-190

Integer Overflow or Wraparound 整数溢出或超界折返

8

11

12

13

14

1.4

stable

CWE-502

Deserialization of Untrusted Data 不可信数据的反序列化

23

21

13

12

15

-2.5

up

CWE-77

Improper Neutralization of Special Elements used in a Command (‘Command Injection’) 在命令中使用的特殊元素转义处理不恰当(命令注入)

30

31

25

17

16

-4.2

rapid_ascent

CWE-119

Improper Restriction of Operations within the Bounds of a Memory Buffer 内存缓冲区边界内操作的限制不恰当

1

5

17

19

17

4.6

rapid_decline

CWE-798

Use of Hard-coded Credentials 使用硬编码的凭证

19

20

16

15

18

-0.7

stable

CWE-918

Server-Side Request Forgery SSRF) 服务端请求伪造(SSRF)

32

27

24

21

19

-3.2

rapid_ascent

CWE-306

Missing Authentication for Critical Function 关键功能的认证机制缺失

38

24

11

18

20

-4.2

rapid_ascent

CWE-362

Concurrent Execution using Shared Resource with Improper Synchronization (‘Race Condition’) 使用共享资源的并发执行不恰当同步问题(竞争条件)

31

34

33

22

21

-3.2

rapid_ascent

CWE-269

Improper Privilege Management 特权管理不恰当

24

22

29

29

22

0.3

stable

CWE-94

Improper Control of Generation of Code (‘Code Injection’) 对生成代码的控制不恰当(代码注入)

18

17

28

25

23

1.8

stable

CWE-863

Incorrect Authorization 授权机制不正确

35

29

38

28

24

-2.3

up

CWE-276

Incorrect Default Permissions 默认权限不正确

19

20

25

3

down

CWE-617

Reachable Assertion 可访问断言

26

CWE-427

Uncontrolled Search Path Element 不受控制的搜索路径元素

34

27

27

-3.5

rapid_ascent

CWE-611

Improper Restriction of XML External Entity Reference XML 外部实体引用限制不当

17

19

23

24

28

2.7

down

CWE-770

Allocation of Resources Without Limits or Throttling 无限制或未控制地分配资源

39

40

29

-3.64

rapid_ascent

CWE-200

Exposure of Sensitive Information to an Unauthorized Actor 将敏感信息暴露给未经授权的参与者

4

7

20

33

30

7.8

rapid_decline

CWE-732

Incorrect Permission Assignment for Critical Resource 关键资源的权限分配不正确

15

16

22

30

31

4.6

rapid_decline

CWE-601

URL Redirection to Untrusted Site (‘Open Redirect’) URL 指向未可信站点的URL重定向(开放重定向)

34

35

37

35

32

-0.4

stable

CWE-1321

Improperly Controlled Modification of Object Prototype Attributes (‘Prototype Pollution’) 对象原型属性的不当控制修改(原型污染)

34

33

-1

stable

CWE-295

Improper Certificate Validation 证书验证不正确

25

28

26

26

34

1.6

stable

CWE-522

Insufficiently Protected Credentials 凭据保护不足

28

18

21

38

35

3.4

rapid_decline

CWE-401

Missing Release of Memory after Effective Lifetime 使用后内存未释放(内存泄露)

32

32

36

36

1.6

down

CWE-400

Uncontrolled Resource Consumption 不受控制的资源消耗

20

23

27

23

37

3.4

rapid_decline

CWE-639

Authorization Bypass Through User-Controlled Key 通过用户控制密钥绕过授权机制

38

CWE-59

Improper Link Resolution Before File Access (‘Link Following’) 在文件访问前对链接解析不恰当(链接跟随)

40

31

37

39

0.3

stable

CWE-668

Exposure of Resource to Wrong Sphere 将资源暴露在错误的领域

32

40

8

rapid_decline

我们将这些数据通过折线图表示,如下图:

从过去5年CWE TOP 25的数据看软件缺陷的防护_数据

这个图看起来有些乱,不便于我们找到一些规律,于是我们采用下面的方法,对缺陷排名做个数据分析。

2.2. 斜率

将一个CWE的历年的排名作为纵坐标,将从2019到2023年做为横坐标,通过拟合横坐标和纵坐标形成的点图,可以通过线性拟合的方式得到一条斜线,这条拟合线可以用公式表示:

y = bx + a

其中, b 为数据点的线性回归线的斜率,斜率为垂直距离除以线上任意两个点之间的水平距离,即回归线的变化率。斜率越大可以说明变动越大。

斜率可以通过下面的公式求得:

从过去5年CWE TOP 25的数据看软件缺陷的防护_转义_02

这里我们可以利用excle 表格中的 SLOPE 函数求得。计算结果见上表的"斜率"一列。

  • 注意:
  • 斜率为正数:名次变大,表示下降;正的越多,表示下降的越快;
  • 斜率为负数: 名次变小,表示上升;负的越多,表示上升的越快;
  • 斜率为零:名次没有变化。

2.3. 变动趋势

为了衡量斜率波动的大小,我们通过标准差(σ)的范围来衡量波动的大小。标准差可以测量值在平均值(中值)附近分布的范围大小。计算公式如下:

从过去5年CWE TOP 25的数据看软件缺陷的防护_数据_03

这个我们也可以借助excel 的 STDEV 函数求得标准差:

σ = 3.11917143

以及斜率的平均值:

avg = 0.064661654

然后我们再将斜率按间隔: 0.5, 统计各个值段的频次,再利用excle 的 NORMDIST 函数, 得到指定平均值和标准偏差的正态分布函数。

  • NORMDIST 函数定义为:NORMDIST(x,mean,standard_dev,cumulative)
  • NORMDIST 函数语法具有下列参数:
  • X, 必需。 需要计算其分布的数值;
  • Mean, 必需。 分布的算术平均值;
  • standard_dev, 必需。 分布的标准偏差;
  • cumulative, 必需。 决定函数形式的逻辑值。 如果 cumulative 为 TRUE,则 NORMDIST 返回累积分布函数;如果为 FALSE,则返回概率密度函数。这里 我们使用cumulative 为 FALSE。
  • 通过计算得到下图:

从过去5年CWE TOP 25的数据看软件缺陷的防护_转义_04

  • 通过分析,我们发现:
  • σ = 3.11917143, CWE对应的斜率波动的范围在10名左右;
  • 0.5σ = 1.559585715,CWE对应的斜率波动的范围在5名左右。

由此我们给出了斜率波动幅度的衡量标准:

斜率波动幅度

斜率波动范围

解释

相对稳定(stable)

之间: -1.494924061 < 斜率 < 1.624247369

CWE变动(上升/下降)在5名以内,相对稳定(stable).

上升趋势(up)

-σ ~ -0.5σ:-3.054509776 < 斜率  -1.494924061

CWE上升5-10名,有上升趋势(up).

快速上升(rapid_ascent)

 -σ: 斜率 -3.054509776

CWE上升10名以上,有快速上升趋势(rapid_ascent).

下降趋势(down)

0.5σ ~ σ:1.624247369  斜率 < 3.183833084

CWE下降5-10名,有下降趋势(down).

快速下降(rapid_decline)

σ:斜率  3.183833084

CWE下降10名以上,有快速下降趋势(rapid_decline).

基于这个波动幅度,我们可以得到下表:

斜率波动

CWE数量

CWE百分比

相对稳定(stable)

17

42.50%

快速上升(rapid_ascent)

7

17.50%

快速下降(rapid_decline)

6

15.00%

上升(up)

5

12.50%

下降(down)

3

7.50%

新进

2

5.00%

总计

40

100.00%

从这个统计表,我们可以看到:

  • 相对稳定17个,占比42%,也就是大部分缺陷没有实质性的改变;
  • 上升5个,快速上升7个,占比30%,在过去的5年未得到有效的控制,特别是快速上升的缺陷更需要引起防范的注意;
  • 下降3个,快速下降6个,占比22.5%,说明过去5年通过大家的防御能力的提升,这些问题得到一定程度的控制;
  • 有2个今年新进入TOP 40,分别为26名的CWE-617:可访问断言, 以及38名的CWE-639:通过用户控制密钥绕过授权机制。

下面我们分别对这些区域进行分析,试图找到这些高位安全问题的变动趋势和根因。

3. 2019-2023 CWE TOP 25 相对稳定的缺陷

对于波动相对稳定的CWE,前40名里有17个CWE。为了使图能够看的更加清楚,图里只展示了CWE 在2023年CWE TOP 25 中的 13 个CWE。如下图:

从过去5年CWE TOP 25的数据看软件缺陷的防护_数据_12

在上图中一共有13个CWE,其中有10个CWE常年都维持在15名以内,波动的幅度较小。按CWE-1400 软件安全保障综合分类视图的分类,给出分类一栏的类别。

分类

CWE

2023年排名

CWE-1409:注入问题

CWE-79:在Web页面生成时对输入的转义处理不恰当(跨站脚本)

2

CWE-89:SQL命令中使用的特殊元素转义处理不恰当(SQL注入)

3

CWE-94:对生成代码的控制不恰当(代码注入)

23

CWE-1399:内存安全

CWE-416:释放后使用

4

CWE-125:越界读取

7

CWE-1406:不正确的输入验证

CWE-20:不正确的输入验证

6

CWE-1404:文件处理

CWE-22:对路径名的限制不恰当(路径遍历)

8

CWE-59:在文件访问前对链接解析不恰当(链接跟随)

39

CWE-1411:数据真实性验证不足

CWE-352:跨站请求伪造(CSRF)

9

CWE-1412:不良编码实践

CWE-476:空指针解引用

12

CWE-1396:访问控制

CWE-287:认证机制不恰当

13

CWE-798:使用硬编码的凭证

18

CWE-269:特权管理不恰当

22

CWE-601:指向未可信站点的URL重定向(开放重定向)

32

CWE-295:证书验证不正确

34

CWE-1415:资源控制

CWE-1321 对象原型属性的不当控制修改(原型污染)

33

这些稳定的CWE 大致可以分为3大类:

  • 外部输入导致:这类主要包括:CWE-20:不正确的输入验证、CWE-1409:注入问题、CWE-1404:文件处理、以及CWE-1411:数据真实性验证不足。这些问题是能够通过输入校验有效的避免这些问题的发生,同时静态检查工具也能通过污点分析方式,提供有效的排查帮助。
  • CWE-94:对生成代码的控制不恰当(代码注入)。由于ChatGpt的成功,更多的程序员开始使用AI辅助编程,已及今后由于大模型引起的开发模式的转变,程序员会更多的利用AIGC自动生成代码,自动生成代码的比例也会越来越大。如何通过静态检查工具增加对生成代码安全性的检测力度,以及如何利用大模型辅助静态检查,都会成为未来的静态检查的新兴课题。
  • 来自内部编程导致:这类主要包括:CWE-1399:内存安全、CWE-1412:不良编码实践、以及CWE-1415:资源控制。
  • 内存安全:缓冲去溢出(越界读、越界写、边界操作不当)一直是C语言的灵活性带来的副作用。依据微软的统计,Windows问题中的70,都是由于内存安全问题造成的。缓冲区溢出也一直是静态检查多年来未能有效解决的问题。工具在检查过程中,一方面需要记录内存分配的大小,还需要在使用时,对是否越界做出明确的判断。目前的工具多通过抽象解析,给出值域的判断,这种方法很多时候过于依赖代码中检查条件的判断,所以存在误报高的现象。通过符号执行并辅助约束求解的技术,能够在一定程度上提高分析的精度,降低误报。但这两个技术的使用会大幅度的降低分析工具的执行速度,无法达到应用级别的使用,只能非常有限的在工具中使用。程序员可以在编码过程中增强边界的检查意识,或通过代码增加对不确定边界的检查,来减低此类问题的发生。由于C语言一直存在的内存安全问题,这也是为什么不少企业在探索使用约束更多的rust语言来替代C语言的主要原因。
  • 内存泄露和空指针问题:静态分析工具可以通过状态机的方式,基本已经能够很好的予以解决。再配合动态测试,能够得到有效的得到控制。
  • 访问控制:这个问题涉及到权限的设计、分配、认证等控制。从检查上来看,需要给检查工具提供更多的信息,才能做出有效的判断。目前这类问题的检查主要聚焦于:默认的初始化设置、关键的提权函数的使用,以及最容易被攻击者利用的密码、密钥硬编码上,由于缺少更多的上下文的辅助信息,检查结果误报偏高。

这里我们再看下再过去5年中始终在TOP 25 中的高危漏洞,如下图。

从过去5年CWE TOP 25的数据看软件缺陷的防护_数据_13

和相对稳定的图相比,增加了5个CWE,这些变动主要是因为缺陷上升或下降的原因,变动的CWE 主要有:

  • CWE-787:越界写入。 从2019年的12名,2020年2的第二名,之后就一直居于第一名。
  • CWE-78:OS命令中使用的特殊元素转义处理不恰当(OS命令注入)。 从2019年,逐步上升到2023年的第5名。这也是一个常见的注入类问题。这个除了对输入做出校验以外,还应该更多的是在代码中减少系统命令的直接使用,而是通过系统函数的调用方式实现系统命令的功能,隔离对系统命令的直接使用。在检查工具上,已经能够比较充分的发现这类问题。相信通过静态分析工具的使用,这个缺陷会逐步减少。
  • CWE-434:危险类型文件的不加限制上传。 这个问题被划分在 CWE-1416:资源生命周期管理中。这个缺陷从2019年的第16名,到目前已经连续三年保持第10名。这个问题持续排在第十位,确实有些让人意外,从检查和防范上没有太大的难度,这只能说明开发人员缺乏一定的安全意识,未曾对此类问题做出防范。相信通过对开发人员代码安全的教育的普及,这类问题会快速下降。
  • CWE-502:不可信数据的反序列化。这个问题属于对CWE-1415:资源控制的问题。这些年数据处理变得越来越重要,这个也给攻击者提供了一种通过构反序列化造数据,来绕过对数据安全检查的攻击方式。持续发现的Appache Siro、weblogic、tomcat、Jackson,Fastjson等一系列漏洞也说明了这一问题的风险。从防范上还是要坚持对外部数据的合法、有效性检测。
  • CWE-119:内存缓冲区边界内操作的限制不恰当。从2019年的第一名,逐年降低到2023年的第17名。看来是可以通过重视和增加检查来有效的避免此类问题的发生。
  • 过去5年持续在CWE TOP 25 中的这16个高危安全问题,我们需要在编码、检查和防御过程中引起高度的重视,可以说是重中之重。

4. 2019-2023 CWE TOP 25 增长趋势的缺陷

从过去5年CWE TOP 25的数据看软件缺陷的防护_数据_14

这些CWE的增长速度基本在 5 到 10 名之间。这些CWE 有:

  • CWE-787:越界写入。 从2019年的12名,2020年2的第二名,之后就一直居于第一名。
  • CWE-78:OS命令中使用的特殊元素转义处理不恰当(OS命令注入)。从2019年,逐步上升到2023年的第5名。
  • CWE-434:危险类型文件的不加限制上传。从2019年的第16名,到目前已经连续三年保持第10名。
  • CWE-502:不可信数据的反序列化。从2019年的23名,逐步上升到2022年的最高点12名,2023年回落到15名。
  • CWE-863:授权机制不正确。从2019年的35名,逐步上升到今年终于进入前25名的第24名。
  • 对于这五个处于上升阶段的CWE缺陷,已经在前面的"相对稳定"和"始终在前25"的讨论中涉及,就不再一一解读。

5. 2019-2023 CWE TOP 快速增长的缺陷

从过去5年CWE TOP 25的数据看软件缺陷的防护_斜率_15

这些CWE的排名在过去的5年中,基本上增长超过了10名。这些CWE有:

  • CWE-862:授权机制缺失。从2019年的36名,一路上升到2023年的11名,上升25名。
  • CWE-77:在命令中使用的特殊元素转义处理不恰当(命令注入)。从2019年的30名,上升到2023年的16名,上升14名。
  • CWE-918:服务端请求伪造(SSRF)。从2019年的32名,一路上升到2023年的19名,上升12名。
  • SSRF是一种由攻击者构造形成由服务端发起请求的一个安全漏洞,大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。对于静态分析,能做的有限。
  • CWE-306:关键功能的认证机制缺失。从2019年的38名,快速上升到2021年的11名,这两年逐步回落到2023年的20名,上升18名。
  • CWE-362:使用共享资源的并发执行不恰当同步问题(竞争条件)。从2019年的31名到2021年的33名,这两年快速上升到21名,上升12名,进入到TOP 25。
  • 随着并发的普遍使用,竞争条件会成为静态检查除内存安全之外的另一个挑战。
  • CWE-427:不受控制的搜索路径元素。从2021年的34名,上升到2023年的27名。
  • CWE-770:无限制或未控制地分配资源。从2020年的39名到2022年跌出前40,2023年却突然上升到29名,上升10名。

6. 2019-2023 CWE TOP 下降趋势的缺陷

从过去5年CWE TOP 25的数据看软件缺陷的防护_数据_16

这些CWE的下降的速度基本在 5 到 10 名之间。这些CWE 有:

  • CWE-276:默认权限不正确。从2021年的19名,降到2023年的25名。只要在安全意识上足够重视,这类安全问题会进一步下降。
  • CWE-611:XML 外部实体引用限制不当。从2019年的17名,降到2023年的28名,跌出了TOP 25。这可能是在解析xml时,做了默认设置和限制,同时这些年json的使用,也分流了一部分xml的使用。
  • CWE-401:使用后内存未释放(内存泄露)。从2021年的32名,降到了2023年的36名。工具检测技术的成熟,对这类问题的减少也起到了一定的作用。

7. 2019-2023 CWE TOP 快速下降的缺陷

从过去5年CWE TOP 25的数据看软件缺陷的防护_斜率_17

这些CWE的排名快速下降,下降的速度基本在 10 名以上。这些CWE 有:

  • CWE-119:内存缓冲区边界内操作的限制不恰当。从2019年的第一名,逐年降到2023年的第17名,下降了17名。
  • CWE-200:将敏感信息暴露给未经授权的参与者。从2019年的第4名,逐年降到2023年的30名,下降26名。各国隐私保护法的实施起到了很大的推动作用。
  • CWE-732:关键资源的权限分配不正确。从2019年的15名,逐步降到2023年的31名,下降16名。也是一个访问控制问题。
  • CWE-522:凭据保护不足。从2019年的28名,在2020年上升到18名后,逐步下降到2023年的35名。也是一个访问控制问题。
  • CWE-400:不受控制的资源消耗。从2019年的20名,降到2023年的37名,下降17名。属于CWE-1416:资源生命周期管理问题。
  • CWE-668:将资源暴露在错误的领域。从2022年的32名,降到2023年的40名。属于CWE-1403:资源泄露。

8. 总结

  • 分析了CWE TOP 25 从2019 到2023年CWE 的变动;
  • 外部输入校验、访问控制问题、注入问题、内存安全是过去5年的主要安全问题,并会在今后的一段时间持续,特别需要注意在5年中一直都在TOP 25中的16类问题;
  • 需要特别关注快速增长的安全问题:CWE-918:服务端请求伪造(SSRF)、CWE-362:使用共享资源的并发执行不恰当同步问题(竞争条件);
  • 由于代码生成的快速应用,需要重点关注:CWE-94:对生成代码的控制不恰当(代码注入);

9. 参考

标签:25,TOP,斜率,软件缺陷,2019,2023,CWE
From: https://blog.51cto.com/u_15744961/7510792

相关文章

  • CF1825A
    CF1825A题目给你一个回文字符串,找出里边长度最大的非回文字符串子串并输出长度,如果没有则输出\(-1\)输入t\((1\let\le50)\)个测试样例,每个样例长度\(\le1000\)输出每行输出最长非回文字符串子串长度,如果没有就输出\(-1\)分析观察得出如果有答案,那么最长子串一定......
  • 推荐收藏!年度Top20开源许可证风险等级
    开源许可现状开发人员经常在软件中引入开源的代码片段、函数、方法和操作代码。因此,软件代码中经常会包含各种声明不同许可证的子组件。这些子组件的许可证条款和条件与项目整体主许可证的条款和条件冲突时,就会产生许可证合规风险。Synopsys2023OpenSourceSecurityandRisk......
  • 每天一个linux命令(44)0:top命令
    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,to......
  • 题解 LOJ2549【[JSOI2018] 战争】
    problem给你两个平面凸多边形\(A,B\),\(Q\)次询问,每次询问是一个向量\(\vecv\),回答\(A\)与\(B+\vecv\)是否有交。\(n,Q\leq10^5\)。solution观察闵可夫斯基和(Minkowskysum)的定义,若将这个运算定义为\((*)::[Point]\to[Point]\to[Point]\),则满足:\[A*B=\{......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第二周学习笔记
    202113252023-2024-1《信息安全系统设计与实现(上)》第二周学习笔记 一、任务要求自学教材第九章,提交学习笔记(10分)本章是复习C语言中的文件操作内容,结构化从文本文件操作,二进制文件操作两个大内容考虑,以前可能只关注文本文件的操作,我们以后更多的是操作二进制文件。文本文......
  • 每天一个linux命令(44):top命令
    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,to......
  • Linux top命令的用法详细详解
    首先介绍top中一些字段的含义: VIRT:virtualmemoryusage虚拟内存1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量RES:residentmemoryusage常驻内存1、进程当前使用的内存大小,......
  • Linux top命令详解
    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器top参数详解第一行,任务队列信息,同uptime命令的执行结果系统时间:07:27:05运行时间:up1:57min,当前登录用户: 3user负载均衡(uptime) loadaverage:0.00,0.0......
  • P2501 [HAOI2006] 数字序列
    先来看第一问。发现直接做要考虑两数中间的数能否变得合法,所以按套路将\(a_i\)减去\(i\),这样就只要变成单调不降,只要两数合法中间的数就一定能变得合法。考虑不改变的那些数,它们一定单调不降,所以答案就是序列总长度减去最长不下降子序列的长度。接下来看第二问,尝试观察一些性......
  • abc253F - Operations on a Matrix
    F-OperationsonaMatrix初看起来感觉不是很好搞,主要是有赋值操作,我们需要知道的是最近一次在这个行上的赋值操作以及之间的贡献那么我们离线处理,每个3操作都往前找一个最近的同行2操作,然后两个做差就能得到中间的和。#include<algorithm>#include<cstdio>#include<cstrin......