`

Rails 官方修正2.3 的digest authentication 的安全漏洞

阅读更多
A security problem has been reported with the digest authentication code in Ruby on Rails. This vulnerability can allow users to bypass your password protection. This vulnerability has been publicly disclosed on several websites, users are advised to take the mitigating steps described below immediately.

The issue comes from the handling of the block passed to authenticate_or_request_with_http_digest. This block must return the user’s password in the clear, or a sha1 hash of the user’s password. Unfortunately the documentation was unclear on this and the examples cited would return nil if the user was not found. The correct behaviour if the user doesn’t exist is to return false.

If the return value was nil, rails proceeded to verify this value against the provided password. Because of this an attacker can provide an invalid username and no password and authentication will succeed.
Fixed Versions

We have altered the behaviour of the relevant code to make nil an authentication failure. This fix has been pushed to 2-3-stable and will be present in 2.3.3 due to be released in the next few days. All versions of edge rails after commit 1ad57cfe2fbda58439e4b7f84008ad23bc68e8b0 contain the fix.
Steps to Protect your application.

Users can protect themselves without upgrading by simply ensuring that their authentication blocks never return nil. To take an example from the documentation:
authenticate_or_request_with_http_digest(REALM) do |username|
  USERS[username]
end

Should instead be something like:

authenticate_or_request_with_http_digest(REALM) do |username|
  USERS[username] || false
end


Disclosure Notes

Due to communication difficulties and a mis-understanding between the reporter and the security team. This vulnerability has been publicly disclosed on several websites, users are advised to update their applications immediately. Steps are being taken to ensure that the security email is more reliable in the future. We regret the nature of this disclosure and will endeavor to ensure it doesn’t happen again in the future.

Nate Kontny of Inkling Markets has found a nasty security hole in the code example provided in both the documentation and blog post for the Digest Authentication functionality in Rails 2.3. If you've built your routine in a similar way to that as shown in the Rails documentation or blog post, you might be open to security issues.

Here's the code example in question:
class PostsController < ApplicationController
  Users = {"dhh" => "secret"}
  before_filter :authenticate

  def index
    render :text => "You needed a password to see this…"
  end

  private

  def authenticate
    realm = "Application"
    authenticate_or_request_with_http_digest(realm) do |name|
      Users[name]
    end
  end
end

Notice that authenticate uses the Users hash to authenticate the HTTP Digest Auth request? When you call hashes with non-existing keys, nil is returned. Luckily, Rails' digest authentication routines consider a response of nil as an authentication failure but if the password actually supplied is blank (ending up as nil), things don't quite work out as intended since nil == nil and you get right through the authentication!

Nate has written up a ton of info about this, including a test and a patch, and it's a must-read unless you're totally confident you have this covered already.

Worryingly, Nate claims that he has had little luck in raising this vulnerability with the Rails core team:

    I've attempted to contact this security list and a couple members on the core team through their individual email accounts over a week ago. I've only received one response last Thursday that someone would look into it, but the issue seemed to die there.

    Now that enough time has been given for the security list to look into the problem (and hopefully not ignore it), the best practice I thought would be to tell as many people as possible about it so the fix can be applied and publicized. I felt I'd get a lot bigger audience here at Hacker news than the rails bug tracker. The bigger the audience the more people that can get their Rails 2.3 instances fixed if they are effected and avoid a problem. I was also planning on posting it there, but feel free to do it as well.
分享到:
评论

相关推荐

    rails_simple_auth:Ruby on Rails简单身份验证应用程序

    模型通常包含属性(如`username`,`email`,`password_digest`等)和验证规则,以确保输入的数据有效和安全。 3. **控制器(Controller)** 控制器负责处理用户的请求,调用模型进行业务逻辑,并向视图传递数据。...

    api_guard:用于Rails API的JWT身份验证解决方案

    $ rails generate model user name:string email:string:uniq password_digest:string 然后,运行迁移以创建users表。 $ rails db:migrate 在User模型中添加以进行密码验证。 请参阅以配置API Guard身份验证以与...

    C#实现欧姆龙NX1P PLC的CIP通讯:源码解析与实战技巧

    内容概要:本文详细介绍了使用C#实现欧姆龙NX1P系列PLC的CIP通讯的具体步骤和技术要点。首先,通过引入第三方库CIPster.Kernel简化了底层协议的处理,展示了如何建立连接、读取和写入PLC标签以及处理常见的字节序问题。接着,深入探讨了CIP协议的报文结构,包括构建CIP报文头、处理不同类型的数据转换(如整型、浮点型)、以及读写特定内存区域的操作。此外,还分享了一些实战经验和常见问题的解决方案,如超时设置、路径配置、心跳机制等。最后,提供了完整的DEMO代码示例,涵盖了连接建立、数据读写、异常处理等方面的内容。 适合人群:具备一定C#编程基础并希望深入了解工业自动化领域PLC通讯的技术人员。 使用场景及目标:适用于需要与欧姆龙NX1P系列PLC进行通讯的应用开发,帮助开发者快速掌握CIP协议的基本原理和具体实现方法,提高开发效率和系统稳定性。 其他说明:文中提到的代码片段可以直接用于实际项目中,建议在使用前仔细阅读相关注释和注意事项,确保正确配置网络环境和PLC设置。同时,推荐结合Wireshark等工具进行抓包分析,以便更好地理解和调试通讯过程。

    ABAQUS模拟大折展比折展结构:应用于机械臂与机器人研究的技术解析

    内容概要:本文详细介绍了如何使用ABAQUS软件模拟大折展比折展结构,特别是类似于钢丝灯罩的结构。首先探讨了这种结构与钢丝灯罩的相似性及其在机械臂和机器人领域的应用价值。接着,文章逐步讲解了在ABAQUS中进行模拟的具体步骤,包括材料属性定义、几何建模、网格划分、单元选择、接触设置、加载方式以及后处理等方面的内容。文中还分享了一些实用的小技巧,如选择合适的单元类型、优化接触对定义、合理设置加载条件等。最后,强调了这种模拟方法在航天器太阳能帆板、救援机器人折叠臂等领域的重要意义。 适合人群:从事机械工程、航空航天、机器人技术等相关领域的研究人员和技术人员。 使用场景及目标:适用于希望深入了解大折展比折展结构的设计和性能的研究人员,帮助他们优化结构设计,提高机械臂和机器人的稳定性和可靠性。 其他说明:文章不仅提供了具体的ABAQUS操作指南,还分享了许多实践经验,有助于读者更好地理解和应用这些技术。同时,文中提到的一些挑战和解决方案也为进一步的研究提供了有价值的参考。

    生物医学工程中COMSOL人体皮肤温度场计算模型的应用与实现

    内容概要:本文详细介绍了利用COMSOL软件对人体皮肤温度场进行数值模拟的方法和技术细节。首先解释了COMSOL作为多物理场仿真的工具及其在生物医学工程领域的应用价值,然后逐步讲解了如何建立皮肤的几何模型,包括表皮层和真皮层的具体参数设置。接着探讨了物理场的选择与配置,如热传导方程、材料属性(导热系数)以及边界条件(对流换热系数、环境温度)。此外,还讨论了热源的引入方式,即通过代谢产热和血液灌注来模拟体内热量生成。最后,阐述了求解过程中的技巧,如网格划分、求解器设置,并展示了最终获得的人体皮肤温度分布云图及其实际意义。 适用人群:从事生物医学工程、热物理学等相关领域的科研工作者,尤其是那些希望深入了解人体皮肤温度场特性的研究人员。 使用场景及目标:适用于需要精确掌握人体皮肤温度分布的研究项目,例如皮肤生理功能探究、疾病诊断、药物递送系统设计等。通过对该模型的学习和应用,能够更好地理解皮肤细胞在正常运作代谢下的热环境,从而为相关研究提供理论依据和技术支持。 其他说明:文中不仅提供了详细的建模步骤指导,还包括了一些实用的小技巧,如参数化扫描、自适应网格划分等,有助于提高建模效率和准确性。同时,作者还分享了将模型应用于实际问题的经验,如降温面膜的设计、烧伤评估等,体现了该模型的广泛适用性和实用性。

    基于MATLAB的含N-K安全约束光热电站电力系统优化调度模型研究

    内容概要:本文详细探讨了利用MATLAB构建含N-K安全约束的光热电站电力系统优化调度模型。首先介绍了N-K安全约束的概念及其重要性,即确保系统在多个元件故障情况下仍能稳定运行。接着深入解析了光热电站的储热系统建模,包括储热罐的充放电逻辑以及相关效率参数设置。随后讨论了目标函数的设计,将火电成本、风光弃电惩罚和光热运行成本综合考虑,以达到经济性的最优平衡。最后通过具体案例展示了光热电站在提高系统灵活性和降低弃风弃光率方面的显著效果。 适合人群:从事电力系统优化、智能电网研究的专业人士和技术爱好者。 使用场景及目标:适用于需要解决大规模风电光伏接入带来的调度难题,特别是在保障电网安全性的同时最大化新能源利用率的应用场景。目标是为研究人员提供一种有效的数学建模方法论,帮助他们更好地理解和应用光热电站在现代电力系统中的优势。 其他说明:文中提供了详细的MATLAB代码片段用于解释各个模块的具体实现方式,并强调了模型参数选择的重要性。此外还提到了一些实用的调度策略,如优先调整光热电站储热状态应对突发故障等。

    【自动控制领域】基于自适应误差反馈调节的1-D反稳定波动方程控制系统设计与实现:谐波干扰下的单测量信号观测器及稳定性验证(复现论文或解答问题,含详细可运行代码及解释)

    内容概要:该论文研究了一维反稳定波动方程在谐波干扰下的误差反馈调节问题,提出了一种自适应控制方法,通过可逆变换将各通道的干扰集中到一个通道,并基于单点非同位测量误差设计自适应观测器。该方法构建了基于观测器的误差反馈控制器,证明了跟踪误差渐近收敛于零且所有内部信号有界。代码实现了波动方程的空间离散化、自适应控制输入和更新律,并通过数值模拟验证了方法的有效性,展示了跟踪误差的渐近收敛性和未知参数的估计能力。 适合人群:具备一定控制理论基础和编程能力的研究人员、工程师,特别是从事振动控制、电力系统和机械臂控制等领域的人士。 使用场景及目标:①研究反稳定系统在谐波干扰下的控制问题;②设计针对单测量信号的自适应观测器;③实现对全通道分布干扰的集中处理;④验证控制系统的稳定性和参数估计精度。 其他说明:该实现不仅提供了详细的理论推导和算法实现,还进行了与传统方法的性能对比,展示了本文方法在收敛时间、稳态误差和计算复杂度上的优势。此外,还提出了硬件部署优化策略和参数整定规则,确保了方法的工程可行性。

    三菱PLC与MCGS组态在污水处理PH调节电气控制系统中的应用与优化

    内容概要:本文详细介绍了基于三菱PLC和MCGS组态软件的污水处理PH调节电气控制系统的设计与优化。系统架构主要包括传感器、三菱PLC、执行机构和MCGS组态软件。三菱PLC负责数据采集、逻辑控制和数据存储,MCGS组态软件提供人机交互界面。文章深入探讨了PLC程序设计中的数据采集、控制逻辑、PID控制参数整定、异常处理机制等方面的技术细节,并分享了现场调试的经验教训,如电磁干扰处理、通讯参数优化等。此外,还介绍了MCGS组态设计中的实时数据显示、历史数据曲线、报警功能等实用功能。 适合人群:从事工业自动化、污水处理行业的工程师和技术人员。 使用场景及目标:适用于污水处理厂或其他需要精确PH调节的场合,旨在提高PH调节的精度和稳定性,确保污水处理达到排放标准,减少设备维护成本。 其他说明:文中提供了大量实际案例和代码片段,有助于读者理解和应用相关技术和方法。

    Maxwell软件中外转子电机设计与电磁仿真的关键技术解析

    内容概要:本文详细探讨了利用Maxwell软件进行外转子电机设计与电磁仿真的方法和技术要点。首先介绍了外转子电机的独特结构及其优点,如更大的转动惯量,适用于无人机、风扇等设备。接着阐述了电机设计的基础步骤,包括确定基本参数(功率、转速、电压)、计算转矩等。然后深入讲解了Maxwell软件在电磁仿真中的具体应用,涵盖建模、材料设置、边界条件与激励设置、仿真计算与结果分析等方面。文中还提供了多个Python和Matlab代码片段作为示例,展示了如何通过编程辅助设计和优化过程。此外,强调了仿真过程中常见的陷阱和注意事项,如正确设置运动边界、合理划分网格、关注散热问题等。 适合人群:从事电机设计与制造的技术人员、研究人员以及相关专业的学生。 使用场景及目标:①掌握外转子电机的设计原理和方法;②学会使用Maxwell软件进行电磁仿真;③避免常见设计误区,提高仿真精度和可靠性。 其他说明:文章不仅提供了理论指导,还结合实际案例分享了许多实用经验和技巧,有助于读者更好地理解和应用所学知识。

    岩土工程中边坡冻融循环的水热力三场耦合Comsol有限元数值仿真研究

    内容概要:本文详细探讨了寒冷地区边坡在冻融循环下的水热力三场耦合现象及其对边坡稳定性的影 响。首先介绍了边坡冻融循环的现象,即水分冻结和融化对岩土体产生的压力和孔隙结构变化,从而导致 强度降低和变形增大的风险。接着阐述了水、热、力三场之间的复杂相互作用原理,以及如何利用Comsol 软件进行有限元数值仿真。具体步骤包括模型建立、材料属性设置、物理场选择与耦合设置、网格划分和 结果分析。通过仿真,可以深入了解冻融循环对边坡的影响,为稳定性评估和防护措施提供理论依据和技术 支持。 适合人群:从事岩土工程、地质工程及相关领域的研究人员和工程师。 使用场景及目标:适用于寒冷地区边坡工程的设计、施工和维护,旨在提高边坡稳定性,预防潜在的 工程灾害。通过对边坡冻融循环的仿真研究,可以优化设计方案,采取有效的防护措施,确保边坡的安全 和可靠。 其他说明:文中还提到了一些具体的仿真技巧,如等效热容法处理相变、动态热边界设置、位移场矢 量切片分析等,有助于提升仿真的准确性和实用性。同时强调了参数敏感性分析的重要性,指出不同的初 始条件可能会显著影响仿真结果。

    非线性多智能体有向网络一致性中的最小领导者数分配研究及其Python实现

    内容概要:本文探讨了非线性多智能体有向网络一致性问题,特别是最小领导者数分配这一关键议题。文中首先介绍了多智能体系统的背景和应用场景,如无人机编队飞行等。随后详细讲解了如何通过Python代码模拟一个简化的多智能体有向网络,展示了领导者在其中发挥的重要作用。代码部分不仅涵盖了有向图的创建、智能体状态更新机制的设计,还涉及到了如何通过最小根集寻找关键节点的方法。此外,文章还讨论了不同网络拓扑结构(如环状、树状、星型)下最小领导者数的选择策略,并指出领导节点的位置对系统收敛速度的影响。最后强调了在实际工程应用中,除了追求最小领导者数外,还需考虑系统的鲁棒性和动态性能。 适合人群:对多智能体系统、分布式控制系统感兴趣的科研工作者和技术爱好者。 使用场景及目标:帮助读者理解非线性多智能体有向网络一致性的基本概念和最小领导者数分配的原则,掌握相关Python编程技能,能够应用于实际项目中,如无人机编队控制、机器人协同作业等领域。 其他说明:文章提供了丰富的实例和代码片段,便于读者理解和实践。同时提醒读者注意实际应用中的复杂性和挑战,鼓励进一步深入研究。

    DP-Modeler V2.0图像快速建模系统使用手册.pdf

    DP-Modeler V2.0图像快速建模系统使用手册

    VisualSVN-Server-Enterprise,版本4.1.4

    VisualSVN_Server_Enterprise,版本4.1.4,Server 2022下测试可用。

    FPGA纯逻辑实现10G UDP协议栈:动态ARP、Ping及UDP数据收发的高效设计方案

    内容概要:本文详细介绍了基于FPGA的10G UDP协议栈的纯逻辑实现方案,涵盖动态ARP、ICMP协议栈和UDP数据流水线的设计与实现。作者通过Xilinx Ultrascale+的GTY收发器,绕过了昂贵的10G PHY芯片,利用BRAM构建带超时机制的ARP缓存表,采用三级流水架构进行数据包解析,并通过查表法优化CRC校验。此外,解决了跨时钟域处理导致的丢包问题,最终实现了稳定的10Gbps线速传输。文中还讨论了资源消耗情况以及在实际应用中的表现。 适合人群:从事FPGA开发、高速网络通信、嵌入式系统的工程师和技术爱好者。 使用场景及目标:适用于需要自定义协议栈或超低延迟的应用场景,如高速数据采集、实时视频传输等。目标是提供一种高效的纯逻辑实现方案,替代传统依赖PHY芯片的方式,降低成本并提高灵活性。 其他说明:文中提供了多个代码片段,展示了具体的技术实现细节,如ARP缓存管理、CRC校验优化、跨时钟域处理等。同时,强调了时序收敛和资源优化的重要性,并分享了一些调试经验和性能测试结果。

    原创c++小游戏.z,欢迎大家下载,欢迎关注

    可以作为平时打代码时的消遣品

    电动汽车三相车载充电机(OBC)仿真:从电网到电池的能量流动与控制策略解析

    内容概要:本文详细介绍了电动汽车三相车载充电机(OBC)的仿真过程及其关键技术细节。首先,文章展示了OBC的整体拓扑结构,包括三相电压型PWM整流器和移相全桥DC-DC变换器。接着,深入探讨了电流跟踪控制、母线电压过冲控制、功率因数校正(PFC)、电池动态内阻模型以及改进型二阶广义积分器(SOGI)锁相等核心技术。此外,文章还讨论了仿真过程中遇到的实际问题及解决方案,如电流环PI参数选择、预充电逻辑、锁相环参数调整、温度影响等。通过这些技术手段,确保了仿真结果与实车数据误差控制在5%以内。 适合人群:从事电动汽车充电系统研究的技术人员、电力电子工程师、控制系统设计师。 使用场景及目标:适用于需要深入了解电动汽车车载充电机工作原理和技术实现的研究人员和工程师。主要目标是掌握OBC的关键技术和仿真技巧,提高实际项目的成功率。 其他说明:文中提供了大量MATLAB/Simulink/C/Python代码片段,帮助读者更好地理解和实现相关技术。同时,强调了实际硬件实现时需要注意的非理想特性,如开关损耗、米勒平台效应等。

    电力电子领域中基于MPC的三相T型三电平逆变器并网控制仿真与优化

    内容概要:本文深入探讨了利用模型预测控制(MPC)对三相T型三电平逆变器进行并网控制的仿真研究。文章首先介绍了系统的拓扑结构及其面临的挑战,如中性点电压波动和共模电压问题。接着详细解释了MPC的核心思想,即通过构建代价函数来综合处理多个控制目标,包括电网电流跟踪、中性点电压平衡和漏电流抑制。文中提供了具体的代价函数和SVPWM实现方法,并通过仿真波形展示了不同阶段的控制效果。此外,作者分享了一些调试经验和常见错误避免技巧,强调了参数调整的重要性以及各控制目标之间的权衡关系。 适合人群:从事电力电子控制系统设计的研究人员和技术人员,尤其是对MPC感兴趣或希望深入了解三电平逆变器控制机制的专业人士。 使用场景及目标:适用于需要提高逆变器并网性能的应用场合,旨在帮助读者掌握MPC的基本原理及其在实际工程项目中的应用方法,从而实现更高效的多目标控制。 其他说明:文章不仅提供了理论分析,还包括了大量的代码片段和实践经验,有助于读者更好地理解和实施相关技术。同时,针对特定版本软件(如MATLAB 2018b)可能出现的问题给出了改进建议。

    2RC等效电路模型参数离线辨识方法及Python/Matlab代码实现

    内容概要:本文详细介绍了2RC等效电路模型参数的离线辨识方法,涵盖数据预处理、微分方程建模、状态空间离散化以及参数辨识的具体步骤。首先,通过对实测电压电流数据进行时间戳对齐和滑动窗口去噪等预处理手段,确保输入数据的质量。接着,基于2RC模型的状态方程,采用离散化方法避免数值不稳定问题。参数辨识部分提供了两种主要方法:分段线性回归适用于高质量数据,而全局优化法则利用遗传算法和最小二乘法结合,能够处理复杂的非线性关系并防止过拟合。文中还强调了OCV-SOC曲线的准确性对R0估计的影响,并给出了具体的代码实现和优化技巧。 适用人群:从事电池管理系统(BMS)开发、电池建模研究的技术人员,尤其是有一定编程基础并对电池特性有一定了解的研发人员。 使用场景及目标:帮助工程师从实验室采集的充放电数据中提取有效的2RC等效电路模型参数,提高电池性能预测的准确性。具体应用场景包括但不限于电动汽车、储能系统等领域。 其他说明:附带完整的实验数据包、参数辨识工具箱及操作手册,提供了一键生成拟合对比图的验证脚本,便于用户快速上手实践。

    基于Matlab的农作物叶子虫害识别与分类系统:计算机视觉助力精准农业

    内容概要:本文详细介绍了基于Matlab的农作物叶子虫害识别与分类系统,旨在通过计算机视觉技术提高农业病虫害管理效率。系统主要分为六个步骤:训练颜色模型、量化HSV分量、获取颜色直方图、中值滤波、提取颜色特征以及特征匹配。通过这些步骤,系统能够准确识别和分类病虫害叶子,并提供详细的报告。此外,文中还讨论了系统的设计优势,如结构清晰、运算速度快和可扩展性强。为了应对实际应用中的挑战,作者分享了一些实践经验,如光照补偿、边缘误判处理和实时性优化。 适合人群:农业技术人员、科研工作者、对农业自动化感兴趣的开发者。 使用场景及目标:适用于农田管理和病虫害监测,帮助农民及时发现并处理病虫害问题,从而提高农作物产量和质量。系统的目标是通过高效、准确的识别和分类,减少人工误差,提升农业生产的科学性和智能化水平。 其他说明:文中提供了大量Matlab代码示例,涵盖了从图像处理到特征匹配的各个环节。同时,系统还配备了友好的GUI界面,使得非专业用户也能轻松上手。

    电力电子领域PQ控制三相并网逆变器的PWM调制、LCL滤波及电流THD优化

    内容概要:本文深入探讨了PQ控制三相并网逆变器的技术细节,涵盖PWM调制策略、LCL滤波器设计及其对电流THD的影响。PWM调制策略通过SPWM和SHEPWM实现直流电压到交流电压的高效转换;PQ控制方法利用电网电压定向的矢量控制原理,精确调节有功和无功功率;LCL滤波器有效抑制高频谐波,确保电流THD达到2.6%。此外,文中还介绍了仿真模型的搭建和调试技巧,展示了各模块之间的协同工作。 适合人群:从事电力电子研究和技术开发的专业人士,尤其是关注并网逆变器设计和优化的研究人员和工程师。 使用场景及目标:适用于希望深入了解并网逆变器内部机制的研发人员,帮助他们在实际工程项目中提高逆变器性能,降低谐波失真,优化系统效率。 其他说明:文中提供的代码片段和仿真模型有助于读者更好地理解和实践相关技术,同时引用了多篇权威文献供进一步学习。

Global site tag (gtag.js) - Google Analytics