首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

英特尔CPU曝安全漏洞,攻击者大量窃取数据

据BleepingComputer 4月24日消息,近日在 Arxiv.org 上发表的一篇技术论文揭示了一种针对多代英特尔CPU的攻击手法——利用新的侧信道攻击,让数据通过 EFLAGS 寄存器泄露。...EFLAGS 寄存器是一个 CPU 寄存器,保存着与处理器状态相关的各种标志,而 JCC 指令是一个 CPU 指令,能允许根据 EFLAGS 寄存器的内容进行条件分支。...攻击分两个阶段进行,第一阶段触发瞬时执行并通过EFLAGS寄存器对内部数据进行编码,第二阶段测量KCC指令解码数据的执行时间。...该项实验是在 Ubuntu 22.04 jammy 上进行,Linux 内核版本为 5.15.0。...但研究人员仍然提出了一些重要的缓解措施,例如更改 JCC 指令的执行,使对抗性执行在任何情况下都无法测量,或者在瞬态执行后重写 EFLAGS 以减少其对 JCC 指令的影响。

26720
您找到你想要的搜索结果了吗?
是的
没有找到

GDB原理之ptrace实现原理

ptrace() 支持的所有 request 操作定义在 linux-2.4.16/include/linux/ptrace.h 文件中,如下: #define PTRACE_TRACEME...被调试的进程必须进入被追踪模式才能进行调试,因为 Linux 会对被追踪的进程进行一些特殊的处理。...当把 eflags 寄存器的 Trap Flag 设置为1后,CPU 每执行一条指令便会产生一个异常,然后会触发 Linux 的异常处理,Linux 便会发送一个 SIGTRAP 信号给被调试的进程。...eflags 寄存器的各个标志如下图: ? 从上图可知,eflags 寄存器的第8位就是单步调试模式的标志。...所以上面两行代码的意思就是: 获取进程的 eflags 寄存器的值,并且设置 Trap Flag 标志。 把新的值设置到进程的 eflags 寄存器中。

4K20

系统调用(int 0x80)详解

关于陷阱门与中断门的区别,及陷阱门中DPL为0或3原因,请参考书本《linux 0.12》的14.19的解释,还有第四章部分内容,这些已经解释的很清楚了。...对于x86系统,因为所有的寄存器都只有一个物理寄存器(ARM就不一要样了),因为内核态与用户态共享所有寄存器(段、通用、栈寄存器),比如SS、ESP、eflags、CS、EIP这五个寄存器。...SS、ESP、eflags、CS、EIP这五个寄存器的内容是怎么进入内核栈的呢?...是程序从用户态进入了内核态时,即在执行_system_call函数中的指令之前,硬件已经自动把SS、ESP、eflags、CS、EIP五个寄存器压入了内核栈,然后,根据函数的需要,再保存相关通用、段之类寄存器...当在中断处理函数(陷阱门)中执行时,是可被中断(中断门)的,因为eflags标志中的TF被设置为允许中断的。因而有可能在时钟中断函数(do_timer)中,本进程的时间片可能被修改为0。

1.2K40

虚拟化与云计算技术硬核内幕 (20) —— 时间管理大师(下)

Linux自带的KVM中,超分配实际上是默认的方式。 下图是Linux KVM中,vCPU的实现方式: 一般在每台物理服务器上,会有2-4个物理CPU,每个物理CPU内部都会有若干个Core。...由于Linux是一个SMP操作系统,在没有特殊设置的前提下,Linux的每个线程或进程,都可以被Linux调度到任意一个CPU。...在系统的时钟中断中,会无条件切断虚拟机vCPU在这个HT上的运行,并引发VM Exit,中断处理程序会做下面这些事情: 保存vCPU的运行现场(各寄存器),特别是保存在堆栈中的切断时的程序指针(CS:IP)、标志位(EFLAGS...SS,SP,EFLAGS和CS:IP数据恢复到CPU的这两个寄存器,CPU开始执行下一个任务; 由于这个HT已经被虚拟化KVM所管理,上面只会运行分配给不同VM的vCPU对应的线程,因此,下一个任务一定是其他...这样,Linux操作系统的“时间管理大师”功能就可以用于虚拟机对CPU资源的时分复用啦!

93720

基于int的Linux的经典系统调用实现

1,  Linux系统调用:2.6.19版内核提供了319个系统调用。...(2)       在Linux中,用户态和内核态使用的是不同的栈,两者各自负责各自的函数调用。...(7)       中断发生时,CPU切入内核态,还会接着做下面几件事         找到当前进程的内核栈(每个进程都有独立的内核栈) ->   在内核栈中一次压入用户态的寄存器SS、ESP、EFLAGS...(8)       系统从系统调用中返回时,需要用iret指令回到用户态,iret会从内核态中弹出寄存器SS、ESP、EFLAGS、CS、EIP的值,使得栈恢复到用户态的状态 6,中断处理程序:切换栈了以后...,程序的流程就切换到了中断向量表中记录0x80号中断处理程序,Linux内部的i386中断服务流程如图 ?

1.2K90

计时瞬态执行:针对英特尔处理器的新型侧信道攻击

瞬态执行中 EFLAGS 的变化可能会使一些 Jcc 指令在它之后稍微变慢。...如下图所示,通过将秘密数据编码到 EFLAGS 寄存器,可以测量 Jcc 指令上下文的执行时间来解码数据,而无需在瞬态攻击的第 1 阶段将 EFLAGS 寄存器重置为其初始状态。...EFLAGS 指令是可以改变EFLAGS 寄存器的指令。 Jcc 指令是可以受 EFLAGS 寄存器影响的指令。 可用的指令集在下表中列出。...B.Jcc延迟如果在更改 EFLAGS 寄存器后不立即执行 Jcc 指令,则可以减少 EFLAGS 寄存器的影响。 10 个周期足以减少 EFLAGS 寄存器的影响。...通过 LAHF 和 SAHF,或 PUSHF 和 POPF 指令重写 EFLAGS,可以减少 EFLAGS 寄存器的影响。图片此次攻击的根本原因仍未完全了解。

74950

Linux Signal 一网打尽

Linux Signal 一网打尽 前言 Linux Signal想毕很多人都用过,比如在命令行下想要结束某个进程,我们会使用kill pid或者kill -9 pid,其实就是通过给对应的进程发送信号来完成...下面我们就来进入到Linux Signal的世界吧~~~ 信号的使用 我们先通过一段代码实例来看一下信号量的使用吧。...信号的发送 信号的发送,有人说那还不简单,只要知道一个进程的pid, 那就发呗~~~ 之前写过一篇文章Linux PID 一网打尽, 里面介绍了在Linux系统里面,有进程,线程,线程组,进程组这几个概念...实时信号 从Linux2.2版本开始,支持了real-time信号,这些real-time信号量被定义在宏SIGRTMIN 和 SIGRTMAX之间,Linux系统没有给它们预先定义含义,它们可以被应用程序自由定义...|X86_EFLAGS_DF|X86_EFLAGS_IF| X86_EFLAGS_IOPL|X86_EFLAGS_AC|X86_EFLAGS_NT); } 可以看到当前的系统调用处理入口是

2.2K20
领券