-
Notifications
You must be signed in to change notification settings - Fork 567
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Develop CVE Strategy? #4190
Comments
For point 4, downstream libraries need to do something only if the affected library changes ABI/API in the new version, which is what happens with mbedtls. But you can't just rebuild the downstream libraries against the new fixed library: there are compatibility bounds to respect, accept the fact we can't change compat bounds inside the same patch version (changing only the build number), and if the affected library is shipped by Julia, you have also to deal with julia compatibility bounds and not break existing packages |
I was looking into mbedtls and its ABI issues. This is mind-boggling: https://github.com/ARMmbed/mbedtls/releases/tag/v2.28.0
They just rearranged the fields, and for what? That's crazy. I'm not confident that Mbed TLS is a good dependency to have upstream if they make such rearrangements flippantly like this. |
For what it's worth there is this: |
Indeed it seems bad that a TLS library of all things can't resist the "clean up for clean up's sake" urge :-(. Their sentence "This only affects" neatly leaves out "... code that is not recompiled". From the 2.26.0 changelog:
So... Any code using this function that is just recompiled may be silently broken, too? Wow. (OK, I just checked: they also added one more argument, so recompilation will trigger this; but the ABI is indeed broken). I still don't get it; why not make a new function |
I believe that github is trying to provide support for some of this stuff. Apparently they have APIs for building out the package dependency graph and I believe once you do that, things like vulnerabilities in dependencies can propagate etc. |
The problem is that we are constrained by compatibility of packages in the registry and packages breaking the ABI every other day don't help us at all. |
Of course in cases where there are security patches available for older versions of software (in particular for whatever version we use), then one could perhaps use those with relatively little pain. But often the instructions are simply to switch to the very latest version. Which indeed sadly is non-trivial, as far too many projects are very cavalier about breaking compatibility at any time :-(. Of course in the end we are not unique with this issue, e.g. more or less all Linux distros suffer from a variant. But it is indeed particularly difficult for us because of the super strict "precise version and even build variant must match" employed for the "stdlib JLLs". So even if one backports a patch for, say, mbedTLS_jll, I think right we'd also have to make new releases of affected Julia versions to take advantage of them, don't we? |
Yes, for stuff that is included in Julia itself, we have do new Julia releases, and also backport to LTS and stable. The points are valid, but I suppose the important thing is to have patched versions that people can easily update to, and to be security conscious. As I often hear - it is a journey, and it is important to get started. |
Is it better to have this issue on the BinaryBuilder repo - since Yggdrasil issues and PRs are mostly about packages? If so, let's transfer it there. |
The various difficulties and challenges with the CVE's in mbedtls (CVE in version built with Julia, lots of packages which (indirectly) depend on the library), distributed responsibility across main Julia repo and Yggdrasil ecosystem seem to point at the need for a clear CVE strategy.
As a starting point, (without a strong claim to completeness and acknowledging that is is a very complex topic) it might make sense to develop a position on the following questions (not all of which are strictly limited to Yggdrasil):
The text was updated successfully, but these errors were encountered: