防止删库跑路及高级代码投毒技巧
作者:TodoCoder 发布时间:2022-03-27 13:20:16
引言
事情是这样的,最近在做开源软件供应链安全相关的项目,之前没了解这方面知识的时候感觉服务器被黑,数据库被删,网站被攻,这些东西都离我们太遥远了,因为感觉好像都轮不到我们,直到我开始做这个项目,才发现网络安全,软件安全问题真的是无处不在。
今天我们来聊聊删库跑路和代码投毒。 我们从可操作性及易发现性还有后果及预防策略上来探讨一下。
删库跑路
在软件行业,“删库跑路”流传已久,对,就是删完库,跑在监狱的路上,这个对于安全来说简直是小儿科。
可操作性
1. 权限控制
像数据这么敏感的权限会控制的比较严格,比如人员的权限控制及防范:
运维人员需进行双因素认证;
防火墙或其他安全设备进行网络限制,仅允许从堡垒机才可访问至核心资产;
数据库等系统资源账号密码托管在堡垒机中,堡垒机定期自动改密,运维人员无需知道数据库等系统资源的账号密码;
严格控制后台资源的访问权限,做到访问权限最小化原则,给不同运维人员分配最小访问权限;
设置数据库等高危操作命令的金库模式,执行高危命令时可触发阻断、二次审批等操作;
根据实际情况设置更高级别安全限制,比如登录堡垒机时的IP地址、MAC地址限制,登录堡垒机的时间限制等等。
看到了没,首先第一步你让007来也不一定能搞定。就算侥幸跨过了第一步。。。然后就被警察抓走了。。。猪角卒。。
2. 数据备份
数据定期备份。
云厂商数据防护。
异地多活。
就算删了也能快速恢复。
综上:你能删库的概率基本为0了,只要地球还在数据就还在。
易发现性
这个不用多讲,即使能删库,有这个权限的人一根指头都能数清,那就是你了。。
影响后果
删库跑路一般是只会影响自己的公司,对其他企业或者人员没啥影响。但是对于你。。。。
相信你已经做出了你的选择。
代码投毒
代码投毒,是指攻击者在合法软件的开发、传播和升级过程中进行劫持或篡改,从而达到非法目的的攻击类型。鉴于当前超过99%的商业软件包含开源软件,一旦具有大规模用户基础的开源软件存在安全漏洞,势必会影响整个软件产业、甚至其他重要行业的供应链安全。
最近的案例
node-ipc 包的作者 RIAEvangelist 在以反战名义代码投毒投毒
他提交的是一段恶意攻击代码:如果主机的 IP 地址来自俄罗斯或白俄罗斯,该代码将对其文件进行攻击,将文件全部替换成 ?。该作者是个反战人士,还特意新建了一个 peacenotwar 仓库来宣传他的反战理念。据悉,该 package 每周下载量达到了百万。另外,使用 Yarn 的开发者也受到了影响。
PyPI 官方仓库遭遇150+恶意包疯狂投毒
攻击者mega707通过模仿agoric,datadog等知名软件包进行钓鱼,当用户安装攻击者的恶意包时,攻击者可窃取用户信息,环境地址等敏感信息上传至指定服务器。
Fastjson官方披露高危漏洞,包括rocketmq、jeecg-boot等近15%的github开源项目受影响
2022年5月23日,fastjson 官方发布安全通报,fastjson <= 1.2.80 存在反序列化任意代码执行漏洞,在特定条件下可绕过默认autoType关闭限制,可能会导致远程服务器被攻击,风险影响较大。建议使用了 fastjson 的用户尽快采取安全措施保障系统安全。
可操作性
包抢注攻击
攻击者通过向主流的软件包管理员(PyPI、Node.js npm、Maven、RubyGems、Docker Hub)投放大量「相似拼写名称」谐音的软件包或镜像,仿冒正规项目,从而让有恶意代码的代码包被安装到开发或生产环境。
依赖库注入恶意代码
攻击者通过自身的攻击能力与掌握的漏洞,入侵软件、硬件供应商的办公与开发环境,直接向产品代码内植入后门,在设备上预安装的恶意软件 (相机、USB、电话等),实现恶意代码与后门的分发,最终进入被攻击目标的网络。
预防策略
1)企业内部维护可信软件仓库,尽量减少企业人员从各种未知渠道下载软件。
2)监测服务器和PC运行软件的异常操作和流量,甚至提前对软件进行沙盒检测,主动发现潜在隐患。
3)全面梳理和维护企业在用软硬件信息,在供应链攻击曝光时做到快速止损定损。
4)使用官方渠道下载的IDE;软件分发及升级采用HTTPS等加密传输;避免内置远程控制能力;定期自检官网代码和执行程序是否存在恶意篡改。
对于企业级的,可以引入DevSecOps ,把安全扫描引入到DevOps流程当中,做好预警通知的能力,第一时间发现并修复软件漏洞。
最后
不管是删库跑路还是代码投毒,这些都是法律的红线,调侃归调侃,玩笑归玩笑,笑过以后,希望每个开发者都应该有敬畏之心,不然就只能到包吃包住的地方摸鱼了。
来源:https://juejin.cn/post/7115265821965811748
猜你喜欢
- 1. 需求:用户答题练习,当用户获取所有题目的同时,需要判断用户是否已经做过该题目,如果做过,需要render的时候添加一个“回顾”按钮。2
- 需求描述上周突然接到一个任务,要通过XX网站导出XX年-XX年之间的数据,导出后的文件名就是对应日期,导出后发现,竟然有的文件大小是一样,但
- 前一阵,我在为朋友编写一个源代码监控程序的时候,发现了一个 Python 领域非常简单好用的图形界面库。说起图形界面库,你可能会想到 TkI
- 本文实例讲述了Python3对称加密算法AES、DES3。分享给大家供大家参考,具体如下:python3.6此库安装方式,需要pip3 in
- Python的字典一般都直接查找key ,比如dict={'a':1,'b':2,'c':3
- 因文件格式要求,需要将docx 与doc文件相互转换,特寻找python代码,与大家共分享from win32com import clie
- 直接在线安装1、File->Settings->Plugins->Install JetBrains Plugins2、点
- 垃圾评论,垃圾留言,人见人憎,用了验证码,效果也好不到哪里去,还影响用户体验。有的网站甚至不惜牺牲用户体验,而构造强悍的惨不忍睹的超级验证码
- 前言 pycharm默认是没有为我们设置模板信息的,但为了更加方便的实现代码管理,以及能够一目
- 几乎在学习、使用任何一种编程语言的时候,关于socket的练习从来都不会少,尤其是会写一些局域网的通信的东西。所以书上的这个项目刚好可以练习
- 1.函数参数# 1.位置参数:调用函数时,传入的值需要按照位置顺序传入# 实例:求x的n次方def xPowN(x,n): &
- 本文转自微信公众号:"算法与编程之美",一、问题描述在collections模块中的defauldict使用时与dict
- 代理服务是一种复杂的技术,具有很多可配置的移动组件。详细信息如下:信息信息是指在服务代理应用程序中调用的基本信息单元。对于服务代理来说,信息
- 前言在深度学习中,有时候我们需要对某些节点的梯度进行一些定制,特别是该节点操作不可导(比如阶梯除法如 ),如果实在需要对这个节点进行操作,
- 如图所示,要处理的数据是一个json数组,而且非常大下图为电脑配置,使用 json.load() 方法加载上述json文件电脑直接卡死解决思
- 问题描述:使用 SQL 2005 w/ SP2 的汇出汇入精灵将数据从 Access 汇入到 SQL2005 发生了错误,但使用在SQL 2
- 1 算术运算add(other)比如进行数学运算加上具体的一个数字data['open'].add(1)2018-02-27
- 本文实例讲述了Python3多进程 multiprocessing 模块。分享给大家供大家参考,具体如下:多进程 Multiprocessi
- 1.关闭浏览器全部标签页driver.quit()2.关闭当前标签页(从标签页A打开新的标签页B,关闭标签页A)driver.close()
- 本文实例讲述了Python使用pickle模块储存对象操作。分享给大家供大家参考,具体如下:众所周知,当我们需要储存数据的时候,就需要用到重