整理 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

作为在服务器端执行的脚本语言,PHP 尤为适用于 Web 开发并可嵌入 HTML 中,因此许多个人和企业网站的开发都习惯了 PHP 的便捷。

可近日,PHP 官方 Git 仓库却被黑客攻击,致代码库遭篡改,恶意代码植入了一个远程代码执行的后门,即黑客可远程接管任何使用 PHP 的网站

两个冒名的恶意提交

上周日,PHP 的开发者兼维护者 Nikita Popov 表示,在 git.php.net 服务器上维护的 php-src 存储库中发现两个恶意提交,而且这两个提交还都伪造了他的签名和 PHP 创建者 Rasmus Lerdorf 的签名。

表面看来,这两个提交都只是“Fix typo”,即修复打字排版错误,加之又是以 Nikita Popov 和 Rasmus Lerdorf 的名义提交,因此开发者很容易将其混淆为已知的 PHP 维护者所为。

不过,一旦将目光移至第 370 行,问题就浮出了水面:这行调用了 zend_eval_string 函数的代码,实际上是植入了一个远程代码执行(RCE)的后门,但凡运行该版本 PHP 的网站都会可能受到攻击。

PHP 开发者 Jake Birchall 对此解读为:“如果该字符串以'zerodium'开头,那么这行代码将从 useragent HTTP 头内执行 PHP 代码。”

据 Web Technology Surveys 的调查显示,全球近 80% 的网站均由 PHP 支持,倘若这个远程代码执行(RCE)的后门就此被植入并未被发现,后果不堪设想。

所幸,Nikita Popov 表示这两个恶意提交很快便被发现并已还原:“第一个提交是在提交后几个小时发现的,这是常规提交后代码审查的一部分。这些更改显然是恶意的,所以立即被还原了。”

此外,Popov 补充道,这些恶意提交是在 PHP 8.1 的开发分支上进行的,而该分支将于今年年底发布,所以目前并没有造成严重后果。

PHP 源码库由 Git 迁移至 GitHub

由于恶意提交是以 Nikita Popov 和 Rasmus Lerdorf 的合法维护者名义所上传,因此目前为止,尚不清楚肇事者是谁,以及他们是如何发布恶意提交的。不过这种事情的发生也不是太令人惊讶,因为像 Git 这样的源码版本控制系统,其实很容易实现将伪造的提交上传至远程 Git 服务器。

PHP 维护者 Nikita Popov 也指出,虽然开发团队不确定确切的攻击方式,但是有迹象表明这次恶意活动是由受感染的 git.php.net 服务器引起的,而非个人 Git 帐户。

因此,为了预防此类事件的再次发生,PHP 维护者已决定将官方 PHP 源码库迁移到 GitHub

Nikita Popov 在声明中表示,尽管调查仍在进行中,但他们将停止 git.php.net 服务器。而曾经仅仅是作为镜像的 GitHub 存储库今后将变得规范。也就是说,未来 PHP 所有的代码更改都要直接推送至 GitHub 而不是 git.php.net 服务器。

此外,之前对 PHP 项目存储库有写访问权的开发者现在也需要加入 GitHub 上的 PHP 组织。

Zerodium:与我与关

作为至今仍是服务器端主要的编程语言,PHP 的 Git 服务器被黑这件事引起了强烈的关注及讨论,今日在 Techmeme 和 HN 上均登上首页或 TOP 榜。

其中,由于恶意代码中提到了“zerodium”一词,因此许多开发者猜测此事或许与 Zerodium 公司有关。

PS:Zerodium 号称网络军火商,一家主营软件漏洞采购、专门倒卖 0day 漏洞,并将之向政府和执法机构转售的企业。

对此,Zerodium 的 CEO Chaouki Bekrar 在推特否认了相关谣言:“向今天在 PHP git 中输入‘Zerodium’的巨魔欢呼。很明显,这事跟我们无关。很可能,发现这个漏洞的研究人员试图把它卖给许多实体,但没有人想买这个垃圾,所以他们把它烧了。”

对于这起事件,也有许多网友进行了热议。

评论1:

提交[1]中的'zend_eval_string'的第三个参数是执行代码的"filename",它可能用于堆栈跟踪。这是一个非常奇怪的现象,在日志中看到这一点可能会立即敲响警钟。

因此总的来说,在我看来,这个提交的结构很奇怪——不是以一种“好的”隐蔽的方式,而是以一种“为什么它不试着更好地隐藏”的方式。

评论2:

在学习了几个月的 Django 之后,昨天我决定回到 PHP/wordpress, PHP7 和 PHP8 看起来很稳定,PHP 仍然是最适合 Web 的语言。在我看来,PHP8 添加了 JIT,它可以将自己扩展到 Web 应用程序之外。希望迁移到 GitHub 可以让团队在 PHP 开发上有更多的自由。

对这件事,你有什么看法吗?欢迎评论区留言!

参考链接:

https://github.com/php/php-src/commit/2b0f239b211c7544ebc7a4cd2c977a5b7a11ed8a?branch=2b0f239b211c7544ebc7a4cd2c977a5b7a11ed8a&diff=unified#diff-a35f2ee9e1d2d3983a3270ee10ec70bf86349c53febdeabdf104f88cb2167961R368-R370

https://news-web.php.net/php.internals/113838

https://www.bleepingcomputer.com/news/security/phps-git-server-hacked-to-add-backdoors-to-php-source-code/

【重磅直播·大咖云集】:
C站(CSDN)软件工程师能力认证
开源发布暨IT技术人才培养合作研讨会
于今晚19:30—21:00
扫码锁定直播间,期待您的参与!

点击阅读原文,直达现场~

PHP 官方被黑与“网络军火商”Zerodium 有关?CEO 辟谣:这个漏洞就是垃圾相关推荐

  1. 网络军火商泄漏惊天内幕:中国才是受害者!

    为什么80%的码农都做不了架构师?>>>    Hacking Team泄露数据表明韩国.哈萨克斯坦针对中国发起网络攻击 路人甲 · 2015/08/11 22:34 0x00 背景 ...

  2. 20145220韩旭飞《网络对抗》Exp6 信息搜集与漏洞扫描

    20145220韩旭飞<网络对抗>Exp6 信息搜集与漏洞扫描 信息搜集 whois查询 以百度的网址为例,使用whois查询域名注册信息: 从上图中可以得到3R注册信息,包括注册人的名字 ...

  3. Kyan 网络监控设备 hosts 账号密码泄露漏洞

    漏洞描述 Kyan 网络监控设备 存在账号密码泄露漏洞,攻击者通过漏洞可以获得账号密码和后台权限 漏洞影响 s ✅Kyan 空间测绘 d ⭕title="platform - Login&q ...

  4. 20145209刘一阳《网络对抗》Exp6信息搜集与漏洞扫描

    20145209刘一阳<网络对抗>Exp6信息搜集与漏洞扫描 实践内容 信息搜集和漏洞扫描 信息搜集 whois查询 用whois查询博客园网站的域名注册信息可以得到注册人的名字.城市等信 ...

  5. python语言的官方网站地址-Python网络编程 - 请求地址上的文件并下载

    我们用到了requests库,由于是第三方的,必须下载 如果是python 2.x用下面命令 pip install requests python 3.x用下面命令 easy_install req ...

  6. 央视被黑内幕,居然存在暴库及上传漏洞

    爆库地址:http://****.cctv.com/ChinvanAdmin/ckfinder/ 后台地址:http://****.cctv.com/ChinvanAdmin/login.aspx 文 ...

  7. 网络对抗技术-Exp5-信息搜集与漏洞扫描 20181314

    一.原理与实践说明 1.实践原理 2.实践内容概述 3.基础问题回答 二.实践过程记录 任务一:各种搜索技巧的应用 任务二:DNS IP注册信息的查询 任务三:基本的扫描技术:主机发现.端口扫描.OS ...

  8. 20145309 《网络对抗技术》信息搜集与漏洞扫描

    实践过程记录 DNS IP注册信息的查询 whois域名注册信息查询 whois域名注册信息查询 加上www时,查询的信息为域名注册信息,不能查到子域名(baidu.com)的注册信息 注册的信息:注 ...

  9. 网络空间搜索引擎及常用的端口漏洞

    网络空间搜索引擎 一.什么是网络空间搜索引擎 网络空间搜索引擎不同于普通的搜索引擎(百度等之类的),而是直接搜索网络中的主机,将主机信息汇聚成数据库,然后显示出主机的IP.端口.中间件.摄像头.工控设 ...

最新文章

  1. 你哪来这么多事(四):职工信息排序
  2. 斯坦福大学 计算机视觉方面课程资料
  3. 光流 | 基于Horn-Schunck HS变分光流算法改进
  4. python中的异常处理 try..except
  5. 深度学习(Deep Learning):循环神经网络一(RNN)
  6. linux中samba详解,详解linux系列之samba的安装及配置
  7. 工作经验--他人经验
  8. MySQL5.6优化了Order by排序limit
  9. 18张图,详解SpringBoot解析yml全流程
  10. [Vue warn]: Error in mount hook: “TypeError: Cannot read properties of null (reading ‘getAttribute‘)
  11. QObject类 moc处理后代码
  12. Ubuntu源硬盘挂载到本地计算机更新源
  13. 计算机三级考试 信息安全,计算机三级考试《信息安全技术》练习题及答案
  14. Android APK 修改
  15. 使用TMT工具进行威胁分析及风险评估(TARA)
  16. php随机一句话,PHP简单实现一言 / 随机一句功能
  17. 界面·财联社完成C轮5亿元融资;希尔顿花园酒店品牌首度落子北京 | 美通企业日报...
  18. 海信e5k和e5h区别 对比评测 哪个好
  19. 微信公众号+Vue+JS-SDK配置注册失败,显示config:fail,Error: 系统错误,错误码:63002,invalid signature等解决方法
  20. 远程控制软件开发_软件开发人员的远程工作

热门文章

  1. LeetCode 3. 无重复字符的最长子串 (滑动窗口哈希表)
  2. 做成熟的人,做高效能的人
  3. Java实现的日历(原创)
  4. 关于微软的VB和C#:为何Basic需要存在,为何VB如此像C#,为何两者不合并等
  5. 【javajni】jni入门篇
  6. org.jbpm.configuration.ConfigurationException: name 'default.jbpm.context'
  7. h5-localStorage实现缓存ajax请求数据
  8. hello 博客园!
  9. Vue-CLI搭建Vue项目
  10. python 字典处理_python之高效处理字典、序列的一些语法