发布于 2014-09-25 06:57:32 | 404 次阅读 | 评论: 1 | 来源: 网友投递
GitLab项目管理和代码托管平台
GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
今天 US-CERT 公布了一个严重的 Bash 安全漏洞 (CVE-2014-6271) ,该漏洞同时也影响 OpenSSH 守护进程。而 Gitlab 服务器默认的 git 账号就是使用 Bash 用来执行远程的代码。攻击者只要有 SSH key 就可以利用这个漏洞在 Gitlab 服务器执行任意代码。
检测服务器是否存在这个漏洞的方法:
ssh git@gitlab.example.com '() { ignored; }; /usr/bin/id'
如果输出下面内容表示服务器存在此漏洞:
uid=1001(git) gid=1001(git) groups=1001(git)
如果你看到的是 Not allowed command
说明不存在此漏洞。
解决办法是升级 Bash,请参考这篇文章。
解决完请再通过上述代码测试是否存在漏洞。
你也可以将 shell 改为 csh,安装:
sudo apt-get install csh
如果你正在使用 omnibus-gitlab, 只需要将下面一行代码添加到 /etc/gitlab/gitlab.rb
文件然后运行 sudo gitlab-ctl reconfigure
即可:
user['shell'] = '/bin/csh'
如果你是通过源码方式安装,可使用如下命令来更改 shell:
sudo chsh -s /bin/csh git
再次测试看看漏洞是否解决。
如果因为某些原因导致上面的方法你都不能使用,你可以禁用 git 用户通过 SSH 连接服务器,只需要在 /etc/ssh/sshd_config 增加 DenyUsers git,然后重启 SSH 服务即可,这样会导致无法通过 SSH 方式 Push 代码。