防止删库跑路及高级代码投毒技巧
作者: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


猜你喜欢
- Frame切换在本文中,将介绍如何使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换。1、Fram
- 目录一、需求二、实现连接Mysql并执行查询语句三、写一个错误处理函数四、设置二级缓存一、需求实现二级缓存程序运行起来后提示:“请输入命令:
- 引言本文以Python3.9.1读取data.xlsx中包含的西瓜数据集3.0数据为例,数据集如下:编号色泽根蒂敲声纹理脐部触感密度含糖率好
- 使用 WinHttpRequest 伪造 HTTP 头信息,伪造 Referer 等信息。由于微软封锁了 XmlHttp 对象,所以无法伪造
- 列名不一定要相同,只要你在HH中列出要插入列的列表跟select from mm表中的选择的列的列表一一对应就可以了,当然两边的数据类型应该
- 插入mysql时,如果内容中有引号等特殊符号,会报错,解决方法可以用反斜杠转义,还可以用pymysql的一个方法自动转义:c = '
- 我设了个排卖的起始时间然后设了一个结束时间现在要精确到小时比如提示 “离到期时间:1天XX小时”大家有什么想法吗?我就是在小时总是不能实现,
- function clearCookie(){ var keys=document.cookie.match(/[^ =;]+(?=\=)/
- 代码如下: 代码如下:///<summary> /// 将两个列不同的DataTable合并成一个新的DataTab
- [javascript]var studs = [{name: 'clap', age: 15},
- 开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作安装paramiko模块pip3
- django启动我们在启动一个django项目的时候,无论你是在命令行执行还是在pycharm直接点击运行,其实都是执行'runse
- 我最近在涉及大量数据处理的项目中频繁使用 sqlite3。我最初的尝试根本不涉及任何数据库,所有的数据都将保存在内存中,包括字典查找、迭代和
- 有时我们需要在一个页面上使用多个Fck的实例,首先需要按照id获取fck的实例。例如: <FCKeditorV2:FCKeditor
- 现在获取数组中最大最小值用的越来越多了,于是乎我编了个方法供大家使用。代码如下,若有问题可以与我联系,咱们一起学习一起进步。我们来看下示例一
- 背景小程序在网络层提供的API是能够完成一个程序与服务端交互的完整链路,但需要大量的定制化代码,才能实现请求拦截和响应拦截,不太符合大多数开
- 你家中的CD、VCD一定很多吧?是不是常遇到为找一张CD把一抽屉的碟子翻得乱七八糟的情况,你一定没少受埋怨——你不想整理它们一下?如:影片是
- tips:在win10中查找SQL Server 2016配置管理器,用来开启SQL Server网络配置,启用实例TCP/IP协议和Nam
- 为什么很多站长开始做英文网站,我想主要是原因是良好的互联网环境让大家更容易赚到钱,中小站长做英文网站大致为两类,一是电子商务的外贸网站,二是
- 0.摘要本文介绍了生成连续和随机字母表的方法,用于快速生成大量字母数据。主要使用chr()函数,将数字通过ASCII表转换为相应字母。1.c