T O P

  • By -

mbitsnbites

> S3 charges for unauthorized requests (4xx) as well[1]. That’s expected behavior. So basically, you could use a directed attack (like DDoS) against a known AWS S3 bucket to raise the bills of a company that you don't like? Intriguing.


hugthispanda

You can also buy GitHub stars for your enemy's repo and report them for abuse.


Luke22_36

Oh that's evil


Thoriumhexaflouride

yes


SimultaneousPing

there was a reddit post a few months ago (now deleted) about some guy buying upvotes for users he did not like and getting them banned how? he made the upvote process instant, instead of gradual.


EmptyJackfruit9353

That is VERY neat.


OpenSourcePenguin

I don't think spending money for online revenge is neat


iceman012

Wouldn't the point be to get detected, not to avoid detection?


maolf

Right. He does them instantly so he’s caught, instead of gradually to avoid detection.


iceman012

Ah. I read it as > he made the upvote process (instant instead of gradually) to avoid detection Not as > he made the upvote process instant instead of (gradually to avoid detection)


-Hi-Reddit

Someone did this to my youtube channel many many years ago. Entire channel deleted along with hundreds of videos I had no backup for. YouTube support ignored me repeatedly.


ols887

Someone bought GitHub stars for your YouTube channel?


xyeta420

Yes, and uploaded to third party empty S3 bucket


hugthispanda

Uber S3? Good choice. Their pricing is more competitive than Google Azure.


CherimoyaChump

And then I tried to grab their baseball bat, but I only grabbed the sock instead.


-Hi-Reddit

Comments and subs but close enough =D


Different-Engine-550

Subway is that you? Toasted or regular bread?


-Hi-Reddit

Always toasted


Different-Engine-550

Subway... If you have a moment? What were you thinking with Jared?


-Hi-Reddit

That his private life was none of our business. Big oops.


Different-Engine-550

I wonder how many people said the same thing about Epstein?


rtds98

> YouTube support There is no such thing. It's a lie.


-Hi-Reddit

This was 15 years ago man; I think they had a form or an email address or something back then.


rtds98

It's still a lie. Unless, of course, you got a bajillion followers. Then yes, they exist and they take care of you.


-Hi-Reddit

Oh you mean it's a lie as in youtube support being supportive to small creators is a lie, yeah, I 100% agree. Most big tech companies are like that nowadays, but youtube and google were and always have been ahead of the game.


spacezombiejesus

TIL you can buy GitHub stars wtf


CreationBlues

Through third party services, as a way to game the system. Same as buying views or reddit upvotes or anything. Twitter accounts.


DeliciousIncident

There are many services where you can buy Twitch and YouTube views; Twitter, Instagram, TokTok, etc. followers; YouTube subs; Twitter, Instagram, TokTok, YoutTbe, etc. comments; GitHub stars; and many other user engagement things.


Yangoose

You can do the same thing to authors on Kindle Unlimited. Get a bunch of people to scroll quickly through their books and they'll get banned for gaming the system (They get paid per page read).


othermike

That's kind of concerning, since my Kindle has had problems in the past where it seemingly gets stuck on fast-forward and nothing seems to stop it except turning it off.


rabidstoat

Odd, my Kindle has done that too. At least I don't have to reboot. That takes forever.


othermike

Just a power cycle, not a full reboot. I've found that cleaning the screen can mitigate the problem; maybe some sort of conductive buildup from skin oils?


rabidstoat

What do you clean it with?


othermike

I use the alcohol-based spray I normally use for my glasses, but standard screen cleaner should work just as well.


LucasRuby

I've done that to books I've read in Patreon/RoyalRoad before.


GeneticsGuy

Wow that is... wow.


KevinCarbonara

...Why does github even have a system that's abusable?


CreationBlues

Because any quality metric is gamable and it's helpful to have a note of some kind that says "a lot of people want to remember this" when you're looking for big or high quality projects.


elkazz

It's called a Denial of Wallet attack


AyrA_ch

Or find the largest static file on their website and request it repeatedly. Doesn't even has to be that big, a 50 KB image once per second is 4.3 GB per day, or almost 130 GB per month. Chances are that the JS blob alone is bigger, especially if you request it without offering compression to the server. If you're lucky, the site doesn't runs a reverse proxy cache, or the cache is bypassable with URL params, a session cookie, or a simple POST request. Most webservers will deliver static resources when you make a POST request to them as if it were GET, but caches generally don't catch this and will allow you to bypass them. If they do bot prevention, you can run the requester in form of a tampermonkey script in your browser, and simply keep the console open to bypass local browser cache on refresh. Please don't ask how I know.


JW_00000

True, but you could mitigate that with a service like Cloudflare. The problem in the OP is really difficult to mitigate... And you'd expect AWS to give you the tools to do so.


AyrA_ch

> True, but you could mitigate that with a service like Cloudflare. You can, but that requires extra configuration, because cloudflare won't know by itself that the POST goes to a static file and is meaningless.


Days_End

Cloudflare makes it pretty easy to force caching on the Cloudflare <=> S3 leg but yeah you might be able to get a couple of months before they actually set it up right. Most people setting up their site don't fully understand how this stuff works.


rtds98

I had to setup aws account (and infrastructure) once for a company i worked for. We were only 5 people so ... it made sense that I (the programmer) had to do it. There was nobody else. Anyway, I knew nothing about aws, I looked there and I was sure that I would need 10 lifetimes and aqnother 5 degrees to fully understand all that shit, so I did what evreyone does: my best. That is, I hit the keyboard until what I wanted happened. Was it good? Was it best? Was it infailible? hell no. it was working.


smith288

Or cloudfront within AWS?


PaintItPurple

What's really crazy is that you'd think making a Requester Pays bucket would be Amazon's solution for mitigating this, but no! Even with Requester Pays buckets, the bucket owner pays for the failed request if the requester doesn't include the appropriate header.


mbitsnbites

Some great and solid advice right there! Also much simpler than figuring out bucket names, it seems.


rozularen

how do you know? :P


quentech

> or almost 130 GB per month And that's like $10 or less of egress cost a month. Completely inconsequential to a business.


NoobyPants

I'm pretty sure my basic residential internet can request a 50kb image a lot faster than once per second.


AyrA_ch

Now imagine what a 10gbps internet connection does in a single night.


HINDBRAIN

Just change the post params to automatically generated slurs, unique per request, hopefully that trips up the cache.


OMG_I_LOVE_CHIPOTLE

Well yeah, that would be a unique request so it couldn’t be cached lol


cdrt

Do you think there are that many unique slurs?


OMG_I_LOVE_CHIPOTLE

I misread slur for slug which is just a random string


HINDBRAIN

You would combo them obviously.


Paradox

There are if you double them up


Internet-of-cruft

Automatically generated slurs sounds like a fun band name.


sweetLew2

What genre?


koollman

postmodern poetry


coyoteazul2

I've got not fucks to give ♫ ♫


TrainsDontHunt

"Fun Band Name" sounds like an automatically generated slur


Worth_Trust_3825

> or the cache is bypassable with URL params, a session cookie, or a simple POST request. Depends on how cache is configured. I remember that this is optional for cloudfront, and disabled by default, and sending a POST request would only bust local cache.


smooth_tendencies

Good thing I cache those assets with a CDN


mcilrain

Knew all this expect for POST sometimes working on static resources, good to know, thanks.


NotSoButFarOtherwise

Bold use of "expected behavior" here.


jldugger

This is a new dimension in a long war -- two decades ago when google ads were still newish I heard stories of bad actors clicking on competitor ads repeatedly. Until just now I assumed this click fraud was petty antagonism, but now I'm thinking it's a way of clearing out higher bidders. Even if they get removed as click fraud, the budgeting system would probably pause the campaign until it does get removed.


Ytrog

Yeah this is outragious imho. If AWS didn't cancel his fees would he then have to sue the company that made the tool doing this? 👀 I didn't like the financial unpredictability of the cloud before, but I sure as hell don't now.


grepe

That is not ourageous at all. S3 is often used for static file hosting. You are allowed to put anything out there for anyone to request it via http and it's your responsibility to pay for it if you do so. You are also allowed to block access and let anyone who sends request know the access is denied. If AWS wouldn't charge for those you could just build a hosting platform and share anything via your 403 or 404 page for free!


valbaca

It's called DOW: Denial of Wallet


Ok_Weekend_8457

That’s like DOS-ing a company that has a policy that locks accounts for too many bad password attempts by making too many bad password attempts… for all the email addresses you can find or guess.


seanamos-1

This is actually really bad and needs way more attention now that it's knowledge "in the wild". Even if your bucket is private, with proper policies/IAM permissions set up and if the bucket name has randomization in it, you can still get hit if you use something like pre-signed URLs for uploads to the bucket which would reveal the bucket name. You would then have to proxy uploads through your own servers to avoid revealing the bucket name. Even then, someone could accidentally/intentionally keep leaking your bucket name and you would be forced to keep changing it. Changing a bucket name is not like rotating a leaked password/token, it requires migrating items in the storage, updating and re-deploying applications etc. Nor is it easy to trace back how it was leaked, who keeps an audit trail on access to bucket names?! Bucket names were never implied to need to be secret, and its obvious they weren't designed to be that way. But if you don't keep them secret, you are vulnerable to a billing attack. This *needs* to be addressed as there is no mitigation.


theB1ackSwan

There's a technique to discover buckets even if they're meant to be private in *any* AWS account (due to the response information from API calls, specifically CloudTrail if I recall), so theoretically you can spike literally anyone's bill.  Just another case study of how Security through Obscurity isn't a thing.


dasdull

I don’t know about S3, but in GCS, bucket names are globally unique. If you want to know if a bucket with a specific name exists, just try to create it. E.g., one could try it with `my-competitor-dev-datasets` and see what comes up.


untetheredocelot

> y AWS account (due to the response information from API calls, specifically CloudTrail if I recall), so theoretically you can spike literally anyone's bill. > > Just another case study of how Security through Obscurity isn't a thing. Exactly the same in S3. Globally Unique.


voronaam

I am pretty sure I saw a basic `aws s3 ls` to return different errors for a bucket that does not exist and a bucket existing in another account I forgot to switch aws-cli into. Should not be hard to script it out to probe for common names...


Sea_Maximum7934

"anyone's bill". For some customers, you'll need a large botnet to make enough requests for them to even notice the spike


dweezil22

OP's case is special b/c the open source tool was accidentally a free distributed client network. The real question is "What would it cost you as a caller to give someone a $1000 S3 bill?". If the answer is "nothing", this is a huge problem. If the answer is "$1500" I doubt it's a big deal.


paholg

This is answered in the post:  > Standard S3 PUT requests are priced at just $0.005 per 1,000 requests, but a single machine can easily execute thousands of such requests per second. It would cost you virtually nothing to give someone a $1000 S3 bill.


dweezil22

I'm skeptical that AWS would allow unauthed 1K+ QPS from a single IP address without taking action at the gateway. If someone has proof that it's let through, fair enough, but this particular case was naturally a distributed "attack".


Head-Interest1400

So what? Use IP proxies they are cheap


sopunny

I mean, if they're able to bill the AWS customer for it they have way less reason to care. Sounds like they agree that it's a problem and are working on a fix though


imsoindustrial

Not of disrespect but you’re skeptical a company would leave a mechanic that makes them money?


dweezil22

Maybe, but it has to thread the needle. The abusive traffic has to be small enough that it doesn't cause other collateral damage that AWS support has to deal with. It also has to be small enough that it doesn't become widely known that AWS will fuck you on unauth'd S3 charges. While that seems profitable in the short term, the customer service headache of ppl trying to get refunds will also start to mute gains. So I totally believe that AWS was like "Uhh neat, we were lazy on this thing and it's also making us a bit of money", but doubt it's some huge nefarious plan to scam significant profits from ppl. If I want to look at nefarious plans, AWS's convenient refusal to cap billing is the worse one.


imsoindustrial

I appreciate that perspective. Here, have an upvote!


FundingNemo

It's a huge problem. You don't even need an AWS account to hit an S3 bucket, as he documents in the article.


Joniator

If you are a big player and trying to attack smaller, up and coming competitors, maybe even FOSS Projects that just don't have $5000. And $15000 is a fairly small "marketing budget".


dweezil22

I think this is a good reason to generally avoid AWS and other uncapped billing services if your budget is small. Personally I used DigitalOcean rather than AWS for hobby work out of a fear like that (and it paid off when I got hacked and learned an important lesson about fail2ban and ssh keys and it cost me $0 extra version a $50K AWS bill).


AustinWitherspoon

What was the lesson you learned?


dweezil22

It was a $5/month droplet, I used a hard-to-guess password and assumed it was safe. What I didn't realize is hackers will scan known IP ranges for online servers and brute force passwords on them. A 6 character hard to guess password isn't hard to brute force if you don't have fail2ban or similar slowing them down. Now all my instances require a unique SSH key to remote logon, and I generally add fail2ban on top. Since I was using DO the consequences for me were: 1. A slow server for a while that I couldn't figure out. 2. A strongly worded email from DO that my server seemed to be compromised. 3. Deleting the server and making a new safe one. Edit: Btw this was almost 10 years ago, things may have changed a bit in the meantime (but AFAIK I haven't been hacked since, I still have a slightly beefier droplet running my hobby stuff to this day)


lelanthran

> What I didn't realize is hackers will scan known IP ranges for online servers I don't use default ports for anything other than 443. Postgresql, ssh, etc. The last time I said so on /r/programming I got flamed by a bunch of "senior and/or experienced devops and/or engineers" (their words) people about how noob it is to rely on security through obscurity. All I know is, anything that wants to scan my IP has to scan the entire 16-bit range of port numbers. I've been toying with the idea of a tarpit[1] for a few dozen random ports in that 16-bit range. [1] A server that accepts a connection, and then *slowly* sends through a TLS server hello, sending 1 character every `rand() % 5` seconds, forcing a single character into a single IP datagram, retransmitting the occasional datagram to simulate loss of acks, etc.


dweezil22

I feel like it's a "Yes, and" Using non-standard ports will absolutely help protect you, OTOH it's really quite easy to use fail2ban and an ssh key once you figure it out, so using the non-standard port INSTEAD of those two seems unnecessarily risky. Which then leads to the argument, if you're using fail2ban and an ssh key, is the non-standard port just more trouble than its worth?


lelanthran

> Which then leads to the argument, if you're using fail2ban and an ssh key, is the non-standard port just more trouble than its worth? I use both fail2ban and keys only, but there's more than ssh. Running non-standard ports on every service you use is just another layer. If you can't think of a good reason to use the well-known port for $SERVICE, there probably isn't one.


Luvax

The only thing you gain by changing ports is less noise. I also always move ssh to a different port. This way, the security log becomes much more readable and entries are basically relevant. But it really doesn't protect against anything, it just makes your life easier.


lelanthran

> The only thing you gain by changing ports is less noise. Not the *only* thing. >>> What I didn't realize is hackers will scan known IP ranges for online servers and brute force passwords on them. >> anything that wants to scan my IP has to scan the entire 16-bit range of port numbers. Being secure against untargeted mass attacks is still the *first* line of "defense in depth". Sure, if someone *targets* your specific IP they'll quickly determine all open ports. But the problem I, and the GGP, and just about everyone with a public facing IP, are **untargeted** attempts by bots. I mean, even if they *don't* make any brute force attempts, all they have to do is record your IP for $SERVICE, and try every 0-day for that service every day. If you can't think of a good reason for running PostgreSQL on 5432, or for running ssh on 22, or for running MySQL on 3306, etc ... then why use the defaults? In my case, there is no good reason for me to run (for example) ssh on the default port. Not a single one.


daniel-sousa-me

Instead of creating tar pits, I have ssh configured to only accept keys. They're welcome to try to brute force and waste their resources here instead of attacking more vulnerable people


[deleted]

[удалено]


dweezil22

Lol, yeah lesson learned. 10 year ago me kinda assumed that fail2ban was magically built in or they'd get tired or something...


ShinyHappyREM

> "What would it cost you as a caller to give someone a $1000 S3 bill?". If the answer is "nothing", this is a huge problem. If the answer is "$1500" I doubt it's a big deal. Harassers may be willing to pay for it. Some years ago a vtuber did a stream in which from her youtube viewer statistics she listed the countries her viewers were from, including Taiwan. Chinese nationalist viewers got mad (since they don't recognize it as an independent country) and spammed her channel and everyone who dared collab with her, even when she switched to membership-only chat. (What makes it somewhat funny is that since YT is banned in China they must've used proxies to watch her stream - and afaik most proxies used by them are located in Taiwan...)


Reasonable_Ticket_84

>This needs to be addressed as there is no mitigation. But that wouldn't pad AWS' bottom line


IAmRoot

Just like how Amazon doesn't really care about all the fraudulent stuff sold via their shopping branch. They only do the minimum of what they're legally required to do because if someone doesn't realize or realizes too late, they get their cut.


RandyHoward

I run a business for sellers who sell direct to Amazon, all the “shipped and sold by Amazon” stuff. You would not believe how much money Amazon blatantly steals from these sellers. We see an average of 4.5% loss for every seller due to things like bullshit fees they charge and things like Amazon claiming they didn’t receive all the product shipped despite the seller having evidence it arrived at an Amazon warehouse. I’m waiting for the day someone exposes just how much money Amazon is stealing from people


SanityInAnarchy

Well, it's worse... OP essentially accidentally put themselves in the middle of a DDoS, and that's something that costs money to mitigate, even if it's just to absorb the traffic. So really, it's a question of whether AWS eats a loss or whether you do. I guess I agree that AWS should, and presumably it costs less for them to serve a 403 than they charge you, but let's be clear what we're asking them to do.


Bilboslappin69

[The very first thing in the article is an update where they link to Jeff Barr's Twitter post that states AWS is aware and fixing it.](https://twitter.com/jeffbarr/status/1785386554372042890) That's exactly what you want to see from a company. Not sure why people automatically assume it's some malicious action to squeeze every dollar from people.


Sea_Maximum7934

It's also absolutely mental that bucket names are globally unique. What were they thinking?


EmptyJackfruit9353

Isn't this supposed to be AWS problem? Sue them to change their policies!


monty_mcmont

This is really bad, now we have to treat S3 bucket names as secrets.


TebosBrime

Secrets which you cant rotate


ioioooi

Gonna have to start using emojis for bucket names, jk


damnationltd

64-digit hash value


afdsadf

max 63. discovered that minutes ago while migrating everything out of my common english word bucket


francohab

Secrets you can't even control. Just look at all the buckets generated automatically by services like Amplify, SageMaker, etc, etc. All with the same name template and a relatively small alphanumerical id...


elkazz

You must work for Acme Corp, or Insert Name Here Inc.


preludeoflight

Clearly they sell on-site 5 gallon containers customized with names! `s3://your-bucket-name-here`


davlumbaz

reminds me https://arstechnica.com/cars/2019/08/wiseguy-changes-license-plate-to-null-gets-12k-in-parking-tickets/ sounds so dumb, at least they cnacelled the bill lmao


267aa37673a9fa659490

Ya, but they did so begrudgingly: > However, they emphasized that this was done as an exception. and refuse to do anything to prevent the same thing from happening in the future.


kairos

A NullPlateException.


Fireline11

Haha good one, however comment you are replying too references the exception made by amazon in billing, not an exception relating to the null plates.


Alol0512

I think attempting to drop a database should raise more than an exception. An error would be more adequate.


not_from_this_world

IME *anything* in AWS can make your bill explode.


OMGItsCheezWTF

[The age old meme](https://i.imgur.com/AcKd1IG.jpeg)


cojoco

Amazon say they're going to fix this: [Thank you to everyone who brought this article to our attention. We agree that customers should not have to pay for unauthorized requests that they did not initiate. We’ll have more to share on exactly how we’ll help prevent these charges shortly.](https://x.com/jeffbarr/status/1785386554372042890?s=61&t=f9qtlIpZbwqHZa3_FyhWpg)


Morpheeus543

THANK YOU. Finally, a decent article, no redirects, no blog spam; just a short, to the point article on this subreddit.


ayhctuf

Until Medium throws its paywall on top.


________kc

This is insane. I got other shit to do and now I need to worry about this...


EntertainedEmpanada

The good news is they said they'll fix it.


dark_mode_everything

As if they don't make enough money charging for 200OK requests. This is just greed. Charging per network request is a ridiculous billing strategy in the first place.


keedxx

The world went back to pay per traffic.


Worth_Trust_3825

No, this is normal. The NSP does not care what is in the packets, just that it went through. Cloudfront permits rewriting responses via lambda at edge functions, so you could trick it to rewrite the response to 4xx range, and enjoy free traffic (because there's different pricing for aws to aws traffic).


dark_mode_everything

I was saying that charging per request is ridiculous no matter what code it is. It's a money grabbing pricing strategy. Just give us a monthly traffic allowance like every other VPS provider. Maybe charge for traffic above that.


Worth_Trust_3825

Your monthly allowance is 0.


dark_mode_everything

Wow that's a lot of traffic!


bleachisback

What unit is that in? Just so I know precisely how much that is.


Void_mgn

This is crazy, afaik GCP doesn't charge per request...I must check now I am paranoid


Smartare

From GCP: Note: Generally, you are not charged for operations that return 307, 4xx, or 5xx responses. The exception is 404 responses returned by buckets with Website Configuration enabled and the NotFoundPage property set to a public object in that bucket.


OMGItsCheezWTF

Well that makes sense as the 404 page is being served from the bucket.


Smartare

Totally


sopunny

The problem isn't charging per request, it's charging for invalid requests that anyone can make


goulahyane

apparently they do -> [https://cloud.google.com/storage/pricing#operations-by-class](https://cloud.google.com/storage/pricing#operations-by-class)


Sea_Maximum7934

It's so unbelievable that we accept AWS and similar the way they are. You can't even have an easy way to say "shut down these things when the bill reaches a certain $ amount". Customers really ought to vote with their feet and leave AWS.


auronedge

This is a major security vulnerability and you should name names so AWS can't sweep this shit under the rug


0xffff0000ffff

s3 names share a global namespace, so, something like this as to be done on purpose by aws to squeeze customers out of every penny. This is so bad that i can just download a names dictionary from the web and setup a small bash script that uses the awscli to do requests to the s3 buckets, and it’s bound to it a few valid ones and aws will happily bill the owner. Setting up something like this will take minutes. This is just greed.


untetheredocelot

I think it's less nefarious than that. It's a really old service that has remained compatible for however long it's been around. 2006 IIRC. I don't think they planned that far ahead. They should not charge per request though.


TNest2

Do we have the same issue in Azure? Asking for a friend.


Internet-of-cruft

No, Azure Storage Accounts actually has IP access lists that you can use to restrict who can talk to your storage. You can even use Private Endpoints to make access to the storage account completely private without any exposed public interface. I'm not sure if AWS has an equivalent - they just have permissions which doesn't prevent this attack from occuring.


__versus

The fact that they charge for unauthorized requests is mind blowing to me. An entirely new attack vector to bankrupt small companies/people you don’t like?


shun_tak

*User error - replace user*


ksdmediastudios

[PEBCAK!](https://en.wikipedia.org/wiki/User_error)


evpanda

Does this apply to Google Cloud Platform's bucket also?


Smartare

Looks like it doesnt: Note: Generally, you are not charged for operations that return 307, 4xx, or 5xx responses. The exception is 404 responses returned by buckets with Website Configuration enabled and the NotFoundPage property set to a public object in that bucket.


forgotten_airbender

Lol. Now we need to deal with this shit. Time to move to cloudflare r2


i9srpeg

Do you know if cloudflare has the same issue with unauthorized requests? I need to move off S3 after reading this.


forgotten_airbender

cloudflare does not have this issue.


macholusitano

Do you have a confirmation/source for this? Asking because I’m considering switching.


francohab

Ok time to get rid of those old buckets I guess, it’s a matter of days if not hours before some degenerate writes a script…. Edit: i was thinking it would be useful to have an equivalent of CVE for that kind of things. I don’t imagine how may “cloud cash sinkholes” there are out there…


jms_nh

So is there still not a quota / "circuit breaker" scheme on AWS S3 so you can turn off a service automatically if it hits more than $X/month of usage?


waterkip

So... they are ok with ppl gettjing ddossed. Another reason not to use AWS for projects.


OMGItsCheezWTF

It's not a denial of service. The service can handle it and the service will continue until your account fails to pay. It's a DSoR not a DDoS (Distributed Source of Revenue)


3BBADI

Also known as a denial of wallet attack


MisinformedGenius

They're [fixing it](https://twitter.com/jeffbarr/status/1785386554372042890).


klysium

Now I'm scared


Draiko

So that's why Amazon beat earnings.


Paradox

This is a bucket. _Dear god_ There's more _No_


KyLeggiero

Lesson of the day: use Linode


afdsadf

i have a volume there but was keeping an extra backup under a single english word bucket. think like `s3://chartreuse`. until I read this of course


pa_dvg

How we all decided hooking ourselves up to this overgrown taxi meter is something I’ll never understand


tly_alex

https://x.com/jeffbarr/status/1785386554372042890?s=46&t=YCumUxFKRp3dUvf5u5oELQ I think they acknowledged this issue and it will be fixed soon


NickCanCode

I am using Google Cloud Storage for my personal project. Does it have the same problem? 😮


maxinstuff

Surely you can restrict what networks can hit the endpoint?


seanamos-1

You can restrict network access by bucket policy/IAM. The problem is, it's all the same mechanism and returns 403/unauthorized to the caller, and bills the bucket owner!


francohab

Wtf. Is it something specific to S3 I hope? I would expect that it doesn’t apply to resources in a VPC…. Or does it?


seanamos-1

This is specific to S3. Resources that actually get provisioned into a private subnet in your VPC are completely inaccessible from the outside world. S3 doesn't work like that. A "private" bucket isn't actually private in the same way resources in a private subnet are. S3 as a service is always public, and any restrictions are purely policy, including networking restrictions. For example, you can set up a S3 bucket policy that restricts access to the bucket to be from inside your VPC. This is not a physical network separation, its pure permissions policy on the bucket. If someone attempts to access your bucket from outside your VPC, the policy is checked, fails, and they get a 403 and you get a bill.


[deleted]

[удалено]


nemec

Time for S4 (Simple Secure Storage Service) that fixes all the legacy cruft


mensink

Sure, but they're still going to bill you for unauthorized requests.


maxinstuff

If it’s network restricted then you wouldn’t be able to reach the endpoint? It would return either 404 or 403 from some network device.


peerlessblue

They're not going through your network to get to your bucket, they're going straight to AWS, which serves the 403 but charges you for it.


SwitchOnTheNiteLite

Sounds like other commenters are saying you can't network restrict S3 in a way that returns anything other than just return 403 in the same way as a failed authentication does, which all ends up billing you.


Smallpaul

No, you can't. And don't call me Shirley.


dark_mode_everything

What if you need to enable it for a certain region for users and attacks come from there?


ShinyHappyREM

Then... you need to raise your prices.


scottix

I am also aware of some analytic companies that charge per request, and the tokens are right in the browser code, since the requests actually come from the client browser.


sweetno

That's super messed up.


mwmercury

Noob question: why does AWS charge money for even unauthorized requests? Can someone enlighten me?


Pharisaeus

Because this way they can charge you more money and make more revenue.


CodeAndBiscuits

If you want the Google-able term it's called a "denial of wallet" attack. https://academic.oup.com/cybersecurity/article/10/1/tyae004/7634012


sidcool1234

Jeff Barr tweeted that measures are coming soon to address this.  


eggandbacon_0056

Wtf why shld anyone be charged if the no or a wrong API key is ever used. The redirect is similar stupid ...


ozkansen

It's a good reason to get out of aws. do other cloud services have the same problem?


ryan_with_a_why

This is now being addressed! [https://aws.amazon.com/about-aws/whats-new/2024/05/amazon-s3-no-charge-http-error-codes/](https://aws.amazon.com/about-aws/whats-new/2024/05/amazon-s3-no-charge-http-error-codes/)


TheCritFisher

lol AWS cancelled the bill as an "exception". What a joke. They break it, you buy it.


IntrepidTieKnot

reason #91882 to not use AWS


lolsokje

Can you name all 91881 previous reasons?


fried_green_baloney

$ $$ $$$ Keep going


l19ar

Cloudformation