News for hackers. Stuff that matters.
Re:Git security vulnerability announced by ghewgill on Tuesday April 12, 2022 @10:49PM (#31010682)
The key is the "Git-enabled `PS1`". PS1 is an environment variable recognised by common shell programs (such as bash) that configures the shell prompt. Git often installs its own glue into the prompt that ends up running a Git executable to discover such things as the current branch name and how many changed files. The vulnerability is that it's possible to add malicious things to .git/config that the git executable will pick up and call/run, even on simple operations like displaying the prompt.
Re:Git security vulnerability announced by isatty on Tuesday April 12, 2022 @11:27PM (#31010904)
What do you mean by “git often installs”. Git does not install anything. Developers configure their PS1 or install something that does.
Re:Git security vulnerability announced by gruez on Tuesday April 12, 2022 @11:38PM (#31010962)
on windows the default git package (ie. git bash) installs a bash terminal that has the git PS1 enabled.
Re:Git security vulnerability announced by chrisseaton on Wednesday April 13, 2022 @05:46AM (#31012770)
> Git does not install anything.

It's literally a Git installer.

Re:Git security vulnerability announced by edgyquant on Tuesday April 12, 2022 @11:51PM (#31011040)
The default shell on Mac and a lot of Linux distros do this installation, as well as git for windows.
Re:Git security vulnerability announced by asvitkine on Wednesday April 13, 2022 @12:32AM (#31011212)
Can you explain? A shell isn't supposed to be installing things on it's own... (Assuming you're talking about zsh or bash when you say shell.)
Re:Git security vulnerability announced by ratcline on Wednesday April 13, 2022 @04:04AM (#31012227)
It's not doing it on it's own, I believe what they're referring to is a a pre-configured distribution of a shell packaged with some distributions of Git, for some OSes.
Re:Git security vulnerability announced by jyrkesh on Wednesday April 13, 2022 @03:44AM (#31012129)
There's a lot of different ways to install Git on a lot of different OSes, and some of them put helper shell scripts down by default.
Re:Git security vulnerability announced by Sharparam on Wednesday April 13, 2022 @05:02AM (#31012524)
That isn't Git installing things though, that is third-party Git distributions bundling things along with Git.
Re:Git security vulnerability announced by jyrkesh on Wednesday April 13, 2022 @08:31PM (#31022034)
I'm aware, which is why I phrased it like I did. A lot of folks don't know or understand the distinction when they're installing Git (or installing something else that happens to bring Git with it).

The overarching point is that the shell itself is not installing anything at shell runtime. E.g. it's the Git Bash installer, not opening `bash`.

Re:Git security vulnerability announced by loa_in_ on Wednesday April 13, 2022 @12:35AM (#31011223)
Yeah, even zsh doesn't do this by default
Re:Git security vulnerability announced by everybodyknows on Wednesday April 13, 2022 @01:15AM (#31011422)
Can you say what Linux distro does this? Seems like very poor taste for a command shell to be assuming one particular SCM.
Re:Git security vulnerability announced by berkes on Wednesday April 13, 2022 @02:41AM (#31011843)
On Ubuntu, and I presume therefore many debian derivatives and debian itself, `apt get git` will install a file called `/usr/lib/git-core/git-sh-prompt` (dpkg -S /usr/lib/git-core/git-sh-prompt).

This script allows you to see repository status in your prompt. It comes with 5 utility functions that AFAIKS are usable in all common shells:

    __git_ps1_show_upstream ()
    __git_ps1_colorize_gitstring ()
    __git_eread ()
    __git_sequencer_status ()
    __git_ps1 () 
On Ubuntu those aren't installed into bash by default, but you need to add it yourself to your ~/.bashrc (or zsh or whatever, but those aren't the default in Ubuntu). The mechanisms aren't in place for a package to inject itself into your prompt, but it isn't unthinkable (though maybe unwanted) to have that. Similar to how tab-complete for bash is handled:

The `git` package installs a file `/usr/share/bash-completion/completions/git` which is picked up by bash, on Ubuntu, as a pluggable way to extend autocomplete on bash. Many packages do this, on my machine there's 960 files in there (ls -1 /usr/share/bash-completion/completions/ | wc -l).¹ It would be trivial to have a similar mechanism for `bash_rc.d` which allows for a pluggable system to extend and modify your bash. Again, I presume this to be unwanted. I would oppose it.

¹ This is why I was surprised to learn that people like zsh for the reason that it offers tab-completion: I always presumed bash did that out of the box for any installed package already. Turns out it is Ubuntu (or better: Debian) doing this for me.

Re:Git security vulnerability announced by nybble41 on Wednesday April 13, 2022 @02:14PM (#31018175)
> It would be trivial to have a similar mechanism for `bash_rc.d` which allows for a pluggable system to extend and modify your bash.

There is /etc/profile.d/ which serves much the same purpose for login shells, though PS1 is normally a non-exported shell variable so it wouldn't be inherited. You can configure most other aspects of the shell this way, however. And there is also /etc/bash.bashrc which is read before ~/.bashrc, though it doesn't provide a convenient directory for drop-in scripts by default the way /etc/profile does. It would be trivial to add that if desired. (All based on Debian; YMMV.)

Re:Git security vulnerability announced by leni536 on Wednesday April 13, 2022 @03:36AM (#31012095)
This feels like tab completion is a more serious attack vector then?
Re:Git security vulnerability announced by berkes on Wednesday April 13, 2022 @09:10AM (#31014178)
Anything installed through `apt` could be an attack vector, but that is silly, really.

If we start treating "apt get will install software that can change my system" as a security issue, we should stop using all electronic devises right now.

And yea: I know, we should have sandboxing, isolation, chroot and whatnot. And we are heading there. Yet in 2022, the vast majority of computers, servers and such are installed using package managers which install packages that have access to all the system. If you count mobile devises amongst "computers" then I guess a majority (Android) does have sandboxing in packages, which solves this particular issue.

Re:Git security vulnerability announced by dahfizz on Wednesday April 13, 2022 @08:17AM (#31013741)
You need to be root to add a file to the basl completions directory, so not really.
Re:Git security vulnerability announced by Fnoord on Wednesday April 13, 2022 @03:45PM (#31019327)
There is no the bash completion directory; there is a default one which happens to be system wide and only root writable (as should be the case in a combination of such circumstances).

Fish allows for custom ones in ~/.config/fish and there is zero reason you cannot install custom ones in ~/.bashrc or user writable (on macOS) /usr/local

Re:Git security vulnerability announced by dotancohen on Wednesday April 13, 2022 @02:13AM (#31011704)
Command shells assume a lot of things, such as your preferred text editor, locale, input and output devices, etc. Most of these things can be configured, but the default install makes assumptions based on common configurations.
Re:Git security vulnerability announced by fragmede on Wednesday April 13, 2022 @02:58AM (#31011906)
The shell doesn't assume a particular one, but if it's in a directory where a supported one is present, then it enables those extras.
Re:Git security vulnerability announced by eminence32 on Tuesday April 12, 2022 @11:52PM (#31011047)
Yeah, I'm familiar with PS1, but I was a bit surprised to learn that simple things that a PS1 script might do (git status, perhaps) are attack vectors. It seems that one big concern is the core.fsmonitor option (which I just learned about now). From the git-config man page:

> If set, the value of this variable is used as a command which will identify all files that may have changed since the requested date/time.

Re:Git security vulnerability announced by gumby on Wednesday April 13, 2022 @03:05AM (#31011940)
> …PS1 script…

That’s where you should have been concerned. Just typing a bare return will run some arbitrary code, as you, wherever you might be in the filesystem. If all of that isn’t under your control, someone can do anything to you.

Re:Git security vulnerability announced by jcranberry on Wednesday April 13, 2022 @06:47AM (#31013122)
Damn. So the script I use to put the branch name in my prompt is bad? Could I solve this by making .git/config readonly for non sudo?
Re:Git security vulnerability announced by WorldMaker on Wednesday April 13, 2022 @03:04PM (#31018822)
The concern here is more on `sudo vi /.git/config` than `sudo vi ~/.git/config`. Someone adding a "root" git config that you don't expect/intend to exist.

If you think things are locked down strongly enough with sudo and never install anything that might add root files you don't expect you are most likely safe.

This release also adds an environment variable you can set that makes certain that git has a "ceiling" that it never crosses when checking for .git/config files. The idea being that you'd never want git to look above `/user/*/` for instance, as you'd never expect to have a "machine-wide" git config.

Re:Git security vulnerability announced by calvinmorrison on Tuesday April 12, 2022 @11:04PM (#31010768)
in other news, access to a users account gives them access to a users account
Re:Git security vulnerability announced by tedunangst on Tuesday April 12, 2022 @11:13PM (#31010822)
In earlier news, it's unexpected that "cd directory" will give the directory owner access to your account.
Re:Git security vulnerability announced by dhzhzjsbevs on Tuesday April 12, 2022 @11:19PM (#31010854)
Tbh I thought this was pretty obvious.

Git hooks have always been sketchy as hell.

Can't stand the Mac specific shit my co-workers keep dumping in there.

Re:Git security vulnerability announced by hda2 on Tuesday April 12, 2022 @11:28PM (#31010909)
Wait, I thought git hooks aren't pulled from remote.

Wouldn't untrusted git hooks mean that git verify-* are useless since you're already running untrusted code?

Re:Git security vulnerability announced by Groxx on Wednesday April 13, 2022 @03:02AM (#31011927)
Just to react to:

>Wait, I thought git hooks aren't pulled from remote.

You are correct. They are not. Other tools may auto-install them (I hate it), but git does not ever.

Re:Git security vulnerability announced by edgyquant on Tuesday April 12, 2022 @11:52PM (#31011048)
On my current app we use husky which installs hooks when you do a yarn install
Re:Git security vulnerability announced by eru on Wednesday April 13, 2022 @12:01AM (#31011100)
You are in luck, it seems: https://blog.typicode.com/husky-git-hooks-autoinstall/

(Though not completely sure.)

Re:Git security vulnerability announced by hsbauauvhabzb on Wednesday April 13, 2022 @01:39AM (#31011536)
This is really dismissive. Unexpected execution is not a users fault, and can happen for a variety of reasons (you telling me you’ve never unzipped a full git path someone sent you?)
Re:Git security vulnerability announced by kazinator on Thursday April 14, 2022 @02:51AM (#31024067)
Hi!

I can cheerfully confirm that I've absolutely never:

- received a git repo as an archive from someone, and then

- changed to root with "su" before unpacking it somewhere, such that

- the chosen location was above the home directory layer of a multi-user system.

- in such a way that one of the directories of the /path/to/home path has a .git/ subdirectory as a direct child, and not as an unpacked-tarball/.git grandchild which would not be accidentally found by git. I.e. that one of these directories exists, which might be found by someone running "git" in their home:

  /.git
  /path/.git
  /path/to/.git
  /path/to/home/.git
rather than the more likely:

  /foo-project-123/.git
  /path/foo-project-123/.git
  /path/to/foo-project-123/.git
  /path/to/home/foo-project-123/.git
which will not be found by someone running "git" in their home directory.

If I did such a thing, I'd care more about what happens when I happen to step on one of the malicious hooks in that repo as root, and less about what happens if users step on it.

Re:Git security vulnerability announced by hsbauauvhabzb on Thursday April 14, 2022 @06:42AM (#31025151)
Good for you. You are not everyone.
Re:Git security vulnerability announced by kazinator on Thursday April 14, 2022 @01:59PM (#31030710)
There are far more likely accidents that the superuser can perpetrate, that we do not compensate for with silly logic in applications.

Superuser could download some malware and put it into the system PATH. OK, so let's not execute anything in the PATH, unless it is owned by us.

/bin/ls? Not owned by me, don't trust it.

Re:Git security vulnerability announced by hsbauauvhabzb on Thursday April 14, 2022 @04:39PM (#31032971)
Okay.
Re:Git security vulnerability announced by calvinmorrison on Wednesday April 13, 2022 @12:28PM (#31016691)
Because linux has failed almost entirely to meet user level threats. Unlike android - which has per app permissions file permissions, linux is not there yet.

I know a lot of people are interested in better incapsulation for specific programs, and I know there's a lot of work being done in the area, but it's nowhere near as effective, in my opinion, as android and other systems.

linux follows the unix philosophy on this sort of. OK, you're a user, with some shell script, maybe git, maybe bash and it's PS1, I don't care, all I see as a kernel is that, you have permissions to edit this, upload this, send a packet, whatever, have fun!

From that perspective, nothing is wrong. That was my point. You could download s script that does 'rm / -Rf' and there's no security issue. User are given access to do as they please with files.

The issue is users can no longer reasonably trust the software on their system, from home-dialing marketing information and tracking, to having all sorts security issues in their virtual machines and sandboxes, running random code from websites constantly, we need a better way to encapsulate per file, per folder, per camera, per whatever, permissions, implemented at a system level.

Re:Git security vulnerability announced by hsbauauvhabzb on Wednesday April 13, 2022 @04:11PM (#31019666)
You can download a directory containing a script, cd into that repo and less the file. ‘cd foo’ should never trigger arbitrary command execution. Ever.

Containerisation wouldn’t solve this, bash or similar would almost always be fun with near limitless boundaries.

Re:Git security vulnerability announced by reegnz on Wednesday April 13, 2022 @06:23PM (#31021038)
I beg to disagree. I like my https://direnv.net/

As long as it's strictly opt-in, it's fine. But it needs to be opt-in to be secure.

Re:Git security vulnerability announced by seba_dos1 on Wednesday April 13, 2022 @05:09AM (#31012565)
No? Why would someone zip me a git repo? You can clone/push/pull directly between machines.
Re:Git security vulnerability announced by nybble41 on Wednesday April 13, 2022 @02:17PM (#31018219)
The source machine may not be set up as a server, or you may not have an account there. Sending a .zip file could be simpler than pushing the repo to a third system the receiver does have access to.
Re:Git security vulnerability announced by seba_dos1 on Wednesday April 13, 2022 @08:07PM (#31021893)
Sure, mailing binaries can also be the right thing sometimes, but just as with git repos, you definitely shouldn't be taking them from untrusted sources.

(and I bet that many people don't even realize how easy using `git push` to mirror a repo actually is, since git is very commonly used in a centralized fashion)

Re:Git security vulnerability announced by hsbauauvhabzb on Wednesday April 13, 2022 @05:02PM (#31020220)
You’ve never unzipped a repo? That’s something I regularly do - clients can’t get me access to their scm, and it’s not worth the effort.
Re:Git security vulnerability announced by seba_dos1 on Wednesday April 13, 2022 @08:00PM (#31021838)
I don't think I ever did. I usually have an opposite problem and sometimes accidentally zip/tar a repo when it shouldn't be included (at least there's `--exclude-vcs`).

In any case, this doesn't sound like a good idea at all, as git hooks exist.

Re:Git security vulnerability announced by hsbauauvhabzb on Thursday April 14, 2022 @01:32AM (#31023718)
You’re right but also I’m mad that you’re right. I need to check what hook functions there are, but I knew about hooks and still overlooked them, which to me thinks that they’re non obvious. Maybe git should prompt you on first run, which is either whitelisted on your host or signed by your git keys or similar