前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >OpenSSL空指针引用do_ssl3_write

OpenSSL空指针引用do_ssl3_write

作者头像
FB客服
发布于 2018-02-02 07:28:41
发布于 2018-02-02 07:28:41
78400
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行

我们的UC – KEEL工具发现do_ssl3_write一个空指针引用错误(ssl/s3_pkt.c)用于提醒挂起SSL_MODE_RELEASE_BUFFERS标志。这个错误影响最新的1.0.1分支。

do_ssl3_write() 中代码先检测缓冲区是否为NULL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
644 if (wb->buf == NULL)645 if (!ssl3_setup_write_buffer(s))646 return -1;

然后,它会传输所有等待的提示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
653 /* If we have an alert to send, lets send it */654 if (s->s3->alert_dispatch)655 {656 i=s->method->ssl_dispatch_alert(s);

ssl3_dispatch_alert() 再次调用 do_ssl3_write()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1501 i = do_ssl3_write(s, SSL3_RT_ALERT, &s->s3->send_alert[0], 2, 0);

调用 ssl3_write_pending():

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
852 /* we now just need to write the buffer */853 return ssl3_write_pending(s,type,buf,len);

如果使用SSL_MODE_RELEASE_BUFFERS ,则写入缓冲区

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
894 if (s->mode & SSL_MODE_RELEASE_BUFFERS &&895 SSL_version(s) != DTLS1_VERSION && SSL_version(s) != DTLS1_BAD_VER)896 ssl3_release_write_buffer(s);

当控制初始化调用do_ssl3_write() , wb->buf 已经被设置成NULL ,然后发生在743行 *(p++)=type&0xff; 引用空指针。

调用 ssl->dispatch_alert() 之后做二次校验是很有必要的,添加一个计数器就能避免任何的调用和操作把 ssl_st 释放到缓冲区。

References:

http://seclists.org/oss-sec/2014/q2/233

http://rt.openssl.org/Ticket/Display.html?user=guest&pass=guest&id=3321

http://anoncvs.estpak.ee/cgi-bin/cgit/openbsd-src/commit/lib/libssl?id=e76e308f1fab2253ab5b4ef52a1865c5ffecdf21

http://ftp.openbsd.org/pub/OpenBSD/patches/5.5/common/005_openssl.patch.sig

via:

http://pastebin.com/YkrbPDCv

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2014-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CVE-2014-0160-OpenSSL TLS 数组越界访问漏洞(“心脏出血”漏洞)
由于这个是开源的,直接源码对比 https://bugzilla.redhat.com/attachment.cgi?id=883475&action=diff
用户1423082
2024/12/31
830
CVE-2014-0160-OpenSSL TLS 数组越界访问漏洞(“心脏出血”漏洞)
深入探索Redis的IO多线程:解密并发读写的黑科技
https://cloud.tencent.com/developer/article/2466434
Lion Long
2024/11/18
3080
深入探索Redis的IO多线程:解密并发读写的黑科技
libuv源码阅读(21)--uvtee
uv_write_s 类型是由普通ref以及cb和一些写操作有关的信息组成,然后它需要一个 uv_stream_t* handle 来配合使用。
wanyicheng
2021/03/13
1.1K0
OpenSSL与yaSSL性能对比
摘要 MySQL可以使用OpenSSL或yaSSL/wolfSSL进行编译,这两者都支持基于OpenSSL API的加密连接。在5.7版本,我们知道默认情况下MySQL Community Edition用的SSL库是yaSSL,而在8.0版本,MySQL Community Edition用的是OpenSSL。那么SSL加密对性能有什么影响呢?这两个SSL库在性能上又到底有多大差别呢?我们接下来进行一些测试并进行分析。 测试内容 MySQL有两个功能使用到了SSL库,一个是SSL连接,通过在数据库服务器
腾讯数据库技术
2018/11/06
3.1K1
OpenSSL与yaSSL性能对比
【openwrt】 libubox组件——ustream
ustream 是 libubox 提供的一个流管理工具,它可以实现自动从流中获取数据或者将数据写入流,还可以主动通知ustream的所有者什么时候可以从流读取数据。如果是将数据写入流,会有一个特别的设计——当流可写时,数据会被直接写入流,当流不可写时,数据会被缓存,并在流再次可写时自动地将缓存的数据继续写入流,直到缓存中所有的数据都被写入。
知否知否应是绿肥红瘦
2025/02/19
570
【openwrt】 libubox组件——ustream
java nio 源码分析2 IO
getTemporaryDirectBuffer和SocketChannelImpl值得分析
平凡的学生族
2019/12/20
7740
java nio 源码分析2 IO
新一代异步IO框架 io_uring | 得物技术
相比于kernel bypass 模式需要结合具体的硬件支撑来讲,native IO是日常工作中接触到比较多的一种,其中同步IO在较长一段时间内被广泛使用,通常我们接触到的IO操作主要分为网络IO和存储IO。在大流量高并发的今天,提到网络IO,很容易想到大名鼎鼎的epoll  以及reactor架构。但是epoll并不属于异步IO的范畴。本质上是一个同步非阻塞的架构。关于同步异步,阻塞与非阻塞的概念区别这里做简要概述:
得物技术
2023/04/14
9830
新一代异步IO框架 io_uring | 得物技术
io_uring 从原理到动手实践 part1: 使用系统调用接口实现 cat 程序
感觉目前看到介绍 io_uring 的文章还是比较少,大部分都集中在对其原理性的介绍和简单的对官方文档的翻译,真正结合实际的例子还是比较少。本文翻译整理自一篇博客:
云微
2023/02/24
1.4K0
io_uring 从原理到动手实践 part1: 使用系统调用接口实现 cat 程序
nginx实现keyless解决方案
当企业把业务迁移到云WAF/CDN边缘节点上,需向云厂商提供业务的私钥安全性不能得到保证,且若业务私钥证书发生变化或频繁修改需要受限于人。风险:一旦服务端的私钥泄露会导致恶意攻击者伪造虚假的服务器和客户端通信,通信内容也存在被劫持和解密的风险。keyless源于clouldflare,采用keyless方案私钥部署在客户自己的服务器,无需向把业务私钥部署在云/CDN边缘节点上。
stan1ey
2021/01/23
2K0
nginx实现keyless解决方案
Openssl Heartbleed
近日闹的沸沸扬扬的Heartbleed漏洞,仿佛一下子再次将人们拉回了对网络安全的关注和担忧。
全栈程序员站长
2022/09/13
8260
Nginx - 四层代理TCP配置SSL加密访问
使用SSL客户端与Nginx建立连接,确认SSL连接是否正常工作。可以使用openssl命令或其他SSL客户端工具来进行验证。
小小工匠
2024/05/26
1.1K0
Nginx - 四层代理TCP配置SSL加密访问
20.8 OpenSSL 套接字SSL传输文件
有了上面的基础那么传输文件的实现就变得简单了,在传输时通常我们需要打开文件,并每次读入1024个字节的数据包,通过SSL加密传输即可,此处的文件传输功能在原生套接字章节中也进行过详细讲解,此处我们还是使用原来的密钥对,实现一个服务端等待客户端上传,当客户端连接到服务端后则开始传输文件,服务端接收文件的功能。
微软技术分享
2023/11/06
2020
20.8 OpenSSL 套接字SSL传输文件
Linux V4L2子系统-videobuf2框架分析
Video设备产生的数据较多,传统的缓冲机制已不能满足需求。为此,Linux内核抽象出了videobuf2机制,用于管理存放视频图像的帧缓冲。videobuf2抽象层像一座桥梁,将用户空间和V4L2 driver连接起来。videobuf2抽象层向用户空间提供了标准POSIX I/O系统调用,包括read、poll及mmap等,同时还提供了大量与流式I/O相关的V4L2 ioctl调用,包括缓冲区分配、缓冲区入队、缓冲区出队及流控制。虽然使用videobuf2会给驱动程序强加一些设计决策,但是使用它的收益是videobuf2可以减少驱动程序代码和保持V4L2子系统在用户空间API的一致性,显然使用videobuf2更为合理。
用户6280468
2023/08/31
1.3K0
Linux V4L2子系统-videobuf2框架分析
5.1 C/C++ 使用文件与指针
C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存等底层资源,对于初学者来说可能会有一定的难度。
微软技术分享
2023/10/10
2480
5.1 C/C++ 使用文件与指针
openssl生成自签的证书并且使用nginx配置https证书
终有链响
2024/07/29
7790
openssl生成自签的证书并且使用nginx配置https证书
20.5 OpenSSL 套接字RSA加密传输
RSA算法同样可以用于加密传输,但此类加密算法虽然非常安全,但通常不会用于大量的数据传输,这是因为RSA算法加解密过程涉及大量的数学运算,尤其是模幂运算(即计算大数的幂模运算),这些运算对于计算机而言是十分耗时。
微软技术分享
2023/11/04
3790
20.5 OpenSSL 套接字RSA加密传输
tengine配置详解
主配置文件 nginx.conf ########### 每个指令必须有分号结束。################# user root root; #配置用户或者组,默认为nobody nobody。 worker_processes 2; #允许生成的进程数,默认为1 pid /usr/local/tengine/run/nginx.pid; #指定nginx进程运行文件存放地址 worker_rlimit_nofile 102400; #一个进程打开的最大文件数目 events {
用户6792968
2022/08/30
1.7K0
20.7 OpenSSL 套接字SSL加密传输
OpenSSL 中的 SSL 加密是通过 SSL/TLS 协议来实现的。SSL/TLS 是一种安全通信协议,可以保障通信双方之间的通信安全性和数据完整性。在 SSL/TLS 协议中,加密算法是其中最核心的组成部分之一,SSL可以使用各类加密算法进行密钥协商,一般来说会使用RSA等加密算法,使用TLS加密针对服务端来说则需要同时载入公钥与私钥文件,当传输被建立后客户端会自行下载公钥并与服务端完成握手,读者可将这个流程理解为上一章中RSA的分发密钥环节,只是SSL将这个过程简化了,当使用时无需关注传输密钥对的问题。
微软技术分享
2023/11/05
4090
20.7 OpenSSL 套接字SSL加密传输
一次百万长连接压测 Nginx OOM 的问题排查分析
在最近的一次百万长连接压测中,32C 128G 的四台 Nginx 频繁出现 OOM,出现问题时的内存监控如下所示。
挖坑的张师傅
2022/05/13
5460
一次百万长连接压测 Nginx OOM 的问题排查分析
深入理解nginx stream proxy 模块的ssl连接原理
  我一直来对ssl建立连接的过程一知半解,以前分析nginx代码的时候一旦碰到ssl连接部分的代码都是直接跳过,前面在分析ngx_http_upstream_dynamic_module的时候正好想到了是不是可以给它添加一个能够支持https健康检查的功能,所以今天决定沉下心来仔细分析一下nginx本身的与上游服务器建立连接的实现逻辑。
码农心语
2024/04/09
1K0
深入理解nginx stream proxy 模块的ssl连接原理
相关推荐
CVE-2014-0160-OpenSSL TLS 数组越界访问漏洞(“心脏出血”漏洞)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文