首页 文章 精选 留言 我的

精选列表

搜索[AI可见性],共10000篇文章
优秀的个人博客,低调大师

橙单低代码生成器 v2.5.3 发布,数据权限可精确到菜单

新版功能 报表打印,打印模板新增支持表数据中条形码打印。 报表打印,数据集支持数据权限。 基础架构,数据权限支持精确到菜单,同时支持菜单Id和后台接口的关联推演,防止手动篡改 MenuId 的数据越权访问。 基础架构,数据权限性能优化,在原有二级缓存基础上支持基于 Caffeine 的一级缓存,以提升该高频调用的性能。 工作流,支持流程干预,可以指定跳转的节点,以及跳转后的新审批人。 工作流,支持审批人直接终止当前审批流程,如:结束(同意)和结束(拒绝),审批状态自动同步到工单表。 工作流,在线表单工作流,支持流程状态同步到业务主表,以便于业务数据的统计分析。 图和真相

优秀的个人博客,低调大师

微软提供安全云未来Teams商业用户可参加国防部会议

据外媒报道,微软Microsoft 365路线图网站上公布的最新信息显示,微软将允许用户在微软的安全云中匿名加入会议。 这意味着Mircosoft Teams的商业用户将只需使用一个链接就能够加入政府社区云(GCC)和美国国防部(DoD)的会议,并且会议主持人可以控制用户进入实际的会议房间。 微软将分三个阶段启用这一功能。首先,Teams商业和GCC客户将能够加入GCC-High和国防部云的会议。接下来,微软将使GCC-High客户能够加入商业、GCC和国防部会议。最后,微软将使国防部客户能够加入商业、GCC和GCC-High会议。 此外,在Windows 11预览版中,微软正在为其桌面平台测试重新设计的Microsoft Teams版本,名为Microsoft Teams 2.0。新版基于Edge WebView2的,使用Chromium渲染引擎以及HTML、CSS和JavaScript等网络技术。

优秀的个人博客,低调大师

许式伟:Go+ 门槛比 Go 低,小孩 6 年级可开始学 Go+

2009 年,面对 C++ 在 Google 分布式编译平台上的编译过程太过漫长的问题,贝尔实验室的 Unix 团队成员 Rob Pike 联合 Ken Thompson 和 Robert Griesemer 着手发起了一个叫 Golang 的项目,Go 语言诞生。 作为一个为了取代 C/C++ 而生的语言,Go 语言的发展迅速,非常适合构建命令行实用程序和网络服务,尤其是云计算场景下高并发应用。如今流行的容器引擎 Docker、容器编排系统 Kubernetes 都是用 Go 编写的,Go 也因此被一些人称为“云计算语言”。 新的编程语言的出现往往都是为了解决新出现的需求场景。2020 年 7 月 5 日,为数据而生的开发语言 Go+ 正式发布,在兼容 Go 的基础上,兼顾了数据科学家的喜好,如简化数学公式的表达。不过,Go+ 的出现并不是奔着取代 Go 而去的,其创始人许式伟大学时曾被称为 C 语言狂人,工作后又被称为 Go 语言狂人。即便是现在,许式伟也非常喜欢讨论 Go,在他看来,Go+ 势必可以吞掉 Go 的一些市场,但依旧会有很多人仍喜欢 Go。 7 月 9 日至 10 日,许式伟将出席由开源中国社区联合 Linux 基金会发起的「GOTC 全球开源技术峰会 」,并作为“编程语言艺术”分论坛讲师,为我们带来有关 Go 与 Go+ 的主题演讲,敬请期待!在演讲正式开始前,我们也采访了许式伟老师,请他初步谈谈 Go + 的哲学。 Q:您很喜欢讨论编程语言的哲学,为什么? 许式伟: 我为什么只讲 Go 的哲学,主要是我对自己演讲做的定位。演讲其实有两种可能性,一种是传道,一种是教人学会某种技能。我更喜欢传道而不是培训的概念。也就是说,花一小时做演讲并不是想教会别人什么,而是尽可能去让人知道,或者是打开一扇门。这也是为什么我只讲 Go 的哲学,不去教别人怎么用 Go,这是不同的概念。 Q:Go+ 哲学中最终要的是什么?和 Go 的哲学有什么不同? 许式伟: 我还是非常喜欢 Go 的“少就是指数级的多”,这是它一个非常内在的哲学——语言的语法是最少的,或者说力求最少,这实际上也是 Go+ 希望的。 我们希望它是力求最小语法的一个语言,但是两个会有些不同、Go 更多还是关注高并发,最好的工程效率等等;更多地站在程序员如何写大型项目,尤其是网络、云的大型项目;目前以后端为主,前端是一些经验性的探索,涉足其实不多。 Go+ 不太一样,它面向的人群实际上有两类,除了程序员之外,还要兼顾分析师,或者说是数据科学家,所以它的目标比 Go 复杂一些,既希望软件工程师喜欢,也希望数据科学家喜欢,要同时兼顾两个群体的喜好。所以 Go+ 会在 Go 支持上增加很多数据科学家喜欢的东西,或者对他们来说更自然的一些表达方式,我都希望在 Go+ 上能有所体现。这实际上就是 Go+ 对内的一些出发点。 Go+ 和 Go 的区别,最简单的例子,就是数学公式,在 Go 里面表达一个数学公式肯定比较复杂,没有操作符重载。我们认为 Go+ 数学公式的表达更优雅,因为数据科学家成天在处理数据,如果数学公式表达起来都很累,看起来很繁琐,肯定影响工作效率。我们会在 Go+ 引入很多数学相关的能力,使得它能够更方便去表达一些数据科学需要用到的能力。 Q:Go 和 Go+ 接下来会是什么关系,Go+ 会吞掉 Go 的市场吗? 许式伟: Go+ 应该会坚持完全兼容 Go 的方式,Go 有新的语法特性,Go+ 也会吸收过来,尽可能保持完全兼容。所以 Go+ 会包含 Go,为什么是 Go+ 不是 Go++ 呢?因为希望少加一点,而不是加太多,这也是名字的含义。 吞掉一些市场是必然的。因为 Go+ 追寻的目标使它会复杂一些,肯定要比 Go 略微复杂,所有有些程序员可能就喜欢做 Go,不喜欢和数据科学相关的东西。所以我觉得肯定有人从 Go 迁移到 Go+,但还是会有人继续喜欢 Go 的。 Q:据了解,您平常在家会教孩子编程,现在还在教吗?有没有把 Go 或者 Go+ 教给他? 许式伟: 一直在教,孩子今年初一 ,教 Go+ 已经快一年了,从六年级开始学,没有教 Go。 我认为 Go+ 的入门门槛必须比 Go 低,虽然 Go+ 完全兼容 Go,但是它的门槛比 Go 要低。有的人可能听起来觉得奇怪,明明比 Go 的语法要多,为什么入门门槛低呢? 因为 Go 有一些工程性的语法特征,初学者是不容易掌握的。Go+ 会把一些复杂性的东西在入门的时候隐藏起来,避免接触到工程相关的特别复杂的东西。像我现在教小孩子编程也不会太过涉及到如何编写大型程序相关的东西,基本上以基础语法、程序思维的锻炼这些东西为主,不会涉及到太多工程的东西。但 Go 基本上是强加了工程相关的东西给初学者,这对它来说蛮正常的,因为它本身就是面向工程化的语言。 我认为 Go+ 是不一样,比如数据科学家可能写个 SQL 语句就处理了一段数据,在表达的简洁性上是更需要的,这会导致我们需要让 Go+ 对初学者来说门槛更低一些。 Q:教小朋友编程的顺序经验可以分享下吗? 许式伟: 在 Go+之前,他们学习经历主要先是 scratch 块编程,然后他们另外学了 CoffeeScript,一个类 JavaScript 的语言,但是 CoffeeScript 相较更简洁。第三个语言就是 Go+ 了。所以整个经历就是块编程,然后脚本编程,脚本编程选了一个我认为语法相对简单的CoffeeScript, 我认为它的语法比 Python 可能还要简单一些,所以就学了。学 Go+ 是因为我认为要开始学习静态语言了,静态语言又不希望太过复杂,所以选了入门门槛低的。大概就是这样一个过程。 GOTC,the Global Opensource Technology Conference,全球开源技术峰会。该会议由开源中国社区联合 Linux 基金会发起,邀请 10+ 重量级开源基金会与开源社区深度参与,覆盖 100+ 公司的相关开源经验,涉及优秀开源项目 300+。 组成这场开源盛会的专家主要是开源领域内的知名人物,相关的分享议题也聚焦开源,包括开源的技术、开源的运营与治理、开源的发展趋势、开源技术的实践、开源的商业化等。 此次会议还史无前例地邀请了当今世界几大顶级开源基金会负责人同时参与圆桌,共同讨论开源新生态。 更有 Linux 创始人 Linus Trovalds 将分享 Linux 诞生 30 年以来他的心路历程与开源洞见。 更多信息查看:https://gotc.oschina.net 更多资讯: 鸟哥惠新宸:从 Web 初学者到 PHP 核心开发者 TiDB 黄东旭:从决定创业到获得融资只用 3 天 吴晟:开源对我来说,社交是最重要的 字节 97 年前端:大四接触开源,毕业即成框架核心开发者 视 PHP 为初恋、为疫情而蓄发,97 年 PHP 内核贡献者能有多酷? Linux 30 周年,听 Linus 聊聊心路历程和开源洞见

优秀的个人博客,低调大师

木兰语言 0.0.19 补完二元运算;重现 yield 语法;赋值时可指定变量类型

这两周过的飞快,先上木兰代码截图,省得像上次似的一堆误会。 这是完成了的第二批悬赏任务之一的成果: ¥188 【进阶】重现所有 yield 相关语法 ¥128 重现语法——赋值时指定变量类型 ¥100 补完二元表达式(bin_expr)的四个运算符 下面主要记下合作期间的一些发现。 在 实现二元运算符时 ,发现与 Python 中的优先级有不同,需更全面评估。如位左移 << ,木兰中的优先级低于 < 而 python 相反。1<2<<3 在木兰中为 8 而 Python 为 True。 另外发现,之前在实现语法树生成木兰源码时 误以为木兰不支持链式运算 ,但现在发现是支持的: > 1<2<3 true > 1<2<0 false 此任务中,合作者还对代码作了格式化。 重现 yield 语法时 ,在推敲标识符命名中发现至今重现的木兰语法规则的一个规律:表达式可以是声明的一部分,而声明不会是表达式的一部分。不知这规律是否常见。 另外,向合作者学习了 yield 更多功能 。 重现 赋值时指定变量类型时 ,更有意外发现。a:str 可以在交互环境下运行,但不能在源码中运行,后发现是交互环境中为了支持不用 print 就输出表达式的值而导致的副效应。 之后,在因上面而加的语法规则的设计意图尚不明确的情况下,我出了个馊用例: a=10 b=(a:int) print(b) 随后发现 (a:int) 这一语法与 lambda 表达式有关(在早先任务列表中被列在 功能不确定 部分 ),于是商议决定将此部分内容回退后另开任务解决,以免此任务滚雪球式扩大。 随着合作者对项目越来越熟悉,非常期待今后的技术交流和探讨。 在项目维护方面,修复了跨平台路径导致的 windows 下测试问题 ,同时修复了 Docstring 生成木兰源码 的用例。 并在解决 流水线测试问题 时发现了一个 rply 木兰定制版在 PyPI 发布缺失 whl 文件(库安装时会在 linux 下构建不过)的问题。 附:代码量统计 主要部分的代码行数统计,格式为:上次->现在。 木兰代码量 3157 -> 3201 运行环境,实现与测试大部为木兰代码:582 木兰测试用例,包括部分实用小程序(如井字棋):2575 -> 2619 Python 代码量(木兰实现、测试框架、语法树生成木兰中的 Python 测试代码):3612 -> 3794 分析器/语法分析器.py 此次格式化代码有额外添加行数:1055 -> 1144 分析器/语法树.py:225 -> 267 生成/木兰.py:239 -> 242 分析器/词法分析器.py:216 -> 231 测试/期望值表.py:173 -> 177 交互.py,交互环境(REPL):150 -> 149 测试/unittest/报错.py:124 -> 126 分析器/语法树处理.py:114 -> 119 分析器/语法成分.py,从语法分析器中提取出来的枚举常量:85 -> 88 未变 环境.py,定义全局方法: 275 功用/反馈信息.py:175 中.py,主程序:95 测试/运行所有.py,检验所有木兰测试代码片段:75 测试/unittest/生成.py,语法树生成木兰源码相关测试:60 测试/unittest/语法树.py,确保生成的语法树与原始版本一致,拆分报错部分:58 功用/调试辅助.py,:57 setup.py, 34 测试/unittest/交互.py,交互环境相关测试:28 分析器/错误.py:28 测试/unittest/所有用例.py:24

优秀的个人博客,低调大师

CKEditor 5 v26.0.0 发布:具有可扩展的构建、内联部件样式和注释指南

CKEditor 5 v26.0.0 已经发布,本次更新包括支持创建一个定制的编辑器构建、Mac上的按键管理、设计内联部件、编辑器占位符和一组关于使用协作特性注释的新指南等内容。 通过 DLL 构建,更容易将插件添加到构建中 通过增强 webpack 的 DllPlugin 兼容性,用户现在可以准备一个单一的构建,并在其中添加一个功能,而无需重新编译所有的东西。不过,在允许使用额外的插件扩展构建而不需要重新构建捆绑包的同时,某些插件集必须被解耦。这导致了 "软需求 "的引入,可能需要调整当前的编辑器设置。 引入内联部件样式 内联部件是实现自定义元素(如占位符)的流行解决方案。以前,当对内容应用样式时,内联部件是没有样式的。现在,该功能已重新实现,将内联部件纳入到所有内容的文本操作中。现在,不管是什么内容,都会得到和普通文本一样的处理 —— 加粗、斜体或彩色都是一样的。 扩展协作功能文档 在上一个版本中,CKEditor 5 已经引入了重新设计的注释 API。现在,用户除了选择显示模式(内嵌,窄侧栏,宽侧栏或组合侧栏+内嵌),还可以对它们进行大量的定制,修改主题,并添加自定义的模板或视图与 UI 元素和功能。 优化编辑器占位符的表现 编辑器占位符的默认表现已更改。以前,一旦用户将编辑区域聚焦(例如,只需单击它),它就会消失。现在,仅当在编辑器中键入或粘贴了一些实际内容时,占位符才会消失。 优化了 Mac 上的按键管理 在这个版本之前,Ctrl 和 Cmd 修饰符在 Mac 上是可以互换使用的。用户可以使用 Ctrl+B 或 Cmd+B 在 macOS 上应用粗体,尽管在代码中定义为 "Ctrl+B"。这样做的一个副作用是,CKEditor 5 的键盘快捷键可能会与其他一些 macOS 按键冲突。从这个版本开始,在代码中定义为 "Ctrl+B" 的按键只能由 macOS 上的Cmd+B 和 PC 上的 Ctrl+B 触发。如果用户希望在 macOS 上使用 Ctrl 定义一个按键,请使用 "强制修饰符" 符号:'Ctrl!+B'。 详细内容请查看更新公告。

优秀的个人博客,低调大师

可自我传播的新蠕虫会把Windows、Linux服务器变成门罗币矿机

自12月初以来,一种新发现的、基于Golang的自我传播的恶意软件一直在Windows和Linux服务器上主动运行XMRig加密货币矿机程序。Intezer安全研究员Avigayil Mechtinger透露,这个多平台的恶意软件还具有蠕虫功能,可以通过用弱密码强行使用面向公众的服务(即MySQL、Tomcat、Jenkins和WebLogic)传播到其他系统。 自首次发现该蠕虫以来,背后的攻击者一直通过其命令和控制(C2)服务器积极更新该蠕虫的功能,这暗示着该蠕虫依然是一个积极维护的恶意软件。 C2服务器用于托管bash或PowerShell滴管脚本(取决于目标平台),一个基于Golang的二进制蠕虫,以及部署的XMRig矿工,以在受感染的设备上偷偷挖掘不可追踪的Monero加密货币(门罗币)。 该蠕虫通过使用密码喷洒式攻击和硬编码凭证列表扫描和强行通过MySQL、Tomcat和Jenkins服务传播到其他计算机。该蠕虫的旧版本还试图利用CVE-2020-14882 Oracle WebLogic远程代码执行漏洞。一旦它成功入侵其中一台目标服务器,就会部署加载器脚本(Linux的ld.sh和Windows的ld.ps1),该脚本的载荷会同时投放XMRig矿工程序和基于Golang的蠕虫二进制代码。 如果恶意软件检测到受感染的系统正在监听52013端口,它将自动杀死自己。如果该端口未被使用,蠕虫将打开自己的网络套接字。 要防御这种新的多平台蠕虫发动的蛮力攻击,网络管理员应该限制登录条件,并在所有暴露在互联网上的服务上使用难以猜测的密码,以及尽可能使用双因素认证。 【责任编辑: 未丽燕 TEL:(010)68476606】

优秀的个人博客,低调大师

百度安全DRAMDig:最快69秒逆向DRAM地址映射,可高效评估 Rowhammer攻击

导读:近日,国际顶级设计自动化大会DAC大会公布DAC 2020会议议程和论文名单,由百度安全发表的《DRAMDig: A Knowledge-assisted Tool to Uncover DRAM Address Mapping》成功入选。本篇论文介绍了由百度安全所研究设计的DRAM address mapping逆向工具——DRAMDig,能够在平均7~8分钟时间(最快仅需要69秒),快速、可靠地逆向出DRAM地址映射 ——Rowhammer攻击实现的关键步骤。该工具可用来评估个人主机、云计算基础设施是否受到Rowhammer攻击的威胁。 DAC是以电子设计自动化(EDA)和嵌入式系统及软件(ESS)为主题的国际公认的最顶尖学术会议,也是中国计算机学会(CCF)认定的A类会议,被誉为EDA界的奥斯卡。大会每年吸引全球知名的学者参与成果发布和技术讨论,近两年论文接受率维持在20%左右。 图1. 2020 DAC Accepted Papers 谈到Rowhammer攻击,整个安全行业一定都不陌生,2014年卡内基梅隆大学宣布发现一种存在于动态随机储存器(下称DRAM)的漏洞,借助这项漏洞,攻击者可以通过反复加载内存的特定行来实现账户提权,研究一经发表,便掀起业内极大轰动,因为这表明了不管是PC、手机,不管操作系统是Linux、Windows··,几乎所有搭载DRAM内存的X86构架CPU的设备都会都会存在安全隐患,影响不言而喻。 那么,今天我们就带大家了解一下,究竟颠覆攻击逻辑的Rowhammer到底是什么?由百度安全研究员Minghua Wang和Yueqiang Cheng联合Henry Zhang(来自澳洲Data61)所研究设计的映射逆向工具DRAMDig,又是如何快速、可靠地逆向出触发Rowhammer攻击的DRAM地址映射? “一招通杀”所有设备 ——Rowhammer攻击原理 从硬件角度来看,计算机就是一个庞大的集成电路,由大量的电子管、继电器和各种电气元件组合而成。其中用来存储信息用的物理内存,就是我们上面提到的DRAM。就像去图书馆找一本书,你需要通过书的类型和编码,定位到它在哪一个书架,哪一排,哪一格,DRAM里想要找到存储的某一数据,也有一套明确的访问路径:channel→DIMM→rank→chip→bank→cell。所以,计算机内存就是由无数个内存存储单元(下简称cell)构成的电路板。 图2.内存存储单元cell结构 cell由一个晶体管和一个电容组成,就像一个小电池,每个cell存放1 bit数据,而计算机里所有的内容,本质上都是一堆数据编码,都可以用类似01010101001这样的二进制来表达——体现在cell上,晶体管通电状态表示1,不通电状态表示0。所以说,不管你在电脑里存放的文档、照片,下载的游戏、音乐程序,亦或是计算机本身的操作系统,其实归根结底都是通过一定规则存储在cell里的“0”或“1”。 然而近年来,随着人们生产生活对计算机存储的需求要求更高,设备厂商在不改变内存电路板面积大小的前提下,让其能够存储更多的数据,只能将cell的设计越做越多,排列越来越近,密度大幅度增加,虽然制作工艺有所提升,但还是会存在一种假设,那就是相邻的cell在运行中可能会受到干扰,如果频繁“轰炸”某两行(行话称之为row),就可能会造成中间一排腹背受敌、上下夹击,从而出现比特位翻转,也就是0变成1,1变成0... 业内把这种上下敲击的疯狂操作,称为double-sided Rowhammer test,而导致比特位翻转的这个攻击方式就叫做Rowhammer攻击,Row是行,Hammer是反复敲击,如此简洁明了,一针见血。 当然如果只是单纯的疯狂改写数据,以此来搞破坏也过太小看Rowhammer攻击的威力了,其实攻击者的深层目标是利用Rowhammer攻击来提升账号权限,获得通往各路关卡的“通行证”。此前就有学者发现,通过rowhammer可以打破进程间隔离,user-kernel隔离,VM间隔离以及VM-VMM间隔离,从而获得更多系统权限。 再举个例子,有攻击者企图获取你的网银支付密码,但此类程序开发者为了安全起见,都会将诸如密码、身份证号等核心数据,设立重重关卡,存放在金字塔的顶端,除了用户自身,其他人无法触及。而有了Rowhammer攻击,虽然被设立关卡,攻击者却可以绕过这些,选择通过更底层去找到储存核心数据的cell,然后反复敲击其“隔壁邻居”,引起比特位翻转,来实现最终获取支付密码的目的。 “说起来容易做起来难” ——Rowhammer攻击难点 读到现在,你是不是会有一个这样的疑问,计算机内存里密密麻麻分布着cell,即使理解了Rowhammer攻击的操作手法,如果不知道哪些cell里隐藏着账号提权的核心线索,一顿轰炸操作无异于随机“抽盲盒”,能不能找到关键全靠运气。 所以很长时间以来,对于Rowhammer攻击的研究只停留在理论阶段,归根结底原因是:找到那最为关键的两个row实在是太难了! 专业上,定位到最关键的两个row需要解决的核心问题,是要找出DRAM核心数据所在的DRAM地址,其实也就是逆向DRAM地址映射(下简称DRAM address mapping)的过程。 上文我们讲到过,在计算机里,不管是什么类型的文件、信息、数据,最终都会以0101011的形式被存储在内存里,程序运行中需要访问到这些数据,只能通过虚拟地址来访问。这些虚拟地址在操作系统中首先转换成物理地址,然后物理地址再通过CPU中的Memory Controller转为为DRAM中的地址。物理地址与DRAM中地址的映射关系是一段未公开的“咒语”,需要逆向分析来解决。 对此,百度安全研究员调研了的目前行业公开的所有DRAM address mapping逆向工具并做了分析,结果显示这些工具的表现并不尽如人意,或是无法通用于各类型号的CPU,或是操作时间过长,需要数小时的时间,还有的甚至检测多次,得出的结果前后不一致。 而此次即将在DAC大会上公开的,由百度安全所研究设计的DRAMaddress mapping逆向工具——DRAMDig, 能够在平均7~8分钟时间(最快仅需要69秒),快速、可靠地逆向出DRAM地址映射,并且通用于包括Non-ECC DDR3\DDR4内存条,以及当前市面上流行的Intel CPU(Sandy Bridge ~ Coffee Lake)。 “更经得起推敲”—— DRAMDig工具核心原理 目前已有逆向工具(如DRAMA)无法稳定、快速、准确逆向出DRAM address mapping,主要有如下几个方面原因。首先,已有工具对DRAM自身信息挖掘不到位,比如缺乏对bank数目、row/column位数的理解;其次,已有工具中存在物理地址盲目的随机选取,导致逆向结果不稳定、不准确,同时存在大量的穷举操作,导致较大时间开销;最后,已有工具对interleaved mode形式的DRAM address mapping逆向能力有限。 由百度安全研发的新型DRAM address mapping映射逆向工具——DRAMDig,提出了Domain-knowledge assisted的方案,能够充分挖掘、利用已有的knowledge来辅助逆向,使得最终得到的逆向结果准确、稳定、快速。Domain knowledge包括三个方面: DDR3/DDR4 Specification。我们从Specification中能够获取有关DRAM row/column bits的确切数量; 系统信息。通过程序来获取DRAM中bank数量,系统的物理内存大小(物理地址中有效地址位数)等信息; 经验观察。我们认为Intel CPU上的bank寻址采用的是线性XOR计算方式,参与XOR计算的是物理地址中的特定bits(称之为bank bits)。例如,在某款Intel CPU,以及一个包含8个bank的DRAM的设定下,bank寻址函数表示为:(BA0, BA1, BA2)。其中,BA0= bit6bit13, BA1= bit14bit16,BA2=bit15bit18。 DRAM address mapping逆向目标是确定物理地址到DRAM中地址的映射关系。包括两个方面,第一,还原物理地址中bits的角色,即哪些是row bits,column bits和bank bits;第二,确定bank寻址函数。图3描述了DRAMDig的工作流程。在介绍具体流程之前,我们首先简要介绍一个DRAMDig逆向所依赖的一个基本操作原语,它是DRAMDig工作的基石。 图3. DRAMDig逆向流程 这个操作原语是一个timing channel。具体而言,这个timing channel是由同一DRAM bank中的row buffer冲突引起的。DRAM中每个bank都有一个row buffer来缓存最后访问到的row。如果一对地址在同一bank的两个不同row中,交替访问它们时row buffer将反复重新加载、清除这两个row,导致row buffer冲突。而如果两个地址位于同一row或不同bank中,访问这两个地址时不会发生row buffer冲突。显然发生row buffer冲突情况下,也就是两个地址在同一bank不同row时,得到的latency更大。因此,根据两个地址的latency测量结果的高低,可以判断它们是否在同一bank不同row。 在这个操作原语基础之上,我们来简要介绍DRAMDig的逆向流程。主要分为三个阶段: 第一阶段,精心选取多对物理地址,利用timing channel进行latency测量,根据测量结果对row、column和bank bits范围进行初步的划分。首先从高到低考察物理地址中每个bit,选取仅有这个bit不同的两个物理地址测量latency。如果是high latency,则说明它们在同一个bank不同row,当前只有1个bit不同,所以这个bit是row bit。然后选定1个row bit和一个非row bit,再选取仅有这2 bit不同的物理地址测量latency。如果是high则说明它们在同一bank不同row,这个非row bit不会是bank bit,而是column bit。这样两轮测量之后能够得到row bits和column bits的位置范围,剩余的bits是bank bits。 第二阶段,选取覆盖bank bits所有取值情况的物理地址,再次利用timing channel来测量latency。将latency为high的地址划分到一堆,最终这些物理地址将被划分为#bank堆,同一堆物理地址都在一个bank中,而且每一堆的物理地址个数大致相同。然后依次在每堆中考察bank bits之间的XOR组合情况,找出堆中所有物理地址都满足的bits XOR方式,作为候选bank寻址函数。在所有地址堆都考察完毕后,将候选bank寻址函数进行消元处理,得到最终的bank寻址函数。 第三阶段,确定具有多重角色的bits,这是由于存在interleave mode的寻址情况,例如,有些bit既是row bit也是bank bit,有些bit既是column bit也是bank bit。还原多重角色row bits的方式是,考察2-bit的bank寻址函数,选取仅有这2个bit不同的两个物理地址,测量它们的latency。如果测量结果是high latency,则认为高位bit是row bit。对于多重角色的column bits,根据Domain knowledge和第一阶段的还原结果,能够获知未还原的column bits数量(N)。在已还原出column bits的位置基础上,按照从低到高的顺序,将未还原数量(N)的bits认为是column bits。 由于DRAMDig选取了覆盖所有bank bits取值情况的物理地址,不但能够真实且完整揭示bank寻址方式,而且能够根据latency测量结果将这些地址均匀地划分到#bank堆,保证了bank寻址函数还原结果的准确性和稳定性。另外,DRAMDig仅需要在bank bits空间内的寻找bank寻址函数,不需要在所有bits空间内穷举,大大降低了时间开销。 据介绍,百度安全利用DRAMDig在9台具有不同CPU和内存设定的机器上进行了DRAM address mapping逆向实验。实验结果如表1所示。可以看到,实验的CPU涵盖Sandy Bridge、Ivy Bridge到Coffee Lake等多个新老微架构(Microarch.),内存条涵盖DDR3和DDR4 (DRAM Type,Size),和包含多种DRAM设定方式(DRAM Config)。 表1. DRAMDig在9个不同机器设置上的逆向结果 其中Config表示如下参数:#channel,#DIMM/channel,#rank/DIMM,#bank/rank. 在这些逆向实验中,最多需要17分钟,最少需要69秒可以获得逆向结果,如图4所示。相比较逆向工具DRAMA而言,DRAMDig具备更短的时间开销。其中,在第3和第7台机器中,DRAMA花费了将近2小时都没有输出逆向结果。此外,百度安全研究员在实验中发现,运行DRAMA多次,很大几率会出现每次逆向结果都不相同的情况,因此DRAMA在逆向结果的准确性和稳定性方面均无法保证。 图4. DRAMDig和DRAMA逆向时间开销(单位:秒) 在获得逆向结果基础之上,为进一步验证,百度安全研究员还在多台机器上进行了double-sided Rowhammer测试,并且和DRAMA进行了对比。使用两个工具在不同的机器上分别进行了5次测试,每次测试5分钟,最后统计bit翻转的数量。可以从表2中看到,DRAMDig能够产生更多的bit flips。有一些测试中DRAMA甚至没有出现翻转,而DRAMDig敲出了翻转,这也能够说明DRAMDig逆向结果的正确性。由此可见,准确的逆向DRAM address mapping对bit翻转具有很重要的影响,对Rowhammer威胁评估具有非常关键的作用。 表2. DRAMDig和DRAM执行5次double-sided rowhammer测试,每次测试持续5分钟。 DRAMDig比DRAMA产生了更多的bit flip。 结语:毫无疑问DRAMDig的诞生,大大提升了对DRAM address mapping逆向的效率和准确性,对于高效评估个人主机、云计算平台等基础设施是否受到Rowhammer攻击的威胁有着重要意义。对于硬件厂商修复Rowhammer漏洞,提升芯片制作工艺,也提供了新的思路。据悉,百度安全正在计划将DRAMDig开源,欢迎广大开发者体验使用,同时也持续开放自身顶尖安全技术能力,以开放共享的姿态,欢迎整个行业上下游携手一道,打破技术壁垒,推进安全生态建设,保护数据隐私安全。 关注【百度安全实验室】公众号,获取更多项目信息。

优秀的个人博客,低调大师

研究揭露AMD处理器存在漏洞,可致两种新型侧信道攻击

根据最新发布的研究,从2011年至2019年,AMD处理器一直存在以前从未公开的漏洞,这些漏洞使它们容易受到两种新型的侧信道攻击。 这种新型的潜在攻击手段被称为“Take A Way”,利用AMD Bulldozer微体系结构中的L1数据(L1D)缓存预测变量,从处理器获取敏感数据,并在恢复加密过程中使用密钥,这对设备安全产生极大的威胁。 这项研究由格拉茨技术大学和计算机科学与随机系统研究所(IRISA)的一个研究团队发表,他们于2019年8月向AMD披露了这些漏洞。 AMD在其网站上发布的一份咨询报告中说: “我们注意到一份新的白皮书,该白皮书声称可以利用AMD CPU的潜在漏洞,恶意行为者借此可以操纵与缓存相关的功能,从而可能以意想不到的方式传输用户数据。” “然后,研究人员将该数据路径与现有的恢复软件或推测的侧通道漏洞进行配对。AMD认为这些不是新型攻击。” 尽管该通知并未具体说明防范攻击的细节,但该论文的主要研究人员之一Vedad Hadžić表示,该漏洞利用活动仍然很活跃。 随着英特尔CPU审查出一系列漏洞问题,从Meltdown,Spectre,ZombieLoad到最近无法修补的CSME固件缺陷,该研究提醒人们,处理器架构要完全没有威胁是不可能的。值得注意的是,研究中列出的一些合作者也没有发现Meltdown,Spectre和ZombieLoad漏洞。 Collide+Probe和Load+Reload 与Intel Spectre攻击一样,这两种新型攻击被称为“Collide+Probe”和“Load+Reload”,利用上述提及的L1D缓存预测变量,可以访问原本不可访问的数据。 研究人员概述说:“借助Collide+Probe,攻击者可以在分时共享逻辑内核时监视受害者的内存访问,而无需了解物理地址或共享内存。通过Load+Reload,我们利用预测器的方式在同一物理内核上获得受害者的高精度内存访问跟踪。” L1D缓存预测变量是一种优化机制,旨在减少与访问内存中缓存数据相关的功耗: “预测变量使用虚拟地址上未记录的哈希函数来计算μTag。该μTag用于在预测表中查找L1D缓存方式。因此,CPU必须仅以一种方式比较缓存标记,而不是所有可能的方式,以此来降低功耗。” 新发现的缓存攻击通过反向哈希函数工程来跟踪L1D缓存的内存访问而起作用。虽然Collide+Probe在AMD的L1D缓存预测变量中利用了μTag冲突,但Load + Reload却利用了预测变量处理内存中别名地址的方式。 换句话说,可以使用这两种攻击技术从另一个进程中窃取敏感数据,与攻击者或在CPU的不同逻辑内核上运行的同一进程,共享相同内存。 为了证明侧信道攻击的影响,研究人员建立了一个缓存隐式通道,从AMD CPU上运行的进程中提取数据到另一个隐蔽的进程中,利用80个通道实现最大传输速率588.9kB / s,同时,在AMD Ryzen Threadripper 1920X处理器上并行执行。 随着越来越多的主流云平台比如Amazon、Google和Microsoft采用AMD的EPYC处理器,在云环境中的攻击也引起了人们的极大关注。 此外,安全研究人员能够绕过浏览器中的地址空间布局随机化(ASLR),从而成功地在某些常见的浏览器(即Chrome和Firefox)上发起Collide + Probe攻击,减少了熵并找到了地址信息。 ASLR是一种安全性操作,用于随机化和屏蔽CPU内存中代码和关键数据区域的确切位置。换句话说,它阻止了潜在的攻击者猜测目标地址并跳转到内存中的特定区域。 研究人员指出:“在Firefox中,我们能够将熵降低15位,成功率为98%,平均运行时间为2.33 s(σ= 0.03s,n = 1000)。使用Chrome,我们可以减少数位,成功率为86.1%,平均运行时间为2.90秒(σ= 0.25秒,n = 1000)。” 随后,研究人员使用相同的Collide+Probe攻击来尝试泄露内核的内存数据,甚至从T表中恢复加密密钥,使用AES密码存储加密操作的中间数据。 防范此类攻击 目前已经可以通过各种纯硬件、硬件和软件的更改以及纯软件的解决方案来防范这两种攻击,其中包括以允许动态地暂时禁用预测变量的方式和清除状态的方式设计处理器。内核模式和用户模式之间切换时清除预测变量的模式状态。 这不是第一次发现AMD处理器容易受到包括Spectre在内的CPU攻击的影响,因此,该公司也发布了大量补丁程序。 AMD是否会修复研究中新揭露的漏洞目前尚不清楚。

优秀的个人博客,低调大师

新 USB 数据线可关闭或抹去被盗 Linux 笔记本上的信息

一位软件工程师设计了一种所谓的USB“kill cable”,当你的设备在公园,购物中心和网吧等公共场所从桌子上或膝盖上被盗时,其可作为一个 dead man's switch 来关闭或抹去你的 Linux 笔记本电脑上的信息。 其名为BusKill,由佛罗里达州奥兰多市的软件工程师兼 Linux 系统管理员 Michael Altfield 设计。 设计想法是将 BusKill 数据线的一端连接到 Linux 笔记本电脑,另一端连接到皮带。当有人将笔记本电脑从膝上或桌子上拉动时,USB 数据线会从笔记本电脑上断开连接并触发 udev 脚本[1、2、3],该脚本会执行一系列预设操作。 这些操作可能很简单,例如激活屏幕保护程序或关闭设备(强迫小偷在访问任何数据之前绕过笔记本电脑的身份验证机制),但是该脚本也可以配置为抹去设备信息或删除某些文件夹(以防止小偷检索任何敏感数据或访问安全的业务后端)。 Altfield表示,“在公共场所使用笔记本电脑时,我们会尽力提高 OpSec 的使用率,例如使用良好的 VPN 提供商,2FA 和密码数据库自动填充,以防止网络或基于肩膀的窃听。但是即使那样,在您进行身份验证之后,总会存在有人窃取您的笔记本电脑的风险!” 不过目前为止,Altfield暂时不会出售现成的BusKill 数据线。Linux IT 专家在其网站上发布了有关每个人如何构建自己的 BusKill 数据线的说明。 基本组件包括 USB 闪存驱动器(可以为空,无需在其上存储任何数据),将 BusKill 数据线连接到皮带上的安全扣锁匙扣,USB 磁性分离适配器以及实际的 USB 数据线。 价格范围从 20 美元到 45 美元不等,具体取决于设备所需的 BusKill 配置及其组件的坚固性。 此外,Altfield 还列出了两个示例 udev 脚本。一个通过激活屏幕保护程序来锁定设备,而第二个则关闭笔记本电脑。 用户将需要构建自己的脚本来抹去数据或删除敏感文件夹,因为这些脚本将取决于他们要删除的数据的位置和类型。 参考消息:https://www.zdnet.com/article/new-usb-cable-kills-your-linux-laptop-if-stolen-in-a-public-place/

优秀的个人博客,低调大师

IE 浏览器存在远程代码执行漏洞,攻击者可借此控制系统

周一,微软向用户警告广受欢迎的 Internet Explorer 存在一个高危的漏洞,攻击者利用此漏洞可以接管你的计算机,进而在你的电脑安装和卸载程序,查看、更改或删除数据,甚至创建具有完全用户权限的新帐户。 根据微软发布的安全公告,引发此漏洞的根本原因是脚本引擎(Scripting Engine)在内存中处理对象的方式。具体来说就是,Internet Explorer 中的脚本引擎在内存中处理对象时存在一个远程代码执行漏洞,该漏洞以这种方式来破坏内存,然后攻击者可以在当前用户的上下文中执行任意代码。 成功利用此漏洞的攻击者可以获得与当前用户相同的用户权限,如果当前用户使用管理员用户权限登录,则攻击者可以控制受影响的系统。然后攻击者会在你的电脑安装和卸载程序,查看、更改或删除数据,甚至创建具有完全用户权限的新帐户。 在基于 Web 的攻击场景中,攻击者可能拥有一个旨在通过 Internet Explorer 利用此漏洞的特制网站,然后诱使用户查看该网站(例如,通过发送钓鱼电子邮件)。 虽然微软已发布安全更新,并通过修改脚本引擎处理内存中对象的方式来解决此漏洞。但微软再次提醒用户放弃这款已被淘汰的浏览器。今年 2 月,微软的安全研究人员就已敦促用户停止使用 IE 作为默认浏览器。后来在四月份的时候,我们得知,即使仅在计算机上安装 Internet Explorer 甚至不使用它都存在安全风险。

优秀的个人博客,低调大师

Java 13提供可提高生产率和效率的功能

Java没有创新了吗? 在其CodeOne会议上,Oracle解释了Java SE 13正式发布后Java的快速发布周期如何带来创新。 在过去的二十多年中,Java编程语言新版本的开发速度相对较慢,仅每隔几年就会进行重大更新。甲骨文在2018年推出了一项新的发布策略,如今这一切都发生了变化,现在该策略现在每年可以看到多个Java版本,包括本周早些时候发布的版本。 在9月16日与OpenWorld共同举办的CodeOne会议上,甲骨文宣布Java SE 13(JDK 13)的全面上市,为开发人员提供了可以提高生产率和效率的新功能。在CodeOne主题演讲中,Oracle Java语言架构师Brian Goetz概述了Java在最近几年取得的进展,并强调了Java 13引入的新功能。 Goetz说:“起初,很多人对快速发布的节奏持怀疑态度,因为我们很难像Java这样大的船能迅速变大。”“甚至有人担心Java 10和Java 11可能根本没有功能,并且往后看,很难夸大快速发布节奏已经带来的重大变化。” Goetz说,每年发布多个版本意味着可以将更多功能交付给开发人员。不过,也许更重要的是现在如何设计功能-在较小的部分中利用发布周期。新周期的一个缺点是,开发人员和最终用户并不总是清楚为什么以及何时需要升级。 Goetz说:“在旧世界中,当我们每隔几年发布大量版本,而这些较大的版本往往具有较大的功能时,就会有足够的升级动力。”“现在,现实是,我们将来不会看到很多大型功能,这不是因为我们没有创新,而是因为这些大型功能将分解为较小的功能并交付使用分阶段进行。” Java 13 新的Java 13更新是该版本的一个很好的示例,该版本没有大量的新功能,但是随着功能的成熟,为开发人员提供了增量改进。 Java 13的新功能中有一项称为动态CDS(类数据共享)的功能。根据Java增强建议350(JEP 350),该功能的主要目标是提高应用程序类数据共享(AppCDS)的可用性,并消除了用户进行试运行以为每个应用程序创建类列表的需求。 JEP 351在Java 13中定义了一项新功能,使程序可以取消提交未使用的内存。该功能通过将未使用的堆内存返回给操作系统来改善内存管理。 Goetz在主题演讲中概述的Java 13的预览功能之一是JEP 355,它是一种样式优化功能,称为文本块。 他谈到文本块时说:“这不是一个特别复杂的功能。”“但这在日常代码中有很大的不同。” 根据Goetz的说法,没有文本块,如果开发人员想要将HTML Web代码引入Java,则需要使用一些额外的步骤和代码字符串,这些步骤既混乱又容易出错。文本块的JEP详细信息指出,它们的目标是增强Java程序中字符串的可读性,这些Java程序表示使用非Java语言编写的代码。 Java 14及更高版本 尽管每个Java版本都具有新功能,但是Oracle以不同的代号名称对许多主要的开发工作进行了分组,这将引导Java 14及更高版本中的功能开发。 大型项目之一是Amber项目,该项目全部与面向生产力的功能有关。Valhalla项目正在不断改进Java虚拟机。而Project Loom就是要在Java之上支持新的编程模型。 Goetz说:“对于Java来说,这是一个美好的时光。”“我们交付速度更快,每个版本中都有有用的功能,并且面向未来的管道比以往任何时候都更好。” 其实大家没有必要过于关注版本的变化,因为版本变化可能不会带来大的更新和特性。 日积月累,相对比较旧的版本也会有很大的更新和特性,对比一下,java13 对于 java8来说有很多大的功能和特性更新。 现在oracle的java版本策略是快速发布版本,小的功能的更新能快速发布新版让用户体验到,所以大家多关注Jave每次版本更新,以发现和尝试使用对自己有用的功能。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册