GitHub 上数百万个存储库可能容易被劫持

news2024/11/23 22:21:39

GitHub 上数以百万计的企业软件存储库很容易受到重新劫持,这是一种相对简单的软件供应链攻击,威胁行为者将依赖于特定存储库的项目重定向到恶意攻击。

研究人员在本周的一份报告中表示,这个问题与 GitHub 用户或组织更改项目名称或将其所有权转让给另一个实体时 GitHub 如何处理依赖项有关。

为了避免破坏代码依赖关系,GitHub 在原始存储库名称和新存储库名称之间创建了一个链接,以便所有依赖于原始存储库的项目都会自动重定向到新重命名的项目。但是,如果组织未能充分保护旧用户名,攻击者可以简单地重用它来创建原始存储库的木马版本,以便任何依赖该存储库的项目将再次开始从中下载依赖项。

研究人员本周在博客中表示:当存储库所有者更改其用户名时,会在旧名称和新名称之间创建一个链接,供任何从旧存储库下载依赖项的人使用。但是,任何人都可以创建旧用户名并破坏此链接。

研究人员最近决定调查 GitHub 上易受此类重新劫持或依赖项存储库劫持(一些安全研究人员提到的威胁)的存储库的普遍性。

GitHub 上存在数以百万计的此类存储库,其中包括属于 Google 和 Lyft 等公司的存储库;攻击者可以轻松使用工具来找到这些存储库并劫持它们。

其中一个工具是 GHTorrent,该项目在 GitHub 上维护所有公共事件的近乎完整的记录,例如提交和拉取请求。攻击者可以使用 GHTorrent 获取组织以前使用的存储库的 GitHub 名称。然后,他们可以使用旧用户名注册存储库,重新创建存储库,并将恶意软件传递到使用它的任何项目。

如果存储库的所有者更改或删除其存储库的用户名,任何直接引用 GitHub 存储库的项目都容易受到攻击。

我们提供了一个重要的数据集,攻击者可以利用该数据集获取属于组织的先前存储库的名称。

组织不应假设其旧组织名称将保持不公开状态。对于他们来说,在 GitHub 上认领并保留旧用户名并扫描代码中的 GitHub URL 和引用以识别可能被攻击者认领的任何存储库至关重要。

GitHub 已尝试通过阻止创建以前拥有但现在重定向到其他项目的用户名和存储库来解决此问题。GitHub 几年前还实施了一种机制来淘汰流行的存储库命名空间,作为减轻这种威胁的一种手段。

在过去几年里,已经发现了一些绕过方法,在 研究过程中,其研究人员发现了几个不适用 GitHub 实施的保护的存储库示例。因此,用户目前不能完全依赖这些防御措施。

Checkmarx 去年发现的GitHub 漏洞是攻击者绕过 GitHub 防止重新劫持尝试的方法之一。该缺陷涉及一种名为“流行存储库命名空间退休”的机制,并影响 GitHub 上所有重命名的用户名,包括 Swift、Packagist 和 Go 等包管理器上的 10000 多个包。

Checkmarx 在有关该漏洞的报告中表示:重新劫持是一种劫持重命名存储库 URL 流量并通过利用破坏原始重定向的逻辑缺陷将其路由到攻击者存储库的技术。当 GitHub 存储库的创建者决定重命名其用户名而旧用户名可供注册时,该存储库很容易受到重新劫持。

组织可以通过扫描其代码、存储库和 GitHub 链接的依赖项来减轻遭受重新劫持威胁的风险:他们应该检查这些链接是否直接引用 GitHub 项目,或者是否有重定向指向其他用户名或存储库下的存储库名称比原来的链接。

在这些情况下,组织应尝试声明可用的用户名,以防止攻击者这样做。此外,组织应该始终在 GitHub 上保留他们的旧用户名。

GitHub 数据集研究表明数以百万计的人可能容易受到 RepoJacking 攻击

https://blog.aquasec.com/github-dataset-research-reveals-millions-potentially-vulnerable-to-repojacking#Appendix_A

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/685503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python自动执行程序:提高效率,降低出错率的利器

Python自动执行程序:提高效率,降低出错率的利器 随着科技的进步和信息技术的发展,人们越来越依赖计算机和自动化技术来完成繁琐的工作。自动化编程技术的应用也越来越广泛,其中Python自动执行程序被广泛使用。 Python自动执行程…

图像处理的两种变换:2D-DWT和Gabor变换

pywt官方API文档: 2D Forward and Inverse Discrete Wavelet Transform 目录 1. 二维离散小波变换2D-DWT 1.1 二维离散小波变换的相关公式 1.2 使用pywt实现2D-DWT 2. 窗口傅里叶变换Gabor 1. 二维离散小波变换2D-DWT DWT(Discrete Wavelet Transformation)代…

c语言通讯录——静态版本(带详细文字解释)

1.定义用于存储一个人信息的结构体 typedef struct PeoInfo {char name[NAME_MAX];int age;char sex[SEX_MAX];char addr[ADDR_MAX];char tele[TELE_MAX]; }PeoInfo;定义了一个名为 “PeoInfo” 的结构体(struct)类型,用于存储有关一个人的信…

MIAOYUN“一云多芯”全栈信创解决方案获认可!

信创,即信息技术产业创新,是数据安全、网络安全的基础,也是新基建的重要组成部分。信创产业发展已经成为经济数字化转型、提升产业链发展的关键,促进信创产业在本地落地生根,带动传统IT信息产业转型,构建区…

使用POI将excel文件导入到数据库

概要 随着时代变化,有的需求也会越来越多,例如:有的文件上千条数据需要导入数据库不可能手动一条条导入吧?太浪费时间了!所以需要编写程序让程序来导入 整体架构流程 我这里使用的是springbootmybatisMVC的项目架构…

接口测试流程、测试点和测试工具

目录 前言: 一、什么情况下开展接口测试? 二、如何进行接口测试 三、接口测试用例设计 四、接口测试工具 前言: 接口测试是一种重要的测试类型,用于验证应用程序接口的功能、性能和可靠性。 一、什么情况下开展接口测试&am…

AtomicInteger源码

介绍 Atomic包是java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类。这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,…

大坝渗流监测的目的和意义

​  大坝渗流监测是对坝体内渗流场进行的监测,是确保大坝安全运行的重要手段。通过监测,可以掌握渗流场的变化规律,并根据渗流场的变化趋势预测坝体、坝基可能出现的问题。通常根据渗漏量与渗流量两个指标来进行监测,即渗漏量小…

【ndarry的基本操作】——numpy03

目录索引 基本索引和切片:普通索引:省略索引:多省略索引:间隔索引: 形态变换操作:reshape():resize():transpose():*通过参数进行转置:* flatten()&#xff1…

usb转8路串口模块

开源USB转8路串口PCB设计 文章目录 开源USB转8路串口PCB设计1. 简介2. 说明3. 一种跨电脑跨USB口的端口号自动识别方法4.开源地址 今天给大家介绍一款USB转8路串口的PCB设计,并提供一种跨电脑跨USB口的端口号自动识别方法。 1. 简介 芯片采用沁恒的CH348Q&#xff…

Kotlin Jetpack Compose - 实现Tab布局

Tab布局是一种常见的UI设计,它允许用户在不同的视图或数据集之间切换。我们将使用Jetpack Compose的 TabRow 和 ScrollableTabRow 组件来实现这个布局。 一、基本的Tab布局——TabRow 二、滚动的Tab布局——ScrollableTabRow 组件 三、自定义Tab组件 一、基本的T…

音视频数据处理-H265/HEVC视频码流分析

一、H265概述 H265/HEVC(Hight Efficiency Video Coding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行…

chatgpt赋能python:Python自动化定位元素的方法详解

Python自动化定位元素的方法详解 作为一名Python编程经验丰富的工程师,我经常需要用到自动化定位元素的方法。今天,我想与大家分享一下在Python中如何自动化定位元素,以帮助那些想要进行Web自动化测试的开发者们。 什么是自动化定位元素 在…

chatgpt赋能python:Python聊天界面:开发高效且易于使用的消息应用

Python聊天界面:开发高效且易于使用的消息应用 Python是一种十分流行的编程语言,最近几年来,这种语言在GUI应用程序开发方面也越来越受欢迎。在本篇文章中,我们将介绍如何使用Python开发一个高效且易于使用的消息应用程序——聊天…

chatgpt赋能python:Python自动化定位——解放SEO员工的双手

Python自动化定位——解放SEO员工的双手 SEO(Search Engine Optimization)是现代数字营销中必不可少的一环。面对庞大的网络世界,SEO员工们日复一日地进行着关键词排名、页面跳转、链接检测等重复且繁琐的工作。而Python作为一种功能强大、易…

chatgpt赋能python:Python自动执行:提高效率,增强灵活性

Python自动执行: 提高效率,增强灵活性 随着时代进步,人们日常生活中越来越依赖计算机和网络技术,而在编程领域,Python语言作为一种高效、可读性好、易学易用的语言,得到了广泛应用。其中,Pytho…

【算法之栈与队列I】leetcode239. 滑动窗口最大值

232.用栈实现队列 力扣题目链接 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并…

使用netwox 的实例进行ARP地址解析协议分析【网络工程】(保姆级图文)

目录 1. netwox 构造 ARP 报文使用 netwox 工具构造 ARP 包。1) 查看 netwox 所在主机默认的 ARP 包的相关信息,执行命令如下:2) 构造 ARP 请求包,请求目标主机 192.168.43.95,执行命令如下:3) 为了验证构造的 ARP 请求…

IDEA(2021.3.3) 登录Github copilot最新版本报错解决

"Request sign ln Initiate failed with message:read ECONNRESET, request id: 6, error code:-32603 " .在获得github认证后的登录设备验证阶段弹出。此处应该为login 弹出异常,方法一:先使用Github 520进行动态替换,打开自己hos…

霍夫变换椭圆检测(matlab仿真与图像处理系列第2期)

概述 椭圆检测是图像处理中的一个重要问题,其目的是从图像中检测出可能存在的椭圆。在实际的应用中,椭圆常常被用来描述物体的形状或者得到物体的尺寸信息。 传统的椭圆检测方法通常采用二维Hough变换,在求解过程中需要处理大量的数据,并且计算复杂度高,导致速度较慢,…