• 1 Post
  • 31 Comments
Joined 3 years ago
cake
Cake day: January 23rd, 2022

help-circle


  • BaumGeist@lemmy.mltoProgrammer Humor@lemmy.mlI love Rust
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    8 days ago

    Implementing Equality in Haskell:

        deriving (Eq, Ord)
    

    After learning how easy it was to implement functional programming in Rust (it’s almost like the language requires it sometimes), I decided to go back and learn the one I had heard about the most.

    It opened my mind. Rust takes so many cues from Haskell, I don’t even know where to begin. Strong typing, immutable primitives, derived types, Sum types. Iterating and iterables, closures, and pattern matching are big in Haskell.

    I’m not saying Rust uses these because Graydon Hoare wanted a more C-like Haskell, but it is clear it took a lot of elements from the functional paradigm, and the implementations the designers were familiar with had descended through Haskell at some point.

    Also, deriving is not the same as implementing. One is letting the compiler make an educated guess about what you want to compare, the other is telling it specifically what you want to compare. You’re making, coincidentally, a bad comparison.







  • Take the passive-aggressive nerd approach:

    1. Start a niche online movement that only cares about one aspect of computing and convinces people all their problems are caused by your pet peeve

    2. let the company dig its grave

    3. create a FOSS alternative

    4. sell a premium version for businesses (it includes phone support and management-friendly marketing matetials)

    5. congrats, you are now the de facto standard software in your field


  • Not to mention that self-hosting/federation comes with a million small headaches.

    If the devs are paid, do you want to pay them to work on the project or work on maintaining a contact infrastructure?

    If they aren’t paid, do you want them using what little free time they have working on the app or working on maintaining a communications network?

    If it’s someone else’s forum/matrix/chat server, are you okay with 1. a third party having access to your communications and 2. being able to force a comms blackout for any reason whatsoever?

    Or would you rather they use their time and money focusing on finding a provider who meets every need of the project AND every user?









  • BaumGeist@lemmy.mltoOpen Source@lemmy.mlNginx gets forked by core developer
    link
    fedilink
    arrow-up
    22
    arrow-down
    2
    ·
    edit-2
    9 months ago

    For the record I agree with @fernandofig@reddthat.com, but I also want to add that a DoS is not necessarily a security risk. If it can be leveraged to expose sensitive information, then yes, that’s a vulnerability; this isn’t that.

    Digging into the CVEs:

    CVE-2024-24989:

    #Security Advisory Description

    When NGINX Plus or NGINX OSS are configured to use the HTTP/3 QUIC module, undisclosed requests can cause NGINX worker processes to terminate. (CVE-2024-24989)

    Note: The HTTP/3 QUIC module is not enabled by default and is considered experimental. For more information, refer to Support for QUIC and HTTP/3.

    #Impact

    Traffic is disrupted while the NGINX process restarts. This vulnerability allows a remote unauthenticated attacker to cause a denial-of-service (DoS) on the NGINX system. There is no control plane exposure; this is a data plane issue only.

    CVE-2024-24990 basically says the same.

    Some choice clauses:

    undisclosed requests can cause NGINX worker processes to terminate

    Traffic is disrupted while the NGINX process restarts.

    So it doesn’t take down the server nor the parent process, it kills some threads which then… restart.

    Note: The HTTP/3 QUIC module is not enabled by default and is considered experimental

    I was able to find that the affected versions:

    NGINX Plus R30 P2 and R31 P1
    Open source subscription R5 P2 and R6 P1 Open source mainline version 1.25.4

    but most importantly:

    The latest NGINX Open source stable version 1.24.0 is not affected.

    And saving me the hassle of linking and quoting all 5 of the version history pages for the affected products, the uniting factor is: they’re all based on Open Source versions 1.25.*

    None of them are using the latest stable version.

    It’s not even going to affect most sites, and definitely not ones for whom downtime is a major issue: they would not be using the non-stable version, much less enabling experimental features in a non-stable version.

    But the part that irks me the most is the dillution of what a CVE is. Back in the day, it meant “something that can lead to security breaches,” now it just seems to mean “hey guys, I found a bug.” And that’s bad because now you have one of two outcomes: 1. unnecessarily panicking users by leading them to believe their software is a security risk when it isn’t, or 2. compromising the integrity and usability of CVE reports by drowing the important ones in waves of “look guys, the program crashes when I can leverage root privileges to send it SIGKILL!”

    If this was just a bug hunter trying to get paid, that’s one thing, but these were internally assigned and disclosed. This was an inside job. And they either ignored or never consulted the actual experts, the ones they have within their own staff: the devs.

    Why? To what end? Did they feel left out, what with not having any CVEs since 2022? Does this play some internal political struggle chess move? Do they just hate the idea of clear and unambiguous communication of major security holes to the general public? Are they trying to disrupt their own users’ faith in their paid products? Does someone actually think a DoS is the worst thing that can happen? Is there an upper level manager running their own 1.25 instance that needs this fixed out-of-band?

    It’s just all so asinine.


  • Context:

    TLDR: The devs don’t like bugs in released software being assigned CVEs, which requires a special security update instead of a standard bugfix included in the regular update cycle.

    :The most recent “security advisory” was released despite the fact
    : that the particular bug in the experimental HTTP/3 code is
    : expected to be fixed as a normal bug as per the existing security
    : policy, and all the developers, including me, agree on this.
    :
    : And, while the particular action isn’t exactly very bad, the
    : approach in general is quite problematic.

    There was no public discussion. The only discussion I’m aware of
    happened on the security-alert@ list, and the consensus was that
    the bug should be fixed as a normal bug. Still, I was reached
    several days ago with the information that some unnamed management
    requested an advisory and security release anyway, regardless of
    the policy and developers position.

    And nginx’s announcement about these CVEs

    Historically, we did not issue CVEs for experimental features and instead would patch the relevant code and release it as part of a standard release. For commercial customers of NGINX Plus, the previous two versions would be patched and released to customers. We felt that not issuing a similar patch for NGINX Open Source would be a disservice to our community. Additionally, fixing the issue in the open source branch would have exposed users to the vulnerability without providing a binary.

    Our decision to release a patch for both NGINX Open Source and NGINX Plus is rooted in doing what is right – to deliver highly secure software for our customers and community. Furthermore, we’re making a commitment to document and release a clear policy for how future security vulnerabilities will be addressed in a timely and transparent manner.


  • BaumGeist@lemmy.mltoOpen Source@lemmy.ml***
    link
    fedilink
    arrow-up
    10
    ·
    10 months ago

    They don’t seem to care that much about performance unless it means reduced powet consumption.

    Looks like their main reasoning for dropping vulkan was: 1. it has too many dependencies, which violates their principal of minimalism, and 2. it’s not backwards compatible enough for their arbitrary definition of backwards compatibility. I guess it should support hardware back to the very first gpu, but also have less dependencies