Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Re-sanitize cmd/serv.go git inputs #39

Open
kousu opened this issue Mar 3, 2023 · 0 comments
Open

Re-sanitize cmd/serv.go git inputs #39

kousu opened this issue Mar 3, 2023 · 0 comments

Comments

@kousu
Copy link
Member

kousu commented Mar 3, 2023

I just had a conflict while merging upstream with #1, and in fixing it I was able to shave off some code. But I did it by adding this:

https://github.com/neuropoly/gitea/blob/5e37296766b050f5d2b39732d4f43dd3cbe506ed/cmd/serv.go#L347

over this:

gitcmd = exec.CommandContext(ctx, gitBinVerb, repoPath)

This is because git-annex-shell takes a variable number of arguments, whereas all other remote git commands take just 1 (repoPath) ( except git-lfs-authenticate which takes 2, but that has a separate special case that doesn't need gitcmd.Run()).

So doing this has weakened the security: it now means a malicious user could try to run, git-receive-pack some/repo.git ../../ 'shellinjectionattempt. git should be smart enough to just die on that situation, but what if it doesn't?

We should add some careful bounds-checking to re-enable the previous guarantee.

@kousu kousu changed the title Sanitize cmd/serv.go git inputs Re-sanitize cmd/serv.go git inputs Mar 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant