M2kar’s Security World

欢迎来到M2kar的安全世界博客!

  • 本博客用于记录系统安全研究的论文笔记,安全技术思考,欢迎和我留言讨论。

Unsafe GitHub workflow

https://github.com/m2kar/m2kar.github.io/blob/7e9bedc2699dd22703ffe7b1d37c78f32d517101/.github/workflows/issue-to-post.yml#L58 It can steal secrets… 欢迎评论以及发邮件和作者交流心得。 版权声明:本文为 m2kar((https://m2kar.cn)) 的原创文章,遵循CC 4.0 BY-SA版权协议,转载请发邮件征求作者同意,并附上原文出处链接及本声明。 合规声明: 本文仅限于技术交流,请读者遵守当地法律,如造成侵权、违法、犯罪行为,与本文无关。如本文侵犯到您的权利,请发邮件告知,本站将会做出适当处理。 作者: m2kar 邮箱: m2kar.cn<at>gmail.com 主页: m2kar.cn Github: github.com/m2kar CSDN: M2kar的专栏 欢迎在ISSUE参与本博客讨论: m2kar/m2kar.github.io#30

2025年7月21日 · 1 分钟 · M2kar

Airtest 滑动验证码实战

大佬,看了您的文章了解到Airtest技术,现在遇到了Airtest如何实现验证码滑块问题,还望大佬分享经验 欢迎评论以及发邮件和作者交流心得。 版权声明:本文为 m2kar((https://m2kar.cn)) 的原创文章,遵循CC 4.0 BY-SA版权协议,转载请发邮件征求作者同意,并附上原文出处链接及本声明。 合规声明: 本文仅限于技术交流,请读者遵守当地法律,如造成侵权、违法、犯罪行为,与本文无关。如本文侵犯到您的权利,请发邮件告知,本站将会做出适当处理。 作者: m2kar 邮箱: m2kar.cn<at>gmail.com 主页: m2kar.cn Github: github.com/m2kar CSDN: M2kar的专栏 欢迎在ISSUE参与本博客讨论: m2kar/m2kar.github.io#27

2024年4月28日 · 1 分钟 · M2kar

[技术分享]套娃之arm架构下的MacBook通过parallels+rosetta安装Linux amd64版本的IDA Pro

前言 苹果公司在MacBook这种生产力平台使用无疑是个伟大且大胆的创新,经过几年的软件生态环境的改善,各种常用工具基本都能在mac下运行。但仍有些闭源发布的软件仍需要在amd64架构下的Linux环境中才能运行,比如本文中的IDA Pro 7.6版,因此整理一下踩坑记录,可供相关需求的同学参考。 划重点:arm环境下运行amd64程序;ldd跨架构运行 环境和工具 MacBook with M3 chip parallels Desktop 19 IDA Pro 8.3 for Linux 安装包 支持amd64的Linux环境 parallels是Mac生态下非常好用的虚拟机软件,但之前的版本仅支持运行arm架构的虚拟机,不支持amd64的程序。在parallels的v19版本之后,基于苹果官方提供的支持, parallels推出了在arm虚拟机中运行amd64程序的能力,并提供了一套配置好了的ubuntu 22.04虚拟机镜像。 因此,我们只需要点击创建虚拟机,下载Ubuntu with x86_emulation,即可获得amd64的模拟运行环境。如下图。 安装IDA pro并解决各种依赖缺失 打开安装好的虚拟机,把安装包拷贝进来,在终端中运行。 sudo idapronl_xxx.run 但直接报错: rosetta error: failed to open elf at /lib64/ld-linux-x86-64.so.2 这是因为parallel提供的虚拟机仅安装了基础了amd64的组件,仍有大量的组件缺失。比如在这里,是缺失了binutils组件。 因此作者安装了amd64架构下的binutils,注意使用:amd64选择安装的目标架构 sudo apt-get update sudo apt-get install binutils:amd64 然后,安装程序顺利进行,作者将idapro安装在/opt/idapro-8.3目录下。 尝试运行ida64,果然又提示各种库文件缺失。 比如以下报错提示: /opt/idapro-8.3/ida64: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory 表示缺失了libGL.so.1动态链接库,谷歌搜索后发现需要安装libgl1-mesa-glx库,则运行命令sudo apt install libgl1-mesa-glx:amd64安装amd64架构下的libgl1-mesa-glx库。 ...

2024年3月25日 · 2 分钟 · M2kar

[技术分享] 工控物联网中非对称加密协议分析

IoT/ICS领域涉及非对称加密的网络协议分析: TLS/SSL协议 TLS/SSL协议。最常见的HTTP/Modbus/MQTT/FTPS/XMPP/AMQP/OPC UA/都可在TLS协议基础上实现安全传输,很多私有协议(如西门子S7comm-Plus)也是在TLS或者HTTPS上层再做了定制。 TLS协议涉及的私钥有两种。一种是用于证书的私钥,遵循X.509格式,用于解密客户端发来的对称秘钥,在设备中存储。申请下来的证书中包含公钥、受信任的设备标识和上级CA机构,通过证书链验证本证书的可信性。证书在建立连接时发给客户端,用于表示设备的可信性。一种是会话私钥,该私钥每次会话临时生成,且不在网络上传输,而是通过DH类秘钥交换协议和对方生成同一个共享加密秘钥,用于后续的对称加密。 证书的秘钥会在服务器端存储。1)有的厂商(比如群晖)会要求用户自行上传证书和秘钥。2)有的是初始化的时候需要联网重新申请证书和秘钥的。3)有的是出厂即预置了相同证书和秘钥。在已知私钥的情况下,破解流量是很容易的。有些情况下,客户端也需要证书验证,这时候客户端也会有对应的证书私钥。 DTLS协议 DTLS协议。和TLS协议类似,但基于UDP实现。CoAP协议是在DTLS协议基础上实现的加密传输。 SSH协议 SSH协议。SSH协议支持口令和非对称密码验证。非对称密码验证是将公钥存在服务器中,私钥存储在客户端中。IoT设备一般作为服务器端,很少作为客户端,因此也不存储私钥。 IPSec协议 IPSec协议。IP层的安全协议,一般用于VPN连接,配置过程较为复杂。同样基于X.509证书,认证过程要求双方均提供证书。相应的,双方均存储自己的私钥。 其他私有协议 其他私有协议。厂商在TCP/HTTP等协议基础上自行实现的全流量加密或部分加密的协议。 欢迎评论以及发邮件和作者交流心得。 版权声明:本文为 m2kar((https://m2kar.cn)) 的原创文章,遵循CC 4.0 BY-SA版权协议,转载请发邮件征求作者同意,并附上原文出处链接及本声明。 合规声明: 本文仅限于技术交流,请读者遵守当地法律,如造成侵权、违法、犯罪行为,与本文无关。如本文侵犯到您的权利,请发邮件告知,本站将会做出适当处理。 作者: m2kar 邮箱: m2kar.cn<at>gmail.com 主页: m2kar.cn Github: github.com/m2kar CSDN: M2kar的专栏 欢迎在ISSUE参与本博客讨论: m2kar/m2kar.github.io#25

2023年8月21日 · 1 分钟 · M2kar

[IoT安全]CVE-2018-5767分析和复现

[IoT安全]CVE-2018-5767分析和复现 0x00 摘要 0x01 固件介绍 固件名称: US_AC15V1.0BR_V15.03.1.16_multi_TD01.rar 该固件用于腾达AC15V1.0版本的WiFi路由器产品。AC15V1.0是该厂商推出的中高端双频AC系列智能WiFi路由器。该产品支持802.11ac标准,采用Broadcom四核处理器,配备4个高增益内置天线,可提供稳定的WiFi信号。固件版本为V15.03.1.16,支持多语言版本,发布时间为2015年。根据固件名称推测该设备主要用于美国市场。 固件下载地址:https://us.softpedia-secure-download.com/dl/50b0d70af21488030c14cb2bd30e63b3/63008144/300482999/drivers/router/US_AC15V1.0BR_V15.03.1.16_multi_TD01.rar 0x02 环境搭建 最近在用manjaro系统,先踩踩环境的坑。 软件: binwalk ghidra FirmAE binwalk安装踩坑 Manjaro可通过yay -S binwalk安装binwalk。作者安装后缺失sasquatch,通过额外安装sasquatch-git包解决。 FirmAE 在Manjaro上配置有些问题,所以这里使用Docker的方式安装。 (ps: Manjaro确实好用,但大家都在用kali/ubuntu,所以生态上各种小问题) 使用docker配置FirmAE的步骤可参考( https://github.com/pr0v3rbs/FirmAE/tree/master#docker) 针对安装中遇到的各种国内网络无法访问的问题,作者用了用了一台已root的安卓手机作为透明代理,可以解决绝大多数网络问题。具体是使用了VPN Hotspot这个软件,可参考这篇文章( https://vkuajing.net/vpn-hotspot-wifi/) 0x03 解包 直接调用binwalk解包,常规操作。 $ binwalk -Me fw.bin $ ls _fw.bin.extracted/squashfs-root bin etc home lib proc sbin tmp var webroot_ro dev etc_ro init mnt root sys usr webroot 0x04 漏洞原理 0x05 模拟启动 0x06 PoC验证 参考 IoT 安全之 CVE-2018-5767 分析 : https://paper.seebug.org/2065/ 欢迎评论以及发邮件和作者交流心得。 版权声明:本文为 m2kar((https://m2kar.cn)) 的原创文章,遵循CC 4.0 BY-SA版权协议,转载请发邮件征求作者同意,并附上原文出处链接及本声明。 合规声明: 本文仅限于技术交流,请读者遵守当地法律,如造成侵权、违法、犯罪行为,与本文无关。如本文侵犯到您的权利,请发邮件告知,本站将会做出适当处理。 作者: m2kar 邮箱: m2kar.cn<at>gmail.com 主页: m2kar.cn Github: github.com/m2kar CSDN: M2kar的专栏 欢迎在ISSUE参与本博客讨论: m2kar/m2kar.github.io#24

2023年8月15日 · 1 分钟 · M2kar

[实验复现] How Machine Learning Is Solving the Binary Function Similarity Problem

0x0 论文信息 标题: How Machine Learning Is Solving the Binary Function Similarity Problem 作者: Andrea Marcelli, Mariano Graziano, Xabier Ugarte-Pedrero, and Yanick Fratantonio, Cisco Systems, Inc.; Mohamad Mansouri and Davide Balzarotti, EURECOM 关键字: 二进制安全 来源: SEC'22 链接: https://www.usenix.org/conference/usenixsecurity22/presentation/marcelli 实验代码: https://github.com/Cisco-Talos/binary_function_similarity 0x0 复现环境 Window Ubuntu18.04(in WSL) 由于环境依赖问题,本人复现时会在Windows和WSL之间切换,涉及到IDA Pro的部分使用Windows,其他部分使用WSL IDA Pro 7.3 For Windows capstone 3.0.5 Python 3.8.16 Python 2.7.13 0x01 数据获取 训练所需的数据作者均整理到了Google云盘,并可通过gdrive_download.py脚本下载。 python gdrive_download.py --binaries --features --results 旧版本的代码中的gdown版本不兼容,需要安装gdown==4.6.4,最新版本已解决此问题 0x02 数据集处理 数据集处理的步骤包括: 编译:改变配置,基于源码,编译生成不同指令集架构、优化选项、编译器类型、编译器版本的二进制Binary 生成IDB:通过IDA Pro,基于Binary生成IDB 生成代码图数据:通过IDA Pro的扩展插件,基于IDB生成Flow图、ACFG汇编代码和ACFG特征 数据筛选清洗: 生成函数对:根据实验组中的编译优化、指令集等异同,组合生成用于训练的函数对 数据集拆分:拆分得到训练、验证、测试集 0x02.1 编译 参看代码的 Binaries/Compilation scripts/README.md 部分,本文不详细介绍。 ...

2023年3月19日 · 2 分钟 · M2kar

[论文笔记] How Machine Learning Is Solving the Binary Function Similarity Problem(机器学习如何解决二进制函数相似性问题)

标题: How Machine Learning Is Solving the Binary Function Similarity Problem 作者: Andrea Marcelli, Mariano Graziano, Xabier Ugarte-Pedrero, and Yanick Fratantonio, Cisco Systems, Inc.; Mohamad Mansouri and Davide Balzarotti, EURECOM 关键字: 二进制安全 来源: SEC'22 链接: https://www.usenix.org/conference/usenixsecurity22/presentation/marcelli 本文是关于二进制函数相似性问题的Measurement研究,这是一个在系统安全领域非常重要和具有挑战性的问题。作者对现有的研究进行了系统化的分析,并重新实现了一些代表性的方法,然后在一个新的数据集上进行了公平和有意义的比较。他们发现当前的研究存在一些主要的挑战,例如可重复性、评估结果的不透明性和研究方向的不清晰。他们希望通过发布他们的整个模块化框架和数据集来激励未来在这个研究领域的工作。 Measuring Function Similarity 函数相似性对比技术的分类。 相似性对比技术 首先介绍了两种测量函数相似度的技术:直接对比和间接对比技术。直接对比是指给定一对函数的特征,用机器学习模型输出一个相似度分数。间接对比是指将输入特征映射到一个"压缩"的低维空间,然后用简单的距离度量计算相似度。这两种技术都需要实现索引策略来提高搜索效率。 其中模糊哈希是低维表示方法的典型代表。模糊哈希是由与传统密码哈希不同的算法产生的,因为它们故意设计成将相似的输入值映射到相似的哈希值。Pagani等人研究了在原始可执行文件上计算传统模糊/局部敏感哈希的局限性,得出结论:输入字节的微小变化会显著影响生成的哈希值。然而,即使普通模糊哈希可能不适合函数相似度,一些方法(如FunctionSimSearch)提出了更专业的哈希技术来比较两个函数。 另一种低维表示形式是基于嵌入。嵌入指的是将高维样本映射到一个低维空间,其中语义上相似的输入被映射到彼此接近的点,而不管它们在原始表示中看起来有多么不同。机器学习模型的目标是学习如何产生嵌入,使得相似函数之间的相似度最大化,而不同函数之间的相似度最小化。在文献中包括两种主要类型的嵌入:函数代码级嵌入和图结构嵌入。 代码嵌入。利用自然语言处理(NLP)技术来解决二进制函数相似性问题,把汇编代码当作文本来处理。代码嵌入根据不同的标记(例如指令、助记符、操作数、规范化指令)生成代码块或指令的嵌入向量。有三类方法:一类是基于word2vec的方法,如Asm2Vec,可以在不同的指令集上训练,但不能跨架构映射语义;一类是基于seq2seq编码器-解码器模型的方法,可以将不同架构的语义映射到同一个嵌入空间;一类是基于BERT的方法,如OrderMatters和Trex,使用预训练的变换器模型来学习近似程序执行语义,并用于识别语义相似的函数。 汇编代码嵌入通常受到它们能够处理的不同指令数量(所谓的词汇外问题)和能够作为模型输入的最大指令数量的影响。因此,某些方法计算指令级嵌入、基本块嵌入或函数级嵌入。 图嵌入。图嵌入是一种为图中的每个实体(通常是节点)确定固定长度向量表示的方法,这些嵌入是图的低维表示,保留了图的拓扑结构。基于函数控制流图的图嵌入方法具有跨架构的特点。这些嵌入可以由定制算法 或更复杂的机器学习技术,如图神经网络(GNN) 生成。一些最新的机器学习方法提出了GNN的变体,如GMN,这些变体能够在向量空间中产生可比较的嵌入 ,这些嵌入包含了从输入模型的两个图中提取的信息。 图嵌入方法还经常为每个基本块在其对应的图节点中编码信息,以增加表达能力。例如,一些解决方案为每个节点计算一组属性,从而导致具有属性的控制流图(ACFG),这些属性可以是手工设计的 或以无监督方式自动学习的。其他作者利用其他嵌入计算层使用前面讨论过的一些技术(例如,在基本块级别)。 函数表示技术 从二进制中提取信息的技术。 raw bytes 原始二进制 直接使用原始二进制信息作为相似性对比的输入(Catalog1 [74]),或者将原始字节与与从控制流图(CFG)或调用图(CG)[44]获取的其他信息结合起来 Assembly 汇编 汇编指令作为输入、使用汇编指令的数量作为输入来计算函数的相似性 Normalized assembly 标准化汇编 由于汇编代码经常编码常量值,导致操作和操作数的组合非常多。汇编规范化是可以抽象掉一些变化,减少词汇量,把同一操作的不同变体统一成一个表示。 Intermediate representations 中间表示 中间表示是一种将二进制代码提升到更高抽象层次的技术,可以统一不同指令的语义,消除不同架构的差异,以及应用程序分析技术来简化代码结构。常用的中间表示有LLVM、VEX和IDA微码等。 structure 结构特征 结构是一种反映函数内部或者在程序中的作用的特征。许多方法提取函数的控制流图(CFG),并且根据基本块的数据或者其他信息对其进行扩展,形成属性控制流图(ACFG)或者其他类型的图。还有一些方法利用CFG的结构来计算其他特征,例如tracelets(CFG中连续基本块的序列)。 Data flow analysis 数据流分析 数据流分析是一种处理汇编级别的算术表达式的不同形式的方法。一些方法通过计算基于数据流依赖的程序切片,并将它们标准化和作为特征来反映函数的行为。另一些方法,例如Vulseeker,使用块之间的数据流边作为额外的特征。 Dynamic analysis 动态分析。 动态分析通过运行函数对并根据输入输出关系提取特征,或者根据执行轨迹提取语义特征,或者使用模拟或混合技术。 Symbolic execution and analysis 符号执行 用符号执行来完全捕获待分析函数的行为,并确定其输入和输出之间的关系,涵盖所有可能的路径。 本文选择的方法 选择标准 可扩展性和实际应用能力 关注具有代表性的方法,而不是特定的论文 涵盖不同的研究领域 优先考虑最新的趋势 二进制代码相似性技术的演变: ...

2023年3月19日 · 1 分钟 · M2kar

如何把Issue博客自动同步到github page中

这个问题我问了chatgpt: 问题1 生成一段github的workflows配置文档,当有新issue的时候,自动将issue的内容同步到该GitHub项目的blog分支的content/post文件夹中的新Markdown文件中。文件名为"{YYYYMMDD}-{Title}.md",其中{YYYYMMDD}为issue的日期,"{Title}“为issue的标题。文件开头加上 --- title: data: lastmod: draft: false tags: --- 它给我回复了一个GitHub Workflows 配置文档。 name: Sync Issue to Blog on: issues: types: [opened, edited] jobs: sync-issue-to-blog: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v2 - name: Setup Hugo uses: peaceiris/actions-hugo@v2 with: hugo-version: "latest" - name: Create Blog Post id: create_post run: | issue_title=$(echo "${{ github.event.issue.title }}" | sed 's/[[:space:]]/-/g') issue_date=$(echo "${{ github.event.issue.created_at }}" | cut -c1-10 | sed 's/-//g') post_path="content/post/${issue_date}-${issue_title}.md" post_date=$(echo "${{ github.event.issue.created_at }}" | cut -c1-10) post_title=$(echo "${{ github.event.issue.title }}" | sed 's/"/\\"/g') post_body=$(echo "${{ github.event.issue.body }}" | sed 's/"/\\"/g') echo "---" > "${post_path}" echo "title: \"${post_title}\"" >> "${post_path}" echo "date: \"${post_date}\"" >> "${post_path}" echo "lastmod: \"${post_date}\"" >> "${post_path}" echo "draft: false" >> "${post_path}" echo "tags:" >> "${post_path}" echo "---" >> "${post_path}" echo "${post_body}" >> "${post_path}" - name: Commit and Push Changes run: | git config --global user.name "${{ github.actor }}" git config --global user.email "${{ github.actor }}@users.noreply.github.com" git add . git commit -m "Sync issue #${{ github.event.issue.number }} to blog" git push origin blog env: GH_TOKEN: ${{ secrets.GH_TOKEN }} 这个 Workflows 将会在项目中有新的 issue 被创建或编辑时运行。它首先会检出代码库,并安装最新版的 Hugo。接下来,它会创建一个新的 Markdown 文件,其中包含了 issue 的标题和正文,并将其保存到项目的 blog 分支的 content/post 目录下,文件名格式为 {YYYYMMDD}-{Title}.md。最后,它会将更改提交到 blog 分支,并使用 GitHub API 的 token 进行身份验证。注意,为了使 Workflows 正确运行,你需要将 GitHub API 的 token 存储在你的项目的 secrets 中,并将其命名为 GH_TOKEN。 ...

2023年3月17日 · 5 分钟 · M2kar

用Docker定制Ubuntu启动光盘镜像

用Docker定制Ubuntu启动光盘镜像 ubuntu 启动光盘镜像通常用于安装Ubuntu,但也可以用于其他一些情况,包括没有持久性的预配置桌面和用于安装的自定义iso。传统上,这些都是用chroots制作的。还有一些图形化工具也可以制作,比如Cubic,这使得这个过程更容易。 但是,这个过程没有任何内置的“检查点”,所以很难迭代。不过,Docker的镜像创建系统是其中一个做得很好的工具. 本文将介绍如何使用该系统创建ubuntu 启动光盘镜像。 构建环境 本工具需要一个支持squashfs-tools-ng工具的Linux发行版,用来解包和重打包ISO镜像。截止本文创作时,Ubuntu 20.04LTS时是最好的支持该工具的Ubuntu发行版。因此本工具采取了一个Ubuntu 20.04LTS的虚拟机作为构建环境。 Docker 当然是必不可少的. # 安装docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh ./get-docker.sh 用下面的命令安装其他的依赖包。 sudo apt-get install p7zip-full grub2-common mtools xorriso squashfs-tools-ng 最后,需要下载基础的Ubuntu启动光盘镜像。下载地址在https://ubuntu.com/download/desktop。 (此过程可能也适用于其他Ubuntu版本(例如服务器版本),但是通常有更好的方法来部署服务器。) 创建Docker基础映像 ISO通过引导Linux内核,挂载squashfs映像并从中启动Ubuntu来工作。 因此,我们需要从ISO中获取该squashfs映像并从中创建一个Docker基础映像。 运行以下命令以从ISO中提取squashfs映像: # UBUNTU_ISO_PATH=path to the Ubuntu live ISO downloaded earlier 7z e -o. "$UBUNTU_ISO_PATH" casper/filesystem.squashfs 然后将该squashfs映像导入Docker: sqfs2tar filesystem.squashfs | sudo docker import - "ubuntulive:base" 这将需要几分钟才能完成。 Customising using a Dockerfile 现在,squashfs映像可作为Docker中的映像使用,我们可以构建一个对其进行修改的Dockerfile。 # 在上一节中,我们将squashfs映像导入Docker中,镜像名为'ubuntulive:base' FROM ubuntulive:base # 设置环境变量,以便apt非交互地安装软件包 # 这些变量将仅在Docker中设置,而不在安装镜像中设置 ENV DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical # 进行一些修改,例如 安装谷歌浏览器 RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' RUN apt-get update RUN apt-get install -y google-chrome-stable # 安装重新包装ISO所需的软件包(我们将使用此映像重新包装自身) # 安装BIOS支持:grub-pc-bin # 安装EFI支持:grub-egi-amd64-bin and grub-efi-amd64-signed # 构建ISO:grub2-common, mtools and xorriso # 其中xorriso在universe源 RUN add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe" RUN apt-get install -y grub2-common grub-pc-bin grub-efi-amd64-bin grub-efi-amd64-signed mtools xorriso # 删除过时的软件包和任何临时状态 RUN apt-get autoremove -y && apt-get clean RUN rm -rf \ /tmp/* \ /boot/* \ /var/backups/* \ /var/log/* \ /var/run/* \ /var/crash/* \ /var/lib/apt/lists/* \ ~/.bash_history 在尝试构建自定义映像之前,请运行以下命令从构建上下文中排除squashfs映像和ISO,以节省时间。 ...

2020年12月21日 · 3 分钟 · M2kar

【论文笔记】FIRMSCOPE:自动化发现安卓系统应用的提权漏洞

标题: FIRMSCOPE: Automatic Uncovering of Privilege-Escalation Vulnerabilities in Pre-Installed Apps in Android Firmware 作者: Mohamed Elsabagh, Ryan Johnson,..,Chaoshun Zuo 关键字: 论文笔记, 系统安全, 安卓应用, 提权漏洞 来源: sec20 链接: 引用: Elsabagh, Mohamed, Ryan Johnson, Angelos Stavrou, Chaoshun Zuo, Qingchuan Zhao, and Zhiqiang Lin. “FIRMSCOPE: Automatic Uncovering of Privilege-Escalation Vulnerabilities in Pre-Installed Apps in Android Firmware.” In 29th USENIX Security Symposium (USENIX Security 20), 2379–96, 2020. https://www.usenix.org/conference/usenixsecurity20/presentation/elsabagh. 摘要 Android设备在固件中预装了特权应用程序——其中一些是必不可少的系统组件,另一些则提供了用户无法禁用的独特用户体验。这些预安装的应用程序被认为是安全的,因为它们是由设备供应商自己而不是第三方亲自挑选或开发的。不幸的是,我们发现大量Android固件在预装的应用程序中存在权限提升漏洞,使得攻击者能够执行未经授权的操作,如执行任意命令、录制设备音频和屏幕以及访问个人数据等等。为了发现这些漏洞,我们构建了FIRMSCOPE,这是一个新的静态分析系统,它通过高效实用的上下文敏感、流敏感、字段敏感和部分对象敏感的污染分析来分析Android固件,以暴露预安装应用程序中不需要的功能。我们的实验结果表明,FIRMSCOPE在检测能力和运行时性能方面都明显优于最先进的Android污点分析解决方案。我们使用FIRMSCOPE扫描了来自100多家Android厂商的2017年Android固件映像331342个预装应用程序,从v4.0到v9.0。其中,FIRMSCOPE发现了850个独特的权限提升漏洞,其中许多漏洞是可利用的,且为0 day。 介绍 现实问题 预安装的应用程序具有预批准的敏感权限和功能,这些权限和功能对于从应用程序商店下载的用户级应用程序不可用,并且通常不需要用户批准或同意才能运行。在大多数情况下,即使是被预装的应用程序也无法被用户预先安装,或者被系统发现是恶意的。当用户面临这些威胁时,他们的选择是有限的:等待更新,希望能修复易受攻击的预装应用程序;或者通过对设备进行根目录删除应用程序,从而可能使其保修失效并损害其安全性。 通过固件分发的软件会使最终用户暴露在他们不知道的严重安全风险中,在许多情况下甚至对设备制造商也是如此。 ...

2020年12月1日 · 1 分钟 · M2kar