Turn Dependabot Off

(words.filippo.io)

160 points | by todsacerdoti 2 hours ago

17 comments

  • nfm
    1 hour ago
    The number of ReDoS vulnerabilities we see in Dependabot alerts for NPM packages we’re only using in client code is absurd. I’d love a fix for this that was aware of whether the package is running on our backend or not. Client side ReDoS is not relevant to us at all.
    • staticassertion
      26 minutes ago
      TBH I Think that DoS needs to stop being considered a vulnerability. It's an availability concern, and availability, despite being a part of CIA, is really more of a principle for security rather than the domain of security. In practice, availability is far better categorized as an operational or engineering concern than a security concern and it does far, far more harm to categorize DoS as a security conern than it does to help.

      It's just a silly historical artifact that we treat DoS as special, imo.

      • jpollock
        17 minutes ago
        The severity of the DoS depends on the system being attacked, and how it is configured to behave on failure.

        If the system is configured to "fail open", and it's something validating access (say anti-fraud), then the DoS becomes a fraud hole and profitable to exploit. Once discovered, this runs away _really_ quickly.

        Treating DoS as affecting availability converts the issue into a "do I want to spend $X from a shakedown, or $Y to avoid being shaken down in the first place?"

        Then, "what happens when people find out I pay out on shakedowns?"

        • michaelt
          0 minutes ago
          > If the system is configured to "fail open", and it's something validating access (say anti-fraud),

          The problem here isn't the DoS, it's the fail open design.

        • staticassertion
          2 minutes ago
          If the system "fails open" then it's not a DoS, it's a privilege escalation. What you're describing here is just a matter of threat modeling, which is up to you to perform and not a matter for CVEs. CVEs are local properties, and DoS does not deserve to be a local property that we issue CVEs for.
    • junon
      17 minutes ago
      I maintain `debug` and the number of nonsense ReDoS vulnerability reports I get (including some with CVEs filed with high CVSS scores, without ever disclosing to me) has made me want to completely pull back from the JS world.
    • adverbly
      43 minutes ago
      Seriously!

      We also suffer from this. Although in some cases it's due to a Dev dependency. It's crazy how much noise it adds specifically from ReDoS...

      • robszumski
        27 minutes ago
        Totally hear you on the noise…but we should want to auto-merge vs ignore, no? Given the right tooling of course.
    • candiddevmike
      20 minutes ago
      Using something like npm-better-audit in your linting/CI allows you exclude devDependencies which cut down a ton of noise for us. IDGAF about vite server vulnerabilities.
  • robszumski
    44 minutes ago
    We’ve built a modern dependabot (or works with it) agent: fossabot analyzes your app code to know how you use your dependencies then delivers a custom safe/needs review verdict per upgrade or packages groups of safe upgrades together to make more strategic jumps. We can also fix breaking changes because the agents context is so complete.

    https://fossa.com/products/fossabot/

    We have some of the best JS/TS analysis out there based on a custom static analysis engine designed for this use-case. You get free credits each month and we’d love feedback on which ecosystems are next…Java, Python?

    Totally agree with the author that static analysis like govulncheck is the secret weapon to success with this problem! Dynamic languages are just much harder.

    We have a really cool eval framework as well that we’ve blogged about.

    • MattIPv4
      11 minutes ago
      Are y'all aware your agent's name clashes with an established and rather popular streaming bot/tool, https://fossabot.com ?
    • AutumnsGarden
      12 minutes ago
      I think python and go could be great use cases
  • ImJasonH
    1 hour ago
    Govulncheck is one of the Go ecosystem's best features, and that's saying something!

    I made a GitHub action that alerts if a PR adds a vulnerable call, which I think pairs nicely with the advice to only actually fix vulnerable calls.

    https://github.com/imjasonh/govulncheck-action

    You can also just run the stock tool in your GHA, but I liked being able to get annotations and comments in the PR.

    Incidentally, the repo has dependabot enabled with auto-merge for those PRs, which is IMO the best you can do for JS codebases.

  • apitman
    11 minutes ago
    I find dependabot very useful. It's drives me insane and reminds me of the importance of keeping dependencies to an absolute minimum.
  • tracker1
    43 minutes ago
    I kind of wish Dependabot was just another tab you can see when you have contributor access for a repository. The emails are annoying and I mostly filter, but I also don't want a bunch of stale PRs sitting around either... I mean it's useful, but would prefer if it was limited to just the instances where I want to work on these kinds of issues for a couple hours across a few repositories.
  • adamdecaf
    8 minutes ago
    govulncheck is the much better answer and we use it.

    We also let renovate[bot] (similar to dependabot) merge non-major dep updates if tests pass. I hardly notice when deps have small updates.

    https://github.com/search?q=org%3Amoov-io+is%3Apr+is%3Amerge...

  • mehagar
    1 hour ago
    Is there an equivalent for the JS ecosystem? If not, having Dependabot update dependencies automatically after a cooldown still seems like a better alernative, since you are likely to never update dependencies at all if it's not automatic.
    • seattle_spring
      31 minutes ago
      RenovateBot supports a ton of languages, and ime works much better for the npm ecosystem than Dependabot. Especially true if you use an alternative package manager like yarn/pnpm.
    • mook
      31 minutes ago
      Too bad dependabot cooldowns are brain-dead. If you set a cooldown for one week, and your dependency can't get their act together and makes a release daily, it'll start making PRs for the first (oldest) release in the series after a week even though there's nothing cool about the release cadence.
      • kleyd
        8 minutes ago
        The cooldown is to allow vulnerabilities to be discovered. So auto update on passing tests, which should include an npm audit check.
  • samhclark
    1 hour ago
    This makes sense to me. I guess I'll start hunting for the equivalent of `govulncheck` for Rust/Cargo.

    Separately, I love the idea of the `geomys/sandboxed-step` action, but I've got such an aversion to use anyone else's actions, besides the first-party `actions/*` ones. I'll give sandboxed-step a look, sounds like it would be a nice thing to keep in my toolbox.

    • FiloSottile
      1 hour ago
      > I've got such an aversion to use anyone else's actions, besides the first-party `actions/*` ones

      Yeah, same. FWIW, geomys/sandboxed-step goes out of its way to use the GitHub Immutable Releases to make the git tag hopefully actually immutable.

    • conradludgate
      1 hour ago
    • bpavuk
      1 hour ago
      > I guess I'll start hunting for the equivalent of `govulncheck` for Rust/Cargo.

      how about `cargo-audit`?

      • mirashii
        32 minutes ago
        cargo-audit is not quite at an equivalent level yet, it is lacking the specific features discussed in the post that identify the vulnerable parts of the API surface of a library. cargo-audit is like dependabot and others here in that it only tells you that you're using a version that was vulnerable, not that you're using a specific API that was vulnerable.
        • hobofan
          19 minutes ago
          Saddly, since it relies on a Cargo.lock to be correct it also is affected by bugs that place dependencies in the Cargo.lock, but are not compiled into the binary. e.g. weak features in Cargo currently cause unused dependencies to show up in the Cargo.lock.
  • SamuelAdams
    1 hour ago
    What’s nice about Dependabot is that it works across multiple languages and platforms. Is there an equivalent to govulncheck for say NPM or Python?
    • tech2
      7 minutes ago
      For python maybe pip-audit, and perhaps bandit for a little extra?

      It doesn't have the code tracing ability that my sibling is referring to, but it's better than nothing.

    • mirashii
      34 minutes ago
      > Is there an equivalent to govulncheck for say NPM or Python?

      There never could be, these languages are simply too dynamic.

      • robszumski
        7 minutes ago
        I commented elsewhere but our team built a custom static analysis engine for JS/TS specifically for the dep update use-case. It was hard, had to do synthetic execution, understands all the crazy remapping and reexporting you can do, etc. Even then it’s hard to penetrate a complex Express app due to how the tree is built up.
  • indiestack
    25 minutes ago
    The govulncheck approach (tracing actual code paths to verify vulnerable functions are called) should be the default for every ecosystem, not just Go.

    The fundamental problem with Dependabot is that it treats dependency management as a security problem when it's actually a maintenance problem. A vulnerability in a function you never call is not a security issue — it's noise. But Dependabot can't distinguish the two because it operates at the version level, not the call graph level.

    For Python projects I've found pip-audit with the --desc flag more useful than Dependabot. It's still version-based, but at least it doesn't create PRs that break your CI at 3am. The real solution is better static analysis that understands reachability, but until that exists for every ecosystem, turning off the noisy tools and doing manual quarterly audits might actually be more secure in practice — because you'll actually read the results instead of auto-merging them.

    • staticassertion
      24 minutes ago
      Part of the problem is that customers will scan your code with these tools and they won't accept "we never call that function" as an answer (and maybe that's rational if they can't verify that that's true). This is where actual security starts to really diverge from the practices we've developed in the name of security.
      • unshavedyak
        21 minutes ago
        Would be neat if the call graph could be asserted easily.. As you could not only validate what vulnerabilities you are / aren't exposed to, but also choose to blacklist some API calls as a form of mitigation. Ensuring you don't accidentally start using something that's proven unsafe.
  • esafak
    1 hour ago
    I automate updates with a cooldown, security scanning, and the usual tests. If it passes all that I don't worry about merging it. When something breaks, it is usually because the tests were not good enough, so I fix them. The next step up would be to deploy the update into a canary cluster and observe it for a while. Better that than accrue tech debt. When you update on "your schedule" you still should do all the above, so why not just make it robust enough to automate? Works for me.
    • FiloSottile
      1 hour ago
      For regular updates, because you can minimize but not eliminate risk. As I say in the article that might or might not work for your requirements and practices. For libraries, you also cause compounding churn for your dependents.

      For security vulnerabilities, I argue that updating might not be enough! What if your users’ data was compromised? What if your keys should be considered exposed? But the only way to have the bandwidth to do proper triage is by first minimizing false positives.

  • bpavuk
    1 hour ago
    is there a `govulncheck`-like tool for the JVM ecosystem? I heard Gradle has something like that in its ecosystem.

    search revealed Sonatype Scan Gradle plugin. how is it?

  • snowhale
    58 minutes ago
    govulncheck is so much better for Go projects. it actually traces call paths so you only get alerted if the vulnerable function is reachable from your code. way less noise.
  • literallyroy
    1 hour ago
    The go ecosystem is pretty good about being backwards compatible. Dependabot regular update prs once a week seems like a good option in addition to govulncheck.
  • focusedmofo
    1 hour ago
    Is there an equivalent for JS/TS?
  • TZubiri
    28 minutes ago
    Coming from someone with an almost ascetic dependency discipline, I look at some meta-dependencies as an outsider (dependabot, pnpm/yarn, poetry/venv/pipenv, snap/flatpak), a solution to too many dependencies that is yet another dependency, it feels like trying to get out of a hole by digging.

    I think that for FOSS the F as in Gratis is always going to be the root cause of security conflicts, if developers are not paid, security is always going to be a problem, you are trying to get something out of nothing otherwise, the accounting equation will not balance, exploiting someone else is precisely the act that leaves you open to exploitation (only according to Nash Game Theory). "158 projects need funding" IS the vector! I'm not saying that JohnDoe/react-openai-redux-widget is going to go rogue, but with what budget are they going to be able to secure their own systems?

    My advice is, if it ever comes the point where you need to install dependencies to control your growing dependency graph? consider deleting some dependencies instead.

  • seg_lol
    1 hour ago
    Be wary of upgrading dependencies too quickly. This is how supply chain incursions are able to spread too quickly. Time is a good firwall.
    • ImJasonH
      1 hour ago
      Here's a Go mod proxy-proxy that lets you specify a cooldown, so you never get deps newer than N days/weeks/etc

      https://github.com/imjasonh/go-cooldown

      It's not running anymore but you get the idea. It should be very easy to deploy anywhere you want.

    • esafak
      1 hour ago
      • jamietanna
        1 hour ago
        Yep, and we've had it for a while in Renovate too: https://docs.renovatebot.com/key-concepts/minimum-release-ag...

        (I'm a Renovate maintainer)

        (I agree with Filippo's post and it can also be applied to Renovate's security updates for Go modules - we don't have a way, right now, of ingesting better data sources like `govulncheck` when raising security PRs)

    • bityard
      45 minutes ago
      A firwall also makes a good firewall, once ignited.
    • Hamuko
      1 hour ago
      >Time is a good firwall.

      That just reminds me that I got a Dependabot alert for CVE-2026-25727 – "time vulnerable to stack exhaustion Denial of Service attack" – across multiple of my repositories.