安天工程师解读CryptKeeper通用密码事件

本文讲的是安天工程师解读CryptKeeper通用密码事件


1 事件起因

2017年1月31日,Softpedia网站发布了一篇名为《Cryptkeeper Linux Encryption App Fails at Job, Has One Letter Skeleton Key – "P"》的文章,其中提及,CryptKeeper应用在Debian 9中存在一个BUG,会使得用户为加密文件夹设定的密码被替换为单个字符“p”,从而使字符“p”作为解密由其加密的文件夹的通用密码。
文章引用了Kirill Tkhai于2017年1月26日在debian社区(bugs.debian.org)提交的Bug信息。安天CERT为验证此消息的准确性,对所涉及模块的源代码进行了分析。

2 事件验证及分析

CryptKeeper是一款工作在Linux平台的加密文件夹管理软件,具有安装、卸载encfs文件夹和更改文件夹密码、创建新加密文件夹的功能,可与默认文件管理器集成使用。CryptKeeper使用GTK库编写,底层对encfs模块进行了封装,使用AES-192/256算法对文件进行加密。
产生问题的代码位于cryptkeeper/src/encfs_wrapper.cpp,在该代码中,作者使用了encfs的-S(Stdinpass)参数,从标准输入读取用户输入的密码。

在旧版本的encfs中,会给出两个选项,让用户手动选择一个加密的模式:

CryptKeeper根据旧版本encfs的设定,在代码中硬编码了"pn"选项,来模拟键盘输入,以选择paranoia模式(具有更高的加密强度)。以模拟键盘输入的方式实现加密模式选择,显然是不够严谨的,这就为后来的“通用密码事件”埋下了隐患。不过,由于encfs并没有提供其它的调用接口,CryptKeeper也没有更好的选择。

 

而本次事件中涉及的Debian9,仍处于测试版(unstable)阶段,使用了较新的encfs(1.9.1-3版)。新版本的encfs在-S参数的解析过程中不再读取模式,而是使用预配置的标准模式,并直接从输入中读取密码:

 

在源代码中也可以看到对应的流程,其中useStdin这个布尔变量在参数为-S的时候被设置,通过fgets读取用户输入的密码。

 

导致CryptKeeper出现该问题的encfs相关代码,为2016年9月由encfs作者于提交。

在encfs的新版本中,对于模式的指定如下:

而在旧版本中,模式的指定使用了不同的代码:

在新旧版本中,对于同一个Config_Prompt模式,是否指定useStdin(-S),行为是不一致的。在新版本中,如果指定了-S并且模式为Config_Prompt的话,会使用标准模式。
因此,CryptKeeper中硬编码的"pn"值被encfs直接看作密码,而实际应使用的密码被抛弃。由于-S模式关闭了输入回显,这个BUG并不容易发现。
而当用户重新加载时,输入原有密码,就会得到如下的"密码错误"提示:

3 事件影响

该事件的影响范围有限,因为:

1、 CryptKeeper的使用人数较少,作者甚至一度停止了维护;
2、 该Bug目前只出现在使用了encfs最新版本(1.9.1-3)的系统上,而此版本并未被很多发行版所采用;
3、 在事件发生后,CryptKeeper作者已从Debian 9的官方源中移除了自己的软件,并将在修复后重新上传该软件。

不过,对于CryptKeeper的用户来说,该事件的影响却是恶性的。一方面,不知情的用户在解除挂载后,将无法再次访问自己的加密文档;另一方面,用户数据在攻击者面前毫无加密强度可言,隐私数据可以被轻松解密获取。

4 关于CryptKeeper作者

CryptKeeper的作者Tom Morton预留邮箱为t-morton@blueyonder.co.uk,而blueyonder.co.uk域名的注册单位为维珍媒体(Virgin Media)。目前, blueyonder.co.uk和virginmedia.com均指向同一页面。Virgin Media是一家英国公司,为企业和消费者提供固定和移动电话、电视、宽带互联网服务。 
作者于1995年在英国布里斯托大学(University of Bristol)获得政治学学士学位,专们研究美国政治、国际关系、政治理论和撒切尔主义。作者在维珍媒体担任执行规划总监(Executive Planning Director)期间,在github启动了CryptKeeper项目,代码最早提交时间为2007年7月12日。目前作者在美国R/GA公司任高级副总裁(SVP Strategy)。

5 总结

通过上述分析可以看出,这个自2007年起就一直以硬编码形式存在于CryptKeeper源代码中字符“p”,之所以在2016年成为可以破解加密数据的“通用密码”,是因为其调用的encfs修改了一个参数(-S)的执行逻辑。

由于此事件给用户造成的后果是明显可感知的——用户使用所设定密码无法解密数据——我们可以初步定性这是一个Bug,而暂不倾向于认为这是一个由开发者(包括 CryptKeeper的开发者和encfs的开发者)预制的后门,也暂没有迹象表明这是一次由攻击者入侵开发环境造成的代码污染。

这个案例再度说明了系统安全的复杂性——特别是系统安全和数据安全“连接部”的脆弱性。对于围绕开源系统(也包括闭源软件)构建的开发环境的环境安全、过程安全,以及更广泛的供应链安全,我们还需擦亮双眼。

原文发布时间为:2017年2月7日

本文作者:安天

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2024-11-03 20:45:47

安天工程师解读CryptKeeper通用密码事件的相关文章

安天针对“魔鼬”木马DDoS事件分析报告

本文讲的是安天针对"魔鼬"木马DDoS事件分析报告, 1   概述 2017年7月30日,安天安全研究与应急处理中心(Antiy CERT)的工程师发现一种具备拒绝服务(DDoS)攻击能力的新型木马.经初步分析,安天CERT工程师认为该木马属于一个新家族,并将其命名为"魔鼬".通过关联查询安天对于DDoS攻击的历史监测数据,发现本次事件中受攻击的域名同时也在遭受Trojan/Linux.BillGates.Trojan/Linux.Mayday等家族的DDoS攻击.

解读SEO实战密码 高级搜索指令

做为一名合格的seo优化人员除了会用搜索引擎搜索普通关键词外,还必须了解一些特殊的高级搜索指令,一般很少人用到,但是对于seoer来说则是研究竞争对手和寻找外链资源的源泉.下面来由"彼岸"为大家揭开高级搜索指令的秘密: 1:双引号:("") 在搜索引擎中将你要搜索的关键词放在双引号中,代表完全匹配搜索,换句话来说也就是搜索返回的结果中必须包含双引号中出现的所有词,顺序也必须完全匹配,因此说此方法对于seoer来说更能够精确的找到特定关键词的竞争对手,便于分析和研究竞

通用JS事件写法实现代码_表单特效

<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>test</title> <script language="javascript" type="text/javascript"> window.onload = function() { var oImg = document.getElementById("

Discuz!新版谍报安全篇:本地对登录密码加密 自定义后台登录文件名

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 细微之处见功夫,安全问题最重要的是细节上的留心,新版Discuz!在安全上也下足了功夫. 新版Discuz!采用独家研发的防陷落系统,经过数次优化.系统对管理后台权限进行了比较大的限制,管理后台所有数据亦严格过滤,并且对模板编辑.数据库导入等可能引起权限提升或者放置木马的操作进行了禁止.文件校验工具,帮助站长检查论坛程序文件,确保系统文件的完

解读ASP.NET密码强度验证代码实例分享_实用技巧

效果如下: 输入密码:密码强度: 弱 中 强   代码如下: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//

麦肯锡解读中国企业大事件营销八大误区

随着2008年北京奥运会渐渐远去,中国企业在近距离体验了奥运营销之后,也在评估赞助奥运会所带来的成果. 事实上,由于营销理念.营销实践和执行力等方面的欠缺,不少国内企业在参与大事件营销中仍有较多遗憾.世界奥运营销大师麦克尔.佩恩针对北京奥运会中国赞助商的表现评价道:"中国赞助商中,那些有创意.有水平.真正能够在奥运营销史上留下一笔的作为寥寥无几." 麦肯锡经过调查和研究发现,国内不少企业在大事件营销过程中存在着八大误区,影响了大事件营销的效果. 误区之一:赞助大事件就一定会给企业带来好

谷歌工程师解读SSD固态硬盘寿命

加拿大多伦多大学教授Bianca Schroeder,与谷歌工程师 Raghav Lagisetty及Arif Merchant花费6年时间研究各种企业级.消费级SSD硬盘使用寿命,最终得出下述结论. 寿命更多取决于硬盘年龄 研究表明,测试硬盘出现出现非透明错误的比例,读取为20%-63%,而写入仅为1.5%-2.5%.所谓非透明错误是指没有任何提示的错误,这应该是非常致命的.从SSD数据加载和读取的方法就可以判断,写错误低于读错误应该正常的,但高达63%的非透明读取错误,令人不解.如此高的错误

王旭明解读“学生性接触”事件:成年人需承担责任

两段视频,两所中学,两起骚扰事件,主角是中学生,地点是学校教室,手机上传,网络转载,人肉搜索,当校园事件演变成一个公共话题,未成年人的隐私我们该怎样保护?重庆造假考生名单该不该公布还存争议,已经被 曝光的文科状元承受巨大压力,处罚的同时,当事者的心理我们又该怎样关注?种种传播途径日益发展的今天,保护成长中的未成年人,家庭.社会.法律还需要做出哪些得力举措?<新闻1+1>为您解析. 演播室主持人(董倩): 最近一段时间,两段发生在学校的未成年人的性接触的视频,在成年人的社会里面引起了很大的震动.

工程师解读:为何华为手机干不过小米

编者按:本文原载于电子系统设计,作者林峰,是一位手机IC设计从业人士.作者从定价.宣传渠道.文化这三方面分析了为什么华为干不过小米,他认为,华为手机比起小米,缺少对消费者的"人性" 与 "心" 的理解. 我想声明一下,我题目中说的"干不过"并不是指销量,因为以华为的渠道庞大和低价机型繁多,其手机销量已经为千万级别.而小米尚在百万级别. 我所说的"干不过",更多所指的其Ascend系列和小米的对比,其话题性,受众欢迎度等等. 华