1
0
mirror of https://github.com/lancedikson/bowser synced 2026-09-23 20:44:24 +00:00
Commit Graph

114 Commits

Author SHA1 Message Date
naorpeled
982a91d5e8 fix: resolve open GitHub security findings
Code scanning (js/polynomial-redos, alerts #16 and #17)
-------------------------------------------------------
bowser applies these regexps to attacker-controlled User-Agent strings, and
four of them ran in quadratic time:

  * The "Something else" fallback used /^(.*)\/(.*) / and
    /^(.*)\/(.*)[ \t]\((.*)/. Two unbounded `.*` before a required literal
    make the split ambiguous, so a UA of "/a" repeated backtracks O(n^2).
    Greedy `(.*)` always picks the last `/` that still has the delimiter
    after it, so the second group can never span a `/` -- narrowing it to
    `[^/]*` is exactly equivalent and removes the ambiguity. Verified
    identical on 1,000,000 fuzzed inputs and on the full acceptance corpus.

  * The Linespider and SlackBot version regexps used `(?:-[-\w]+)?` before a
    required `[\s/]`. Since `[-\w]` and `[\s/]` are disjoint the backtracking
    is pure waste, but the engine still walks it once per start position, so
    "linespider-" repeated is quadratic. Bounding the run to `{1,64}` makes
    it linear; no real bot-name suffix approaches 64 characters.

A sweep of all 253 regexp literals in src/ (fuzzed for superlinear scaling,
with the four pre-fix patterns used to confirm the detector works) reports no
remaining superlinear regexps. test/unit/redos.js locks this in.

Actions (actions/missing-workflow-permissions, alerts #5 and #15)
-----------------------------------------------------------------
merge-to-master.yml and draft-or-update-next-release.yml had no `permissions`
block and so inherited the default token. Both now declare least privilege,
matching publish.yml and pull-request.yml.

Dependabot (22 open alerts, all development scope)
--------------------------------------------------
bowser ships no runtime dependencies, so none of these reached consumers, but
they were live in CI. `pnpm audit` goes from 29 advisories to 0:

  * jsdoc 3 -> 4 (with docdash 1 -> 2) drops taffydb, which has no patched
    release, and picks up current markdown-it/linkify-it.
  * coveralls -> coveralls-next 6 drops `request`, which is deprecated with no
    patched release, along with form-data, qs 6.5.x, uuid 3 and tough-cookie 2.
    Same `coveralls` bin and same stdin contract; lcov conversion verified.
  * gh-pages 3 -> 6 clears the critical prototype pollution advisory.
  * pnpm overrides pin the remaining transitive-only advisories to the lowest
    patched release on each existing major.

Verified: pnpm audit clean, lint clean, 346 tests pass (the acceptance corpus
runs against both src/ and the built es5.js), build, package smoke test, and
doc generation.
2026-08-30 21:00:59 +03:00
Naor Peled
a88622557d Dual packaging, without breaking existing consumers (#628)
Co-authored-by: Yasumasa Ashida <ys.ashida@gmail.com>
2026-08-30 00:10:11 +03:00
Jelle Raaijmakers
a37b8be8a7 feat: add Ladybird browser support (#627) 2026-07-31 12:10:10 +03:00
Swapnil Sahu
92b5639733 feat: add support for HeyTap Browser and Vivo Browser identification (#621) 2026-04-10 23:18:44 +07:00
Naor Peled
2c253c3ad2 fix: prevent Motorola Edge devices from being misidentified as Microsoft Edge (#612) 2026-03-14 16:17:53 +02:00
naorpeled
cf397a4b50 feat: add Vivaldi client hints support 2026-02-13 23:09:48 +02:00
Stas Tolpekin
8ddb4f5a0d feat: add the ability to use an array of versions in Parser.satisfies() (#466) 2026-02-13 22:15:55 +02:00
Copilot
a2d6ce81b1 feat: add Smart TV platform detection (#582) 2026-02-07 18:44:55 +02:00
Copilot
227f5ecd4b feat: add Brave browser support via clientHints (#597) 2026-02-07 18:29:20 +02:00
Jam Hsu
c09ff24ae1 feat: Add Line sipder detection (#600)
Co-authored-by: Jam <jam.hsu@lativ.com.tw>
2026-02-06 23:08:55 +02:00
Jonathan Kingston
aaa67db25e feat: add clientHints support + DuckDuckGo detection (#595) 2026-02-01 23:50:33 +02:00
Jam Hsu
74463f6b23 feat: Add Slack bot detection (#596)
Co-authored-by: Jam <jam.hsu@lativ.com.tw>
2026-01-31 18:54:09 +02:00
Naor Peled
1df8838756 revert: rollback addition of named exports (#591) 2025-11-29 02:01:44 +02:00
Naor Peled
514510d847 feat: add support for latest MacOS (#580)
Co-authored-by: Seiji Kohara <9543980+seijikohara@users.noreply.github.com>
2025-11-22 23:50:54 +02:00
Naor Peled
4a6dacca08 feat: add Sogou browser support (#579)
Co-authored-by: 猫猫 <49067249+NotEvenANeko@users.noreply.github.com>
2025-11-22 23:31:31 +02:00
Copilot
be90a00e37 feat: add LibreWolf browser detection (#578)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: naorpeled <6171622+naorpeled@users.noreply.github.com>
2025-11-22 19:01:03 +02:00
Naor Peled
f7d2c0693c feat: add support for AI crawl bots (#577) 2025-11-22 18:05:08 +02:00
Lucio Martinez
771dfb2dfe feat: add more bot platforms (#542)
Co-authored-by: naorpeled <me@naor.dev>
2025-11-22 16:44:08 +02:00
Copilot
bd5cb7186c feat: add named exports for tree shaking support with modern bundlers (#566)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: naorpeled <6171622+naorpeled@users.noreply.github.com>
Co-authored-by: naorpeled <me@naor.dev>
2025-11-22 15:15:13 +02:00
Copilot
2b5ee5de8c feat: add Support for HarmonyOS User-Agent Detection (#567)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: naorpeled <6171622+naorpeled@users.noreply.github.com>
2025-11-22 14:27:00 +02:00
daniol
4481f5aab3 feat: add Nokia Vendor (#448) 2023-11-17 20:54:44 +02:00
Mehmet Akif Yücel
bb8f94efcd feat: add Pale Moon browser support (#495) 2023-11-17 20:47:16 +02:00
Denis Demchenko
24dab5f699 Merge pull request #437 from willamesoares/include-alias-check
feat: add support for using alias in 'is' method
2020-09-12 10:25:35 +03:00
Will Soares
a9c4677c86 feat: add support for using alias in 'is' method 2020-08-23 16:55:29 -03:00
Will Soares
53d18c8994 increase test coverage 2020-08-23 14:42:33 -03:00
Will Soares
d5fe5657d1 feat(browser): add detection for Miui Browser 2020-08-23 13:58:07 -03:00
Denis Demchenko
ba8f7d8a54 chore(tests): fix tests 2020-07-09 21:23:20 +03:00
Denis Demchenko
725de76e14 Revert "chore(tests): fix tests for Firefox iOS"
This reverts commit 9edfabf9
2020-07-09 21:23:10 +03:00
Denis Demchenko
9edfabf98a chore(tests): fix tests for Firefox iOS
relevant to #401
2020-06-02 00:32:35 +03:00
Denis Demchenko
3813d92a55 feat(browser): add detection of Opera Touch
fixes #414
2020-06-02 00:16:43 +03:00
acailly
cb242c0242 handle Firefox on iPad on iOS 13 2020-04-28 11:37:01 +02:00
Denis Demchenko
d238da4906 Merge pull request #383 from oliverfoster/issue/359
fixes #359 IE11 Added Array.prototype.find and Object.assign polyfills
2019-12-26 15:55:29 +02:00
Denis Demchenko
366a9c47e9 Merge pull request #381 from Tindtily/feature/add-wechat-ua
add windowswechat ua
2019-12-26 15:50:21 +02:00
Denis Demchenko
de5b4e02fe Merge pull request #379 from neckro/production
Correctly detect Firefox on iPad
2019-12-26 15:48:46 +02:00
Oliver foster
5a6af193d2 Extended test cases and fixed bug 2019-12-19 12:00:46 +00:00
Oliver foster
b74bb0caa2 Added polyfill tests 2019-12-19 11:46:15 +00:00
Oliver foster
cad365b53e Fixed getSecondMatch test 2019-12-19 11:38:49 +00:00
Oliver foster
64bbd2a9b1 Fixed tests 2019-12-19 11:26:52 +00:00
Oliver foster
3cdfd7de02 Expanded test coverage for utils.js 2019-12-19 11:22:40 +00:00
zhaoxiaohai
adde31f807 add windowswechat ua 2019-12-17 16:24:04 +08:00
Joseph Culbert
b213e4c8a6 Correctly detect Firefox on iPad 2019-12-13 16:40:59 -06:00
Farfurix
648daa5f9f Add Electron 2019-12-04 15:55:36 +03:00
Denis Demchenko
0ce5a8173a Merge pull request #363 from navarroaxel/feat/gsa
feat(browsers): Add Google Search App detection
2019-10-02 21:26:25 +03:00
Axel Navarro
e29357793a feat(browsers): Add Google Search App detection 2019-09-25 08:58:27 -03:00
Mathias Kahl
e57c3d99d5 support QQ Browser 2019-09-18 10:34:14 +02:00
Denis Demchenko
d9885c9de3 fix(platform): fix Tablet PC detection as tablets
fixes #334
2019-09-06 14:33:14 +03:00
Jörg Leis
496136fd83 Fixes, refactor, new test cases 2019-07-17 17:33:48 +02:00
Jörg Leis
b2b36e6adb Add unit test for OS version names 2019-07-17 14:13:17 +02:00
Jörg Leis
b298e8d866 Add detection of macOS version names 2019-07-17 13:53:31 +02:00
Oz Weiss
82cd6a82de adding detection for Roku OS: https://en.wikipedia.org/wiki/Roku#Software
examples: http://www.webapps-online.com/online-tools/user-agent-strings/dv/brand798903/roku-dvp

note: The reason I added the test for Roku before all other tests is that Roku user agents might contain other tokens (like Windows), but Roku is still Roku.
2019-07-07 12:55:53 +03:00