Top
Best
New

Posted by bukershok 2 hours ago

Show HN: Laptop is the last place your secrets are still in plaintext(github.com)
44 points | 55 comments
necovek 1 hour ago|
While this might be a useful tool for Mac users, it's all hackers here, so:

* Most people do not have passwords in plain text — an SSH key protected with a passphrase is not "plain text", for instance

* Most people have encrypted home or full disk encryption

* How can we trust your crypto implementation?

* If we are talking about in-memory plain-text during use, how does this tool protect against it?

* Containerisation is a big topic when running untrusted software for exactly (but not just) this reason

* While passwords/tokens might carry a big risk depending on what you do, I find that I worry more about my local data compared to my remote data — and virtualisation or containerisation helps with that.

Faaak 1 hour ago||
> Most people have encrypted home or full disk encryption

I don't see the point. Once your home is unlocked, every process can see the file contents

bukershok 34 seconds ago||
[dead]
hnlmorg 1 hour ago|||
I'm not the author but i can probably answer some of these:

> * Most people do not have passwords in plain text — an SSH key protected with a passphrase is not "plain text", for instance

I think you'd be surprised how many SWE do actually have plain text secrets. For example, if you do everything correctly with AWS auth, you still have a plain text token in ~/.aws -- it's short lived (typically 8hrs IIRC), but it's still there

> * Most people have encrypted home or full disk encryption

Yes. But that addresses a completely different problem. One where the whole machine is lost and an attacker then has physical access to your machine. Not when the machine is already in use and you have a rogue agent or other process.

> * How can we trust your crypto implementation?

This is written in Go and Go's standard library already has crypto functions. So there wouldn't be any need for the authors to roll their own implementation. But since it's open source, you can always check the code yourself.

> * If we are talking about in-memory plain-text during use, how does this tool protect against it?

This tool doesn't advertise that feature. Which I'm guessing you already knew. macOS, like most popular operating systems, does already have kernel-level code that makes it harder for processes to read the memory of other processes that do not belong to it. It's not entirely impenetrable, but this tool I think goes far enough for most SWE's risk appetite. If the risk that you need to guard against is greater than that, then you'd be looking at VM-level isolation rather than this kind of tool.

> * Containerisation is a big topic when running untrusted software for exactly (but not just) this reason

Indeed. And while personally, I'd still recommend containerisation, that doesn't mean this kind of tool doesn't also have merit. For example containerisation can get complicated if you have several processes that might need to work against the same project.

> * While passwords/tokens might carry a big risk depending on what you do, I find that I worry more about my local data compared to my remote data — and virtualisation or containerisation helps with that.

This surprises me because even if you're not using cloud computing, your local machine is still typically just the development environment and it's your "remote" (whether that's in a DC somewhere or hosted on-prem) is where the actual data, compute and infrastructure exist.

bukershok 12 minutes ago||
hnlmorg, i must disagree with you on this one, that most people do not have passwords in plain text.

If you a developer or just using API in your day to day you will have secretes in plaintext on your projects.

idoubtit 1 hour ago||
* Dealing with encrypted files is easy, and more versatile than a generic wrapper. E.g. to load a secret environment: `eval $(age -d -i secrets.env.age)`. With the added bonus that it only relies on a trusted tool, age.
adamddev1 1 hour ago||
This looks like a really cool idea. But since it's a new project and has all the Claude stuff I immediately feel unsure about the solidity and reliability of a security-critical piece for software like that. I wish I could go back to my pre-LLM levels of skepticism.
bukershok 1 hour ago|
[flagged]
ryuuseijin 1 hour ago||
For development on linux I like to use dotenvx, which lets you put encrypted secrets in an .env file and supply the private key separately.

I have a small wrapper script [1] that prompts for the private key which allows me to paste it from my password manager and launches a shell with the env variables decrypted. This allows me to avoid storing any secrets while still having shell session open where I can terminate and restart a server process for example without having to re-enter the secret all the time.

[1] https://gist.github.com/ryuuseijin/0cf6ab852fbb18d6702933a24...

Animats 1 hour ago||
The install procedure, for something that's supposed to be a security product:

    curl -sL https://dl.jitpass.com/jitpass/jit/releases/latest/download/jitpass_darwin_arm64.tar.gz | tar -xz jit
    sudo mv jit /usr/local/bin/
What could possibly go wrong?
thecopy 1 hour ago||
What is wrong with it?
9dev 1 hour ago|||
The pattern of piping an arbitrary script to your shell? This should be an ordinary app bundle to drop into /Applications, or be distributed as an installer.

The readme even says so itself:

> A bad curl | sh, a sketchy npm install, or one of the AI agents now running in your editor with your full permissions.

And then, two paragraphs down, it suggests to do just that to install…

kokx 1 hour ago|||
It's not piped to a shell, but to the tar program with specific parameters to directly unpack the tar.

You're still installing the program directly from github of course, instead of a source where hopefully a third party has also looked at it (like a package repository). But this is a lot better than the curl | sh pattern.

tgv 1 hour ago||
You're not downloading from github, but from dl.jitpass.com.

And an executable can do exactly the same as a shell script. The point is that whatever you're executing isn't verified, whether it's a shell script or a binary.

QuantumNomad_ 1 hour ago|||
> The point is that whatever you're executing isn't verified, whether it's a shell script or a binary.

The GP said:

> This should be an ordinary app bundle to drop into /Applications

There is no difference between downloading an app bundle that you drop into /Applications, and curling a binary that you put in /usr/local/bin/

ZiiS 1 hour ago|||
The difference is you have the executable for examination (at least a quick virus scan) before you run it. Certanly not perfect, but what is?
hnlmorg 1 hour ago|||
You can still do that with their install instructions ;)
ZiiS 14 minutes ago||
That is what I am saying, you are trusting them, but less then `curl | sh`
fragmede 30 minutes ago|||
Is there McAfee for Mac? There's no real difference. You're trusting someone not to root your shit. Whether it's via curl, dmg, or apt, we have no idea who anybody really is, so it's all on an assumption that people aren't evil. Unfortunately it turns out that there are evil people out there, but doing it via curl | bash or downloading a dmg or though some app store, there's still evil that's gonna get you if you end up trusting in the wrong people.
ZiiS 9 minutes ago||
Well trusting McAfee¹ is one of the choices.

¹ https://en.wikipedia.org/wiki/John_McAfee#Legal_issues

QuantumNomad_ 1 hour ago||||
But it’s not piping a script into the shell. It’s curl downloading a compressed archive and piping it to tar to decompress the program binary from the archive. Then moving the extracted binary into /usr/local/bin.
hackernudes 1 hour ago||||
Technically this one is piping it to tar? But I agree with the sentiment.
vlaaad 1 hour ago|||
It's curl | tar, not curl | sh
jason1cho 1 hour ago|||
I agree that `curl | tar && mv` is not safer than `curl | sh`.
bukershok 1 hour ago||
[dead]
_august 1 hour ago||
I've moved my secrets to 1Password Environments (https://www.1password.dev/environments), which works really well for everyday use.

It works with 1password cli (https://www.1password.dev/cli) to access for agents/scripts, and I get a nice UI to manage them in the 1password app.

nf-x 1 hour ago||
But the IPC is process-wide, not vault-dependent. And requires touch approval on every access, without “trust this process for X minutes” possibility.

Other 1pass is a great UX. It was even greater before Electron refactor and non-subscription model.

oulipo 46 minutes ago||
I do the same indeed
tiku 1 hour ago||
I don't get why you would have PRODUCTION secrets in those local .env files. It should only be dev tokens.
bukershok 56 minutes ago|
I can't agree more.
LeBit 1 hour ago||
Fnox and Nono are the ones I know that do credentials proxying. That approach seems quite better than scanning a host file system for secrets.
chanux 34 minutes ago|
I was trying out fnox recently. It won't allow me to enter the master password for keepassdb. I have to set FNOX_KEEPASS_PASSWORD.

A bit uncomfortable in leaving a secret in the history. Hence I was looking for a tool like this.

xixixao 1 hour ago||
You can do some of this with 1Password as well btw. Looks nice!
bukershok 42 minutes ago|
Thanks!
hn_submit 1 hour ago||
Operating systems should work like Android currently does. Assuming all installed apps are potentially malicious and isolates each of them from the others and the OS. So even if an app is compromised there's not much it can do when it's installed.

All desktop and server operating systems currently assume the user should have "full control" making a single compromise fatal for the user or even an entire organization.

flaburgan 1 hour ago|
I would have been interested if it was for Linux
bukershok 1 hour ago|
Soon, it will, yes.
More comments...