HNHacker News
TopNewBestAskShowJobs

slowenough

313 karma · joined May 29, 2019

this account proud recipients of a ban for standing up to bullies, by YCs impartial ministry of "Truth"

https://news.ycombinator.com/item?id=21699662

remember folks, not accepting a bully's abuse in silence is a violation of the HN guidelines

apparently HN needs a fresh supply of willing silent victims.

remember, don't be a sucker, stand up to bullies no matter the petty censoriousness of HN

cris@dosyago.com

Artist working mostly in code.

Self taught "coder" since 1993. 36 yars as of 2019.

I guess I'm a heretic now?

Down votes are badges of honor. One brave enough to stand against the madding crowd and speak a truth few dare to hear!

I was born in Australia, lived in East Asia the last 9 years and I'm Pro China and Pro USA. People seem to hate that ¯\_(ツ)_/¯

cris@dosycorp.com

submissionscomments
slowenough··on Show HN: A remote browser product, open-sourced
I'm sorry to give you a link but I addressed this here[0]. The TL;DR is computing advances will allocate disproportionately to the big cloud providers, consolidating centralized/server compute which, coupled with 5G and AI, will lead to high-bandwidth experiences streamed to comparatively "thin" devices.

For that being said, I agree that virtualizing apps "right now" is stupid outside a niche unless you have some secret sauce (like Mighty must, otherwise why?), because it's too much overhead.

Preserving resources is why I run headless, and that's why I avoided WebRTC/VNC/video instead of judiciously sent screenshots only on change.

[0]: https://news.ycombinator.com/item?id=21562899

slowenough··on Show HN: A remote browser product, open-sourced
Thanks a lot for that response!

Interesting hearing you know about RBI. Did you evaluate any of the other services? What did you feel about them?

I definitely think the approach you say (host level blocking, content blocking and some lightweight virtualization, like Edge/Windows Sandbox, or a local VM) is a valid one that reduces risks.

I think it comes down to considering, when attacks inevitably occur, where do you want to be doing the cleanup? Zapping a few containers, or instances in the cloud and starting them frehh, or decontaminating the local machines and network?

That's the biggest convenience for me so far.

slowenough··on Show HN: A remote browser product, open-sourced
That's good to know, thank you. What made you do that? Would it be too annoying to share some more about it?
slowenough··on Show HN: A remote browser product, open-sourced
Oh, sorry. It compares the amount of data you are receiving, versus the amount of data you would be receiving if you were browsing directly.

Saved = (total resource weight of original browsing) - (screenshots + protocol)

slowenough··on Show HN: A remote browser product, open-sourced
Thanks, I'll be looking out for it!
slowenough··on Show HN: A remote browser product, open-sourced
Thank you for this! You really explained that well and clearly.
slowenough··on Show HN: A remote browser product, open-sourced
Thank you for this!
slowenough··on Show HN: A remote browser product, open-sourced
It's too complicated. The complexity in the code leads to more opportunities for bugs and exploits and more maintenance cost. Also it breaks the isolation model since you can do all sorts of crazy exploits just with HTML and CSS (animation event listeners for XSS etc).

I investigated this path after PoCing the original (you can see the code in a directory plugins/appminifier and public/voodoo/src/plugins/appminifer, I think) but there's all sorts of interaction issues that arise when you attempt to filter the HTML in this way.

Efficient in terms of what? Bandwidth, from a certain point of view but you lose the "source of absolute truth" that a screenshot is, and at the cost of interaction quirks. Also, not necessarily CPU efficient, as you have to do a lot of bookkeeping to transmit events to the right places and keep the local tree in sync with the remote tree.

The main reason I avoided it was the security holes introduced by breaking the strict isolation model of pixels, and the complexity.

You're welcome to fork and improve on the work begun in appminifier! If you go down that path, just know, there be dragons, and good luck!

slowenough··on Show HN: A remote browser product, open-sourced
Sorry about the typo (in my comment below)! I couldn't edit it past the edit horizon. I meant,

> Genuinely curious: who's your customer base?

Anyway, thank you so much for being interested in this product, especially for helping make the space for me to speak about the type of customer, the risks they face, and their reasons for adopting BrowserGap. I really appreciate your time on this!

slowenough··on Show HN: A remote browser product, open-sourced
It should.

If you do this, please post an issue or PR on the REPO. I'd love to include something cool like this in a "built with BG" section.

slowenough··on Show HN: A remote browser product, open-sourced
I just want to let everyone know there's also a version for Asia-pacific (in a HK Google datacenter) that will probably be faster if you're not in a US timezone.

https://hk.cloudbrowser.xyz

slowenough··on Show HN: A remote browser product, open-sourced
I agree that downloads are important, so I'm committed to integrating with org's existing file/firewall policies and secure web gateways.

I'm interested in what you said. Would it be a terrible idea for you to tell me some more about this certain segment of small business users?

slowenough··on Show HN: A remote browser product, open-sourced
Wow, that is far! It might have been the 10 minute time limit I put on the free version. It used to be 30 minutes but today there were hundreds of people and many people getting told it was already full, so I tried to let everyone have a go.

But, haha, I'm really glad that little modal dialog bubbled up the layers! XD It's kind of crazy when you think about what's happening ~~ you're chaining 7 browsers in row, using each to automate the next. It's crazy! Haha! XD

You really got me with this, it's so funny! Thanks for giving me a huge smile.

slowenough··on Show HN: A remote browser product, open-sourced
Thank you for your explanations here, you really get this category! I'm sorry but do you mind if I ask what's your background?

I'd like to ask for your advice, I'm at cris@dosycorp.com .... Would you be uninterested in discussing over email?

slowenough··on Show HN: A remote browser product, open-sourced
Sounds like you want someone to log in to a remote system then take over and drive it selenium style. Is that right?

Well, I'm hearing you right, then this (BG) is definitely a potential solution for your problem. I think it would be lighter weight than Guac since it only runs a browser (not a whole desktop).

My email is cris@dosycorp.com ... Would you be unwilling to talk more?

slowenough··on Show HN: A remote browser product, open-sourced
Yes, but generally, web apps detect features not browser versions, because UAs are already an unreliable signal of features, from long before BG.

Things like privacy extensions, screen readers, crawlers have various user agents.

At the same time, you make a good point. I'll consider your reflection if I come to re-decide if this is a sensible default.

slowenough··on Show HN: A remote browser product, open-sourced
Hey! Sorry for taking so long to get back to you. I saw your comment and wanted to respond, and I have been very busy today because of this post.

Thanks for sharing your feeling about this.

It looks like you're working on almost exactly the same project, and that the big challenge is getting access to server hardware for webbrowsing, because not only are AWS etc expensive, they primarily offer "webservers" optimized for very light not very CPU intensive workloads, and needless to say they also don't offer hardware accelerated video decoding.

Wow! Sounds like you're doing something interesting. Are you uninterested in collaboration? I was thinking of ways to make the video better, but right now I'm basically just using DIY "MJPEG" over websocket.

As for the server hardware, I was decided to join the Stripe Atlas program at the start of 2017, and from that I was able to get 5K in AWS credits, and then more Google Cloud credits, and I also applied to IBM and Digital Ocean on my own and got credits from them as well.

So, so far I have been able to develop and then demo this (like today) without significant monetary cost.

I also have some tips for you, because resource usage was one of my concerns, but TBH I find Chrome headless actually always uses less CPU than I imagine. It's all about the page that it is rendering. The page determines everything, but Chrome itself is very light. So when I've budgeted for like 1 CPU per user, it's actually possible to get much more than that. And memory is the big thing that Chrome does lightly, it uses barely any RAM even with 100s of users on a machine. I was surprised by that. 100 users running Chrome and only ~ 20 Gb of RAM used.

Also, regarding video, because I'm avoiding expensive video encoding (just sending screenshots) I avoid the CPU load of doing that. I've experimented with doing more processing of the frames, but it just throws the load way off.

I chose to keep it simple and I'm pleased with that. At the same time, I want to explore ways to improve image quality.

slowenough··on Show HN: A remote browser product, open-sourced
Thank you for this!

Main audience is people and organizations who are having problems with malware and cyber attacks.

Business model I am still working on, but it's a mishmash of licensing (+ maintenance, for hybrid / on-prem) and pay per seat (for cloud-based). Could be other ways to provide value.

What's your background? I'm open to new ideas.

slowenough··on Show HN: A remote browser product, open-sourced
> genifnly curious: who's your customer base?

Customer base is people and organizations who are having problems with malware and cyber attacks.

> Have you tried using this? When I said > sacrifice the ability to interact with text, resolution, color accuracy, frame rate, etc.

> it’s very much an understatement... Pretty sure your devs/testers won’t appreciate the experience. Frontend devs in particular can’t possibly work with this.

I totally agree the image quality can be much improved. So I'm really sorry you had this experience today trying it out!

Would you be unwilling to mail me cris@dosycorp.com and I can contact you if and when I have image improvements to share?

Initially, I used JPEG for all clients, then for clients with browsers that support WebP (chrome) I switch on WebP since the quality increase is a LOT (but WebP in FF looks pixelated, so I hope I can find a way around that), even tho the bandwidth is the same.

For Safari and iOS the quality is on JPEG. It sounds like it has sacrificed the ability ot interact with text, resolution, color accuracy and frame rate, etc. I'm really sorry about this.

Some people seem okay to roll RBI out in a test deployment, without the code being open-sourced. I can't speak directly for them, but I assume that Symantec (who bought FireGlass Browser), Menlo, WEBGAP, Light Point, Ericom, Authentic8, Citrix all have some customers even tho they are not OSS. I think that, often, as long as the contract provides the ability to examine the code if required (due diligence) even without publishing it openly, sales happen.

It sounds like you're unfamiliar with RBI, is that right? This is still an emerging industry so it makes sense to me that even if you are in security you are unfamiliar with RBI.

slowenough··on Show HN: A remote browser product, open-sourced
Thank you for this use-case!

Would you like to email me cris@dosycorp.com and we can discuss something tailored towards this? :)

I'd be really happy to help you.

slowenough··on Show HN: A remote browser product, open-sourced
Thanks for this feedback, you make some great points which I really appreciate you taking the time to make. And your experience of being malware free is mostly my experience as well.

It sounds like with reasonably good content blocking a person can avoid all attacks, and it looks like using local VMs/containers mean then the attack needs an exceptional exploit chain to escape all the way, and it's hard to imagine any target being caught in a drive-by.

I agree. Also, internet-based attacks are a real problem for many businesses and organizations. For example, in 2016 Singapore government mandated that RBI had to be used because of ongoing attacks.[0]

How can it both be true that most people avoid any attacks whatsoever (and therefore that most simple measures are sufficient) while at the same time, malware is a real industry inflicting real damage on organizations?

I think of malware as an "industry" and as a collection "criminal enterprises" and from that viewpoint the malware industry has certain goals and markets it seeks to penetrate. If you don't find yourself in one of those target groups, that's a good thing. If you do, then you probably are already exploring RBI or CBII to some extent.

So your logic is correct and it looks like you are simply not in the target group.

At the same time, I think categorizing the only victim of web-based malware that can benefit from RBI/CBII as "extremely high value targets" is misleading. Perhaps the finance department in a Fortune 500 company is an "EHVT", but there's a lot of web-based attacks that succeed at targeting businesses and organization units of many different sorts, and the costs inflicted are significant and important, not just to "EHVTs".

Your concern about trust and the cloud is valid, and perceptive, as is the solution you propose (self-hosting). Self-hosting is indeed the right choice for many. That's one reason I think OSS has a role to play in RBI/CBII.

[0]: https://secureview.cloudbrowser.xyz/uploads/file1uod.8tyb6vb...

slowenough··on Show HN: A remote browser product, open-sourced
Both the user agent and navigator platform strings are mirrored from the client.
slowenough··on Show HN: A remote browser product, open-sourced
First up that is some great feedback and raises a lot of really good points.

I don't know if you're missing anything but this feedback about files is on point. I really appreciate it. And I'm surprised no one raise this until now. Thank you for your time thinking about this and for making the space for me to speak about it.

> Users need to download files, open them with local apps, upload local files.

Ideally, user's don't download files, they use the Secure remote file viewer[0] (which currently handles PDFs, DOC/X, XLSX, etc), so that helps with exploits from there (such as the Chrome zero day from PDFium that recently occurred). No configuration is required, it automatically jumps in whenever a download starts.

Also, because the browser is running in the cloud, that "download" actually only happens between the web and the cloud. The file literally goes down to a temporary directory on a server in the cloud, before being sent to the secure file viewer. That file never touches the client's device or network. And the secure file viewer only sends pixels to the client, because it converts all documents to images, and then, the browser sends a screenshot of that page. So it's like... two layers of images.

Anyway, that helps mitigate the RCE threat from exploited file objects, browser and device zero days. And no HTML,JS,CSS from the browsed page is ever sent to your device.

As for opening with local apps, that's debatable with things like G Suite and Office 365. But we can integrate with a corporation's SWG (secure web gateway) and file policy so BG doesn't degrade their existing security, but it does provide an extra layer.

As for uploading that is absolutely required, otherwise many things would be unusable. I don't pretend that BG provides any sort of malware or virus scanner (mainly because there is not download), but as for uploads, it's possible to integrate into an organizations' existing SWG technology to gate-keep content that leaves, and also white and black list accessible sites.

> Current malware codebase might get stuck with it, but it's a matter of time and adoption.

I agree that to some extent, security is an ongoing "arms race". But there seems to be limits to what malware can achieve through the exploitation of pixels sent to the device. It puts a big limit on their attack vectors.

It sounds like there's no point taking any steps, because malware can always find a way through. When you say something like this, I feel like I'm wasting my time talking security, because it looks like you'd never adopt a mitigation anyway.

> Other threats like clickjacking, cryptomining, phishing would just work as before.

That's a great point. I don't think this tool can prevent against social engineering threats like phishing, fraud and deception. It may even may them worse by allowing users to feel "more secure" and therefore act more rashly.

No tool provides perfect protection, but BG can reduce the attack surface and isolate and contain many threats away from the device and network of the client. In the case of clickjacking, older browsers can be vulnerable because of CSP headers, but with BG you always proxy through the latest chrome.

As for cryptomining that will simply not work well at all. We have monitoring software that puts hard limits on CPU, memory and bandwidth for each browser and each user. Please, go ahead and try it.

[0]: https://imgur.com/gallery/Z32ZPg3

slowenough··on Show HN: A remote browser product, open-sourced
Yes, that's a great way of putting it, thank you!
slowenough··on Show HN: A remote browser product, open-sourced
Yes! I requested an invite and reached out to Suhail on Twitter (I actually interviewed at Mixpanel ~ 18 months ago before I knew anything about MP or MA) about a technical question about MA that I got to thinking about from my experience building BG but didn't hear back from them.

Mixpanel was a cool interview. I remember the question was about data structure for a rank system (it was a heap). The office in SF is beautiful, and the lunchtime catered food, was great.

I guess I'd have more to say about MA if I knew more about it! I did not try it yet and I don't know how they make Chrome faster in the cloud and deliver a seamless broadcast of the screen to the user, but with enough smart people, I'm sure it's possible.

As I said in a previous comment, I definitely think the future is mreo 'app virtualization' in the cloud, in some sense perhaps MA is starting at the beginning of that curve.

slowenough··on Show HN: A remote browser product, open-sourced
Thanks for the thoughtful question.

For the CE release, I deleted the Git history (it became too difficult to deal with branch rewrites trying to remove all the cruft and deployment secret keys etc).

But the actual current working repo for the non-free version has ~ 2400 commits[0]. And the repo that I forked that from (~ 7 months ago), I'd closed 238 issues, and the repo I forked that project from I closed 200 issues. Those previous repos are all my work built from the ground up within this last ~12 months as well. The current working repo has closed 124 issues.

My Gitlab contribs for the last year are at: https://gitlab.com/dosycorp

And it's actually a little bit over 1 year, and if I count the Gitlab contribs show there, it's over 5500.

So, yeah it's been about 2000 hours I think. Working full time every week day and most weekends, and often longer than regular hours (but also dividing the work up in the day into sprints because that's how I manage myself to work best).

It's definitely been a year.

[0]: https://imgur.com/gallery/wpNhxS0

slowenough··on Show HN: A remote browser product, open-sourced
Not flash, but PDF and DOCX/XLSX should work okay.

I have not thought about Flash, but I totally get the point you make. It looks like it would be very useful as they are big attack vectors and usually not supported on mobile.

Thank you for this feedback.

slowenough··on Show HN: A remote browser product, open-sourced
The risk you point out is extremely true. That's one reason why corporate/paid deployments are single-tenant. So everyone (not hundreds, it's more compartmentalized than that) on an instance belongs to the same company, or if desired, the same unit.

Even in this free demo, every user has their own browser process, with its own uid owner, and that OS uid has its own limited permissions.

At the same time, it's not an insignificant risk at all and you raise a very good point, which I'm surprised no one brought up before. Thank you for bringing it to everyone's attention.

An instance is a single point of failure, it's also less attack surface. To some extent, that's a tradeoff. Relative to all devices and network infrastructure in a typical company that access the public web, there's less attack surface if all web access funnels through a BG instance. On the other hand, it's a concentration of the risks into one place. My belief is that makes it easier to manage, and that the "gap" between the client infrastructure and devices and the cloud (through which only pixels, and a wire protocol of user intent pass), makes it more secure than accessing the public web directly.

Even tho it's a single point of attack, a compromise of a cloud machine, is not the same as a compromise of a device in a company intranet, or a mobile phone of someone in the company. In order to exploit the user's local machine or their organization's network, an attacker would still need to convert any instance access they had into access of a company device or network. This could happen through attack vectors in the pixels for the screen view (less likely) or through compromising the source code that serves the thin client (more likely). This is why monitoring of source code integrity is important. Open Source is an important part of that.

At the same time, in these free demo versions the browsers only exist for 10 minutes, and, exactly as you say, hundreds of strangers are all browsing from the same machine together.

TL;DR - It's a tradeoff of centralized infrastructure. There's less attack surface, but there's also a single point of failure.

Also, if you want to responsibly dislcose any security vulnerabilities you discover, please report to cris@dosycorp.com and if you want I can acknowledge you here https://github.com/dosycorp/vulnerability-reports

slowenough··on Show HN: A remote browser product, open-sourced
There's no reason this couldn't happen.

pptr and BG both use Chrome DevTools to communicate with the browser, so there's that commonality.

I haven't looked extensively at the pptr source but I imagine both pptr and BG do some bookkeeping of state related to the sequence of commands (BG certainly does), rather than a purely "stateless" command queue.

For instance, for some things you need to keep track of which session is associated with which target. For other command sequences (such as Runtime.evaluate) you need to know which execution context to evaluate in. And you can keep track of open execution contexts by tracking various Runtime domain events (such as executionContextCreated, executionContextDestroyed, etc).

So to provide a sophisticated level of interaction with the page, some amount of chattiness and state is required for the protocol on top of the DevTools wire protocol.

What I'm getting at is, if there are hurdles, they will likely emerge from the different ways in which pptr and BG handle state and that chattiness to achieve particular user intents.

Also, BG does not require pptr to do automation. It's possible to simply record and replay (again with a further layer of book-keeping that's too involved to get into here), the BG command sequence (which itself is a superset of the DevTools protocol).

All the same, I've often thought about providing a functionality to "export to puppeteer" (or to nightmare, or to phantomjs, etc) in terms of getting a transcript in a widely used format that people can take and run anywhere. That's one thing that excites me about pptr X BG.

In any case, automation is not something that is currently provided in the CE, but it's in the paid version at https://browsergap.xyz

slowenough··on Show HN: A remote browser product, open-sourced
Thanks a lot for your time on this report, and I'm really sorry about that! It sounds like the screen is pixelated and unusable. That must be very annoying!

I don't have an iPhone next to me right now, and I have not tested in Safari for about a week. Would you mind sharing a screenshot?

I know that because iOS Safari does not support WebP, I'm just using JPEGs which means the quality is worse there.

As a short term workaround, I'll now turn up the JPEG quality. This will take some time to propagate to browsers.

Again, I'm very sorry you had this experience today! I will test on iOS and improve the usability. I've had other reports that scrolling is terrible in iOS.

I'm just adding the iOS issues to the GitHub repo now. It could be great to contribute your screenshot to there! :)

Edit: Also, I'm sorry but would you be able to tell me are you using https://free.cloudbrowser.xyz or https://hk.cloudbrowser.xyz?

Because I am testing serving HK with imports rolledup for speed (less requests), and wonder if this caused a further issue.

← PreviousPage 4 of 7Next →