专栏首页FreeBufOpenSSL空指针引用do_ssl3_write

OpenSSL空指针引用do_ssl3_write

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

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

644 if (wb->buf == NULL)645 if (!ssl3_setup_write_buffer(s))646 return -1;

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

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()

1501 i = do_ssl3_write(s, SSL3_RT_ALERT, &s->s3->send_alert[0], 2, 0);

调用 ssl3_write_pending():

852 /* we now just need to write the buffer */853 return ssl3_write_pending(s,type,buf,len);

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

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

本文分享自微信公众号 - FreeBuf(freebuf),作者:胖子

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2014-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于“入侵检测”的一些想法

    离开长沙的时候写了一篇文章“左右互博:站在攻击者的角度来做防护”(freebuf上可以找到),一晃已经是三年了。这三年接触了很多东西,自己也有过很多想法,但实际...

    FB客服
  • FireEye发布免费恶意程序分析软件ToolBox

    FireEye刚刚发布了一款软件,这款软件可用于构建完全定制化的虚拟机(VM),其中包含可用于恶意程序分析或其它网络安全相关任务的工具。 这款软件名为 FLAR...

    FB客服
  • 藏在短链接下的挖矿木马:NovelMiner

    使用短链接跳转到长网址是网友分享链接的常见方式,尤其是在有字数限制的情况下,冗长的网址不利于显示,短链生成无疑是最便捷的服务之一。然而,由于短链接隐藏了其指向的...

    FB客服
  • 使用Golang 封装一个Api框架----请求处理篇

    实现http简单服务示例:参考文档 https://studygolang.com/pkgdoc

    lin_zone
  • 基于select IO复用的HTTP服务器(十一)

    没想到距离上篇文章才过去仅仅半个多月就发生了这么多的事情,其之沉、其之重、其之殇,如氤氲般笼罩环绕在这片古老的大地上。钟南山眼中的泪水让我没有丝毫的心情再在文章...

    老李秀
  • Go 使用标准库 net/http 包构建服务器

    在 Go 语言中,使用标准库 net/http 可以很方便的构建服务器,只要调用 ListenAndServe 函数,并传入参数IP地址与端口组成的字符串和处理...

    frankphper
  • 真正“搞”懂http协议01—背景故事

    zaking
  • 深度学习(Deep Learning) 学习资料

    用户1756920
  • Go语言经典库使用分析(四)| Gorilla Handlers 源代码实现分析

    上一篇 Go语言经典库使用分析(三)| Gorilla Handlers 详细介绍 中介绍了Handlers常用中间件的使用,这一篇介绍下这些中间件实现的原理...

    飞雪无情
  • nodejs初印象

    初学Nodejs,特意在此记录学习过程,算是对这段时间的一个summary吧,相互勉励,共同进步嘛,Now Begin: 1、什么是nodejs nodejs ...

    用户1141560

扫码关注云+社区

领取腾讯云代金券