暂无图片
暂无图片
1
暂无图片
暂无图片
1
暂无图片

《PostgreSQL网络协议缓冲区分析(一)》

Halo Tech 2024-09-25
33

    以色列终于放了大招了。数千部BB机同一时间爆炸。让一个神秘部门又一次出现在大众视野:

    不是007啊,旁边的两代007只是气氛组,为了烘托氛围。看中间的古西伯来文,这个神秘情报组织就是:摩萨德。传说中上天入地,无所不能。这一次遥控传呼机(BB机)爆炸,打击珍珠党,牛啊。但是吧,这种技术要说也不神秘,22年前,也就是2002年,《警察技术》中(应该是个杂志吧),某市公安局刑警总队就已经分享了这样的技术

    摩萨德,比起人民警察,也不过如此吧。不过,无论如何,这次“摩萨德BB机远程爆炸”事件,又给我们敲了下警钟。今后肯定会更加重视从硬件到软件的安全,特别是基础软件。近日某数据库,爆出网络接口存在缓冲区溢出漏洞:

    这个造成的问题,虽然视觉效果不如摩萨德的爆炸,但危险程度可一点不比炸个BB机差。因为此数据库据自己的数据纰漏,它主要针对Oracle替代,广泛用于党政军系统。党政军啊,这那是数据库啊,这是在我们内部安装的定时炸弹。

    在国产数据库技术上大发展的时代,似乎很少有关注数据库的缓冲区溢出、针对数据库的侧信道攻击和rowhammer漏洞攻击,等等高端的黑客技术和数据库内核结合的问题。

    我们今天先从比较基础的缓冲区溢出开始,以PG的网络模块为例,分析下PG是否存在缓冲区溢出的可能?如何检查确认,以及在Coding时如何避免缓冲区溢出。

    避免缓冲区溢出,既是避免给以后埋雷,也能出于防御性编程的目的,悄悄的在代码中埋个缓冲区溢出的雷,这多高大上啊。

    不看这篇文章的人,还看不出来你埋了雷。就算看出来了,你也可以说:“我不懂啊,我也不知道这会造成缓冲区溢出啊……”

    然后,你可以像摩萨德一样,在需要的时候,远程引爆你的“雷”。

    所以,除了干粑粑的讲述,本文会有一个类似“Hello World”的示例,让你亲手缓冲区溢出一回,感受一下黑客的魅力。

    序言的最后,不要忘了我们的主题,PG是否存在缓冲区溢出的可能?如何检查确认?如何在做数据库内核开发时,避免缓冲区溢出。

    正文开始:

    先普及下什么是“缓冲区溢出”,它的目的是什么?

    目的,不就是能控制你的电脑,然后挖矿、木马、盗取数据信息吗?

    这样说是没问题的,但太笼统了。

   “冲区溢出”的目的,是取得电脑的控制权。

    怎么取得控制权呢?

    具体而言,就是要让电脑执行你所想让它执行的指令。

    打个比方,本来按继定程序,电脑要执行指令A、指令B、指令C、指令D、……

    结果,在执行完指令A后,开始执行你想让它执行的指令序列:指令Z、指令Y、指令X、指令W……

    这就是“缓冲区溢出”漏洞的目的,一句话总结,让CPU转去执行你的指令流。

    这如何实现呢?

    现代CPU中,有一些晶体管组成的存储单元,每个这样的存储单元可以存储64位(二进制位)数据,它们被称为register(寄存器,很多人看到寄存器就发怵,其实就是CPU内的存储单元)。

    Register的物理构成我们不需关心(因为我也不知道,想从沙子冶炼硅的,可自行了解),这些Regsiter中,有一个和我们今天的话题有关:Instruction Pointer Register,简称IP寄存器。

    IP寄存器的作用很简单,它记录CPU下一条要执行的指令的位置。

    以上面的例子为例,本来CPU要执行的指令流是指令A、指令B、指令C、指令D、……,如下图:

    图1中,CPU正在执行“指令A”,IP寄存器的值为“指令B”。

    CPU执行完成指令A后,按IP寄存器所指,开始执行“指令B”,这就对应图2,此时IP寄存器值变为“指令C”。

    以此类推,等等,……

    现在,如果想在执行完指令A后,让CPU转去执行指令Z,只需要在执行指令A后,把指令Z的位置、写入IP寄存器即可,如下图:

    图1中,在执行指令A时,IP寄存器被改为了指令Z。

    这件事说起来挺简单,就像把大象放进冰箱中一样,打开冰箱门,把大象放进冰箱,关上冰箱门。但对于现代CPU来说,却是一个几乎不可能完成的任务。

    IP寄存器一旦被修改,就如同人被洗脑了一样,或者说,更准确说,是思想入侵。CPU会去做自己本来不该做的事。嗯,这和鬼上身好像挺像的。

    CPU本来执行某程序的指令流,怎么可能突然IP寄存器被改了呢!这就好像Jack Ma本来的日程安排是,起床、吃饭、去外滩开会、演讲、抨击银行都是当铺、吃中午饭、……

    但你让他大脑中突然多了个想法,给你的支付宝转亿点钱。

    想想也知道,这不可能。

    但是,人和CPU,都有漏洞。把想法植入别人的大脑,并不是不可能:

好,第一篇就到这里吧。下一篇,我们继续盗梦空间、植入想法。。。

文章转载自Halo Tech,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

贾桂权
暂无图片
6月前
评论
暂无图片 0
PostgreSQL网络协议缓冲区分析
6月前
暂无图片 点赞
评论