News for hackers. Stuff that matters.
Re:Getting any Facebook user's friend list and partial payme... by tannerc on Friday March 09, 2018 @03:02PM (#16554515)
Important last-line: "It took Facebook's team 4 hours and 13 minutes to fix the issue - the fastest report-to-fix for me."
Re:Getting any Facebook user's friend list and partial payme... by bostik on Saturday March 10, 2018 @02:57AM (#16557629)
There's an important unstated property too, btw. OP reported an information disclosure bug in payment handling code. A bug in the core logic of what literally brings money in.

That kind of bug report is bound to get a very quick triage, followed by a very quick escalation.

But yes, even with that in mind: a 4-hour turnaround is damn impressive.

Re:Getting any Facebook user's friend list and partial payme... by jomkr on Sunday March 11, 2018 @02:52PM (#16564226)
I work at one of the other Big4 and to be honest it's not that impressive. This kind of report would be a high severity ticket, the person on-call for the given team would get paged, and wouldn't stop working/escalating until it got fixed.

Obviously not all companies behave this way, but they should!

Re:Getting any Facebook user's friend list and partial payme... by pbalau on Monday March 12, 2018 @11:58AM (#16568984)
Then you need to push the new software to prod. 4h is impressive.
Re:Getting any Facebook user's friend list and partial payme... by cheeze on Friday March 09, 2018 @03:51PM (#16554918)
Wow. That is extremely impressive that such a large company is able to get a fix out that quickly.
Re:Getting any Facebook user's friend list and partial payme... by wolco on Friday March 09, 2018 @04:28PM (#16555208)
The fix is probably 10 minutes but the deployment process, intake process and notification process took 3 1/2 hours
Re:Getting any Facebook user's friend list and partial payme... by neotek on Friday March 09, 2018 @10:35PM (#16556949)
Is there an article or blog post somewhere about what Facebook's deployment process is like? It must be a massive operation.
Re:Getting any Facebook user's friend list and partial payme... by chromelyke on Saturday March 10, 2018 @12:41AM (#16557282)
Re:Getting any Facebook user's friend list and partial payme... by orastor on Saturday March 10, 2018 @12:54AM (#16557312)
Re:Getting any Facebook user's friend list and partial payme... by styfle on Sunday March 11, 2018 @10:22AM (#16563104)
What about code review process? Surely someone else verified the fix before deployment.
Re:Getting any Facebook user's friend list and partial payme... by ampersandy on Monday March 12, 2018 @02:39AM (#16566553)
FB uses Phabricator, which was spun out into an open-source project:

https://www.phacility.com/phabricator/

Re:Getting any Facebook user's friend list and partial payme... by aje403 on Friday March 09, 2018 @03:55PM (#16554951)
If it took much longer than that for bugs like this, all of the HN doomsday posts about the Facebook mass exodus might actually come true
Re:Getting any Facebook user's friend list and partial payme... by stochastic_monk on Friday March 09, 2018 @04:35PM (#16555265)
I think people leaving facebook en masse would be a good thing (TM) for society, not a doomsday. Fewer echo chambers, less disinformation, and people forced to make effort to contact each other.
Re:Getting any Facebook user's friend list and partial payme... by clarkenheim on Friday March 09, 2018 @04:38PM (#16555280)
It will only be replaced with another echo chamber.
Re:Getting any Facebook user's friend list and partial payme... by lttlrck on Friday March 09, 2018 @05:01PM (#16555412)
Hopefully multiple smaller ones.
Re:Getting any Facebook user's friend list and partial payme... by murukesh_s on Friday March 09, 2018 @05:16PM (#16555495)
Already there - whatsapp, instagram oops...
Re:Getting any Facebook user's friend list and partial payme... by praneshp on Friday March 09, 2018 @06:32PM (#16556037)
Hacker news....
Re:Getting any Facebook user's friend list and partial payme... by FractalLP on Friday March 09, 2018 @10:50PM (#16557000)
Hacker News is at least somewhat informative in the tech sphere. It tends to favor more esoteric technology like Lisp in lieu of things like Java & JavaScript which is far more favored on Reddit/Programming. Politics are mostly left leaning mixed with some Libertarian views. There is a good splattering of non tech stuff as well (music, art, literature, linguistics...etc). I'd say it's a far cry from fake news and cat videos.
Re:Getting any Facebook user's friend list and partial payme... by IIAOPSW on Friday March 09, 2018 @11:59PM (#16557162)
Its cause of the people. The more popular something is the worse it gets until eventually its all cats and outrage-culture "fake news". The medium is irrelevant.

Media sucks because you* suck.

*The collective societal you, not the particular individual you.

Re:Getting any Facebook user's friend list and partial payme... by waterhouse on Saturday March 10, 2018 @12:55AM (#16557318)
I think some studies have shown that the same set of people (or, let's say, people randomly assigned to one group or the other) can have very different behavior depending on the situation they're in. It seems at least possible that a forum could maintain its rules and norms while people join... though received wisdom says that if too many join at once, then the norms can be broken.
Re:Getting any Facebook user's friend list and partial payme... by FractalLP on Saturday March 10, 2018 @10:00AM (#16558700)
Yea, but HackerNews is really only going to appeal to a select group of people. Computer illiterate folk aren't going to be talking about compilers, lisp, APL, Smalltalk, blockchain, or the other 1000 compsci things that come up on here daily.
Re:Getting any Facebook user's friend list and partial payme... by stochastic_monk on Friday March 09, 2018 @06:59PM (#16556154)
This effect is partially muted by the fact that one can only see the vote status of one’s own post. There is still a tendency toward conformity, but at least the suggestion to vote with other readers isn’t apparent like it is on many content aggregators/discussion media.
Re:Getting any Facebook user's friend list and partial payme... by UncleEntity on Sunday March 11, 2018 @11:37AM (#16563347)
Yeah but I can predict pretty accurately which of my posts will get downvoted and they all have the same thing in common; they challenge the left-leaning groupthink common here.

Some might claim they get downvoted because they are "low quality" to which I'd retort why spend a lot of time crafting a "quality" reply when you know it's going to be suppressed?

Re:Getting any Facebook user's friend list and partial payme... by mercer on Monday March 12, 2018 @03:04AM (#16566607)
While it might just be me, I find myself downvoting your comments purely because I find them low-quality noise (or worse) that I'd rather not see more of.

I even tagged you as 'shitty commenter', which I don't do this too often. But with some commenters I'm just amazed at how they can consistently keep this up without tiring of it.

Re:Getting any Facebook user's friend list and partial payme... by coolso on Saturday March 10, 2018 @01:36AM (#16557415)
Except downvoted posts here turn gray.
Re:Getting any Facebook user's friend list and partial payme... by hedora on Sunday March 11, 2018 @03:37PM (#16564404)
Which is why I make a point of logging in and upvoting the non-egregious ones.
Re:Getting any Facebook user's friend list and partial payme... by bittermang on Saturday March 10, 2018 @12:55AM (#16557320)
Oh, look at them rush to White Knight their own bubble. "Not OUR echo chamber, no! We're different, you see, because reasons."
Re:Getting any Facebook user's friend list and partial payme... by tomcooks on Saturday March 10, 2018 @03:34AM (#16557707)
Scuttlebutt, mastodon, Riot, gab, stack overflow, d.tube, the list goes on
Re:Getting any Facebook user's friend list and partial payme... by rimliu on Saturday March 10, 2018 @06:13AM (#16558051)
Some crtical thinking would be good for a society. Tools are just tools.
Re:Getting any Facebook user's friend list and partial payme... by r3bl on Friday March 09, 2018 @06:17PM (#16555928)
I've been following Josip's work on and off for years now (he's probably on every big white hat hall of fame there is), and I'm pretty sure he wouldn't go public even if it took them a month to fix this.

If he said in a public blog post that it took them a month to fix something so simple, I could see the shit storm aimed at Facebook on social networks (including here), but I highly doubt any user would be compromised.

Re:Getting any Facebook user's friend list and partial payme... by user5994461 on Friday March 09, 2018 @04:56PM (#16555380)
It's a trivial bug. If the parameter is invalid, return nothing, rather than return all the credit cards.

I'd be worried if any company is not able to understand the problem and publish a patch in a few hours.

Re:Getting any Facebook user's friend list and partial payme... by compiler-guy on Friday March 09, 2018 @05:35PM (#16555636)
The fix isn't the hard part. It's the deployment and validation that can take time.

Pretty impressive.

Re:Getting any Facebook user's friend list and partial payme... by sundvor on Friday March 09, 2018 @05:40PM (#16555667)
Yep, clearly shows the value of a properly configured CI/CD pipeline.
Re:Getting any Facebook user's friend list and partial payme... by ransom1538 on Friday March 09, 2018 @07:56PM (#16556450)
Yeah here it is:

git pull; sh tests; rsync /prod/ all@prod:/var/www/

^ That is copyrighted by the way. Ill take a consultant fee. I know - I know it should be thousands of lines of puppet, jenkins, hooks, Kubernetes, Salt, and 2 million lines of python and ELM all piped through Docker containers -- I am NOT an animal.

Re:Getting any Facebook user's friend list and partial payme... by xevb3k on Friday March 09, 2018 @08:25PM (#16556556)
Enterprise edition with test validiation and continuous deployment:

while true; do git pull; sh tests && rsync /prod/ all@prod:/var/www/;done

Re:Getting any Facebook user's friend list and partial payme... by hedora on Sunday March 11, 2018 @03:41PM (#16564411)
You forgot to rewrite the logic in xml, and then fetch it over the internet from unknown third parties by tunneling it through json, then http. Bonus points if the the whole thing is deployed via docker hub.
Re:Getting any Facebook user's friend list and partial payme... by pronoiac on Friday March 09, 2018 @08:25PM (#16556558)
!!!

those ... those semicolons should be &&

Re:Getting any Facebook user's friend list and partial payme... by hedora on Sunday March 11, 2018 @03:43PM (#16564422)
You need to invoke the script via ‘sh -ex’ for proper exception handling + debuggability.

Also, mktemp and shell exit traps are your friends.

Re:Getting any Facebook user's friend list and partial payme... by paulddraper on Sunday March 11, 2018 @02:07PM (#16564045)
Except that this is Facebook, so `sh tests` is going to take 900 cpu-hours
Re:Getting any Facebook user's friend list and partial payme... by davedx on Saturday March 10, 2018 @07:19AM (#16558195)
Git pull - you have a staging server!?
Re:Getting any Facebook user's friend list and partial payme... by bobbyi_settv on Friday March 09, 2018 @09:14PM (#16556715)
I'd more impressed in some other context since a willingness to skimp on validation and "red tape" is how a bug like this ends up in production in the first place.
Re:Getting any Facebook user's friend list and partial payme... by Pxtl on Friday March 09, 2018 @09:19PM (#16556731)
What validation? I'd assume for this one they'd take the "move fast and break things" approach.
Re:Getting any Facebook user's friend list and partial payme... by user5994461 on Friday March 09, 2018 @05:46PM (#16555712)
The deployment and the validation should be trivial if the fix is trivial.

The difficult part is having someone who reads the report and escalates it, preferably in a timely manner.

Re:Getting any Facebook user's friend list and partial payme... by compiler-guy on Friday March 09, 2018 @05:51PM (#16555743)
The world is littered with the smoking, segfaulted, hulks of programs that were quickly deployed after an obvious fix.
Re:Getting any Facebook user's friend list and partial payme... by IncRnd on Friday March 09, 2018 @08:54PM (#16556662)
> The deployment and the validation should be trivial if the fix is trivial.

Trivial. That's what Oculus said.

Re:Getting any Facebook user's friend list and partial payme... by mkagenius on Friday March 09, 2018 @06:32PM (#16556035)
> If the parameter is invalid, return nothing, rather than return all the credit cards

I don’t think that’s the bug here, bug here is the authorization check not being there.

That parameter is trivial to obtain using other ways even now.

Re:Getting any Facebook user's friend list and partial payme... by yashap on Friday March 09, 2018 @04:57PM (#16555389)
Agreed! Security bugs are going to happen in any sufficiently large piece of software (that wasn’t written by djb). The important thing is to work hard towards minimizing them, and fixing them quickly once found - seems to me Facebook does a good job on both of these points.
Re:Getting any Facebook user's friend list and partial payme... by chirau on Friday March 09, 2018 @07:17PM (#16556232)
Who is djb?
Re:Getting any Facebook user's friend list and partial payme... by grzm on Friday March 09, 2018 @07:19PM (#16556239)
Re:Getting any Facebook user's friend list and partial payme... by johnchristopher on Saturday March 10, 2018 @07:25AM (#16558209)
Thinking now about that line I heard from a consultant a month ago: "Facebook got 20 lawyer firms hired to check if the 30 lawyers firm they hired first did their job well regarding the GDPR".

Did they notify users whose data were compromised ?

Re:Getting any Facebook user's friend list and partial payme... by jpollock on Friday March 09, 2018 @03:12PM (#16554594)
That's because you should never have first 6 and last 4 in the same place at the same time, particularly to someone who is not the owner of the card!

That leaves only 6 digits to guess to obtain a valid card, and you're given the check digit to limit the search further.

Re:Getting any Facebook user's friend list and partial payme... by packetized on Friday March 09, 2018 @03:17PM (#16554629)
First six and last four are the limits for display set out by the PCI Security Standards Council. The things you should never store with the PAN are the PIN/PIN block or CVC/CVV.

https://www.pcisecuritystandards.org/pdfs/pci_fs_data_storag...

Re:Getting any Facebook user's friend list and partial payme... by kyrra on Friday March 09, 2018 @05:21PM (#16555529)
While it complies with PCI standards, knowing first6+last4, plus contact information, you can be much more successful at phishing against the target.

First6 will give you ability to know the issuing bank of the card (so an email can be crafted to look like those banks emails). Plus last4 tends to be used by banks as a "hey, we know who you are!" when they send emails.

Re:Getting any Facebook user's friend list and partial payme... by cjbos on Friday March 09, 2018 @10:31PM (#16556935)
You might need them to reverse or refund the transaction with some payment gateways. Or if you are going to settle the funds at a time after authorization when shipping
Re:Getting any Facebook user's friend list and partial payme... by kevindqc on Friday March 09, 2018 @05:25PM (#16555565)
How does that work? If you can't store the CVC/CVV, how come I don't have to re-enter it when I re-order form say Amazon or Foodora? Or maybe I do have to enter it? Don't remember :|
Re:Getting any Facebook user's friend list and partial payme... by joering2 on Friday March 09, 2018 @09:57PM (#16556844)
Most MSP (merchant service provider) gives you control over the details you personally want to capture to verify someone. The minimum and most insecure is simply approving card based on valid number! (Not even expiration date). Then you can enable EXP, CVV and AV (address verification). Fun tip about AV: your adres doesnt matter. There is so many spellings of "oak harbour drive apartment 2" that industry pretty much gave up on some smart AI knowing them all, it and only verifies the zip code (typical gas station card usage for credit cards: verification is your zip code)
Re:Getting any Facebook user's friend list and partial payme... by davidgh on Saturday March 10, 2018 @12:48AM (#16557298)
Address line 1 in AVS is still used, however, only the numeric portion of the address is checked. The AVS results will generally tell you the individual match results for the address line and the postal code, so you can have a full match or a partial match. Most merchants will allow you through with a partial match.
Re:Getting any Facebook user's friend list and partial payme... by ratsz on Friday March 09, 2018 @10:47PM (#16556986)
A secure token is provided by the credit card processor that the vendor can safely store and reuse after the first successful transaction.

https://en.wikipedia.org/wiki/Tokenization_(data_security)

Re:Getting any Facebook user's friend list and partial payme... by sib on Friday March 09, 2018 @06:24PM (#16555970)
They are registering the fact that you knew it and used it to ship to a specific address in a previous transaction in order to reduce fraud risk. They aren't submitting it with every transaction. (Assuming they are following the rules...)
Re:Getting any Facebook user's friend list and partial payme... by AnssiH on Saturday March 10, 2018 @02:16AM (#16557532)
Amazon, specifically, never asks for CVC/CVV in the first place.

It is not required for charging a card, it is for reducing fraud.

Re:Getting any Facebook user's friend list and partial payme... by asdfjklas on Friday March 09, 2018 @03:17PM (#16554631)
Neither first six nor last four are considered PCI sensitive data. Not saying they should be randomly displayed, but in the context of many fintech apps they will be displayed together.
Re:Getting any Facebook user's friend list and partial payme... by pinkythepig on Friday March 09, 2018 @04:37PM (#16555277)
First 6 is shared across the cards a particular bank issues. Its not a secret as you can google the first 6 to find the bank or even the reverse google the bank to see what BINs they use. Last 4 is intended to be human visible so people can identify the card in use. When you factor in the check digit ruling out 90% of the remaining combinations, there are still 10,000 valid cc combinations plus an expiration date you would have to guess just to get a single acct.
Re:Getting any Facebook user's friend list and partial payme... by jpollock on Friday March 09, 2018 @06:17PM (#16555929)
They were publishing the expiry date too.
Re:Getting any Facebook user's friend list and partial payme... by jpollock on Saturday March 10, 2018 @01:08PM (#16559471)
More details as an explanation.

Facebook was providing:

  Cardholder Name
  First 6
  Last 4
  Expiry Date
  Billing Address.
The only bits missing were CVV and the middle 6.

Yes, first 6 and last 4 are not considered sensitive for PCI compliance. However, like most security standards, the standard is a minimum, not what your target should be.

Given the ability for attackers to quickly guess CVV and the remaining digits[1], the attack becomes a numbers game. They don't care about _a_ card, they care about _any_ card.

This is why Visa and MasterCard are pushing to tokenize all cards - so the stored information is linked to the merchant storing it and can't be reused.

That's even before we take into account the account take over possibilities since those card details are used by other companies as verification for account recovery[2]. Yes, those vulnerabilities were closed, but that doesn't stop new companies from making the same mistakes.

Yes, it's impressive that they managed to prune the fields so quickly. Shows a very efficient escalation path!

[1] https://www.theregister.co.uk/2016/12/05/undetectable_sixsec...

[2] https://www.wired.com/2012/08/apple-amazon-mat-honan-hacking...

Re:Getting any Facebook user's friend list and partial payme... by philipodonnell on Friday March 09, 2018 @10:39PM (#16556964)
Random question I've never found a place to ask before. Is there a formal language or method for specifying information like this, where I could map out different pieces of data and reason about how the pieces of data flow through a system, to prove mathematically that two (or n) pieces of data are never available in the same place?
Re:Getting any Facebook user's friend list and partial payme... by nwatson on Saturday March 10, 2018 @06:13AM (#16558046)
You might model software data and operations in some formal system at various levels using a language like "coq" and develop some formal verification proofs. I've not read this book that apparently explores verifications like these: "Certified Programming with Dependent Types: ...".

I'm not sure what types of enterprises actually use formal verification since it's very costly. Writing software is much faster than verifying it. Embedded auto, aerospace, industrial applications, sure. Facebook? I doubt it.

Such methods could be useful, maybe coupled with fuzzing, for breaking software too. It might suggest avenues for exploit.

Systems like coq are used more naturally in math proofs, but even there it's very hard to apply.

Re:Getting any Facebook user's friend list and partial payme... by philipodonnell on Saturday March 10, 2018 @07:36PM (#16560962)
It came up for me when designing a custodial management system for cryptocurrencies, where you could design it in such a way that the different steps/sensitive data were divided among separate systems and communication channels. I wanted some way to divide up responsibilities for processing a transaction (initiation, audit, control, approval, transmission) and then prove that any single component could be 100% compromised without allowing further unauthorized transactions. Even introducing temporary transformations (encryption/hashing) and re-routing keys specifically to prevent collisions of that data.

I noticed how similar the thought process was to GDPR work I've been involved in, where, for example, we can keep track of Last name and Phone Number in our company, but they could never be at rest unencrypted and unhashed in the same system. Or First Name + Job Title + Location but only 2 of those three can co-exist. It seemed like the kind of thing that would have a formal way of expressing. Our GDPR consultants were unhelpful in that.

Re:Getting any Facebook user's friend list and partial payme... by tehlike on Friday March 09, 2018 @03:28PM (#16554711)
You should vs human nature. We introduce bugs. Please don't be cynical, and cheer this up.

Kudos to facebook team that they responded shortly, I cannot tell if it was work hours or not, but either way, this is very very short in the context of large corporations.

Re:Getting any Facebook user's friend list and partial payme... by asveikau on Friday March 09, 2018 @03:31PM (#16554732)
I don't read at all the cynicism you seem to read.

A: that was fast!

B: that's because it was very serious!

Where is the cynicism? Can it not be summarized as: they fixed a serious issue very quickly?

Re:Getting any Facebook user's friend list and partial payme... by tehlike on Friday March 09, 2018 @04:05PM (#16555034)
"That's because you should never have first 6 and last 4 in the same place at the same time, particularly to someone who is not the owner of the card!"

Sounded to me more like "of course they fixed it fast, this is a serious issue", and undermined the speed it get resolved. Probably my bad.

Re:Getting any Facebook user's friend list and partial payme... by tintor on Friday March 09, 2018 @04:02PM (#16555007)
".. Facebook's team .."

Most likely a single dedicated person at FB.

Re:Getting any Facebook user's friend list and partial payme... by gambiting on Friday March 09, 2018 @04:16PM (#16555121)
I guess it's cultural, but I have observed many times that especially in America, there is a lot of emphasis on individualism - the cult of the person and their own achievements is placed above all else.

Even if the fix was done by one "dedicated employee" , they still belong to a team of people working together. I feel like singling out one person like this is almost rude to the rest of the team.

Re:Getting any Facebook user's friend list and partial payme... by sigsegv0xb on Friday March 09, 2018 @04:17PM (#16555130)
Do you mean that FB only has one single dedicated person looking at Whitehat tickets or that a single developer made the fix?
Re:Getting any Facebook user's friend list and partial payme... by guessmyname on Friday March 09, 2018 @04:27PM (#16555207)
A single developer made the fix.
Re:Getting any Facebook user's friend list and partial payme... by ryanbrunner on Friday March 09, 2018 @04:37PM (#16555276)
And in all likelihood, someone else monitored the incoming reports, recognized that this was a high-priority issue, and fast-tracked it to the developer. On top of that, I don't know Facebook's process that well, but releasing something that quickly probably involved some coordination to get it out so fast. Maybe someone else verified it, maybe someone fast-tracked it through the approval / launch process, etc.

Even things like bugfixes are rarely entirely creditable to only developers.

Judging by the name of the endpoint, it probably wasn't a super-complicated fix anyway - just disable / blacklist the endpoint that was obviously a mistake / test.

Re:Getting any Facebook user's friend list and partial payme... by sneak on Friday March 09, 2018 @04:32PM (#16555238)
Who sometimes has a day off, or takes a vacation, or has an illness, so you’re looking at a minimum of 3 persons...
Re:Getting any Facebook user's friend list and partial payme... by zitterbewegung on Friday March 09, 2018 @04:28PM (#16555212)
They have a dedicated Bug report team that sifts through the nonsense so it can't just be one person..