git 已知问题 命令行调用 git 时可能存在环境变量投毒问题

news/2025/3/15 7:21:21/文章来源:https://www.cnblogs.com/lindexi/p/18773226

核心代码非常简单,我只是使用 git add 命令而已

    var sourceFolder = @"C:\lindexi\Work\Source\";var processStartInfo = new ProcessStartInfo("git"){ArgumentList ={"add","."},WorkingDirectory = sourceFolder,};Process.Start(processStartInfo)!.WaitForExit();

在 git 钩子里面调起进程的时候,会额外注入许多环境变量,比如 GIT_INDEX_FILE 和 GIT_DIR 等,这些环境变量是指定的是当前的 git 钩子所在的 git 仓库的

这就导致了我设置了 WorkingDirectory = sourceFolder 无效,直接导致 git add 内容到当前 git 钩子所在的仓库,而不是 sourceFolder 仓库

解决方法是清空环境变量,解决被 git 钩子投毒

            var processStartInfo = new ProcessStartInfo("git"){ArgumentList ={"add","."},WorkingDirectory = sourceFolder,};// 这是在 git 里面调用的,会被注入 git 的环境变量,从而被投毒,如 GIT_INDEX_FILE GIT_DIR 等,导致加入的文件不是在要求的路径processStartInfo.Environment.Clear();Process.Start(processStartInfo)!.WaitForExit();

以上代码核心是使用 processStartInfo.Environment.Clear(); 清理所有传入到启动进程的环境变量

参考文档:

Git - Git 钩子

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eSIM神器之ESTK记录

本文内容一部分引用“ 灯塔旅人”公众号文章内容。 先说原理: 原理 ⚡️普通手机:营业厅将信息写入实体SIM中,然后插入手机,实现相关功能; ⚡️eSIM手机:内置了eSIM芯片,可以直接扫码写入运营商提供的eSIM并支持切换; ⚡️ESTK:形象地比喻为将eSIM手机中eSIM芯片取出,…

Google TPU第六代TPUv6

简单谈谈Google TPUv6 根据Google TPU第六代的数据做了一些性能数据的对比,需要注意的是TPUv6当前应该是一个用于训推一体的单Die的版本,用于训练的V6p双Die版本应该会后期再发布. 需要注意的是在国内外都开始卷大模型推理价格的时候, TPU这样的东西对于提高ROI非常有帮助。快…

NPU 是什么芯片?AI芯片都有哪些?(下)

8. HPU(Holographic Processing Unit) 全息处理器。微软HoloLens是世界上首台独立的全息计算机设备,能够提供高清晰度的全息影像,其秘密在于HoloLens搭载的Holographic Processing Unit(全息处理单元,简称HPU),这是一款定制芯片,可以处理和交互不同传感器及Intel Atom…

NPU 是什么芯片?AI芯片都有哪些?(上)

NPU 是什么芯片?AI芯片都有哪些? NPU就是CPU功能细化的产物,就像当年只有CPU一样,发现处理一些简单的重复的任务,特别像游戏这种大量作图时只能用软件算法,效率及其低下,所以发展处的加速卡,发展成为GPU,现在处理一些ai学习算法时都是用GPU软件模拟,效率低下,功耗大…

Nginx 配置与实战

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发…

《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》 4本书推荐

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该…

乐心手环6S拆解

PART1:背景使用了1年多的乐心手环电量终于扛不住了,于是便拆开看看里面使用的方案还有堆叠设计PART2:拆解先来看看乐心手环产品功能和外观照片去掉手环的表带,通过热风枪调至200℃,对这面盖和四周均匀加热至烫手,然后从两边拆开即可分离面盖和主体元器件清单可以看到使用的…

请求响应

apipost插件,用于测试1. 简单参数 通过request手动获取请求参数: @RestController public class easy {@RequestMapping("/easyget")public String easyget(HttpServletRequest request) { //通过request获取参数String name = request.getParameter("name"…

【机器学习面试场景问题】

1、ResNet是什么? ‌ResNet(Residual Network,残差网络)是一种在深度学习领域中非常重要的卷积神经网络(CNN)架构。 ResNet的核心思想是残差学习,通过学习输入与输出的残差,简化优化任务。其关键结构是残差块,通过短连接(Skip Connection)直接跳过部分非线性层,将输…

Linux中删除第一列中指定分隔符最后的一个字段

001、[root@localhost test]# ls a.txt [root@localhost test]# cat a.txt ## 测试数据 00_3 8834 1b_kk ffaa 55_f3_34 8834 aa_bb_kk_44 44aa [root@localhost test]# sed s/\([^ ]*\)_[^ ]\+\t\(.*\)/\1\t\2/ a.txt ## 删除第一列的最后一个字…

2021-PTA总决赛-L2-1 包装机(队列+栈,纯模拟)

栈+队列+模拟题目怎么说就怎么做AcCode: #include<bits/stdc++.h> using namespace std; queue<char> track[110]; stack<char> s; int main(){int N, M, S;cin >> N >> M >> S;for(int x = 1; x <= N; x++){for(int i = 0; i < M; …

2021年-PTA模拟赛-L2-2 三足鼎立(二分查找+思路)

二分查找,三边关系,STL库函数思路:把国家实力都存入数组中,排序后,遍历。 在for循环中,可以将问题简化成,已知两边,求另一边的取值范围,然后在数组里面使用二分查找,找到这个区间,这个区间在我的代码中是前闭后开区间,因此r - l就是一次循环得到的符合条件的第三边的…