mythsthe platformsToyota / GitHub key2022automotive / connected vehicles

everyone assumed:

a secret checked into a repo goes stale harmlessly

what was actually true:

A secret committed to a repository stays exactly as usable as the day it was written, for as long as the repository is reachable and the key is not rotated.

how it happened

  1. whoanyone lookingpublic repository
  2. the gapaccess key in codenever rotated
  3. the result296,019 customers~5 years exposed
the gap that let it happen the result

what everyone assumed

A credential left in old code feels like a credential that expires on its own. The thinking is that keys rotate, servers move, projects get rebuilt, and whatever was hardcoded during development becomes inert long before anyone could find it. It is a reasonable way to think, because the alternative, that a string typed into a file in 2017 is still a live door in 2022, sounds like something that would have been caught.

what happened

The key did not go stale. From December 2017 forward, the repository was reachable by anyone who looked, and the access key inside it still authenticated to the data server it was written for. Nothing rotated it, because nobody knew it was there. The window ran across most of five years while the app grew, customers registered, and the data server filled up with the addresses and management numbers of people who had linked their cars to their phones. A hardcoded secret does not age into safety; it waits at the same value it was committed with.

step by step

  1. December 2017an access key is committed to a public repoIt still works on the data server.the assumption breaks here
  2. nobody rotates it for five yearsNobody knows it is there.
  3. 15-17 September 2022the repo is closed and keys changed
  4. 296,019 customers' details were reachableAccess by a third party can be neither confirmed nor ruled out.

how it surfaced

Toyota found the public repository and restricted access to it on September 15, 2022, then changed the data server’s keys on September 17. The disclosure put a number on the exposure window: the details of 296,019 customers had been reachable between December 2017 and September 2022. Toyota’s own review could not confirm that a third party had accessed the data, and could not rule it out either. The assumption retired itself in a single sentence of the notice, the one admitting that the key had been valid the entire time.

A secret committed to a repository stays exactly as usable as the day it was written, for as long as the repository is reachable and the key is not rotated.

Time does not defuse it; only revocation does.

picture it at a company like yours

The company here is made up. The other two paths are not: they happened, and each links to the story.

your company
a normal dayA contractor uploads code to a public site, with a working key inside.
the gap nobody seesNobody knows the key is there, so nobody changes it.access that outlives the job
  1. in this story
    the day it mattersThe key stays valid for years while your customer database grows.
    what it costs youYou cannot rule out that someone used it, and you have to tell every customer.
  2. or it goes like this
    howThe person logs back in from home, weeks after leaving.
    what leavescustomer lists and reportswho ends up with itthe former employee and whoever they work for next
    it happenedCash App / Block, 2022
  3. or it goes like this
    howThe forgotten account's password turns up in a breach dump.
    what leavesa working way into the networkwho ends up with ita ransomware crew
    it happenedColonial Pipeline, 2021

sources

  1. BleepingComputer, "Toyota discloses data leak after access key exposed on GitHub"
  2. The Register, "Key to Toyota customer info left out on GitHub for years"
  3. GitGuardian, "Toyota Accidentally Exposed A Secret Key Publicly On GitHub For Five Years"

← all myths

your turn

what you can do about it

  1. this week

    Run a secret scan across your repositories and their history, not just the current tip, and rotate anything that resolves to a live credential.

    Your repositories almost certainly contain a key or two that someone added to make a build work and meant to remove later. The quiet-months question is whether any of them still authenticate to something, and whether any repository that holds one has ever been public, even briefly. The keys that hurt are the ones that were assumed dead.

  2. go deeper

  3. if you're not sure where to start

    Run the offboarding checklist on one leaver. It covers every account and token to close when someone leaves.

    open the checklist →

the letter · every two weeks

one access gap in your inbox, with the fix.

Every issue takes one way access creeps in, shows a real incident where it went wrong, and ends with one thing to check that week. Written for the people who run the tools, without a security team behind them.

  • 1one mechanism, explained plainly
  • 2one real incident, taken apart
  • 3one step you can take on Monday

get the next issue

One email every two weeks. Your address stays here and is never passed to vendors. One click to unsubscribe. Privacy.