[ 
https://issues.apache.org/jira/browse/HDDS-14802?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Abhishek Pal reassigned HDDS-14802:
-----------------------------------

    Assignee:     (was: Rakesh Radhakrishnan)

> Canonical path is not properly formed in S3
> -------------------------------------------
>
>                 Key: HDDS-14802
>                 URL: https://issues.apache.org/jira/browse/HDDS-14802
>             Project: Apache Ozone
>          Issue Type: Bug
>          Components: S3
>            Reporter: Abhishek Pal
>            Priority: Major
>
> Currently the canonical path generation is not being properly followed by 
> Ozone.
> AWS S3 specs required that 3 byte character starting with % should be encoded 
> as is.
> However we encode the % sign as well.
> Take the following example.
> If we create a file named "folder%2Ffile.txt" this gets encoded to 
> "folder%252Ffile.txt" where %25 is the encoding of "%" in the original file 
> name.
> We do not hit this bug directly as aws cli treats folder/file.txt and 
> folder%2Ffile.txt as separate entities due to the encoding of "%". However 
> the edge case can be triggered by a small script.
> {code:bash}
> EP='<enter endpoint for S3 gateway>'
> B='testbuck'
> # 1) Put only folder/file.txt
> echo 'sigv4-path-test' > /tmp/sigv4.txt
> aws s3api --endpoint-url "$EP" --no-verify-ssl \
>   put-object --bucket "$B" --key 'folder/file.txt' --body /tmp/sigv4.txt
> # 2) Generate valid presigned URL for folder/file.txt
> URL=$(aws s3 presign "s3://$B/folder/file.txt" \
>   --endpoint-url "$EP" --no-verify-ssl --expires-in 300)
> echo "GOOD URL: $URL"
> # 3) Call good URL (should be 200)
> curl -k -i "$URL" | sed -n '1,8p'
> # 4) Mutate ONLY the path: folder/file.txt -> folder%2Ffile.txt
> BAD_URL=$(printf '%s\n' "$URL" | sed 's#folder/file.txt#folder%2Ffile.txt#')
> echo "MUTATED URL: $BAD_URL"
> # 5) Call mutated URL
> curl -k -i "$BAD_URL" | sed -n '1,12p'
> {code}
> This code should actually produce a 403 SignatureError with the mutation done 
> after the pre-sign.
> However due to Ozone encoding the file differently we are able to access 
> "folder/file.txt" even when we cURL "folder%2Ffile.txt"



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to