OpenSSL 心血(HeartBleed)漏洞 是openssl 在 2014-04-07 发布的重大安全漏洞(CVE-2014-0160)这个漏洞使攻击者可以从server内存中读取64 KB的数据,甚至获取到加密流量的密钥。用户的名字和password。以及訪问的内容。

主要影响版本号 OpenSSL 1.0.1 到 OpenSSL 1.0.1f 以及 OpenSSL 1.0.2 Beta1

不受此漏洞影响的 OpenSSL版本号信息:

OpenSSL 1.0.1g 已修复该漏洞 ,以及g以上预计也修复了

OpenSSL 1.0.0 分支版本号不受此漏洞影响

OpenSSL 0.9.8 分支版本号不受此漏洞影响 ///汉澳sinox系统使用的openssl版本号

OpenSSL 1.0.2 Beta2 不受此漏洞影响

root@www:~ # openssl version

OpenSSL 0.9.8y 5 Feb 2013

可是假设用户升级到OpenSSL 1.0.1 到 OpenSSL 1.0.1f。就会面临漏洞攻击。用户编译安装定义了OPENSSL_NO_HEARTBEATS。也能够避开此漏洞。

引入心跳这个功能应该是为了保持client与server的连接。事实上这个不是必须的。

#ifndef OPENSSL_NO_HEARTBEATS

int

dtls1_process_heartbeat(SSL *s)

{

unsigned char *p = &s->s3->rrec.data[0], *pl;

//rrec是心跳包ssl3结构,用户发来的数据包

/×typedef
struct ssl3_record_st
    {
        int
type;               /* type of record */
        unsigned
int length;    /* How many bytes available */
        unsigned
int off;      
/* read/write offset into 'buf' */
        unsigned
char *data;    /* pointer to the record data */
        unsigned
char *input;  
/* where the decode bytes are */
        unsigned
char *comp;    /* only used with decompression - malloc()ed */
        unsigned
long epoch;    /* epoch number, needed by DTLS1 */
        unsigned
char seq_num[8];
/* sequence number, needed by DTLS1 */
    } SSL3_RECORD;

*/

unsigned short hbtype;

unsigned int payload;

unsigned int padding = 16; /* Use minimum padding */

if (s->msg_callback)

s->msg_callback(0, s->version, TLS1_RT_HEARTBEAT,

&s->s3->rrec.data[0], s->s3->rrec.length,

s, s->msg_callback_arg);

/* Read type and payload length first */

if (1 + 2 + 16 > s->s3->rrec.length) //patch

return 0; /* silently discard */             //patch

//这个是补丁,长度为0的心跳包,就返回不要处理

hbtype = *p++;//运行后就是心跳包用户设置的payload,用户能够随意设置

n2s(p, payload);//宏n2s从指针p指向的数组中取出前两个字节,并把它们存入变量payload中,p是client的数据。能够设置0xFFFF,最大65535

if (1 + 2 + payload + 16 > s->s3->rrec.length)   //patch

return 0; /* silently discard per RFC 6520 sec. 4 */  //patch

//这个是补丁,用户设置payload长度+19超过心跳包实际长度,就返回不要处理

pl = p;

if (hbtype == TLS1_HB_REQUEST)

{

unsigned char *buffer, *bp;

unsigned int write_length = 1 /* heartbeat type */ +

2 /* heartbeat length */ +

payload + padding;

int r;

if (write_length > SSL3_RT_MAX_PLAIN_LENGTH)

return 0;

/* Allocate memory for the response, size is 1 byte

* message type, plus 2 bytes payload length, plus

* payload, plus padding

*/

buffer = OPENSSL_malloc(write_length);

bp = buffer;

/* Enter response type, length and copy payload */

*bp++ = TLS1_HB_RESPONSE;

s2n(payload, bp);//宏s2n与宏n2s干的事情正好相反:s2n读入一个16 bit长的值,然后将它存成双字节值,所以s2n会将与请求的心跳包载荷长度同样的长度值存入变量payload

memcpy(bp, pl, payload);

//假设用户并没有在心跳包中提供足够多的数据,会导致什么问题?比方pl指向的数据实际上仅仅有一个字节,那么memcpy会把这条SSLv3记录之后的数据——不管那些数据是什么——都复制出来。

后面那些数据可能存有其它用户的密钥。username和password。

这个就是c语言的内存指针。编写者没有考虑到payload会超过数据实际长度的情况。要检查才行。

非常幸运,汉澳sinox没有碰上这个漏洞。这是程序设计者添加新功能引入的新漏洞。而bash漏洞则是非常久就有的一直没有被发现。所以新版本号不意味就更好,由于没有充分測试修复可能产生的新bug.

汉澳sinox不受openssl心血漏洞影响并分析修复其漏洞代码的更多相关文章

  1. 非常多人不愿意承认汉澳sinox已经超过windows

    汉澳sinox採用的zfs和jail打造高可靠性存储server和矩阵计算机,这不是windows和linux能相提并论的. 只是非常多人立即出来出来反驳说,windows驱动程序多(就是支持硬件多) ...

  2. 高速修复汉澳sinox命令解释程序bash shell漏洞

    bash是linux默认命令行管理程序shell.汉澳 sinox也安装有,尽管sinox并没有默认使用bash.可是用户一旦使用就会可能被通过漏洞入侵,所以必须高速修复.尽管sinox使用freeb ...

  3. 汉澳sinox通过ndis执行windows驱动程序

    汉澳sinox不仅能通过wine执行windows应用程序.还能通过ndis执行windows驱动程序 汉澳sinox使用 Windows NDIS 驱动程序 详细实现方法是用ndisgen把wind ...

  4. 开发汉澳即时通信网,2006年上线,QQ死期到了

    为汉澳sinox用户打造即时通信网让大家用上即时通信软件 近期腾讯关闭了linuxQQ登录,汉澳 sinox也登陆不上.非windows用户再也不能用上即时通信软件了! 这是多么可悲的事,可是我们必须 ...

  5. 汉澳sinox2014没有黑屏,一个能够依靠的安全避风港

    首先汉澳sinox2014没有验证server,根本就没办法区分正版和盗版 其次汉澳sinox2014安装也没有系列号cdkey等东西,直接安装无干扰 最后汉澳sinox2014不会有黑屏这样的东西. ...

  6. 汉澳Sinox2014X64server高级桌面服务器版操作系统公布

    汉澳Sinox2014X64server高级桌面服务器版操作系统公布   当你在现代城市夜空中看到一道闪电.屏幕中央闪过几个图形,转眼间变成美轮美奂的紫色空中天国,说明你来到了汉澳sinox2014世 ...

  7. 【转】cve2014-3153 漏洞之详细分析与利用

    背景学习: Linux Futex的设计与实现 使用者角度看bionic pthread_mutex和linux futex实现 By kernux TopSec α-lab 一 漏洞概述 这个漏洞是 ...

  8. 升级OpenSSL修复高危漏洞Heartbleed

    升级OpenSSL修复高危漏洞Heartbleed 背景:          OpenSSL全称为Secure Socket Layer.是Netscape所研发.利用数据加密(Encryption) ...

  9. 汉澳sinox2014x64server已经能够下载

    大家快去下载,用迅雷快速下载 下载地址 ftp://sinox.3322.org/sinox2014x64server.img 已经能够下载 ftp://sinox.3322.org/sinox201 ...

随机推荐

  1. final,buaa_oo conclusion

    UML系列作业设计架构 第13次作业 本单元的第一次作业中,涉及到了类图的解析.在着手做这单元作业的时候,需要将每一种 UmlElement 再封装,并在解析时,用 helper 单例来进行查询处理( ...

  2. loj2274 「JXOI2017」加法

    二分一下,然后从左到右扫描,扫到左端点就把区间 push 到堆里. 每次有点不符合二分的值时,就贪心地选择右端点最远的 add. #include <algorithm> #include ...

  3. Debian7配置LAMP(Apache/MySQL/PHP)环境及搭建建站

    完整Debian7配置LAMP(Apache/MySQL/PHP)环境及搭建建站 第一.安装和配置Apache Web服务器 运行升级命令来确保我们的系统组件各方面都是最新的. apt-get upd ...

  4. Builder(构造者)

    Builder(构造者) <?php class Product { private $name; public function setName($name) { $this->name ...

  5. .net提高文章

    文章:.NET程序性能的基本要领 文章:你的字典里有多少元素? 文章:快速自检电脑是否被黑客入侵过(Windows版) 文章:关于DNS,你应该知道这些

  6. POJ-3352 Road Construction,tarjan缩点求边双连通!

    Road Construction 本来不想做这个题,下午总结的时候发现自己花了一周的时间学连通图却连什么是边双连通不清楚,于是百度了一下相关内容,原来就是一个点到另一个至少有两条不同的路. 题意:给 ...

  7. 九度oj 题目1051:数字阶梯求和

    题目描述: 给定a和n,计算a+aa+aaa+a...a(n个a)的和. 输入: 测试数据有多组,输入a,n(1<=a<=9,1<=n<=100). 输出: 对于每组输入,请输 ...

  8. 洛谷P4094 - [TJOI2016]字符串

    Portal Description 给出一个字符串\(s(|s|\leq10^5)\)和\(m\)次询问,每次询问子串\(s[x_1..x_2]\)的所有子串和\(s[y_1..y_2]\)的最长公 ...

  9. 路飞学城详细步骤 part2

    一 显示课程列表 需求:当你点击课程,course.vue在 <router-view>渲染,并不需要你进行其他点击,所欲的课程列表直接在前端显示,数据是从数据库拿到的. 补充1:生命周期 ...

  10. 【bzoj4568】【Scoi2016】幸运数字 (线性基+树上倍增)

    Description A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以纪念碑的形式矗立在这座城市的正中心,作为城市的象征.一 ...