7 ms·
A very valuable vulnerability
- lol768 10y ago> they merely need to find a merchant which uses Stripe for bitcoin payments [...] > or even better, set up to automatically refund bitcoin overpayments Any idea what proportion of merchants using Stripe's bitcoin handling actually do this automatic refunding? It's a very interesting vulnerability and I enjoyed reading the write-up and thought process, but I'm not sure how practical it is if it requires interaction from the merchant to perform the refund. I think an overpayment and refund request weeks after the initial payment (when coincidentally the BTC value has reduced) would definitely ring some alarm bells - hopefully with both the merchant and the team at Stripe. I guess you could spread out your overpayments amongst different merchants and try and limit the time between the initial purchase and the refund requests but the entire thing seems a bit convoluted to pull off. In any case, kudos to the author for the responsible disclosure and for Stripe for handling this professionally.
- cperciva 10y agoAny idea what proportion of merchants using Stripe's bitcoin handling actually do this automatic refunding? You only need to find one. Or sign up as a Stripe customer yourself -- they'd have a hard time proving that it was you who made the overpayment rather than one of your customers. I think an overpayment and refund request weeks after the initial payment (when coincidentally the BTC value has reduced) would definitely ring some alarm bells Maybe... but "oops I sent the coins to the wrong address" is a pretty plausible story. If there's one thing I've learned from accepting bitcoin payments at Tarsnap, it's that poor bitcoin client UIs seem to be responsible for a very large number of mistakes. (The most common one I see is failing to adjust for the miner fee.)
- elnado 10y agoI don't know the proportion, but coincidentally enough, I work at a startup that uses Stripe and we used to support bitcoin transactions (and thus refunds). I just asked a friend who's been here longer why we're not supporting bitcoins anymore and his response was "exchange rates were a huge pain" haha so yeah it is indeed convoluted to do refunds with bitcoins, but if we are to attempt to use them as regular currency for goods and services, we can't not support refunds. so we dropped bitcoin support altogether.
- cperciva 10y agoWas that bitcoin support manual, or through stripe? I would never want to deal with bitcoin payments manually due to the exchange rate issue; but taking them through stripe works wonderfully.
- elnado 10y agoHmm digging through our old code looks like we never tried to use Stripe, for reasons unknown to me (maybe their support/requirements were different back then, maybe it didn't work for our product, idk). But yeah, especially after reading this article, handling bitcoin payments and dealing with the exchange rate sounds unfavorable lol :) glad we're not doing that.
- cperciva 10y agoThat's my point - with stripe, you don't have to deal with the exchange rate. You say "I want $X" and magic happens. Stripe takes care of the messy details of fluctuating exchange rates.
- elnado 10y agoSo that's not entirely true depending on how you use the product. We were attempting to use Stripe for a contract-like setup, e.g. person A pays person B, but person B doesn't get paid until some event occurs, and we hold on to the funds until that happens since that expiration of that event isn't guaranteed to be under 10 min.
- deleted 10y ago[deleted]
- homero 10y agoStripe and Bitpay handle everything, there is no huge pain
- tedunangst 10y agoI wonder if there's still a small arbitrage window here. The ten minute lockin is essentially a short lived option. If you lockin a rate at $101 and the price drops to $100 over the next nine minutes, buy bitcoin and complete the transfer, then request refund. If the price goes up, let the option expire.
- cperciva 10y agoI'm guessing that Stripe (or coinbase) has figured out that the cost of the ten-minute option is far less than the 0.8% processing fee they charge.
- ikeboy 10y agoYou only pay the fee if you end up paying, which is exactly the times that you make a profit since the value went down (making the coins worth less, and so a higher guaranteed price is helpful to you). If the value goes up or stays the same (or drops by less than the fee) you don't do anything. You'd also need to be shorting bitcoin at the same time and covering the short at the same time as sending the transaction, but that's not hard. (Or already have the money in an account and buy it on demand, but that will add a delay) So you make money or don't do anything, stripe/coinbase is never paid for their risk.
- fatdog 10y agovolatility arbitrage exists in pretty much every currency, so this isn't a vulnerability, it's a FX trade.
- ikeboy 10y agoBut I suspect it takes less than 10 minutes to adjust, and nobody will give you a free ten minute option on the price.
- cperciva 10y agoHmm, good point. I suspect that they'd notice if you create lots of transactions and only complete a fraction of a percent of them.
- deleted 10y ago[deleted]
- nowarninglabel 10y agoGreat job of laying this out. It highlights how important the edge cases are. People wonder, why do we spend so much time on our financial code even though the base case is simple. It's that the amount of edge cases is insane.
- cperciva 10y agoIt's not just that there are a lot of edge cases; it's also that a single edge case could allow someone to extract an effectively unlimited amount of money from you.
- brhsiao 10y agoI wonder how many people were already exploiting this by stealing $50 a day or something. With bitcoin it'd be nearly impossible to arrest them, right? So an unethical person would have tremendous incentive to abuse it?
- problems 10y agoIt's perfectly possible to arrest them, it just may be harder to track them down... or easier, the blockchain does sometimes reveal a lot and unless the attacker is fairly clever they may easily compromise their identity (ie: depositing to an exchange account tied to their name and verified). If they're smart and ran the exploit via Tor -> VPN (as to not get caught by automatic Tor filters) and then took the coins through a few mixers and onto a russian exchange, they could then sweep them back into a wallet in near-complete safety. Laundering bitcoins is challenging and risky due to the nature of the ledger - all transactions since mining must be known for all time - if you were to look at something like Monero or ZCash, things get a lot easier and you get cryptographically unbreakable anonymity rather than socially and legally difficult-to-break complexity.
- deleted 10y ago[deleted]
- deleted 10y ago
- ChuckMcM 10y agoFrom the article ... "Isaac Asimov's remark that in science 'Eureka!' is less exciting than 'That's funny...' applies equally to security vulnerabilities." That should be on a poster in every security engineer's view. I cannot count the number of times a really big problem was uncovered by a very small, yet unexpected, anomaly. It was also the core of Cliff Stoll's quest to find the hacker who hit UC Berkeley. Bottom line, never let that sort of observation go until you fully understand why it happened.
- HillRat 10y agoMany years ago, that's how I found a vendor-managed (but not vendor-patched) system had been compromised; I went from "why the hell is that multi-pipe command segfaulting?"to "why the hell aren't the system binaries stripped?" to "how long has this thing been compromised?"
- shshhdhs 10y agoWhat is binary stripping?
- Buge 10y agoCompiled programs sometimes contain the names of the functions. To reduce binary size and/or discourage reverse engineering, the names can be stripped out.
- cperciva 10y agoNot just names of functions; also names of variables and potentially a great many other things. Stripping binaries generally refers to removing debugging information of all sorts.
- HillRat 10y agoExactly. In this case -- working from antique memory here -- Solaris binaries were normally stripped, while the compromised versions placed by the hacker weren't, which was an immediate red flag. The system was compromised as part of a very large-scale, probably North Korean, attack that exploited an OpenWindows buffer overflow bug that was fixed many patch-revs ago by the time I saw the system (and shouldn't have been exploitable over the Internet anyway, but the firewall was also not properly set up at the time of compromise). Drive-by hacking, in other words. Luckily their compromised binaries -- specifically a 'ps' that filtered out the hackers' background attack processes -- weren't particularly robust to arbitrary input.
- shanberry122 10y agoIts just really hard to get a genuine and trusted hacker but you are lucky if you get to contact jeffcancrush06@gmail.com which his services includes Hacking. Tracking. Legit credit card top up and credit score repair Keylooger installation Spying. Cloning. Retrieving of deleted text, pictures and videos. Upgrading results. Adding your name to guest invitation list. Provision of information and evidence. Can help to prevent you from being hacked or tracked. He can also teach hacking for an affordable price. You should contact jeffcancrush06@gmail.com and thank me later.