软件编程的24宗罪总结

一、Web应用程序漏洞

(一)sql注入漏洞

   1、发生方式:字符串拼接查询sql,攻击者伪造数据操作查询数据库从而带来危险。存储过程也可能出现这个问题。

   2、查找模式:

        1)、接收用户输入

        2)、没有检查用户输入有效性

        3)、使用用户输入查询数据库

        4)、使用字符串拼接或字符串替换构造sql语句,或者使用类似于SQL exec方法执行sql查询。

3、测试技巧

    1)、使用sql保留字作为输入,如果得到了不正常的返回信息,则可能存在sql漏洞。

    2)、工具扫描

4、解决方案

    1)、校验所有输入

    2)、使用prepare语句(参数化查询,占位符或者绑定)构造sql语句

    3)、不允许访问表,只允许访问存储过程和视图

(二)、XSSXSRF和响应拆分(服务器端)

     1、类型分类

        1)、基于DOMXSS漏洞

        2)、反射型XSS漏洞:输入回显

        3)、持续XSS漏洞:恶意代码存储在应用程序中

        4)、HTTP响应拆分,RS漏洞:将恶意代码插入到http标题中

        5)、跨站点请求:

     2、查找模式

        1)、web应用程序从HTTP实体中获取输入

        2)、没对输入检查

        3)、HTML或者HTTP标题中数据回显给浏览器

     3、测试技巧

        1)、恶意构造数据看浏览器是否回显

     4XSS弥补措施

        1)、确保输入有效:正则校验

        2)、对输出编码

        3)、对于标题的输入,必须删除CRLF组合

     5XSRF弥补措施

        1)、给web客户端和服务器会话添加密钥值,这个值不包含在cookie

        2)、超时机制的设置

        3)、使用POST代替GET

(三)、客户端XSS漏洞

     1、类型分类

        1)、gadgetwidget

        2)、静态HTML页面

     2、测试技巧

        1)、随机XSS片段注入输入流  

3、弥补措施

    1)、不要相信输入

    2)、用安全结果代替不安全结构

(四)、Magic URL、可预计的cookie以及隐藏表单字段

1、类型分类

    1)、Magic URL:在utl中暴露id等信息且加密不好

    2)、可预计的cookie:比如cookie自动递增,有规律可循

    3)、隐藏的表单字段:view source是可以看到的,用户就可以创建恶意信息

2、查找模式

        1)、应用程序从cookieHTTP标题、表单或者URL中读取敏感信息

        2)、数据用于对安全、信任或者认证进行决策

        3)、数据是通过不安全或者不可信的通道进行传递的

3、 测试技巧

        1)、fiddler抓包

        2)、其它软件抓包

4、对于MagicURL以及隐藏表单的弥补措施

        1)、数据加密

        2)、信道加密

        3)、随机数(防预测)

        4)、MAC(消息验证码)对比,放置改数据

二、实现漏洞

(五)、缓冲区溢出

      1、分类

         1)、堆溢出

         2)、栈溢出

         3)、数组溢出(变体)

      2、查找漏洞模式

         1)、输入

         2)、向程序内部结构传递数据

         3)、不安全的字符串处理调用

         4)、使用算数运算计算空间分配大小或者剩余缓冲区大小

      3、测试技巧

         1)、Fuzz测试

         2)、在输入中查找长度为用户指定数值的内容,然后改变长度

      4、弥补措施

         1)、替换危险的字符串处理函数

         2)、审计分配操作

         3)、检查循环和数组访问

       4)、分析工具使用

       5)、其它

(六)、格式化字符串(c/c++常见)

      1、查找模式

        1)、应用程序接受了一个格式化的函数

      2、测试技巧

        1)、向应用程序床底格式化说明符,看是否返回16进制数值

      3、弥补措施

        1)、不要向格式化函数直接传递用户输入

(七)、整数溢出

      1、查找模式

1)、提供算数运算都可能出现

      2、测试技巧

        1)、加减导致数值符号变化的临界点

      3、弥补措施

        1)、尽可能使用无符号数

        2)、检查整数

        3)、明确的类型转换

        4)、使用安全类

(八)、命令注入:命令和数据放一起容易发生命令注入

       1、查找漏洞模式

         1)、命令和数据内连放在一起

         2)、数据有可能被当做命令来处理,通常某些字符具有特殊含义,比如分号和逗号

         3)、运行命令的进程在另一个系统上,或者通过命令获取的控制权限大于用户应该拥有的权限

       2、测试技巧

         1)、检查输入,确定它会传给哪种命令外壳,然后使用每种元字符检查是否有问题

         2)、程序构造包含元字符的输入依次检验

       3、弥补措施

         1)、检查数据是否合法

         2)、数据不合法采取适当的措施

         3)、使用最小权限运行应用程序

(九)、未能正确的处理错误

       1、错误类型

         1)、产生太多的信息:在告知用户的时候透露了系统信息

         2)、忽略了错误:产生了错误但是没有处理

         3)、曲解了错误:对于返回值没有正确理解,比如返回值含义搞错了

         4)、使用了无用的返回值

         5)、使用了无错误的返回值

       2、查找漏洞模式

          1)、代码审查

       3、测试技巧

          1)、代码审查

(十)、信息泄露

       1、分类

          1)、定时通道:通过测量操作运行的时间,获取系统的内部状态

          2)、存储通道:比如存储文件名、消息长度等

          3)、详细的版本信息:比如通过了解服务器信息更有针对性的攻击

          4)、主机网络信息:比如MAC、机器名、IP地址等信息

          5)、路径信息

          6)、栈布局信息

      2、查找漏洞模式

          1)、某个进程向来自OS或者运行时环境的用户输出结果

          2)、在敏感或者隐私数据上进行的操作未在固定时间内完成,时间取决于该机密数据自身的特性

          3)、意外使用敏感或隐私信息

          4)、敏感或者高权限数据未受保护或者保护机制很弱

          5)、敏感数据从一个进程向低权限用户发送

          6)、未受保护的敏感数据通过不安全的通道传送

      3、弥补措施

          1)、权限控制

          2)、数据保护

          3)、防护机制

(十一)、 竞态条件:资源竞争

       1、查找漏洞模式

          1)、多线程或者进程必须写入同一个资源

          2)、在公共区域建立文件或者目录

          3)、信号处理程序

          4)、多线程应用程序或者信号处理程序中的不可重入函数

       2、测试技巧

          1)、多处理器系统运行测试

          2)、向可疑程序密集发送信号

          3)、打开文件系统日志功能,检测系统调用,留意文件创建活动

       3、弥补措施

          1)、正确编写可重入代码

          2)、正确处理锁,对象处理,按照同样的顺序请求多个锁,按照与请求相反的顺序释放它们。

          3)、持有锁的时候做最少的事情,即注意锁的范围

          4)、不要假设系统调用能够按时完成

          5)、在用户私有存储区创建临时文件

(十二)、不良可用性

       1、查找漏洞模式

          1)、未能仔细研究典型用户与安全特性交互的方式导致的一系列问题

       2、测试技巧

          2)、二人对话技术观察用户使用系统时的情况

     3、弥补措施

         1)、简化UI以便用户参与

         2)、为用户做出安全决策

         3)、易于有选择地放宽安全策略

         4)、明确指出后果

         5)、提供可操作性

         6)、提供集中管理

(十三)、不易更新

      1、分类

         1)、有漏洞的附件软件安装

         2)、有漏洞的访问控制

         3)、有漏洞的提示疲劳:过多提示不太好

         4)、有漏洞的无知:该提示还是要提示

         5)、有漏洞的无通知更新:别自己就更新应用了

         6)、有漏洞的一次更新一个系统

         7)、有漏洞的强制重启动

         8)、有漏洞的难以打补丁:打补丁步骤要简单

         9)、有漏洞的缺乏恢复计划:

         10)、有漏洞的信任DNS:更新用的软件要放在可信任的服务器上

         11)、有漏洞的信任补丁服务器

         12)、有漏洞的更新签名

         13)、有漏洞的打开更新包

         14)、有漏洞的用户应用程序的更新

     2、查找漏洞

         1)、威胁模型

     3、测试技巧:见分类

     4、弥补措施

         1)、安转附带软件的弥补措施:把附带软件捆绑在补丁中

         2)、访问控制弥补措施:锁定文件,不允许写入,或者把权限改为检查签名之前,仅允许授权访问

         3)、提示疲劳弥补措施:尽可能少通知用户,让应用程序做正确的事

         4)、用户无知的弥补措施:存储最近的时间,启动程序时检查,看更新包是否在合理的时间内应用

         5)、无通知更新弥补措施:通知一下

         6)、一次更新一个系统的弥补措施:考虑关闭系统打补丁会更快,考虑分批次更新系统防止意外发生

         7)、强制重启动的弥补措施:系统运行期间打补丁或者使应用程序关闭

         8)、难以打补丁的弥补措施:做成可执行程序或者一系列连接好的脚本

         9)、缺乏恢复计划的弥补措施:做一个恢复计划

         10)、轻信DNS和轻信补丁服务器:给补丁签名

         11)、更新签名的弥补措施:MD5签名不可靠,采用SHA-1甚至SHA-2更好

         12)、打开更新包的弥补措施:把文件提取到一个只有授权用户可以访问的目录下

        

(十四)、执行代码权限过大

      1、查找漏洞模式

         1)、确定应用程序是否可以在非管理账号或非根账户下正确的运行

      2、测试技巧 

         1)、不断降低权限运行

      3、弥补措施

         1)、降低权限,以最小权限运行代码

(十五)、未能安全的存储数据

      1、查找漏洞模式

         1)、设定访问控制

         2)、为低权限用户授予写操作权限

         3)、在共享区写配置信息

      2、测试技巧

         1)、利用find命令查找全局可写文件和目录( find / -type d -perm +002

         2)、加密数据最好代码审查做

      3、弥补措施

         1)、正确处理权限问题

         2)、合理正确加密数据

(十六)、移动代码的漏洞

       移动代码:已经下载并且在用户计算机上执行的代码

      1、查找漏洞模式

         1)、代码运行任意形式的脚本

         2)、容器在执行移动代码前不提示用户

         3)、容器不限制移动代码的功能、许可或者权限

         4)、移动代码没有签名

         5)、移动代码执行任意形式的敏感货危险操作

      2、测试技巧

         1)、没有统一方法,最好代码审查

      3、弥补措施

         1)、windows沙箱

         2)、chroot限制

三、加密漏洞

(十七)、使用基于弱密码的系统

      1、查找漏洞模式

         1)、密码泄露

         2)、允许使用弱密码:复杂性要求

         3)、迭代密码:保存以前的密码历史,需要使用一个强密码验证器来检查,其次检查密码历史时,应该测试常见的迭代密码

         4)、从不改变密码:服务器端可以要求用户更改密码

         5)、默认密码:不安全

         6)、重放攻击:要保证传输通道安全,比如SSL

         7)、对密码验证器进行暴力攻击:检查密码验证器是否使用了优秀的键派生函数

         8)、存储密码而不是密码验证器

         9)、在线攻击:代码审查查找最快

         10)、返回遗忘的密码:这没有任何必要,重置最佳

     2、测试技巧

       1)、密码泄露:临时文件、崩溃存储

         2)、重放攻击:捕获验证数据流并发送相同的数据流进行登录;检查证书和服务器是否匹配

         3)、暴力攻击:性能测试 

     3、弥补措施

         1)、密码泄露的弥补:确保密码不存储在内存中;登录页面只能SSL/TLS访问

         2)、弱密码的弥补:确认密码的复杂性和长度要求;密码最好不包含用户名

         3)、迭代密码的弥补措施:检查密码中字符变体

         4)、密码改变弥补措施:定期要求用户更改密码

         5)、默认密码弥补措施:不使用默认密码

         6)、重放攻击弥补:验证封装在受保护通道中

         7)、密码验证器弥补:使用好的键派生函数

         8)、在线暴力破击弥补:不把用户名泄露给攻击者;锁定招呼;设置超时时间

         9)、登录信息泄露的密码措施:给不正确的用户名和不正确的密码返回不同的出错信息

         10)、忘记密码的弥补措施:允许重置

(十八)、弱随机数

      1、查找漏洞模式:当需要保护数据的机密性或者防范被人猜测的时候漏洞就会出现

      2、测试技巧: FIPS测试

      3、弥补措施 :保证真的能随机

(十九)、使用错误的密码技术

      1、漏洞分类介绍

         1)、使用自制的加密算法:

         2)、在高级协议可用时,从低级算法中创建一个协议:别太自信

         3)、使用脆弱的密码基元:DES加密无意义,MD4已被完全破解等

         4)、不正确的使用密码基元:比如流密码滥用,散列连续密码,加密已知的普通文本

         5)、使用错误的密码基元:加码不能保证数据不被篡改,可以使用编码,比如64进制

         6)、使用错误通信协议:

         7)、未使用salt

         8)、未使用随机IV

         9)、使用脆弱的秘钥派生函数

         10)、未提供完整性检查

         11)、不使用敏捷加密:敏捷加密解释起来就是前瞻性加密

      2、查找漏洞模式

         1)、代码审查

      3、测试技巧:

         1)、代码审查

      4、弥补措施

         1)、使用自制加密算法:删除相关代码

         2)、从低级算法中创建一个新的协议:使用已有能满足的现有算法

         3)、使用脆弱的密码基元、不正确的使用密码基元:使用更安全的加密措施

         4)、未使用salt的加密措施:加salt,保证加的salt是强随机容器生成并且长度足够

         5)、其它漏洞弥补参考漏洞类型

四、联网漏洞

(二十)、未能保护好的网络通信

      1、查找漏洞模式

         1)、应用程序使用网络

         2)、设计者轻视或者低估网络层的威胁

      2、测试技巧

         1)、捕获数据包分析:没有加密的消息,每条消息结尾都有固定长度的奇怪数据

         2)、对数据包做一些小改动,看程序能否识别出来

      3、弥补措施

         1)、使用安全的协议,比如SSL/TLS建立网络连接

         2)、创建本地代理来实施安全措施

(二十一)、未能正确的使用PKI,尤其是SSL

    1、查找漏洞描述

         1)、使用了PKI,例如SSL或者TLS

         2)、未使用HTTPS

         3)、库或者应用程序代码未能检查通信通道另一端的进程所使用的证书

      2、测试技巧

         1)、工具攻击,比如dsniffettercap

         2)、用不可信的CA签名,可以使用microsoft Certificate Manager

         3)、自签名的证书

         4)、证书不在有效期内(notBefore字段)

         5)、证书过期(notAfter字段)

         6)、主题名(subjectName)是伪造的

         7)、密钥使用不正确

         8)、失效的签名算法

      3、弥补措施

         使用PKI比较合理,但是要确保

         1)、证书连接了一个有效的根CA

         2)、证书处于有效期内

         3)、将主机名和至少一个DN字段或者X.509 v3 subjectAltName扩展中的对应子字段进行比较

         4)、证书密钥的使用时正确的:服务器认证或者客户端认证

         5)、证书未撤销

         6)、程序对于上述监测中出现的问题当做证书失效来处理,并禁止建立连接

(二十二)、轻信网络域名解析

        1、查找漏洞模式

          1)、连接已被认证的网络上扮演客户端或者服务器角色的任何应用程序

        2、测试技巧

          1)、搭建一个恶意客户端和一个可以服务器,同时实现这两个目标的好办法是创建一种代理客户端和服务器之间信息的方式。检查流动的信息是否使用base64编码或者ASN.1编码(两者都不安全)

          2)、如果客户端指向某个被攻击者控制的服务器,看会发生的情况。

          3)、如果服务器对客户端有些假定,而不是只对用户进行验证,那么要质疑应用程序的设计。

       3、弥补措施

          1)、确保连接都在SSL上运行并且所有代码进行适当的PKI检查

          2)、使用IPSec

          3)、使用Kerberos或者Windows进行了认证,且客户端和服务器都是最新版本

          4)、使用公共密钥密码系统,并双向签发数据

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值