Show HN: AppCanary – Keep vulnerable software off your servers
appcanary.com
appcanary.com
I'm not sure if you would consider this unethical. I would probably feel differently about the pricing if it were tiered levels related to the entire size of the deployment (e.g.: 1-50 servers: $x/mo, 50-250 servers: $y/mo, 250+ servers: $z/mo).
Ya, that's fair and a good suggestion. I think we may very well end up doing something like that. We're still trying to figure out what kind of model best suits the server fleets people have.
We'll be keeping the first server free, and probably have a not for profit tier.
appCanary monitors the software on your servers and notifies you when you have to take action. In a previous life, we spent a lot of time worrying about what needs to be updated where and so we built this.
We currently let you know about Ruby vulns deployed on any linux, and vulnerable packages if you run Ubuntu. Support for Docker and other vuln sources is just around the corner.
We'd love to hear your feedback!
It sounds like for most software you are using the Ubuntu package management system to check for vulnerable versions. Is that correct? And are you planning to add detection for binaries that live outside of the distro package manager? I am thinking of stuff like custom-compiled Nginx binaries for example. I realize it would be non-trivial to implement this but would consider it highly useful at least for a certain set of common software components.
It's on the roadmap! Others have mentioned that before. First we need to get really good at knowing about CVEs :).
Unfortunately it's not easy -- even writing scripts to detect running processes across all our servers to identify Java, Apache, Tomcat, etc etc has proven difficult to get right. Sometimes you can get enough info from extended process list info, sometimes not.
Sucks.
It's definitely a leg up over just being spammed by pkg audit.
Further, we also cover your app dependencies :).
Any plans for windows servers? I'd honestly prioritize this after application dependencies checking for Java/Node etc, but just thought I'd ask.
It is targeted more at OS-level vulnerabilities (including IIS) rather than application dependency vulnerabilities, but may provide the solution you're looking for.
We understand how some people might have problems / have plans to improve upon it - maybe we run a proxy or some kind of enterprise edition.
But we think the main pain relief comes from knowing what you have deployed is now fixed.
If you're a random company, you have an engineer sitting around whose job involves reading a dozen mailing lists - and we want to save everyone from that redundancy.
We currently support Ruby, and in the next three months we'll have Javaland and Python and Node.
Right now most of our data is oriented around patch releases, so it can vary, but in near future we'll be reducing that distance.
How is this service different?
If you can handle the downtime, unattended-upgrades will work just dandy. If your postgres restarting in the middle of the night gives you pause, our service can help you choose how to roll out your security upgrades.
2. We cover app dependencies as well! For now just Ruby, but others as well pretty soon.
I'm one of the maintainers of the Ruby Advisory Database https://github.com/rubysec/ruby-advisory-db/ - and we know all about the effort involved.
[1] http://www.enyo.de/fw/software/debsecan/ [2] https://bugs.launchpad.net/ubuntu/+source/debsecan/+bug/9592...
Are you confident in your own infrastructure?
We used to work as security consultants, so we're more experienced than most, and we're working hard to be transparent and above board.
As we grow, we'll definitely be conducting regular audits of our infrastructure.
https://github.com/bitmonk/chef-appcanary
CentOS / RH / Fedora support isn't in, yet, and for kitchen to pass, you have to edit .kitchen.yml to set your api key.Tomorrow or this evening I'll finish that up and show its' use in a wrapper cookbook.
Why are you sending the full file contents from the agent to the client?
https://github.com/appcanary/agent/blob/master/agent/agent.g... agent.client.SendFile(file.Path, file.Kind, contents)
Extremely insecure design with a ton of unnecessary overhead. What if those files are configuration files with sensitive data embedded?
1. We only send files you tell us to send in the configuration, and you're not going to be storing any sensitive information in your Gemfile.locks or package.jsons.
It's not functionally any different from us parsing it client side - but allows us to support new platforms without having to update the agent.
>CRC is not a hashing algorithm.
2. You're absolutely correct! Which is why we're not using it as a cryptographic hash, i.e. as part of an HMAC.
We're only using CRCs to determine if a file has changed, which is the purpose of CRCs :).
Do you have any other concerns? We've spent a lot of time being paranoid, and we know it's a hard communication problem.
1. I have library X version 1.2.3 in package.json.
2. My package.json file gets sent to you
3. You parse this file, and tell me library X version 1.2.3 has a vulnerability, and that I should upgrade
AppCanary then doesn't monitor for the fact I have an outdated version of httpd for example?
It does! So long as you've installed it via the package manager. Right now we support Ubuntu, and Debian will be out soon and RHEL systems in the very near future.
In the near future we'll add the ability to scan hand-compiled binaries, but that's a technical challenge that depends on solving the first part of the equation (knowing what's vulnerable) really well.
That's not accurate. When using private gems hosted on github one of the common approaches is to use this in your Gemfile (which shows up in the lock):
gem 'my_private_gem', :git => 'https://github_user:cool_password@github.com/organization/my...
We'll likely add a check to beg you to change this in the near future should it show up.
Looking around I did just find a buildpack that tries to solve the problem. That doesn't really apply when using your service on my own servers though.
https://github.com/siassaj/heroku-buildpack-git-deploy-keys
I guess the bigger question is simply, are you going to limit your audience only to people already following best practices?
An SSL when transferring over these files, just based on the rest of the responses in this thread, would seem to make a lot of people feel better about the service.
No, of course not! We desperately want to bring people into best practices.
Most people are simply unaware of what they're doing wrong - or have no good means of knowing what to improve.
It's our great hope we can improve everybody's security.
>An SSL when transferring over these files
Yup! All communication happens over SSL :D.
We have elaborate plans to even add certificate pinning to the agent but that's on pause until we sort out larger infrastructure architecture.
Thanks for pointing that out as well. I've noted this elsewhere, but communicating how much effort we've poured into this is hard!
How does this affect containers?
We'll probably end up sitting on your host and taking a peek inside your container filesystems.
Would strongly recommend an "in-container" version, so that I can bake your agent into my Docker VMs. Remember that if I run my Docker VM on CoreOS, then it is very hard to install something on the host.
It's another wannabe startup that asks people to sign up before disclosing terms, or, in this case, anything at all. And they want access to your server. Right.
No business address on the site. A low-rent "domain control only validated" SSL cert. Anonymous domain registration. They do show up as a Delaware corporation, all of two months old:
CANARY COMPUTER CORPORATION
File Number: 5749511
Filing State: Delaware (DE)
Filing Status: Unknown
Filing Date: May 18, 2015
They're not known to Dun and Bradstreet, so you can't do a background check on them. Those are all scumbag flags.But! We're not yet launched, and I'm pretty easy to google :).
Just one correction, we're both technical co-founders :)
In fact, I'm the one wearing the sales bizdev hat today.
- Max, one of the two technical co-founders of appCanary
Sure, if you don't want to do business with a brand new startup, just wait a bit for them to mature. But no need to sound the snake oil alarm.
That being said, putting ToS and privacy policy links on the signup and main page would be a good idea.
Remember, in B2B you're selling to the main in the chair[1]:
I don’t know who you are.
I don’t know your company.
I don’t know your company’s product.
I don’t know what your company stands for.
I don’t know your company’s customers.
I don’t know your company’s record.
I don’t know company’s reputation.
Now—what was it you wanted to sell me?
Now see the modern version of this: [2][1] http://rhodescomm.com/_blog/Observations/post/Why_You_Should...