mirror of
https://github.com/nspcc-dev/neofs-node.git
synced 2026-03-01 04:29:10 +00:00
Private object is accessible through REST geteway when must not be #1199
Labels
No labels
I1
I2
I3
I4
S0
S1
S2
S3
S4
U0
U1
U2
U3
U4
blocked
bug
config
dependencies
discussion
documentation
enhancement
enhancement
epic
feature
go
good first issue
help wanted
neofs-adm
neofs-cli
neofs-cli
neofs-cli
neofs-ir
neofs-lens
neofs-storage
neofs-storage
performance
question
security
task
test
windows
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nspcc-dev/neofs-node#1199
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @cthulhu-rider on GitHub (Mar 28, 2024).
i was playing with NeoFS DevEnv and various access settings. I encountered situtation when private object is expectedly inacessible to anonymous subject incl. REST gateway, but can be downloaded throught REST gateway itself
Expected Behavior
Current Behavior
Possible Solution
1st i thought that maybe REST communicates with node that cached allowed access settings that hadnt expired yet. But then I polled all the storage nodes via CLI, and they all denied. And REST is still a success
seems like REST unintentionally found security loophole
Steps to Reproduce (for bugs)
Helper Go test
Regression
idk yet
Your Environment
@roman-khimov commented on GitHub (Mar 28, 2024):
It works as expected in mainnet (0.40.1): https://rest.fs.neo.org/v1/objects/5fNrip1bbWxtvKTwUXGrVcPBVXB3FQZ9T6jYihzZi2q2/EW2fuWx6eSgNiXcGSyrTLmTccojyCN439HviJh3B2a4X
Either it's a regression or something more specific.
@cthulhu-rider commented on GitHub (Mar 28, 2024):
node version is the same, which REST is served in the mainnet?
@roman-khimov commented on GitHub (Mar 28, 2024):
The latest one, 0.8.3.
@cthulhu-rider commented on GitHub (Mar 28, 2024):
if in step 4. add
deny head othersand/ordeny getrange others- object becomes unavailableseems like REST is smart enough to make do with HEAD and GETRANGE even w/o GET
@cthulhu-rider commented on GitHub (Mar 28, 2024):
this turned out to be expected behavior for
/objects/<cid>/<oid>cuz it callsHEADandGETRANGEseparately. Instead,/get/<cid>/<oid>callsGET, which fails as expected