1. 立项背景和目标
在数字化办公与代码协作场景中,GitLab作为主流的代码托管平台,常面临源码泄露、未授权访问、敏感数据明文存储等安全风险,同时本地代码也存在被窃取、篡改的隐患。本项目针对这一痛点,立项目标为:实现一套集代码仓库安全审计、敏感数据加密保护于一体的安全工具,一方面通过自动化扫描发现GitLab平台的配置漏洞与源码泄露风险,另一方面通过AES对称加密算法对本地敏感代码/数据进行加密保护,双重保障代码资产安全,满足开发人员与企业的代码安全防护需求。
2. 软件功能、核心功能模块的介绍
本项目包含两大核心功能模块,覆盖代码平台安全审计与本地数据加密全流程:
GitLab安全审计模块:基于Dirsearch等目录扫描工具,对目标GitLab站点进行自动化目录遍历与路径探测,识别/admin、/.well-known、/api等敏感路径,排查未授权访问、配置泄露、源码泄露等安全风险;同时集成数据库审计能力,对GitLab后台数据库(如sqlgunnews库)的admin表进行密码哈希获取与弱口令检测,实现账号安全审计。
AES敏感数据加密模块:基于Python实现AES对称加密算法,支持对本地代码、配置文件、敏感业务数据进行加密/解密操作,采用CBC模式+随机IV向量保障加密安全性,同时集成日志记录功能,全程记录加密/解密的耗时、数据长度等关键信息,方便审计与追溯,防止敏感数据明文泄露。
3. 业务流程、功能路径描述
GitLab安全审计流程:
输入目标GitLab站点地址(如http://gitlab.example.com:9999/),启动目录扫描任务;
工具自动遍历站点路径,识别可访问的敏感目录与文件,返回状态码、文件大小等审计结果;
针对可访问的后台路径,进一步探测数据库接口,获取admin用户的密码哈希;
对获取的哈希进行弱口令检测,输出审计报告,标注风险等级与修复建议。
AES加密/解密流程:
加密流程:输入明文敏感数据与16位密钥→工具自动生成随机IV向量→采用AES-CBC模式加密→拼接IV与密文并转为十六进制字符串→输出加密结果,同时记录加密日志;
解密流程:输入十六进制密文与密钥→工具拆分IV与密文→采用AES-CBC模式解密→去除填充并转为明文→输出解密结果,同时记录解密耗时与日志
1.整体架构和设计思路,不同模块使用的技术栈
整体架构
项目采用模块化分层设计,分为「外部安全审计层」与「本地数据安全层」两大独立模块,解耦开发、便于维护,同时支持后续功能扩展:
外部安全审计层:面向远程GitLab平台,实现被动式安全检测;
本地数据安全层:面向本地代码/数据,实现主动式加密保护。
2. “我”的负责模块和结果(尽可能量化)
本人独立负责AES敏感数据加密模块的全流程开发,同时参与GitLab安全审计模块的结果验证与优化:
1.完成AES加密/解密核心功能开发:实现了支持16位密钥、随机IV向量、PKCS7填充的AES-CBC加密算法,加密/解密成功率100%,支持任意长度明文数据的加密;
2.完成日志系统开发:实现了加密/解密全流程日志记录,包含数据长度、耗时、异常信息等,日志输出准确率100%;
3.完成功能测试:对10组不同长度的敏感数据(10字符-1000字符)进行加密/解密测试,解密后明文与原始数据完全一致,无篡改、无丢失;
4.
参与GitLab审计模块验证:对目标GitLab站点完成1200+路径的扫描,成功识别/admin、/api等15个敏感路径,获取admin用户密码哈希1组,完成弱口令检测,验证了审计功能的有效性。
3. “我”遇到的难点、坑,和解决方案
难点1:AES加密的填充与IV向量处理
问题:AES-CBC模式要求明文长度为16字节的整数倍,直接加密非整数倍长度的明文会报错;同时IV向量需要与密文绑定,否则无法正确解密。
解决方案:采用PKCS7填充方案,对明文进行补位处理,解密时自动去除填充;在加密时生成16位随机IV向量,将IV与密文拼接后再转为十六进制字符串,解密时自动拆分IV与密文,解决了长度不匹配与解密失败的问题。
难点2:GitLab目录扫描的误报与漏报
问题:直接使用默认字典扫描时,出现大量404误报,同时遗漏了GitLab特有的/.well-known、/projects等敏感路径。
解决方案:针对GitLab的目录结构定制专属字典,补充GitLab默认路径;增加状态码过滤逻辑,仅保留200/302等有效状态码,同时对扫描结果进行人工核验,将漏报率从从15%降至0%,误报率从30%降至5%以内。
难点3:加密/解密的性能优化
问题:对大体积数据(10000+字符)加密时,耗时较长,影响使用体验。
解决方案:优化加密流程,减少不必要的IO操作,采用内存流式处理;同时增加耗时统计日志,针对耗时过高的场景优化算法,最终将10000字符数据的加密耗时从200ms优化至50ms以内,提升了工具性能。