LWN: 在 emacs 中提醒Trojan Source漏洞!

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情

关注了就能看到更多这么棒的文章哦~

Exposing Trojan Source exploits in Emacs

By Jonathan Corbet
November 11, 2021
DeepL assisted translation
https://lwn.net/Articles/875229/

虽然到目前为止,"Trojan Source" 漏洞的宣传非常劲爆,但其实很少有实际利用这个漏洞的例子。但解决这个问题应该仍然是一件好事。有几个位置可以加强防御措施。其中,文本编辑器既然是开发者平常查看代码的主流工具,就是一个明显可以有帮助的地方。Emacs 这边有一个讨论就是关于如何在这方面进行加强的。这个讨论已经清楚地表明,人们针对编辑器应该如何标记出潜在的恶意攻击,是有多种不同观点的。

给那些刚刚了解到这个信息的人先简要介绍一下,Trojan Source 中的漏洞之一,就是利用 Unicode 中内置的处理双向文本的控制代码(control code)。比如虽然我们这篇文章是按从左到右的方向来写出来的,但许多语言的阅读方向是相反的,因此应用程序如果要显示 Unicode,就必须处理好这个问题。这些应用程序在这种情况下就需要一些提示信息,从而用来确定在渲染某一段文本时应使用哪种方向。Unicode 中提供的控制代码,就可以用于调整当前的文字显示方向。不幸的是,只要巧妙地使用这些代码,就可以使程序代码在编辑器(或浏览器以及其他查看代码的应用程序)中的显示内容与编译器编译时看到的内容是有差别的。这就可以被利用来塞入恶意代码,甚至都能瞒过非常细心的 reviewer。

应用程序以一种正确的方式(从 Unicode-text 的角度来看)来显示包含了这种方向修改操作的代码,但从实际编译时的角度来看是不正确的代码。因此,这里一个直接的解决方案就是改变应用程序显示此类文本的方式。因此很自然地,在 Emacs 开发邮件列表中就出现了一段讨论,希望能弄清楚 Emacs 编辑器应该做些什么。

Emacs 维护者 Eli Zaretskii 很快指出,这个问题并不像一些人认为的那样是个新问题。早在 2014 年,这个问题的一个变种就已经在这个邮件列表中进行过讨论了。当时,人们关注的是恶意的 URL,但基本技术都是一样的。Zaretskii 解释说,他已经相应地在 Emacs 中添加了一些防御措施:

根据当时那些讨论的结果,我后来实现了一个特殊的函数,bidi-find-overridden-directionality,这是自 5 年前发布的 25.1 版本以来 Emacs 中都会自带的一个功能了。(但是不要急着直接用这个函数来尝试检查那些攻击示例代码,因为这个函数抓不住这类问题)。我花工夫去写这个函数的原因,是因为既然人们有兴趣进行长时间的讨论,那么我期望中这个函数将会马上被用在 Emacs 中一些与 URL 有关的处理代码中。但这一切并没有发生,这个函数从此在 Emacs 中落满了灰尘。

他说,现在人们希望开发并落实另一项防御性的措施,但是他不是那么有兴趣,除非能得到某种意义上的保证说这部分开发工作确实真的会有用户。

与此同时,其他人也在考虑如何让人们能发现这种在含有文本方向性变化的代码中会有一些值得注意的事情。Daniel Brooks 就提出了一个方法,是使用现有的 Emacs witespace-mode,再加上一些额外的配置来将这些文本方向调整标记为一些特殊类型的 whitespace (空白符)。Gregory Heytings 发布了一个具有类似目的的 patch,就是通过添加一个新的 display table 来实现的。Stefan Kangas 则建议让 Emacs type compiler 在 Emacs Lisp 代码中发现了有问题的控制代码时就 raise error 报出来,除非设置了一个特殊的 flag 来关闭这个功能。

Zaretskii 对这些方法都不太感冒。他说,简单地标记控制字符的话,仅仅是在制造 "视觉噪音",使阅读文本更加困难,而且是在解决错误的问题:"这些字符的存在本身不是根本原因。这些字符都是合法的,而且在使用时也是有好处的"。他提到了 TUTORIAL.he,即翻译成希伯来语的 Emacs 教程,其中在介绍 Emacs command 的时候就调整了文本方向。在 Emacs 代码仓库的 GitHub mirror 中查看这个文件的话,就直接把这个文件标记出来提醒用户说这里有可能有风险(这是另一个平台上针对 Trojan Source 的防御措施)。Zaretskii 认为,为这种没有恶意的使用位置添加 warning,这是在分散用户的注意力,慢慢地他们就会开始忽视所有的 warning 了。

那么,Emacs 应该怎么做呢?Zaretskii 继续说道:

因此,我们面临的挑战不是让这些字符在显示时全部都突出显示,因为这也会毫无理由地把合法使用他们的地方标记出来。我们面临的挑战应该是仅仅把对这些字符的可疑、恶意应用的地方挑出来。而这不能仅仅通过改变这些字符的视觉外观来实现,因为它们的合法使用远比恶意使用次数要多得多。要想只标记出可疑的情况,那么代码就需要检查这些方向被改动过的文本的细节,并检测出这些方向变动是否是可疑的情况。例如,当一个强调性的从左到右的字符被重写成从右到左的字符时,这种情况是非常可疑的,因为在 99.99%的有效使用场景中这样做是没有意义的。

Zaretskii 很快向 Emacs 仓库提交了一个 patch 来实现这个启发式的方法。编者决定尝试一下,就从 Brooks 发布的这个恶意代码例子开始:

(defun main ()
  (let ((is_admin nil))
    ‮⁦ ; begin admins only⁩⁦(when is_admin
      (print "You are an admin."))‮⁦ ; end admins only⁩(
)

这段代码包含了方向变动,因此会导致 when 这个检查会被注释掉。这个效果可以在浏览器中通过用鼠标仔细地逐个字符高亮显示代码来查看。这段代码在普通的 Emacs buffer 中如果开启了 font-lock 显示的话,看起来像这样:

86883281363752d2ad2163b543eddfd3.png

[Emacs 中的恶意代码]

值得注意的是,这段代码光从 syntax 的颜色中就已经相当清楚了。这里的 when 这个检测的颜色是按照注释来标记的。Zaretskii 的 patch 使这个问题更加突出:当运行了新增的 highlight-confusing-reordering 命令运行之后,代码现在看起来像这样:

82fbcf1ca4e37a7041fd3334ff8d23cd.png

[Emacs 中的恶意代码]

这应该足够让一个普通的代码阅读者都开始感到这段代码有些奇怪了。正如预期的那样,这个新命令并没有突出显示 TUTORIAL.he 中使用的方向调整。此外,很有意思的是它还发现了两处方向调整命令被错误地使用的地方。

Heytings 并不喜欢这个解决方案。"当安全受到威胁时,我宁可想要尽量多的误报,也不希望漏掉一个危险"。他还指出了 Zaretskii 的代码未能捕捉到的一个场景,并用这个例子来证明只对那些恶意使用场景进行提醒是不可行的方案。(那个案例在电子邮件档案中没有被保存下来,但是可以从 https://lwn.net/Articles/875569/ 这里看到)。Zaretskii 回应说,那些不在乎误报的用户现在就可以在 Emacs 中把所有相关的控制字符都 highlight 显示出来。他还修改了一个 fix 来把 Heytings 发现的例子也检测出来。到此为止,Heytings 明确表示他认为他的观点被忽略了,并放弃了这次讨论。

所以,现在讨论似乎已经结束了。Emacs 拥有了一个机制,那些可疑的 Unicode 方向调整代码可以很容易被发现出来。不过,用户可能还需要一段时间才能从这项工作中受益。目前还不清楚这一改动是否会被移植回当前的 Emacs 版本中,因此在一段时间内可能只能在开发版本中找到它。也没有任何地方在默认使用这个代码,只有在用户明确要求的情况下才会对其进行高亮显示。为了使这一功能更加有用,开发者就需要把它纳入到各种编程语言所使用的 major mode 中去。

假如这个 fix 随着时间的推移被证明是有效的,那么它只会对那些完全生活在 Emacs 中的一小部分开发者有效果。不过,这里采取的方法可以确定是对 Emacs 之外也是有用的。对那些可能仅仅算是可疑的东西就急忙刹车,这通常不是解决安全问题的最好办法,尤其是在大多数被标记出来例子都是合法使用的情况下。一段时间后,我们都会对这些 warning 感到厌倦,并干脆眼里再也不会关心那些 warning。如果有可能只是把那些真正值得挑出来的地方给标记出来,那么我们应该还是可以从中获得一些安全感的。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

68c2eb85d806c6e34481db5c8f02a209.png

批量读取_MCGS触摸屏如何实现批量读取modbus数据的方法? 前两天,在一个QQ群里,有同行的朋友问,在MCGS中如何实现批量读取数据,因为他当时面临设备,通讯协议才是MODBUS RTU,同时厂家说地址不能分开读,必须是连续的。鉴于他提供的消息是能够设置的地方都试过了。为此,我直接告诉通过脚本,批量读取的方案。那么这个方案究竟如何实现?且看我下面慢慢道来。一、工具1.modsim:仿真PLC或者第三方设备。2.MCGS组态软件3.串口软件:在电脑中生成两不... 阅读详情

相关推荐

PotPlayer 史诗级更新!实时字幕生成+实时翻译,看片真的无敌了!

potplayer已经更新实时字幕生成+实时字幕翻译功能

阿虚同学的博客 1万+

LWN:让Emacs再次流行!

关注了就能看到更多这么棒的文章哦~Making Emacs popular againByJake EdgeMay 6, 2020原文来自:https://lwn.net/Articl...

Linux News搬运工 539

【Konva】解决图形加入group后无法获取到绝对坐标,以及group内绘制新图形坐标偏移的问题

解决konva绘图开发时“图形加入group后坐标不会变动,无法获取到绝对坐标”的问题

近10年前端开发工作经验,为你分享日常经验所得 1499

常见web安全漏洞及修复建议

WEB漏洞 高危漏洞 SQL Injection(SQL注入攻击) 漏洞描述 通过把SQL命令插入到Web表单递交或输入域名、页面请求的查询字符串中,最终达到欺骗服务器执行恶意的SQL命令。 示例: 以输入用户名、密码进行登录校验为例,当程序中存在SQL拼接时,可能发生的SQL注入攻击 代码中使用拼接SQL,验证用户是否存在 JdbcConnection conn = new JdbcConnection(); // 拼接SQL,引起 SQL 注入 String sql = "select * fr

qq_27990381的博客 7700

金蝶云星空应用开发初级考试题目汇总

摘要:本文为金蝶云星空应用开发初级考试题目汇总

2401_86113757的博客 3799

实验六 有源滤波器

实验六 有源滤波器一、实验目的二、仪器及设备三、预习要求画出三个电路的幅频特性曲线。四、实验内容l.低通滤波电路2.高通滤波电路3.带阻滤波电路(1)实测电路中心频率。(2)以实测中心频率为中心,测出电路幅频特性。五、实验报告六,仿真图:图 1 低通滤波器仿真图图 2 高通滤波器仿真图图 3 带阻滤波电路仿真图 一、实验目的 1.熟悉有源滤波电路构成及其特性。 2.学会测量有源滤波电路幅频特性。 二、仪器及设备 1.示波器 2.信号发生器 三、预习要求 1.预习教材有关滤波电路

胡毛毛的博客 1万+

国内资深安全专家详谈Trojan-PSW盗号***

诚信网安--子明【51CTO.com 专家特稿】近日在QQ上广泛传播地一段回答问题得到q币中奖消息中所包含的恶意链接,访问该链接将导致用户电脑感染多种***程序,经过仔细分析这些***几乎都归于一类——Trojan-PSW***! 一、Trojan-PSW***的定义 近年来,网络犯罪和破坏更加趋向于能够给***者带来直接或间接的经济利益,像之前对纯技术的追求已经不那么明...

weixin_34324081的博客 3886

Ubuntu系统 nano 编辑器使用教程

• 原因:文件编码不兼容(如 Windows 的 CRLF 换行符)。• 若使用 SSH 工具(如 PuTTY),确保终端设置中未占用。掌握这些操作后,你可以高效使用 nano 完成大部分文本编辑任务!• 底部快捷键栏:显示常用操作的快捷键(• 如果文件已修改,会提示是否保存:按。• 顶部状态栏:显示文件名和编辑状态。表示 Ctrl + G(查看帮助)。保存时自动生成备份文件(原文件名后加。• 强制保存只读文件:用。启动 nano 时添加。启动 nano 时添加。(重做)触发自动缩进。

qq_44534541的博客 2083

安全漏洞干货-linux漏洞修复命令

1、漏洞名称:RHSA-2019:2197: elfutils security,bug fix,和 enhancement update 修复命令:yum update elfutils-default-yama-scope -y &&yum update elfutils-libelf -y &&yum update elfutils-libs -y cve编号:CVE-2018-16062,CVE-2018-16402,CVE-2018-16403,CVE-2018-1

明哥哥知识分享 1087

SPM12最新安装教程:Matlab2021a用户必看的路径配置技巧

本文为Matlab2021a用户提供SPM12的深度安装与路径配置指南。针对新版Matlab的路径管理变化,详细解析了传统方法失效的原因,并推荐通过创建startup.m文件实现SPM12路径的永久化、自动化配置,确保神经影像分析环境的稳定与高效。

weixin_29061509的博客 315

详解YOLOv8网络结构/环境搭建/数据集获取/训练/推理/验证/导出/部署

YOLO(You Only Look Once)系列算法因其高效、准确等特点而备受瞩目。由2023年Ultralytics公司发布了YOLO的最新版本YOLOv8是结合前几代YOLO的基础上的一个融合改进版。本文YOLOv8网络结构/环境搭建/数据集获取/训练/推理/验证/导出/部署,从网络结构的讲解从模型的网络结构讲解到模型的部署都有详细介绍,同时在本专栏中还包括YOLOv8模型系列的改进包括个人提出的创新点,传统卷积、注意力机制、损失函数的修改教程,能够帮助你的论文获得创新点。

Snu77的博客 8万+

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 390

全能媒体工具深度测评(下篇一):AI图文生成+全能解压+图片去文字,一键搞定素材精修

解压50多种格式,文生图,图生图

cs821984831的博客 40

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 228

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 205

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

微调数据集构建:清洗、标注、格式转换完整流程

摘要解决微调数据直接抓取导致的噪声污染、模式崩溃与Token错位问题。适用于需为大模型SFT阶段构建高质量训练集的数据与算法工程师。读完可获得包含启发式清洗、MinHash去重及ChatML格式对齐的完整可运行数据流水线。关键词数据清洗、MinHash去重、数据标注、ChatML、SFT数据集、数据配比背景与问题大模型微调效果的上限由数据质量决定,直接使用未经处理的原始语料极易引发模型复读、幻觉与指令遵循能力退化。

2402_85729970的博客 485

Python3 协程:异步编程的核心机制与实战

协程是解决I/O密集型任务等待瓶颈的高效机制,相比线程更轻量、无锁开销。从yield到async/await的演进,使异步编程语义清晰、易于理解。通过async/await可实现并发执行多个任务(如gather、create_task),显著提升网络请求、爬虫等场景性能。关键在于使用异步库(如aiohttp)替代同步库,避免阻塞事件循环。合理控制超时与并发数,才能发挥协程最大优势。

Lxn2zh的博客 159

python如何控制浏览器

Python 可以通过 Selenium、Playwright 等工具实现浏览器自动化,从打开网页到执行复杂交互操作均可脚本化完成。Selenium生态成熟

2601_96797912的博客 76

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 267

torch.compile 差异仅 1e-6,边界样本预测为何翻转

torch.compile 加速后输出与 eager 不一致,部分预测翻转。逐层对比与 graph break 分析定位到动态分支翻转根因。容差回归仅适用于无分支翻转场景,零容忍场景应禁用编译。

昨日种种,皆成今我。今日种种,皆成新我。 158

Python 100讲课程导航:第08篇《Python input 与类型转换:构建可靠的交互程序》

本文详解Python中input()的返回类型为字符串,强调必须通过int()、float()等函数进行类型转换。重点讲解了输入验证的重要性,结合try-except处理ValueError等异常,实现可靠的交互程序。通过购物预算计算器实战,演示如何防范非法输入、处理边界值,并推荐使用Decimal避免浮点精度问题,提升程序健壮性。

铭渊老黄 133

【Python】国家中小学智慧教育平台电子教材批量下载与 PDF 合成实战

成果:两本语文电子课本(一年级上册 118 页 / 23MB、三年级上册 130 页 / 30.3MB),合计 248 页、约 54MB,单本下载加合成 40~60 秒,PDF 页数校验全部通过。经验教训SPA 站点的数据接口优先从 bundle 里挖,比抓页面稳得多;资源链接要按 private/public 分组看待,只取平台公开部分;页数、目录名这类“可推断”的信息,永远用实际响应验证一次;受限环境里“能不能跑浏览器”要在方案定稿前确认。后续计划:这版 PDF 是图片版,没有文字层;

木头大左的博客 122

魔塔社区微调训练Qwen2-1.5B-Instruct模型并烧录到‌RK3568开发板教程

本文基于Ubuntu 22.04 + CUDA 13.0.3环境,使用LLaMA-Factory框架对Qwen2-1.5B-Instruct模型进行LoRA微调,训练儿童故事生成专用模型。通过配置qwen模板、制作alpaca格式数据集、执行sft训练并合并LoRA权重,最终将模型转换为GGUF格式,并量化为Q4_K_M以适配RK3568嵌入式平台。全程支持国产镜像加速下载与显存优化,实现高效轻量化部署。

浅清秋慕夏的博客 184

【回眸】DeepSeek V4.1 Flash 快速上手与实战

本文介绍如何高效本地部署开源大模型,通过现代化工具链实现分钟级环境搭建。聚焦显存优化、一键安装、代码调用与多轮对话实现,解决“显存不足”“连接超时”等痛点,提供参数调优与结构化输出技巧,助力开发者在离线场景下快速构建稳定、高效的本地推理系统。

啤酒鸭的物联网开发记录博客 222

智叟云集-手机证据抓取系统的工程结构与应用入口

本文系统阐述手机证据抓取系统的工程结构与应用入口,涵盖四大层面:工程目录划分(Android、Python服务、Web页面、测试与构建工具);Android组件通过Manifest声明可启动页面,主界面由MainActivity管理;Python服务通过run.py解析参数并启动FastAPI应用,支持远程访问;浏览器页面采用HTML/CSS/JS分离架构,静态资源通过路径关联,实现动态交互。各模块分工明确,协同构建可运行的采集系统。

2301_77178996的博客 229
上一篇: LWN:5.16 合并窗口,第二部分!
下一篇: LWN:近期在讨论的一些内存管理相关patch!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值