| ▲ | numbsafari a day ago |
| Environment variables are a terrible place to store secrets. I'm just going to say it, since having said it non-stop for over 20 years, nobody seems to listen and we keep circling this drain. The 12 Factor manifesto was 100% wrong on this point. Use environment variables to point to where secrets are located, not to store their values. |
|
| ▲ | jrochkind1 a day ago | parent | next [-] |
| It doesn't sound like they got them via a shell environment, they just hacked into the place that stored them. If the place you store secrets can be hacked into, it doesn't really matter if they are injected into environment variables or not. |
|
| ▲ | tptacek a day ago | parent | prev | next [-] |
| Environment variables are generally fine for secrets. Environment files are problematic. Modern systems that inject secrets into the environment launch the program itself. |
| |
| ▲ | IanCal a day ago | parent [-] | | (pre-caveat thing to not be massively annoyingly pedantic throughout, I'm not a security buff and I know who it is I'm talking to, I'm not trying to correct them) I'm not sure I get the difference - the issue I would have thought was having the system code have access to the secrets themselves? Env file vs env vars injected at runtime seems the same there - either can be exfiltrated. The difference would be having it injected when used. Is the problem with files about what happens outside that, being committed, etc? | | |
| ▲ | tptacek a day ago | parent [-] | | Everything can be exfiltrated. If you never store the environment in a durable file, it's not meaningfully easier to exfiltrate from the environment than from process memory. Most of the wisdom about the insecurity of environment variables falls out of people setting them in .profile or in .envrc files --- that's very bad, yes, as are configuration files (the thing 12 Factor Apps was responding to). The headline here is that there's no reason to believe "environment variables" were the reason this data was breached; presumably, the database those variables came from was what actually got hit. | | |
| ▲ | trollbridge a day ago | parent [-] | | You can say "everything can be exfiltrated" but capturing my PC's password is about nigh unto impossible. The only way it can be captured is if a program has active control over the keyboard controller/associated drivers when I type in the password to unlock it. These problems were all solved a long time ago. | | |
| ▲ | justincormack 14 hours ago | parent [-] | | Plugging a keyboard into your Railway instance every time you start on app is not going to give you a great SaaS experience. | | |
| ▲ | NichoPaolucci 11 hours ago | parent [-] | | I think some of this conversation is circling around the concept of 'allowable risk'... We have a couple of VMs that are not mission critical, and they don't hold sensitive data. We just inject the secrets into the runtime. Access to those machines is restricted to a single IP, there's not much more protection in front of them. A meaningful attack on one of those machines would require a LOT of effort, and almost nothing in return. Some systems don't NEED to have government level security, as a developer it's my job to provide the best solution for each scenario. (IE, I wouldn't put 12 security cameras and an armed guard around a fruit stand, but I might around a jewelry store) |
|
|
|
|
|
|
| ▲ | skinfaxi a day ago | parent | prev | next [-] |
| > Use environment variables to point to where secrets are located, not to store their values. Now your apps need to be able to read the secret that is pointed to, as opposed to the task runner populating the secret and the app would not know about the details.Not to mention the changes it entails to development. |
| |
| ▲ | esseph a day ago | parent [-] | | > Not to mention the changes it entails to development. Oh no, guess they'll have to hire developers that can adapt! | | |
| ▲ | skinfaxi 12 hours ago | parent [-] | | I'm not sure the point of your comment. | | |
| ▲ | esseph 9 hours ago | parent [-] | | Developers often do things out of convenience, not thinking about repeatability, deployment reliability, security, or thinking about other people having to manage and patch systems for 30y after their gone. Docker in 2026 is a perfect example of this (long lasting habits due to familiarity, not best practice). In addition to the developers not interested in using AI to augment their skills and code. |
|
|
|
|
| ▲ | atherton94027 a day ago | parent | prev | next [-] |
| How does this help? If your container gets compromised it's trivial to exfiltrate the secrets. |
|
| ▲ | trollbridge a day ago | parent | prev | next [-] |
| Or we could just use our operating systems for the things we do well, and have a service to send our API calls to that inserts the appropriate token. I don't have to enter my Mac's password every time I open an app. |
|
| ▲ | zaik a day ago | parent | prev [-] |
| systemd makes it easy: https://systemd.io/CREDENTIALS/ |