News for hackers. Stuff that matters.
Re:Show HN: TabNine, an autocompleter for all languages by itdaniher on Tuesday November 06, 2018 @01:45PM (#18393753)
> your software will automatically update to the full released version at no additional charge.

So, give your proprietary software both network access and access to all my source code?

I have very few complaints about the Jedi autocomplete library, which is neither proprietary nor requires network access.

I welcome innovation in dev tools, but I wish you had found a monetization strategy that didn't require us to trust you so completely.

Re:Show HN: TabNine, an autocompleter for all languages by jacob-jackson on Tuesday November 06, 2018 @01:50PM (#18393813)
Your concerns are understandable. It is about as risky as installing an editor plugin which updates automatically.

The private keys used to sign releases are kept offline and would not be available to an attacker even if they compromised my online accounts.

Finally, TabNine will work correctly if you deny it network access (say, by blacklisting update.tabnine.com).

Re:Show HN: TabNine, an autocompleter for all languages by itdaniher on Tuesday November 06, 2018 @02:21PM (#18394087)
...as risky as installing a proprietary editor plugin which updates automatically, yes.

Also, AFAIK most understandings of MIT, BSD, and Apache 2.0 licenses require you to acknowledge the copyright holders of the source code you compile into your binary, even if the licenses permit binary distribution. I can't find your "Copyright (c) 2018 Tokio Contributors" or "Copyright (c) 2014 The Rust Project Developers" that I'd expect based on `strings TabNine | grep github`. Maybe you've got a lawyer that suggests otherwise? Your plea of "trust me, I have good hygiene" carries less weight when I have to `strings` your stuff to know what shoulders of which giants you're standing on.

Re:Show HN: TabNine, an autocompleter for all languages by JimDabell on Tuesday November 06, 2018 @05:55PM (#18395633)
> ...as risky as installing a proprietary editor plugin which updates automatically, yes.

Can't you make the same complaint about any auto-update functionality in any software? Even if it's BSD licensed, you're still counting on whomever has authority to push an update to not push malicious code.

This doesn't seem to have anything to do with the fact that his code is proprietary nor his monetisation strategy, so why are you singling him out for those?

Re:Show HN: TabNine, an autocompleter for all languages by itdaniher on Tuesday November 06, 2018 @06:48PM (#18395941)
Proprietary - Can't patch out the autoupdate, which I might be tempted to do if something else in my toolchain did things at someone else's leisure.

DRM/monetisation - the product as of my comment didn't seem to acknowledge the open source works compiled into the binary, and I didn't think that was a good look for someone with the authority to push out malicious code.

Re:Show HN: TabNine, an autocompleter for all languages by eridius on Tuesday November 06, 2018 @03:52PM (#18394791)
As risky as ones that don't update automatically either. Just because a plugin doesn't update automatically doesn't mean it doesn't still have the capability of doing network access. Unless you're actually sandboxing all your IDE plugins and denying most of them network access (and verifying on every new IDE plugin you install whether it's allowed network access), but I don't believe that's how IDE plugins generally work.
Re:Show HN: TabNine, an autocompleter for all languages by cyphar on Tuesday November 06, 2018 @07:48PM (#18396274)
MIT only requires source attribution. It's the BSD licenses that require attribution for binary forms of redistribution. Still, it is good manners and good cover-your-arse practice to attribute whatever free software work they used (Google does this with their giant "open source licenses" page).
Re:Show HN: TabNine, an autocompleter for all languages by Benjamin_Dobell on Wednesday November 07, 2018 @02:47AM (#18397648)
MIT has no special language regarding source or binary distribution, it simply states:

> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

It's up to a court to decide what "copies or substantial portions of the Software" means.

Personally, I've always very much interpreted that to mean both binary and source.

Re:Show HN: TabNine, an autocompleter for all languages by cyphar on Wednesday November 07, 2018 @04:51AM (#18398120)
Well, you could argue that the notice is "present" (in a very esoteric sense) in a binary distribution of the software because it was present in the source code used to build it. You could also argue that a compiled version of a program isn't a "copy or substantial portion" of the Software (compilation is effectively a form of translation, which is a derivative work under the Copyright Act in the US -- and not just a copy).

Personally I would still include it in both, but I always had the impression that MIT was looser than BSD-2-Clause about this. BSD-2-Clause explicitly states that binary distribution needs to include the notice in "the documentation and/or other materials provided with the distribution", and I have a feeling that the license authors might've had a reason to want to be explicit about it.

Re:Show HN: TabNine, an autocompleter for all languages by dharmab on Tuesday November 06, 2018 @02:22PM (#18394093)
Does the Vim version autoupdate? I'd rather it wait for me to run my plugin manager- I specifically don't want anything on my machine to update when I'm on-call or traveling.
Re:Show HN: TabNine, an autocompleter for all languages by asdkhadsj on Tuesday November 06, 2018 @01:57PM (#18393881)
Wait, is the auto-update all that's needed for network? I assumed it was license validation or something. If it's just updating, couldn't you provide a different method of updating like manual update checking, and then peoples concerns would be solved?
Re:Show HN: TabNine, an autocompleter for all languages by itdaniher on Tuesday November 06, 2018 @02:46PM (#18394287)
No, it does use the network to validate registration keys. Presumably this means a TLS connection per invocation of the binary.

> TabNine makes web requests only for the purposes of downloading updates and validating registration keys.

from https://tabnine.com/faq

Re:Show HN: TabNine, an autocompleter for all languages by half0wl on Wednesday November 07, 2018 @11:02AM (#18399971)
> Finally, TabNine will work correctly if you deny it network access (say, by blacklisting update.tabnine.com).

Just to clarify - would it still work if I deny network acess for the TabNine binary, _after_ validating my license key? Or is the key validation invoked on every launch (hence requiring network access)?

Re:Show HN: TabNine, an autocompleter for all languages by jacob-jackson on Wednesday November 07, 2018 @12:11PM (#18400511)
Yes, it will still work.

(License key validation requests go to tabnine.com, so you should blacklist that too if you want to deny all network access.)

Re:Show HN: TabNine, an autocompleter for all languages by half0wl on Wednesday November 07, 2018 @12:54PM (#18400807)
Thanks! Purchased a copy :)
Re:Show HN: TabNine, an autocompleter for all languages by asdkhadsj on Tuesday November 06, 2018 @01:56PM (#18393870)
I agree with your concerns - I wonder what could be written to alleviate them? This brings up an interesting problem.

Ie, could we write a monitoring proxy where if enabled, all traffic goes through this proxy. This proxy enables the end user to monitor 100% of traffic, all http requests, and could even have a secondary documentation flow that explains the I/O for security minded individuals.

Then you'd shut off remote network access to the binary, monitor all traffic, and feel secure knowing that it's only sending what it says it's sending, and why.

With that said, I imagine you could do the same thing with a sniffer. Perhaps a documentation standard could be built into request/responses, so a monitoring program like Wireshark could snuff the I/O and see what it is.

Do you have any thoughts on how someone could both network-license, and make you feel secure in their I/O? Ie, no trust needed?

Re:Show HN: TabNine, an autocompleter for all languages by itdaniher on Tuesday November 06, 2018 @02:41PM (#18394258)
I don't think a DRM solution that is both robust against an adversary and inspectable by a stakeholder can be engineered. Software can't look out for both the person running it and the person selling it simultaneously when their needs are mutually exclusive. Cory Doctorow has some eloquent content on the topic, ie at [0].

In this particular case, the use of TLS (good!) makes it relatively challenging to inspect. Assuming the author isn't shipping a cert in his binary (doesn't look like it) - I'd have to spinup a new VM, load a custom root cert, and mess with a TLS terminating proxy / forwarding solution, and hope he's not using a secondary stream cipher on top of TLS. Maybe I get lucky and https://mitmproxy.org/ or something just works out of the box. In any case, lots of effort to know he's not siphoning up all the source code on the local machine and using it to train v2 of his project. And the more robust the DRM solution, the less feasible it is to inspect.

[0] https://github.com/jwise/28c3-doctorow/blob/master/transcrip...

Re:Show HN: TabNine, an autocompleter for all languages by achamayou on Tuesday November 06, 2018 @02:48PM (#18394300)
If the amount of traffic is predictably small though, you can be confident that it’s not uploading the entirety of your source code, so perhaps some mechanism to estqblish that would help?
Re:Show HN: TabNine, an autocompleter for all languages by gbear605 on Tuesday November 06, 2018 @03:15PM (#18394538)
Some code is a lot more valuable than other code. For example, token files for connecting to remote servers.
Re:Show HN: TabNine, an autocompleter for all languages by achamayou on Tuesday November 06, 2018 @03:23PM (#18394596)
There is no good reason for authentication secrets to be in your source tree though.

I’m not suggesting this is perfect in any case, but it would at least place an upper bound on whatever amount of IP leakage you think might happen.

Re:Show HN: TabNine, an autocompleter for all languages by heartbreak on Tuesday November 06, 2018 @05:44PM (#18395591)
But do you ever edit your authentication secrets in your text editor? I edit my .env file in vim all the time.
Re:Show HN: TabNine, an autocompleter for all languages by nickpsecurity on Tuesday November 06, 2018 @07:12PM (#18396106)
A combo of two applications: main app and network agent. Main app writes to a file with request, registration check or update, in JSON or other text-format for user inspection. It loads the agent which reads same file, applies operations, sends them to 3rd party, and writes result into another file. Main app reads that the second it appears. To keep it simple and not have to delete, the files might be numbered with old exchanges kept unless admin/owner deletes them.

With such a setup, users can see exactly what data is outgoing, have a reasonable belief they know what's incoming is harmess, main app gets no network access, agent has no access to secrets/system, and agent can be open source (entirely or mostly).

So, there's a quick brainstorm from how I did privilege-minimization for high-assurance security. This is basically a proxy architecture. That's a generic pattern you can always consider since it can help protect lots of risky apps both ways.

Re:Show HN: TabNine, an autocompleter for all languages by elyase on Tuesday November 06, 2018 @04:42PM (#18395137)
Take a look here for some solutions:

https://www.openmined.org