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. Hive 执行查询语句报错,由于内存空间不足导致

    org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Can ...

  2. [!] The ‘Pods-项目名XXX' target has frameworks with conflicting names:XXX.framework.

    在集成网易 即时通讯IM时报如下错误: [!] The ‘Pods-Yepu' target has frameworks with conflicting names: nimsdk.framewo ...

  3. Python --链接Mongodb

    # -*- coding: UTF-8 -*- from pymongo import MongoClient # 数据库连接 class MongoDB(object): def __init__( ...

  4. 九度oj 题目1030:毕业bg

    题目描述:     每年毕业的季节都会有大量毕业生发起狂欢,好朋友们相约吃散伙饭,网络上称为“bg”.参加不同团体的bg会有不同的感觉,我们可以用一个非负整数为每个bg定义一个“快乐度”.现给定一个b ...

  5. 更新yum源导致yum不可用

    当安装和yum配置相关的包后报yum模块找不到 yum install -y yum-utils device-mapper-persistent-data lvm2 yum list|grep yu ...

  6. POJ——1364King(差分约束SPFA判负环+前向星)

    King Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11946   Accepted: 4365 Description ...

  7. [BZOJ2733] [HNOI2012]永无乡(并查集 + 线段树合并)

    传送门 一看到第k大就肯定要想到什么权值线段树,主席树,平衡树之类的 然后就简单了 用并查集判断连通,每个节点建立一颗权值线段树,连通的时候直接合并即可 查询时再二分递归地查找 时间复杂度好像不是很稳 ...

  8. 刷题总结——过河(NOIP2015)

    题目: 题目背景 NOIP2005提高组试题2. 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都 ...

  9. bzoj4002 [JLOI2015]有意义的字符串 快速幂

    Description B 君有两个好朋友,他们叫宁宁和冉冉. 有一天,冉冉遇到了一个有趣的题目:输入 b;d;n,求((b+sqrt(D)/2)^N的整数部分,请输出结果 Mod 752844341 ...

  10. POJ 1182 食物链 [并查集 带权并查集 开拓思路]

    传送门 P - 食物链 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit  ...