← All posts

Meta's GitHub Breach Started With a Stolen Login. The Real Problem Was a Policy.

Meta has one of the best-funded security organizations on earth. This week it told about 1,500 people, mostly its own U.S. employees, that their personal information was caught up in a breach. The company says an outside group used an employee's stolen credentials to get into some of its GitHub repositories.

Meta says it was not a flaw in a product, and its internal systems were not breached. That framing is worth taking seriously. It is also exactly why the story matters to your board.

What Meta has said

Meta began notifying affected people on Tuesday, October 13, and says it detected the intrusion a few weeks earlier. According to SecurityWeek's reporting, the company cut off the attackers' access and brought in GitHub and law enforcement. It is also notifying regulators.

About 99 percent of what was taken was business data, mainly software code tied to some Meta products. The other 1 percent was personal information that, in Meta's words, was stored there by mistake and against company policy. Meta has not said what kinds of personal data were involved. It also says a significant share of the apparent personal data was synthetic or anonymized test data. Affected people are being offered credit and dark web monitoring.

Meta says its investigation with GitHub so far indicates the attackers were not specifically after Meta's data. No attacker group has been named, and no ransom demand or attacker claim has been reported.

Meta says it has rotated the secrets, meaning the passwords and access keys, found in the repositories. It has also added controls to keep user data out of GitHub, and it is building scanning to catch accidental uploads.

The lesson is in the 1 percent

It is tempting to read this as a story about stolen passwords. Passwords get stolen everywhere, every day. The more useful question is why personal data was sitting in a code repository at all.

Meta had a policy against it. The policy existed. The data was there anyway.

That gap, between what the policy says and what is actually true on the ground, is the central theme of Cyber Risk Is Business Risk. A policy is a statement of intent. Security is what happens when nobody is watching. Meta is now building the scanning that checks whether the policy is being followed, which is the control that turns a rule into a fact.

Your company almost certainly has the same gap. Somewhere, a developer has pasted a customer file into a test environment. A spreadsheet of employee records sits in a shared folder it was never meant for. An access key is written into a script. None of it violates your intentions, and all of it violates your policy.

Four angles for the boardroom

First, compliance is not security. A signed acknowledgment that employees will not store personal data in code repositories satisfies an auditor. It does not tell you whether anyone did. Ask for evidence of testing, not evidence of training.

Second, one stolen credential was the way in. Meta has not said how the credential was stolen or what protections were on that account, and neither should we speculate. But the pattern is common: one person's login becomes the door to a large body of company assets. The Three Questions apply here. What are we trying to protect? What could go wrong? What are we doing about it? Source code and the secrets embedded in it belong on the first list for most technology-dependent companies, and an employee's stolen login belongs on the second.

Third, the people harmed were employees. Boards tend to picture breaches as customer events. Here the notified population is mostly workforce. Employees are a regulated, litigious, and loyal-or-not constituency, and they are owed the same care as customers.

Fourth, speed and honesty in disclosure. Meta told people, told regulators, and said what it did not know. That is a reasonable template. Notice that it avoided guessing at the types of personal data. Saying "we have not determined" is better than saying something you later have to correct.

What to ask your CISO this week

  1. Where do our developers keep code, and who can get in? Is every account with access to our repositories protected by strong multi-factor authentication, and do we know which accounts are not?
  2. Are we scanning our repositories for personal data and for secrets such as passwords and keys? If we are not, we are relying on policy alone.
  3. If an employee's credentials were stolen today, how quickly would we know, and what could that one account reach?
  4. What non-production data do we use for testing? Is it truly synthetic, or is it a copy of the real thing?
  5. Who owns the answer to "what data lives where"? If no one does, that is the finding.
  6. How would we notify employees and regulators, and who signs off? Has the plan been rehearsed?

The takeaway

The most telling line in Meta's account is not about the attackers. It is the admission that personal data was in the repositories against policy. Every large organization has a version of that sentence waiting to be discovered. The only choice is whether you find it in a quiet review, or in a notification letter.