区块链缓冲区漏洞6
1. 缓冲区溢出攻击的6.防范方法
有四种基本的方法保护缓冲区免受缓冲区溢出的攻击和影响。
1、通过操作系统使得缓冲区不可执行,从而阻止攻击者植入攻击代码。
2、强制写正确的代码的方法。
3、利用编译器的边界检查来实现缓冲区的保护。这个方法使得缓冲区溢出不可能出现,从而完全消除了缓冲区溢出的威胁,但是相对而言代价比较大。
4、一种间接的方法,这个方法在程序指针失效前进行完整性检查。虽然这种方法不能使得所有的缓冲区溢出失效,但它能阻止绝大多数的缓冲区溢出攻击。分析这种保护方法的兼容性和性能优势。
非执行的缓冲区
通过使被攻击程序的数据段地址空间不可执行,从而使得攻击者不可能执行被植入被攻击程序输入缓冲区的代码,这种技术被称为非执行的缓冲区技术。在早期的Unix系统设计中,只允许程序代码在代码段中执行。
但是Unix和MS Windows系统由于要实现更好的性能和功能,往往在数据段中动态地放入可执行的代码,这也是缓冲区溢出的根源。为了保持程序的兼容性,不可能使得所有程序的数据段不可执行。
但是可以设定堆栈数据段不可执行,这样就可以保证程序的兼容性。Linux和Solaris都发布了有关这方面的内核补丁。因为几乎没有任何合法的程序会在堆栈中存放代码,这种做法几乎不产生任何兼容性问题,除了在Linux中的两个特例,这时可执行的代码必须被放入堆栈中:
⑴信号传递
Linux通过向进程堆栈释放代码然后引发中断来执行在堆栈中的代码来实现向进程发送Unix信号。非执行缓冲区的补丁在发送信号的时候是允许缓冲区可执行的。
⑵GCC的在线重用
研究发现gcc在堆栈区里放置了可执行的代码作为在线重用之用。然而,关闭这个功能并不产生任何问题,只有部分功能似乎不能使用。
非执行堆栈的保护可以有效地对付把代码植入自动变量的缓冲区溢出攻击,而对于其它形式的攻击则没有效果。通过引用一个驻留的程序的指针,就可以跳过这种保护措施。其它的攻击可以采用把代码植入堆或者静态数据段中来跳过保护。
(1)区块链缓冲区漏洞6扩展阅读:
原理
通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。
例如下面程序:
void function(char*str){char buffer[16];strcpy(buffer,str);}
上面的strcpy()将直接把str中的内容到buffer中。这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。
存在像strcpy这样的问题的标准函数还有strcat()、sprintf()、vsprintf()、gets()、scanf()等。
当然,随便往缓冲区中填东西造成它溢出一般只会出现分段错误(Segmentation fault),而不能达到攻击的目的。最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。
如果该程序属于root且有suid权限的话,攻击者就获得了一个有root权限的shell,可以对系统进行任意操作了。
缓冲区溢出攻击之所以成为一种常见安全攻击手段其原因在于缓冲区溢出漏洞太普遍了,并且易于实现。
而且,缓冲区溢出成为远程攻击的主要手段其原因在于缓冲区溢出漏洞给予了攻击者他所想要的一切:植入并且执行攻击代码。被植入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而得到被攻击主机的控制权。
在1998年Lincoln实验室用来评估入侵检测的的5种远程攻击中,有2种是缓冲区溢出。而在1998年CERT的13份建议中,有9份是是与缓冲区溢出有关的,在1999年,至少有半数的建议是和缓冲区溢出有关的。在ugtraq的调查中,有2/3的被调查者认为缓冲区溢出漏洞是一个很严重的安全问题。
缓冲区溢出漏洞和攻击有很多种形式,会在第二节对他们进行描述和分类。相应地防卫手段也随者攻击方法的不同而不同,将在第四节描述,它的内容包括针对每种攻击类型的有效的防卫手段。
2. 微信里面有个人是做这个的,天天发这个区块链漏洞赚钱赚本金的5-6倍,赚钱后给他们佣金就行。是真的吗
不是真的,天上不会掉钱的,你别想多了,微信搜一下 区快连 能不能赚钱,你就会知道这些套路了。
3. 如何应对缓冲区溢出漏洞攻击
1999年,至少有半数的建议与缓冲区溢出有关,目前公开的安全漏洞通告也有相当一部分属于 缓冲区溢出漏洞。 缓冲区溢出攻击利用了目标程序的缓冲区溢出漏洞,通过操作目标程序堆栈并暴力改写其返回地址,从而获得目标控制权。它的原理是:向一个有限空间的缓冲区中拷贝过长的字符串,这带来两种后果,一是过长的字符串覆盖了相临的存储单元而造成程序瘫痪,甚至造成宕机、系统或进程重启等;二是可让攻击者运行恶意代码,执行任意指令,甚至获得超级权限等。 事实上,在网络空间中利用这种缓冲区溢出漏洞而发起的攻击屡见不鲜。早在1988年,美国康奈尔大学的计算机科学系研究生,23岁的莫里斯利用Unix fingered程序不限制输入长度的漏洞,输入512个字符后使缓冲器溢出。莫里斯又写了一段特别大的程序使他的恶意程序能以root(根)身份执行,并感染到其他机器上。年初名燥一时的“SQL Slammer”蠕虫王的发作原理,就是利用未及时更新补丁的MS SQL Server数据库缓冲区溢出漏洞,采用不正确的方式将数据发到MS SQL Server的监听端口,这个错误可以引起缓冲溢出攻击。攻击代码通过缓冲溢出获得非法权限后,被攻击主机上的Sqlserver.exe进程会尝试向随机的IP地址不断发送攻击代码,感染其他机器,最终形成UDP Flood,造成网络堵塞甚至瘫痪。 由上可知,缓冲区溢出攻击通常是在一个字符串里综合了代码植入和激活纪录。如攻击者将目标定为具有溢出漏洞的自动变量,然后向程序传递超长的字符串,进而引发缓冲区溢出。经过精巧设计的攻击代码以一定的权限运行漏洞程序,获得目标主机的控制权。这种攻击手段屡次得逞主要是利用了程序中边境条件、函数指针等设计不当问题,即利用了C程序本身的不安全性。大多数Windows、Linux、Unix系列的开发都依赖于C语言,所以缓冲区溢出攻击成为操作系统、数据库等应用程序最普遍的漏洞之一。 值得关注的是,防火墙对这种攻击方式无能为力,因为攻击者传输的数据分组并无异常特征,没有任何欺骗(这就是Nimda、SQL Slammer可以顺利穿透防火墙的原因)。另外可以用来实施缓冲区溢出攻击的字符串非常多样化,无法与正常数据有效进行区分。缓冲区溢出攻击不是一种窃密和欺骗的手段,而是从计算机系统的最底层发起攻击,因此在它的攻击下系统的身份验证和访问权限等安全策略形同虚设。 用户及开发者该如何降低因缓冲区溢出而造成的攻击损失呢?首先,编程人员可以使用具有类型安全的语言 Java以避免C的缺陷;产品发布前仔细检查程序溢出情况;使用检查堆栈溢出的编译器等。作为普通用户或系统管理员,应及时为自己的操作系统和应用程序更新补丁;减少不必要的开放服务端口等,合理配置您的系统。
4. 远程X Font Service (xfs) 存在缓冲区溢出漏洞怎么办
Solaris fs.auto远程缓冲区溢出漏洞
严重程度:高
威胁程度:普通用户访问权限
错误类型:边界检查错误
利用方式:服务器模式
受影响系统
Sun Microsystems Solaris 2.5.1 (Sparc/Intel)
Sun Microsystems Solaris 2.6 (Sparc/Intel)
Sun Microsystems Solaris 7 (Sparc/Intel)
Sun Microsystems Solaris 8 (Sparc/Intel)
Sun Microsystems Solaris 9 (Sparc)
Sun Microsystems Solaris 9 Update 2 (Intel)
详细描述
Sun Microsystems的"X Window Font Service"实现是X WINDOWS的组件,用于输出字体数据给所有X WINDOWS网络沙锅内的计算机,其中fs.auto守护程序实现存在缓冲区溢出。
远程攻击者可以利用这个漏洞在系统上执行任意代码。XFS字体服务程序fs.auto中的Dispatch()程序对用户提交的数据缺少检查,远程攻击者可以伪造特殊XFS请求而使守护程序崩溃,也存在执行任意代码的可能。不过一般以'nobody‘权限。
测试代码
尚无
解决方案
在/etc/inetd.conf文件中注释:
#fs stream tcp wait nobody /usr/openwin/lib/fs.auto fs
并重新启动INET进程。
补丁下载:
http://sunsolve.sun.com
相关信息
Advisories
ISS X-Force Security Advisory
November 25, 2002
Solaris fs.auto Remote Compromise Vulnerability
Synopsis:
ISS X-Force has discovered a vulnerability in the Sun Microsystems
implementation of the "X Window Font Service", or "XFS". The XFS service was
designed as a component of the X Windows systems to establish a common
mechanism to export font data to all computers on an X Windows network. A
buffer overflow vulnerability exists within the XFS service (fs.auto).
Impact:
Remote attackers can exploit the buffer overflow vulnerability to run
arbitrary commands on a target system. Attackers must exploit this
vulnerability in conjunction with another attack to gain "root" access,
because the fs.auto service does not run with superuser privilege. The Solaris
operating system is configured to run the fs.auto service by default. It is
bound to a high TCP port, which is normally blocked on perimeter firewalls.
Networks that are not filtering high TCP ports, and internal networks are
potentially at risk.
Affected Versions:
Sun Microsystems Solaris 2.5.1 (Sparc/Intel)
Sun Microsystems Solaris 2.6 (Sparc/Intel)
Sun Microsystems Solaris 7 (Sparc/Intel)
Sun Microsystems Solaris 8 (Sparc/Intel)
Sun Microsystems Solaris 9 (Sparc)
Sun Microsystems Solaris 9 Update 2 (Intel)
Description:
The XFS protocol is used by computers on an X Windows network to share font
information. The X Windows system implemented an extensive and scalable font
capability. This capability requires that all X Windows clients and servers
have a mechanism to access font data, which may be distributed throughout an
X Windows network.
Solaris implemented the XFS font server in the daemon, fs.auto. A flaw exists
within the fs.auto Dispatch() routine. Adequate bounds-checking is not
concted on user-supplied data within the vulnerable function. This flaw can
allow remote attackers to formulate a specific XFS query to either crash the
service, or execute arbitrary code under the privilege of the "nobody" user.
This privilege level is similar to that of any normal user.
Recommendations:
The following ISS updates and proct releases address the issues described
in this advisory. These updates are available from the ISS Download Center
(http://www.iss.net/download):
RealSecure Network Sensor XPU 20.7
Internet Scanner XPU 6.22
X-Force recommends that administrators disable the fs.auto service unless it
is explicitly required. Administrators can disable fs.auto by editing the
inetd configuration file (/etc/inetd.conf) and then restart the inetd process
by following the steps below:
1. Comment out the line corresponding to fs.auto. It should read:
#fs stream tcp wait nobody /usr/openwin/lib/fs.auto fs
2. Restart the inetd process
# ps ?ef |grep inetd
root 138 1 0 Oct 15 ? 0:00 /usr/sbin/inetd ?s
# kill ?HUP 138
Administrators should inspect their network perimeters to insure that strong
packet filtering rules are in place. The XFS protocol uses TCP port 7100.
This port should be blocked on all network perimeters.
Vendor Notification Schele:
Vendor confirmed patches would be available on 11/25/2002, and has since
rescheled the patch release after the publication of this advisory.
Please contact Sun for more information.
Initial vendor notification: 10/16/2002
Initial vendor confirmation: 10/17/2002
Final release schele agreement: 11/18/2002
Additional Information:
SunSolve Online
http://sunsolve.sun.com
X-Force Database
http://www.iss.net/security_center/static/10375.php
The Common Vulnerabilities and Exposures (CVE) project has assigned the
name CAN-2002-1317 to this issue. This is a candidate for inclusion in
the CVE list (http://cve.mitre.org), which standardizes names for
security problems.
Credit:
This vulnerability was discovered and researched by Neel Mehta of the ISS
X-Force.
______
About Internet Security Systems (ISS) Founded in 1994, Internet Security
Systems (ISS) (Nasdaq: ISSX) is a pioneer and world leader in software
and services that protect critical online resources from an ever-
changing spectrum of threats and misuse. Internet Security Systems is
headquartered in Atlanta, GA, with additional operations throughout the
Americas, Asia, Australia, Europe and the Middle East.
Copyright (c) 2002 Internet Security Systems, Inc. All rights reserved
worldwide.
Permission is hereby granted for the electronic redistribution of this
document. It is not to be edited or altered in any way without the
express written consent of the Internet Security Systems X-Force. If you
wish to reprint the whole or any part of this document in any other
medium excluding electronic media, please email [email protected] for
permission.
Disclaimer: The information within this paper may change without notice.
Use of this information constitutes acceptance for use in an AS IS
condition. There are NO warranties, implied or otherwise, with regard to
this information or its use. Any use of this information is at the
user's risk. In no event shall the author/distributor (Internet Security
Systems X-Force) be held liable for any damages whatsoever arising out
of or in connection with the use or spread of this information.
X-Force PGP Key available on MIT's PGP key server and PGP.com's key
server, as well as at http://www.iss.net/security_center/sensitive.php
Please send suggestions, updates, and comments to: X-Force
[email protected] of Internet Security Systems, Inc.
5. 360发现区块链史诗级漏洞是什么情况
近日,360公司Vulcan(伏尔甘)团队发现了区块链平台EOS的一系列高危安全漏洞。经验证,其中部分漏洞可以在EOS节点上远程执行任意代码,即可以通过远程攻击,直接控制和接管EOS上运行的所有节点。
5月29日凌晨,360第一时间将该类漏洞上报EOS官方,并协助其修复安全隐患。EOS网络负责人表示,在修复这些问题之前,不会将EOS网络正式上线。
EOS超级节点攻击:虚拟货币交易完全受控
在攻击中,攻击者会构造并发布包含恶意代码的智能合约,EOS超级节点将会执行这个恶意合约,并触发其中的安全漏洞。攻击者再利用超级节点将恶意合约打包进新的区块,进而导致网络中所有全节点(备选超级节点、交易所充值提现节点、数字货币钱包服务器节点等)被远程控制。
由于已经完全控制了节点的系统,攻击者可以“为所欲为”,如窃取EOS超级节点的密钥,控制EOS网络的虚拟货币交易;获取EOS网络参与节点系统中的其他金融和隐私数据,例如交易所中的数字货币、保存在钱包中的用户密钥、关键的用户资料和隐私数据等等。
更有甚者,攻击者可以将EOS网络中的节点变为僵尸网络中的一员,发动网络攻击或变成免费“矿工”,挖取其他数字货币。
来源:科技讯
6. 对于缓冲区溢出的漏洞最佳的解决方法有哪些
缓冲区溢出是利用系统或者程序中的漏洞(对于边界未有效检查),从而使得程序的返回地址遭到意外覆盖导致的,所以及时更新安全漏洞是有效的解决办法。
7. 360发现了区块链哪些史诗级漏洞
5月29日消息,近日,360公司Vulcan(伏尔甘)团队发现了区块链平台EOS的一系列高危安全漏洞。经验证,其中部分漏洞可以在EOS节点上远程执行任意代码,即可以通过远程攻击,直接控制和接管EOS上运行的所有节点。
区块链网络安全隐患亟待关注
EOS是被称为“区块链3.0”的新型区块链平台,目前其代币市值高达690亿人民币,在全球市值排名第五。
在区块链网络和数字货币体系中,节点、钱包、矿池、交易所、智能合约等都存在很多的攻击面,360安全团队此前已经发现和揭露了多个针对数字货币节点、钱包、矿池和智能合约的严重安全漏洞。
此次360安全团队在EOS平台的智能合约虚拟机中发现的一系列新型安全漏洞,是一系列前所未有的安全风险,此前尚未有安全研究人员发现这类问题。这类型的安全问题不仅仅影响EOS,也可能影响其他类型的区块链平台与虚拟货币应用。
360表示,希望通过这一漏洞的发现和披露,引起区块链业界和安全同行在这类问题的安全性上更多的重视和关注,共同增强区块链网络的安全。
内容来源 澎湃新闻
8. 缓冲区溢出漏洞知识
因为它是在程序执行的时候在缓冲区执行的错误代码,所以叫缓冲区溢出漏洞。
它一般是由于编成人员的疏忽造成的。
具体的讲,溢出漏洞是由于程序中的某个或某些输入函数(使用者输入参数)对所接收数据的边界验证不严密而造成。
根据程序执行中堆栈调用原理,程序对超出边界的部分如果没有经过验证自动去掉,那么超出边界的部分就会覆盖后面的存放程序指针的数据,当执行完上面的代码,程序会自动调用指针所指向地址的命令。
根据这个原理,恶意使用者就可以构造出溢出程序。 其实溢出原理很简单(我以前以为很难理解,太菜了,o(∩_∩)o…)。当然,这里为了让大家容易理解,会引用一些程序实例(如果没有编程基础的,可以略过程序不看,影响不大,还是能理解的),而且说得会比较通俗和简单,不会太深入。
从书上找来找去,终于找到一个适合的程序(汗!要找符合的程序简单啊,但是要找特级菜鸟觉得特别简单的程序就不多了,55~~)。大家看看下面这段程序:
#include “stdafx.h”
#include “string.h”
#include “stdio.h”
char buf[255], pass[4]; /*声明变量,让计算机分配指定的内存*/
int main (int argc , char* argv[ ])
{
printf(“请输入您的密码:”); /*指定输出的字符*/
scanf(%s ,buf); /*输入一个字符串,保存在变量buf中*/
strcpy(pass , buf); /*把字符串buf中的字符串复制到变量pass中*/
if (strcmp(pass,”wlqs”)= =0) /*比较输入的字符串是否为密码*/
printf (“输入正确!”);
else printf(“输入错误!);
return 0;
}
(注:“/*”中的中文是对程序的注解)
这是一段密码验证程序,与我们平时输入密码一样,先让用户输入密码,然后在取得真正的密码,与之对比,如果差异为0,则输出密码正确,否则输出密码错误。很多帐号登录的程序都是这样做的,看起来没有非常合理,其实不然,它有一个致命缺陷!这个漏洞很容易就看出来了。那就是它给数据申请了4个字节的储存空间,但是万一用户输入的数据不只4个字节,那么剩余的字节存放在哪里?
先举个例子,有一条一米长的木头,有一张红色纸条从尾巴往头贴,上面写有字,然后又有一张蓝色纸条,上面也写有字,要从木头的头往它的尾巴贴,但是贴了红色纸条过后只剩4cm的长度,贴完后会有人读出后面96cm的字,并且执行字条的命令,但是蓝色纸条却有10cm的长度,怎么办呢?只有把蓝色纸条剩下的部分贴在红色纸条上了。那么红色纸条的一些字就被覆盖了。但是那个人还是会去读那后面96cm的字,所以他就只有读错,前面读的都是蓝色字条的字。先前去执行的是蓝色字条后面6cm的命令。
当然大家看了这个例子也不是很懂,下面来注解一下:
人——CPU
红色字条上的字——CPU要执行的命令
4cm的长度——计算机为数据申请的内存空间
蓝色字条上的字——要储存的数据
可以看见蓝色字条已经覆盖了红色字条上的字,然而那个人还是必须读出后面96cm的字并执行。后面已经不是规定的命令了!他根本就不能执行,根本读不懂!那么他就不能执行了,并且报错。
如图系统只为我的密码分配4个字节的内存,那么我输入的密码是“714718366”循环了6次的,不只4个字节吧,其他剩下的字符将溢出!剩下的数字将占用内存空间,那么系统执行命令的时候将会执行占用内存的数据,而不是执行原先写好的命令了!这些数字系统根本就读不懂,如何执行?那么它只好报错了!说此程序遇到问题需要关闭。那么计算机上的程序将出错而无法执行或关闭。
二、本地溢出
</B>上面所说的本地计算机因数据溢出而关闭程序或无法执行就叫做本地溢出。输入超长的数据已经把计算机要执行的代码覆盖掉了,可是,计算机不会管指令有没有被更改,依旧取原先存放指令的空间里的数据来运行,取到“shujucuole!shujucuole!shujucuole!”这些不合法的溢出数据,它依旧会执行,可是在计算机里这样的指令是非法指令,也就是不符合计算机逻辑的指令,用户执行它的时候就会出错,于是程序就被强行关闭了。
题外话:(想来想去,还是说一说o(∩_∩)o…我的爱好……损人利己的爱好)利用这样的溢出漏洞可以关闭很多程序,比如各学校机房里安装的那些远程教育系统,学生的计算机被教师的计算机所控制是因为学生机上安装有一个学生端程序,教师机可以通过教师端来对学生端进行远程控制,学生端没有推出功能,学生所在的用户组也没有强行结束进程的权限,档学生不想被老师控制的时候,可以打开学生端自带的远程消息功能,在消息里输入很长的数据,比如几百上千句“敢控制我!看我不宰了你!”,然后发送,就可以令学生端程序出错而被系统强行关闭。这招对某些网吧的收费系统也有用的!^_^
三、远程溢出
再举个列子(哎,这英文字母也太难打了,程序更难找,还翻了好几本书呢!55~~):
#include “stdafx.h”
#include <winsock.h>
#pragma comment(lib ,”ws2_32”)
int main(int argc,char* argv[ ])
{
char buf[255]=” ”,pass[4]=” ”; //声明变量,让计算机分配内存
//================================================================
//这节的代码功能是出示化网络连接
//并侦听1234端口等待连接
//没有编程基础的特级菜鸟可以略过不看
SOCKET sock1,sock2;
struct sockaddr_in addr1;
struct sockaddr_in addr2;
addr1 .sin_addr.s_addr=INADDR_ANY;
addr1 .sin_family=AF_INET;
addr1 .sin_port=htons(1234);
WSADATA * wsadatal=new WSADATA( );
WSAStartup(MAKEWORD(2,2),wsadatal1);
sock1=socket(AF_INET,SOCK_STREAM,0);
bind(sock1,(sockaddr *)&addr1,sizeof(struct sockaddr) );
listen(sock1,10);
int iSin=sizeof(struct sockaddr_in);
//=================================================================
if(sock2=accept(sock1,(sockaddr *)&addr2,&iSin)
{//有用户连接进来
send(sock2,“请输入密码,密码正确,则告诉你我的qq:”,36,0);
//发送提示用户输入密码
if (recv(sock2,buf,255,0))
{//接受用户发送过来的数据并保存在缓冲buf变量里
strcpy (pass,buf);//把缓冲buf变量里的数据复制到pass变量中
if(strcmp(pass,”wlqs”= =0)
//比较pass变量里的数据跟“wlqs”字符串之间的差异是否为0
{//差异为0,则说明两者相等,密码正确
send(sock2,”714718366”,9,0);//发送QQ号给用户
}
else
{//否则就说明密码错误
send (sock2,”密码错误!”,10,0);
}
}
}
//=================[/ft]关闭网络连接并退出=======================
closesocket(sock2);
closesocket(sock1);
return 0;
}
(可把我打死了!这么长的字母啊!我最讨厌打英文了!和写简直是两回事*_*)
这是一个服务器程序,当有用户连接的时候,它会先发送一句话,提示用户输入登录密码。其实它和前面说的本地溢出例子形似,问题也就处在把数据从缓存复制刀内存的那句代码里,如果远程用户输入的密码太长,那么同样出现溢出的现象。那么程序就会出错,服务端将被强行关闭。
举个例子,比如腾讯公司的即时通讯软件服务端程序就曾被黑客不停地攻击导致服务端崩溃,不能正常提供服务,只是很多用户都不能登陆,及时登陆成功也会在几分钟之内再次掉线,就是因为他们的服务端有这样的漏洞存在,被别人利用了,这给他们以及他们的客户造成了不可估计的损失。
9. 什么是缓冲区溢出漏洞
用的comodo吧 去网络
缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。