It appears this issue was previously 
reported: https://github.com/golang/go/issues/53532

On Monday, May 13, 2024 at 1:03:22 PM UTC-4 Adam Kaplan wrote:

> I forgot to add one more detail - the go-toolset image defaults to running 
> as user "default" (UID 1001).
>
> Adding `USER root` right after the `FROM` declaration is another way to 
> work around the issue I described, but from a security perspective I would 
> advise against it.
>
> On Mon, May 13, 2024 at 12:24 PM Adam Kaplan <adam....@redhat.com> wrote:
>
>> Great suggestion Jason - adding `git status` took me in a very unexpected 
>> direction, and ultimately a solution.
>>
>> tl;dr if your build's base container image does not use root/uid 0, git 
>> commands won't work unless you add the `--chown=<uid>` flag to your `COPY` 
>> instruction. Go builds need this if you want `-buildvcs=auto|true` to 
>> succeed.
>>
>> When I changed my build command to `RUN git status && go build` in the 
>> Dockerfile, I got the following output:
>>
>> ```
>> $ podman build -t localhost/sclorg/hello-openshift:latest .
>> [1/2] STEP 1/3: FROM registry.redhat.io/ubi9/go-toolset:1.20.12 AS 
>> builder
>> [1/2] STEP 2/3: COPY . .
>> --> 10a13b463199
>> [1/2] STEP 3/3: RUN git status && go build -o /tmp/hello
>> fatal: detected dubious ownership in repository at '/opt/app-root/src'
>> To add an exception for this directory, call:
>>
>>         git config --global --add safe.directory /opt/app-root/src
>> Error: building at STEP "RUN git status && go build -o /tmp/hello": while 
>> running runtime: exit status 128
>> ```
>>
>> This was a new and different error message for me - but same exit code as 
>> before. A quick Google search brought me to CVE-2022-24765 [1], whose fix 
>> introduced this "dubious ownership" message/protection.
>>
>> I was finally able to piece everything together with a few more debug 
>> builds and internet searches:
>>
>> 1. On Fedora 39, podman runs in "rootless" mode. Files owned by me show 
>> up as owned by "root" in containers.
>> 2. For Linux containers, `COPY` commands in Dockerfiles copy files as 
>> UID/GID 0 unless the `--chown` flag is passed. [2].
>> 3. As part of the mitigation for CVE-2022-24765, git commands will 
>> succeed only if:
>>   a. The `.git` directory is owned by the same user executing the `.git` 
>> command OR
>>   b. The parent directory marked "safe" in the git configuration.
>>
>> Using `COPY --chown=default . .` instead of `COPY . .` works for the UBI 
>> go-toolset image referenced previously in this thread. Your results may 
>> vary using other golang "builder" images.
>>
>> [1] https://github.blog/2022-04-12-git-security-vulnerability-announced/
>> [2] https://docs.docker.com/reference/dockerfile/#copy---chown---chmod
>>
>>
>> On Sat, May 11, 2024 at 11:43 AM Jason E. Aten <j.e....@gmail.com> wrote:
>>
>>> > how can developers debug and find the root cause?
>>>
>>> If it was me, I would start by going into the container (whatever the 
>>> podman equivalent of docker exec -it containernumber bash) and try to run 
>>> 'git status' or 'git log' and see why the git query is giving an error.  
>>> You could also try strace to see what git command specifically is being 
>>> execed, then try to get that command working manually.
>>>
>>> -- 
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "golang-nuts" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/golang-nuts/LZbM2WlZoJM/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> golang-nuts...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/ca680397-1497-4b3a-83ce-301c936308c1n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/golang-nuts/ca680397-1497-4b3a-83ce-301c936308c1n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>>
>> -- 
>>
>> Adam Kaplan 
>>
>> He/Him
>>
>> Principal Software Engineer 
>>
>> Red Hat <https://www.redhat.com> 
>>
>> 100 E. Davie Street
>>
>> adam....@redhat.com    T: 1-919-754-4843     
>> <https://www.redhat.com> 
>>
>>
>
> -- 
>
> Adam Kaplan 
>
> He/Him
>
> Principal Software Engineer 
>
> Red Hat <https://www.redhat.com> 
>
> 100 E. Davie Street
>
> adam....@redhat.com    T: 1-919-754-4843     
> <https://www.redhat.com> 
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/golang-nuts/3dc73511-096a-4852-8b19-28c3ab29cc97n%40googlegroups.com.

Reply via email to