Closed thestinger closed 1 year ago
CRLSets are important since it's how certificate revocation is implemented. Chrome supports OCSP stapling but doesn't yet support Must-Staple. Must-Staple isn't properly supported by web servers since they don't have proper stapling support for it: https://blog.apnic.net/2019/01/15/is-the-web-ready-for-ocsp-must-staple/. That means it's essentially only adopted by people either not realizing or not caring that it's broken, unless they use an uncommon web server like Caddy where it works.
The Certificate Error Assistant component may also be important for providing good security UX.
CrowdDeny is part of Safe Browsing which isn't currently supported, but I'd like to get the local database mode working in which case this would probably be relevant.
I don't know what Safety Tips and File Type Policies do exactly.
In general, these things are components because they need faster out-of-band security updates than the regular browser updates.
The amount of stuff that's going to need to be done is quite overwhelming, honestly. I wish there was much better documentation and a lot more useful compilation options. Despite there being a lot of other browsers based on Chromium, it's not currently being maintained as a shared base like LLVM, which is frustrating. Hopefully that can change.
In general, these things are components because they need faster out-of-band security updates than the regular browser updates.
For all these features I would be inclined to use simple HTTP GET and the Last-Modified
header as I did for the subresource filters because it makes it much easier for anyone to host the server-side part. Not much churn on the patch maintenance to report either.
I wish there was much better documentation and a lot more useful compilation options.
I have seen compilation options being reduced over time, but I understand it's a cost to maintain them and upstream wants to reduce it.
The amount of stuff that's going to need to be done is quite overwhelming, honestly.
I assume you are talking about the client aspect; if you wonder about the server aspect, @kiwibrowser might provide some pointers as I assume he did all of that already for the extensions (which are delivered in the same way as components).
These should have more than just online HTTPS verification though and CRLSets itself is also involved in TLS verification.
Other references about internal components/extensions:
These should have more than just online HTTPS verification though and CRLSets itself is also involved in TLS verification.
I see; the downloaded content should contain an integrity signature then? In my scenario it would require some UI in settings to view and edit the public key signature as well, so that if one wants to replace the server side part he/she can change both URL and expected public key. I remember existing components/extensions do something like that already with PKI.
An extensions support patch has recently surfaced, see https://github.com/bromite/bromite/issues/533
I have not tried to use it but it might be useful for the implementation of this feature.
Continuing from duplicate issue #118:
The component updates (13) observed in Vanadium 93.0.4577.82:
Screen shot: -------
This thread should be used for discussion of the implementation of the feature. The issue tracker isn't a discussion or support platform. Please use the community support platform #grapheneos:grapheneos.org for discussing GrapheneOS and asking questions about it. We're aware of what's involved and don't need posts describing what this does and which components exist. What's needed is an implementation of the feature. Our focus is on Android 12 right now and anything like this is not going to happen for at least a month or more. It's not a good time for stuff like this.
This thread is strictly about the component updater. Topics like dictionary updates are separate from this.
https://github.com/GrapheneOS/Vanadium/issues/88
It needs to be determined if we need the component updates and if we do we need to host our own component update server and mirror the updates. Ideally, we'd generate the data we need ourselves. That's a substantial task and ideally we won't need to do it. An alternative is simply disabling this, but it has to be done properly in a way that actually fully disables it and doesn't cause any problems. It shouldn't be causing it to repeatedly try/fail to download the updates. If it's going to be disabled, it should actually be disabled rather than just made non-functional.
I think this has all been adequately covered already. No one has stepped up to do the work on looking into each of the components and whether we need to have out-of-band updates, followed by writing a clean uninvasive patch fully disabling the component updater rather than simply breaking it and having it keep trying and failing to run. That's not going to be our approach in Vanadium. Simply reusing patches from elsewhere isn't satisfactory unless they're a proper implementation of what we want to have and are fully understood, verified to work and are something we can maintain properly going forward.
Please use the Matrix rooms for discussions, questions and support going forward. I've taken substantial time away from development to reply on these threads and I don't expect that it's going to result in any progress on this. Unless there's something unclear about the plan that has been laid out for this to someone that wants to work on it, it's unnecessary to post in the thread. Don't need confirmations and information on what we already know and have documented.
We aren't interested in having more detailed documentation on things that we plan to change in Vanadium. Pull requests expanding the documentation will be closed. The work that needs to be done is implementing this feature, the dictionary feature and potentially one or two more similar ones involving downloads of static assets. Most of it has already been handled and we already have documentation on it explaining that the work is finished for the WebView but not the browser app. It's unclear why you're so concerned about private downloads of unprivileged static assets from Chromium's hosting rather than ours. You probably wouldn't care if we had simply reverse proxied it through our servers like Brave but that doesn't accomplish what we want to do. What needs to happen is someone spending the time on doing the small amount of work required to get these things done. These aren't large features. It would take someone unfamiliar with this a day of work to get done 4-5 of these small features via incremental builds + testing.
Please consider the substantial time I've taken away from development work to respond here. I've done that in the hope that it results in someone outside our core development team stepping up to work on this whether it's you or someone else. It usually doesn't happen, which why small features like this we tend to leave for new contributors often don't get implemented for such long periods of time. We try to focus on the meatier issues and leave these ones for people to have something productive they can do to start getting into development. If we did all these easy issues first, we would be raising the barrier to getting involved and not ever getting done the important features.
Please consider the substantial time I've taken away from development work to respond here.
My apologies, that was not my intention.
I'm evaluating GrapheneOS for the first time and #118 was simply an observation regarding downloading binary code from Google which seemed like a potential bug based on what I've read about GrapheneOS.
I had no idea what they were and my searches in Github issues didn't yield any matches for the domains in question. Thank you for explaining, but the issue descriptions in Github are very sparse or nonexistent so I'm sorry if things are already known and I'm only adding noise.
I don't have Chromium experience or the abilities to work on the issue at hand, so anything more from me is noise; I'll refrain from adding more. Sorry.
We added a component updates proxy via update.vanadium.app and dl.vanadium.app in the mean time, and might consider an Omaha server
The most recent interaction I had with components is explained in the conversation of https://github.com/GrapheneOS/Vanadium/pull/42 but I opted to not use components there to download filters. You can look at a list of internal components via chrome://components/