Nissan code leaked after bitbucket repo set-up with defaults admin/admin
zdnet.com
zdnet.com
Searching for that lead me to these. I haven't confirmed if they're legit:
https://git.rip/exconfidential/nna
Torrent: magnet:?xt=urn:btih:36cc1d89f8d5155bb08d05d0ed67a0e861f7b536&dn=nissan-na-gitdump-EXCONFIDENTIAL
Torrent tracker: https://newtrackon.com/api/stable?include_ipv6_only_trackers...
Downloading this torrent is willful copyright infringement of nissan's copyrighted code.
2. CFAA
If you live in the US, the CFAA is a very poorly worded law that can be abused by a company with over-eager lawyers.
Effectively, the law states that it's a crime to "exceed authorized access" of computer systems.
It's borderline, but it's possible nissan could take anyone who downloads this data to court claiming that they were not authorized to access the data on the git server, and knowingly downloading that data constitutes a CFAA violation.
I don't think it would stand up in court (other than the original hacker who guessed 'admin/admin', which was def a CFAA violation), but I also don't think most of us have enough money to spend on lawyers to defend ourselves.
Really.
https://jalopnik.com/uzi-nissan-internet-domain-owner-who-fo...
Hypothetical question: Should readers of driverdan comment be worried?
To all developers reading this: it is YOUR responsibility to do everything you can to prevent your users from shooting themselves in the foot like this.
(Most resources I'm finding are only describing the importance of remembering to change the default password, rather than designing a system without a default password to begin with.)
"Do not ship or deploy with any default credentials, particularly for admin users."
Though I wish OWASP published this guideline too. (they do state this is a top 10 venerability, and the HDIV scanner looks for this to fix)
[0] https://confluence.atlassian.com/bitbucketserver/install-a-b...
There's also a danger that if you try to do this, then your product turns into a UX nightmare.
And yes, sometimes security and UX conflict, and users just need to deal with it.
On my Leaf I can theoretically send a route to the car. And theoretically check things like state of charge. These might work. Or might not. Random API RNG seems to dictate that.
No, not my garage at home, I was referring to the parking garage two blocks down the street. Which is why, when Nissan offered to do it for free, I had them rip out the GPRS cell radio that wasn't useful anymore when AT&T turned those frequencies off. As parent points out, it wasn't that useful to begin with; not if it's a crap shoot whether it works or not.
But these companies do not seem to value user experience in the same way that a software oriented car company (eg, Tesla) does[1].
[1] Yes, I know that this has consequences that are negative for Tesla too.
I mean, it will be better and safer coded by amateurs, but it might not pass emissions anymore ;)
It's also (hopefully) not a binary choice between OEM firmware and a clean-room from-scratch implementation. If it was I might agree, but the ideal scenario is that the OEM releases the firmware, then community members (okay, whatever, generalists and amateurs) get to fix bugs/do long-term support when the business has moved on. Complimentary rather than adversarial. For instance, even a generalist could throw some static analysis at some code and come up with a bunch of trivial (but useful!) memory correctness fixes or something like that.
did you take on my suggestion to ready any reverse engineer post?
- Unrelated historical/comic book/movie references, e.g. "Project Morpheus" or "X-37" or "Calligua", "Wolverine Project" etc etc. Meaningless.
- Things like this Nissan leak where everything is an acronym that is meaningless on its own. TTBA. SSKLR. URA. PIIY. What the hell?
Both are awful. Please please please if you are responsible for naming something at your work, please choose something descriptive.
E.g. instead of picking something "clever" or "cool" like "Boudicca Project" or "Skylark" or some useless acronym like "CTITT" please call your mundane CRM system something meaningful like "Customer Management Tools" or something understandable without knowing the backstory (e.g. "we called it Team Sofa because it replaced and old CouchDB instance, and everyone used to hangout on our sofa in our office when we did meetings - duh") and easily searchable.
Future users and engineers trying to figure things out will thank you.
(been there, done that a few times.... there's nothing more permanent as a temporary solution)
1. If you try to make the name descriptive, it could possibly be accurate, but lack precision. To take on your example "Customer Management Tools" - ultimately there's a whole host of things all over the stack that could be considered "Customer Management Tools". Some words even come with organizational _baggage_ where stakeholders immediately think "ah we've been waiting on this for years" and you have to explain, "no this doesn't do that at all"
2. Software can change in functionality or sometimes even purpose over the course of it's life time (let's say 2-4 years, or longer). While the name is typically easy to change in user facing parts of the product, repository names and URIs are the harder parts and typically get cemented after creation.
If you combine points 1 and 2, you get something that's worse than wrong or cryptic - you can get naming that is actively misleading
I've seen real examples where someone started a project called "promo renderer". 3 years later new ppl onboarding onto the project will say "this renders promos? where's the code that shows the promos?" and the answer will be "well this doesn't technically render the promos, it's a configuration system which helps decides which promos get rendered; the actual render is another system". Unfortunately, it was almost impossible for the day 1 dev to see that level of nuance/precision.
My final argument is not necessarily that detached names are better, but there are definitely sharp downsides which I've felt that you have not considered.