阅读更多

0顶
0踩

编程语言
近日,Ruby的Hash算法被爆出了一个安全漏洞,攻击者可以据此发起DoS(拒绝服务)攻击。

该漏洞和计算复杂性相关,攻击者通过碰撞字符串hash值,可以发现一些字符串序列,使用这些序列,攻击者可以发起拒绝服务攻击,例如,可以将它们作为你的Rails应用HTTP请求的POST参数。

详细说明

该情况与2003年在Perl中发现的漏洞类似。在Ruby 1.8分支中,使用了一个确定性的hash函数用于hash字符串,“确定性”的意思是除了输入的字符串自身外没有其他的位参与生成hash值,因此你可以预先计算一个字符串的hash值。

通过收集一系列有相同hash值的字符串,攻击者可以让Ruby进程碰撞hash表(包括hash类实例)。Hash表的amortized O(1)属性取决于hash值分布的均匀性。通过有针对性的输入,攻击者可以让hash表工作比预期慢得多,也就是说构造一个n元素表的复杂度是O(n2)。

受影响的版本

Ruby 1.8.7-p352 及所有之前的版本。

Ruby 1.9系列不会受到这种攻击,它们的哈希实现与Ruby 1.8系列不同。

解决方案

目前的解决方案是通过一些PRNG(伪随机数发生器)生成的随机位来扰乱字符串hash函数。通过这样做,字符串的hash值将不再是确定的。这样,String#hash结果只和当前进程的生命周期一致,并会在下次启动时产生一个不同值。针对这种情况,攻击者必须创建一组针对这种混杂方式的健壮的字符串,但这是十分困难的。

请将Ruby升级到1.8.7 - P357或更高版本。

Ruby 1.8.7 - P357 下载:http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/391606

Via ruby-lang.org
0
0
评论 共 2 条 请登录后发表评论
2 楼 skandhas 2012-01-04 11:19
PHP Python也中招了 :<
1 楼 skandhas 2012-01-04 11:18
这可不是单单Ruby的问题。
应是这个:
Apache曝HashTable碰撞拒绝服务漏洞,Java、PHP、Asp.Net及v8引擎等都受影响
http://www.iteye.com/news/23859

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 总结下几个有漏洞第三方插件

    总价中间件漏洞

  • 《磐石计划:Web安全漏洞与渗透测试》笔记

    课程:磐石计划:Web安全漏洞与渗透测试 主讲老师:陈殷 课程详情:https://www.cnblogs.com/xuanhun/p/12849767.html 本文内容:磐石计划课堂笔记 引用:课程讲义(作者:陈殷),课程PPT 1.安全概念 1.1初探安全 ...

  • 大型网站架构

     服务的分类(核心业务功能服务,数据服务,展现服务等),以及各类服务的设计原则和建议  接口标准 (JMS, RMI, HTTP 等),建议的接口样式(例如:尽量采用粗粒度、异步的服务调用模式),可靠性要求等 ...

  • 网络安全专业名词解释

    1.Burp Suite 是一款信息安全从业人员必备的集成型的渗透测试工具,它采用自动测试和半自动测试的方式,通过拦截HTTP/HTTPS的Web数据包,充当浏览器和相关应用程序的中间...作动词解释时理解为恶意软件与攻击者进行交互

  • redis数据库使用03、redis集群

    如下 --//zlib.o: ../../include/ruby.h --//这一步如果不修改,make时会爆出另外一个错误 --//make:*** No rule to make target `/include/ruby.h', needed by `zlib.o'. Stop make && make install --yum install ...

  • wuyun知识库目录

    1269.利用Office宏及Powershell的针对性攻击样本分析2016-06-24 1268.SQL注入关联分析2016-06-24 1267.Android安全开发之ZIP文件目录遍历2016-06-23 1266.search-guard 在 Elasticsearch 2.3 上的运用2016-06-23 ...

  • 渗透测试 ( 1 ) --- 相关术语、必备 工具、导航、全流程总结、入侵网站思路

    其它端口服务漏洞 通信安全 4、漏洞验证: 自动化验证:结合自动化扫描工具提供的结果。 手动验证:根据公共资源进行验证。 试验验证:自己搭建模拟环境进行验证。 登陆猜解:有时可以尝试猜解一下登陆的账号密码等...

  • 【小迪安全】红蓝对抗 | 网络攻防 | V2022全栈培训笔记(信息打点 1-11)

    1、名词解释-渗透测试-漏洞&攻击&后门&代码&专业词2、必备技能-操作系统-用途&命令&权限&用户&防火墙3、必备技能-文件下载-缘由&场景&使用-提权&后渗透4、必备技能-反弹命令-缘由&场景&使用-提权&后渗透前后端,Poc/...

  • 「干货」Web安全红队外围信息收集「详细总结」

    没有统一的安全管理,由于庞大系统需要多个管理员一起维护,一旦有重大漏洞爆出往往会出现响应不及时的现象。例如:在互联网上传播最新漏洞信息,防守比较强的行业能在第一时间内修复漏洞或者找到临时应对的方法。...

  • [NOTE] WebGoat v8.2.2学习笔记

    JWT使用注意事项 锁定算法,确保用户不能修改算法 当使用对称密钥签名时,请确保密钥的长度 尽量不要在JWT主体中添加敏感信息,除非经过加密 请确保足够的测试案例被使用,使用第三方测试服务并不意味自己无需测试;...

  • vue面试题(自用)

    vue路由是基于SPA单页面应用思想去开发的 利用BOM API 来使用 hash模式 通过 BOM location对象的hash属性来改变路由 history模式 通过BOM history对象的pushState属性来改变路由 那你说下什么是单页面应用SPA优缺点...

  • WebGoat之JWT部分攻略

    环境搭建 使用docker容器搭建webgoat...JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直

  • Centos7 安装配置MySQL5.7

    CentOS安装rpm安装MySQL时爆出警告: 根本原因:这是由于yum安装了旧版本的GPG keys造成的 解决办法:后面加上 --force --nodeps 即可 rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm --force --nodeps ...

  • jvm的类加载和运行时数据区和垃圾回收

    类加载过程 加载(loading) 引导类加载器 扩展类加载器 系统类加载器 1.通过一个类的全限定名获取此类的二进制字节流 2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 3.在内存中生成一个代表这个...

  • C/C++ 开源库及示例代码

    算法2.1 容器2.1.1 标准容器2.1.2 Lockfree 的容器2.1.3 环形缓冲2.1.4 多维数组2.1.5 图2.2 对容器的操作2.3 字符串处理2.3.1 字符集2.3.2 字符串格式化2.3.3 正则表达式2.3.4 (其它)2.4 内存相关2.4.1 智能指针...

  • Unity Terrain Adjust

    核心特性:地形调整的灵活性 地形高度与坡度调整: 利用Terrain Adjust,设计师可以根据需要轻松调整地形的高度和坡度,创造出更加自然和真实的环境。 光滑边缘处理: 工具提供了边缘平滑功能,确保地形调整后的过渡自然,避免了突兀的高低变化。 自定义画笔设置: 可调整画笔大小、衰减、间距等参数,让设计师能够精确控制地形的每一个细节。 应用场景:多样化的地形创作 道路与岩石融合: 利用Terrain Adjust,可以将道路和岩石自然地混合到地形中,为游戏世界增添更多细节。 坡道创建: 工具还支持创建坡道,为游戏中的车辆或其他移动元素提供更加丰富的地形变化。 技术细节:轻量级与高效 编辑器专用: 作为编辑器的专用工具,Terrain Adjust不会对项目造成混乱,保持了工作环境的整洁。 Collider需求: 为了使用Terrain Adjust,目标对象需要有Collider组件,以确保地形调整的准确性。 Terrain Adjust工具以其轻量级设计和强大的地形调整功能,成为了Unity环境设计师的得力助手。它不仅提高了工作效率,还为创造更加丰富和真实的游戏世界提供了可能。

  • 基于 Shell 的驾照理论考试练习软件的设计与实现

    【作品名称】:基于 Shell 的驾照理论考试练习软件的设计与实现 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 测试题数据存储设计 # 测试题目文件夹 # 每个测试题作为一个目录,目录下面必须有 content.txt、options.txt 和 answer.txt 三个文件 # content.txt 文件内容为题目内容 # options.txt 文件内容为题目选项,每个选项占一行 # answer.txt 文件内容为正确答案 export tests_folder='./tests' 复习错题集自动删除答对的错题 export failed_list_file='failed.txt' # 错题集文件 sed -i '' "/$test/d" $failed_list_file

  • PiP-Tool.msi

    PiP-Tool

  • node-v0.10.42-sunos-x86.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics