René's URL Explorer Experiment


Title: fix(view): shadow dangerous globals in with-scoped evaluator by JosunLP · Pull Request #188 · bQuery/bQuery · GitHub

Open Graph Title: fix(view): shadow dangerous globals in with-scoped evaluator by JosunLP · Pull Request #188 · bQuery/bQuery

X Title: fix(view): shadow dangerous globals in with-scoped evaluator by JosunLP · Pull Request #188 · bQuery/bQuery

Description: Summary Fixes #168 (Medium hardening). evaluate/evaluateRaw run new Function('$ctx', 'with($ctx){ return (expr); }'). The proxy has trap returned prop in target, so inherited Object.prototype members resolved from the context and constructor.constructor('…')() reached the Function constructor — arbitrary code execution wherever bq-* attributes carry untrusted content. Fix The issue's suggested own-keys-only has trap is necessary but not sufficient: once the proxy declines constructor, with resolution falls through to the enclosing global scope, where the global object inherits constructor from Object.prototype and exposes Function/eval/globalThis. A bare Function('…')() escapes the same way. So the evaluator now shadows a denylist (constructor, __proto__, prototype, Function, eval, globalThis, global, window, self, top, parent): has reports them present (so they never fall through to the global scope) and get resolves them to undefined unless the context legitimately owns that property. Member access on the resulting undefined throws → undefined. Both the lazy (evaluate) and raw (evaluateRaw) paths are covered. Legitimate templates are unaffected: own context props (including ones shadowing a dangerous name), arithmetic, and method calls on context values (e.g. name.toUpperCase()) all still work. Verification Tests: constructor.constructor(…)() on both evaluate and evaluateRaw, bare Function(…)() and eval(…), plus positive cases (own props, method calls, own-prop shadowing a global name). The exploit tests fail on the pre-fix code. Full suite: 2993 pass / 0 fail. tsc --noEmit + eslint clean. 🤖 Generated with Claude Code

Open Graph Description: Summary Fixes #168 (Medium hardening). evaluate/evaluateRaw run new Function('$ctx', 'with($ctx){ return (expr); }'). The proxy has trap returned prop in target, so inherited Object...

X Description: Summary Fixes #168 (Medium hardening). evaluate/evaluateRaw run new Function('$ctx', 'with($ctx){ return (expr); }'). The proxy has trap returned prop in target, so ...

Opengraph URL: https://github.com/bQuery/bQuery/pull/188

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:f829bd43-4c0c-dabe-34d5-fd3c1cb4f3d5
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idCABC:1162D4:173BA0C:21FAB66:6A4E4EBB
html-safe-noncedec6d7d4184b5af2e558534583f337b70765dd83fdbed7f55090ce3b4009bb0f
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQUJDOjExNjJENDoxNzNCQTBDOjIxRkFCNjY6NkE0RTRFQkIiLCJ2aXNpdG9yX2lkIjoiMjMwOTY2ODU5NDIwMjMzMjg1OSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmacbeb8dbae2e9fa1d22c7604c4997cab6c58c7c6f3d5896485d39778b999003717
hovercard-subject-tagpull_request:4001000559
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/bQuery/bQuery/pull/188/files
twitter:imagehttps://avatars.githubusercontent.com/u/20913954?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/20913954?s=400&v=4
og:image:altSummary Fixes #168 (Medium hardening). evaluate/evaluateRaw run new Function('$ctx', 'with($ctx){ return (expr); }'). The proxy has trap returned prop in target, so inherited Object...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None030096ee0db095447bfe77409d33bfac127ca7128299c58deef27c52eaa1b1f0
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/bQuery/bQuery git https://github.com/bQuery/bQuery.git
octolytics-dimension-user_id256381806
octolytics-dimension-user_loginbQuery
octolytics-dimension-repository_id1139284244
octolytics-dimension-repository_nwobQuery/bQuery
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1139284244
octolytics-dimension-repository_network_root_nwobQuery/bQuery
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasee8506f6d0538364886e3f0153c154c410965e70d
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/bQuery/bQuery/pull/188/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FbQuery%2FbQuery%2Fpull%2F188%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FbQuery%2FbQuery%2Fpull%2F188%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=bQuery%2FbQuery
Reloadhttps://github.com/bQuery/bQuery/pull/188/files
Reloadhttps://github.com/bQuery/bQuery/pull/188/files
Reloadhttps://github.com/bQuery/bQuery/pull/188/files
Please reload this pagehttps://github.com/bQuery/bQuery/pull/188/files
bQuery https://github.com/bQuery
bQueryhttps://github.com/bQuery/bQuery
Please reload this pagehttps://github.com/bQuery/bQuery/pull/188/files
Notifications https://github.com/login?return_to=%2FbQuery%2FbQuery
Fork 0 https://github.com/login?return_to=%2FbQuery%2FbQuery
Star 1 https://github.com/login?return_to=%2FbQuery%2FbQuery
Code https://github.com/bQuery/bQuery
Issues 0 https://github.com/bQuery/bQuery/issues
Pull requests 0 https://github.com/bQuery/bQuery/pulls
Actions https://github.com/bQuery/bQuery/actions
Security and quality 0 https://github.com/bQuery/bQuery/security
Insights https://github.com/bQuery/bQuery/pulse
Code https://github.com/bQuery/bQuery
Issues https://github.com/bQuery/bQuery/issues
Pull requests https://github.com/bQuery/bQuery/pulls
Actions https://github.com/bQuery/bQuery/actions
Security and quality https://github.com/bQuery/bQuery/security
Insights https://github.com/bQuery/bQuery/pulse
Sign up for GitHub https://github.com/signup?return_to=%2FbQuery%2FbQuery%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2FbQuery%2FbQuery%2Fissues%2Fnew%2Fchoose
JosunLPhttps://github.com/JosunLP
devhttps://github.com/bQuery/bQuery/tree/dev
fix/168-view-evaluator-has-traphttps://github.com/bQuery/bQuery/tree/fix/168-view-evaluator-has-trap
Conversation 1 https://github.com/bQuery/bQuery/pull/188
Commits 2 https://github.com/bQuery/bQuery/pull/188/commits
Checks 8 https://github.com/bQuery/bQuery/pull/188/checks
Files changed https://github.com/bQuery/bQuery/pull/188/files
Please reload this pagehttps://github.com/bQuery/bQuery/pull/188/files
fix(view): shadow dangerous globals in with-scoped evaluator https://github.com/bQuery/bQuery/pull/188/files#top
Show all changes 2 commits https://github.com/bQuery/bQuery/pull/188/files
4f7bb43 fix(view): shadow dangerous globals in with-scoped evaluator JosunLP Jul 6, 2026 https://github.com/bQuery/bQuery/pull/188/commits/4f7bb43a96ff5f379f0fe579967da4dba3aa80e2
3728fa9 test(view): add explicit generics to evaluate() calls for test type-c… JosunLP Jul 6, 2026 https://github.com/bQuery/bQuery/pull/188/commits/3728fa9eebb8a829af4b4fcd4c975f723e51851f
Clear filters https://github.com/bQuery/bQuery/pull/188/files
Please reload this pagehttps://github.com/bQuery/bQuery/pull/188/files
Please reload this pagehttps://github.com/bQuery/bQuery/pull/188/files
evaluate.ts https://github.com/bQuery/bQuery/pull/188/files#diff-5447b967ccc6b280920d6b182e824a71c4e65c35ed0757a51663a24b12551693
view.test.ts https://github.com/bQuery/bQuery/pull/188/files#diff-40c904250da66efa1eb8d2b70c52887ab1577d021cfc85f8653b819922cfe763
src/view/evaluate.tshttps://github.com/bQuery/bQuery/pull/188/files#diff-5447b967ccc6b280920d6b182e824a71c4e65c35ed0757a51663a24b12551693
View file https://github.com/bQuery/bQuery/blob/3728fa9eebb8a829af4b4fcd4c975f723e51851f/src/view/evaluate.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/bQuery/bQuery/pull/188/{{ revealButtonHref }}
https://github.com/bQuery/bQuery/pull/188/files#diff-5447b967ccc6b280920d6b182e824a71c4e65c35ed0757a51663a24b12551693
https://github.com/bQuery/bQuery/pull/188/files#diff-5447b967ccc6b280920d6b182e824a71c4e65c35ed0757a51663a24b12551693
https://github.com/bQuery/bQuery/pull/188/files#diff-5447b967ccc6b280920d6b182e824a71c4e65c35ed0757a51663a24b12551693
https://github.com/bQuery/bQuery/pull/188/files#diff-5447b967ccc6b280920d6b182e824a71c4e65c35ed0757a51663a24b12551693
tests/view.test.tshttps://github.com/bQuery/bQuery/pull/188/files#diff-40c904250da66efa1eb8d2b70c52887ab1577d021cfc85f8653b819922cfe763
View file https://github.com/bQuery/bQuery/blob/3728fa9eebb8a829af4b4fcd4c975f723e51851f/tests/view.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/bQuery/bQuery/pull/188/{{ revealButtonHref }}
https://github.com/bQuery/bQuery/pull/188/files#diff-40c904250da66efa1eb8d2b70c52887ab1577d021cfc85f8653b819922cfe763
https://github.com/bQuery/bQuery/pull/188/files#diff-40c904250da66efa1eb8d2b70c52887ab1577d021cfc85f8653b819922cfe763
https://github.com/bQuery/bQuery/pull/188/files#diff-40c904250da66efa1eb8d2b70c52887ab1577d021cfc85f8653b819922cfe763
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.