Skip to content

chore: retire carried dashboard map-key duplicate - #1404

Closed
seonghobae wants to merge 4 commits into
developfrom
sentinel-dom-xss-prototype-pollution-326011443070174999
Closed

seonghobae wants to merge 4 commits into
developfrom
sentinel-dom-xss-prototype-pollution-326011443070174999

Conversation

@seonghobae

@seonghobae seonghobae commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Retired after verified complete carryover

  • Original finding head: c3158b38e64d894b6ced16632a6741eea29d87dd
  • Ordinary source-neutral retirement head: 15c04ca35b1691388532598cf3f382d068d359d9
  • Protected base/tree: develop@2949d30718752ea5915c7713ba227e8c19d9e5bf / ec4525421f9ed758966e1929a45af4a44b0b81e1
  • Exact comparison: 4 ahead / 0 behind / changed files []
  • Canonical successor: fix(dashboard): reject inherited map properties #1260 exact 146cc63da545ee9e8b410edc91a9958205760e13

Carryover proof

#1260 completely carries every reproducible product requirement from this proposal: standalone-console and static-dashboard own-key severity lookup, null-prototype category aggregation, preserved escaping, direct Node-backed regressions, focused 5/5, and full 1,094/1,094 local GREEN.

The original Object.prototype mutation/prototype-pollution and DOM-XSS claims were not reproduced. The executable corpus instead proves Object.prototype remains unchanged and narrows the defect to prototype-chain lookup/collision. The unsupported .jules lesson is not a valid delta.

This predecessor is closed only after the ordinary two-parent retirement commit restored the protected tree and exact comparison proved zero effective diff. No force push, destructive rebase, valid-delta loss, gate weakening, merge, or release occurred. Canonical #1260 remains Ready/open and merge-HOLD because exact-head hosted jobs are failing before materializing steps and there is no qualifying current-head approval.

scanner/dashboard/index.html과 console.html에서 사용자가 제어하는
severity 값을 객체의 키로 직접 사용할 때 발생할 수 있는
Prototype Pollution 및 DOM XSS 취약점을 수정했습니다.
Object.create(null)을 사용하여 프로토타입이 없는 객체를 생성하고,
Object.hasOwn()을 사용하여 안전하게 키를 검증하도록 변경했습니다.
@google-labs-jules

Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@coderabbitai

coderabbitai Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: cf7f8aa9-371a-453e-9999-eba34979d1c2
📥 Commits

Reviewing files that changed from the base of the PR and between 2949d30 and 8f52199.

📒 Files selected for processing (3)
  • .jules/sentinel.md
  • scanner/dashboard/console.html
  • scanner/dashboard/index.html

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

대시보드에서 카테고리별 집계 객체의 프로토타입을 제거합니다. 목록, 상세 대화상자, finding 행은 심각도 키를 검증하고, 알 수 없는 값에는 INFO 색상을 사용합니다. finding 행의 색상과 심각도 표시를 이스케이프합니다. 관련 예방 지침을 추가합니다.

Changes

대시보드 입력값 안전 처리

Layer / File(s) Summary
카테고리 집계와 심각도 표시
.jules/sentinel.md, scanner/dashboard/index.html, scanner/dashboard/console.html
카테고리 집계에 프로토타입이 없는 객체를 사용합니다. 목록, 상세 대화상자, finding 행에서 심각도 키를 검증하며, 알 수 없는 값에는 INFO 색상을 사용합니다. finding 행의 색상과 심각도 표시를 이스케이프합니다. 입력값을 객체 키로 사용할 때의 예방 지침도 추가합니다.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to c3158

The dashboard safely handles and displays unknown category and severity values, with no concrete user-facing risk from these changes that warrants delaying the merge.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 대시보드의 Prototype Pollution 및 DOM XSS 취약점 수정이라는 주요 변경 사항을 구체적으로 요약합니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

CI re-run을 위해 빈 커밋을 푸시합니다.
CI re-run을 위해 빈 커밋을 푸시합니다.

Copy link
Copy Markdown
Contributor Author

Canonical-writer carryover rationale

Fresh exact-head review of c3158b38e64d894b6ced16632a6741eea29d87dd found three changed paths: .jules/sentinel.md, scanner/dashboard/console.html, and scanner/dashboard/index.html.

The reproducible product delta is now completely carried by canonical writer #1260 exact 146cc63da545ee9e8b410edc91a9958205760e13:

  • standalone-console inherited severity lookup rejection;
  • static-dashboard own-key severity selection;
  • null-prototype category aggregation;
  • direct Node-backed regressions for inherited severity names and prototype-named categories;
  • focused 5/5 and full 1,094/1,094 local GREEN;
  • precise root cause, preconditions, observable signals, and FP/FN boundaries.

The #1404 claim that this path mutates/pollutes Object.prototype or establishes DOM XSS was not reproduced: the executable corpus verifies Object.prototype remains unchanged. Its .jules lesson is therefore not a valid delta to preserve.

This PR is Draft and will be retired only through an ordinary source-neutral child whose tree equals protected develop@2949d30718752ea5915c7713ba227e8c19d9e5bf, followed by an exact zero-diff comparison. No force push, destructive rebase, gate weakening, or valid-delta loss is authorized. #1260 remains open and merge-HOLD pending exact-head executable Checks and independent review.

Canonical PR #1260 preserves every reproducible product delta with direct regressions. Restore the protected tree while retaining #1404 history; the prototype-pollution and DOM-XSS claims were not reproduced.
@seonghobae seonghobae changed the title 🛡️ Sentinel: [HIGH] 대시보드 Prototype Pollution 및 DOM XSS 취약점 수정 chore: retire carried dashboard map-key duplicate Oct 7, 2026
@seonghobae seonghobae closed this Oct 7, 2026
@google-labs-jules

Copy link
Copy Markdown

Canonical-writer carryover rationale

Fresh exact-head review of c3158b38e64d894b6ced16632a6741eea29d87dd found three changed paths: .jules/sentinel.md, scanner/dashboard/console.html, and scanner/dashboard/index.html.

The reproducible product delta is now completely carried by canonical writer #1260 exact 146cc63da545ee9e8b410edc91a9958205760e13:

  • standalone-console inherited severity lookup rejection;
  • static-dashboard own-key severity selection;
  • null-prototype category aggregation;
  • direct Node-backed regressions for inherited severity names and prototype-named categories;
  • focused 5/5 and full 1,094/1,094 local GREEN;
  • precise root cause, preconditions, observable signals, and FP/FN boundaries.

The #1404 claim that this path mutates/pollutes Object.prototype or establishes DOM XSS was not reproduced: the executable corpus verifies Object.prototype remains unchanged. Its .jules lesson is therefore not a valid delta to preserve.

This PR is Draft and will be retired only through an ordinary source-neutral child whose tree equals protected develop@2949d30718752ea5915c7713ba227e8c19d9e5bf, followed by an exact zero-diff comparison. No force push, destructive rebase, gate weakening, or valid-delta loss is authorized. #1260 remains open and merge-HOLD pending exact-head executable Checks and independent review.

Understood. Acknowledging that this work is now obsolete and stopping work on this task.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant