Skip to content

fix(security): preserve #987 Permissions-Policy with dependency owner - #988

Draft
seonghobae wants to merge 94 commits into
developfrom
codex/successor-987-owner-lock
Draft

seonghobae wants to merge 94 commits into
developfrom
codex/successor-987-owner-lock

Conversation

@seonghobae

@seonghobae seonghobae commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Successor scope

Verified successor for #987 after its generator branch repeatedly replayed a stale snapshot and removed the canonical dependency-security owner changes.

  • Predecessor exact head retained in history: 64f00aed52e553afb22a4c2989144177b97921ca.
  • Canonical dependency owner: fix(deps): raise parser and TestClient security floors #822 at 23e481577af0283da512d9b2626ae27188245bdc.
  • Initial successor head: f6bcf169b22b73c3f9b2be267659d2eaf33e391d.
  • Current exact head after same-head Security RCA: 9f030e97165841f70bef8e28c1d0ded536a13fc4.
  • Current result tree: 14bfb03cae613b6c4151dc8f614bfa3b9fe72164.

Preserved contract

RCA

Security run 36792861820, job 110149569373, reported 12 findings at predecessor head 64f00aed.... Exact comparison against the repaired head showed two repeated feature commits had deleted or downgraded the owner files, including the product-gap baseline and transport security contract. Re-editing the generator-owned branch had already failed repeatedly, so this isolated branch removes the active single-writer collision without discarding its valid feature delta.

Draft until fresh exact-head tests, Security, Semgrep, CodeQL, image/fuzz checks, and qualifying independent review are terminal. Queued/skipped/pending are not passing. Predecessor #987 remains open and Draft until verified complete carryover is established.

Current-head urllib3 RCA

Security Scan 36794054647, Trivy job 110153330809, found urllib3 2.7.0 affected by CVE-2026-97687/97688/97689. Test-first head 9f030e97165841f70bef8e28c1d0ded536a13fc4 adds the direct urllib3>=2.8.0,<3.0 floor, a resolver-generated 2.8.0 lock, an executable source/lock/documentation contract, and aligned CHANGELOG/doctoring/product-gap evidence. Local full pytest is 488/488 with 100% owned production statement/branch coverage; strict docs and complete exported-lock pip-audit pass. Fresh hosted tests, Security, Semgrep, repository CodeQL, container, and scorecards pass; clusterfuzzlite remains in progress and Draft-event CodeQL PR is skipped/non-passing. The PR remains Draft until terminal exact-head evidence and review admission are complete.

seonghobae and others added 30 commits September 7, 2026 21:06
🚨 Severity: MEDIUM
💡 Vulnerability: /parse 엔드포인트의 language 및 mode Form 필드에 최대 길이(max_length) 제한이 설정되어 있지 않았습니다.
🎯 Impact: python-multipart가 폼 데이터를 메모리에 로드하므로, 악의적인 사용자가 매우 긴 문자열을 전송하여 메모리 고갈(OOM)을 통한 서비스 거부(DoS) 공격을 유발할 수 있습니다.
🔧 Fix: FastAPI의 Form 필드에 max_length=50 제약 조건을 명시적으로 추가했습니다.
✅ Verification: 비정상적으로 긴 폼 데이터를 전송했을 때 HTTP 422 응답이 반환되는지 확인하는 테스트 코드를 추가하고 테스트 스위트를 통과했습니다.
🚨 Severity: MEDIUM
💡 Vulnerability: /parse 엔드포인트의 language 및 mode Form 필드에 최대 길이(max_length) 제한이 설정되어 있지 않았습니다.
🎯 Impact: python-multipart가 폼 데이터를 메모리에 로드하므로, 악의적인 사용자가 매우 긴 문자열을 전송하여 메모리 고갈(OOM)을 통한 서비스 거부(DoS) 공격을 유발할 수 있습니다.
🔧 Fix: FastAPI의 Form 필드에 max_length=50 제약 조건을 명시적으로 추가했습니다.
✅ Verification: 비정상적으로 긴 폼 데이터를 전송했을 때 HTTP 422 응답이 반환되는지 확인하는 테스트 코드를 추가하고 테스트 스위트를 통과했습니다.
🚨 Severity: MEDIUM
💡 Vulnerability: /parse 엔드포인트의 language 및 mode Form 필드에 최대 길이(max_length) 제한이 설정되어 있지 않았습니다.
🎯 Impact: python-multipart가 폼 데이터를 메모리에 로드하므로, 악의적인 사용자가 매우 긴 문자열을 전송하여 메모리 고갈(OOM)을 통한 서비스 거부(DoS) 공격을 유발할 수 있습니다.
🔧 Fix: FastAPI의 Form 필드에 max_length=50 제약 조건을 명시적으로 추가했습니다.
✅ Verification: 비정상적으로 긴 폼 데이터를 전송했을 때 HTTP 422 응답이 반환되는지 확인하는 테스트 코드를 추가하고 테스트 스위트를 통과했습니다.
🚨 Severity: MEDIUM
💡 Vulnerability: /parse 엔드포인트의 language 및 mode Form 필드에 최대 길이(max_length) 제한이 설정되어 있지 않았습니다.
🎯 Impact: python-multipart가 폼 데이터를 메모리에 로드하므로, 악의적인 사용자가 매우 긴 문자열을 전송하여 메모리 고갈(OOM)을 통한 서비스 거부(DoS) 공격을 유발할 수 있습니다.
🔧 Fix: FastAPI의 Form 필드에 max_length=50 제약 조건을 명시적으로 추가했습니다.
✅ Verification: 비정상적으로 긴 폼 데이터를 전송했을 때 HTTP 422 응답이 반환되는지 확인하는 테스트 코드를 추가하고 테스트 스위트를 통과했습니다.
🚨 Severity: MEDIUM
💡 Vulnerability: /parse 엔드포인트의 language 및 mode Form 필드에 최대 길이(max_length) 제한이 설정되어 있지 않았습니다.
🎯 Impact: python-multipart가 폼 데이터를 메모리에 로드하므로, 악의적인 사용자가 매우 긴 문자열을 전송하여 메모리 고갈(OOM)을 통한 서비스 거부(DoS) 공격을 유발할 수 있습니다.
🔧 Fix: FastAPI의 Form 필드에 max_length=50 제약 조건을 명시적으로 추가했습니다.
✅ Verification: 비정상적으로 긴 폼 데이터를 전송했을 때 HTTP 422 응답이 반환되는지 확인하는 테스트 코드를 추가하고 테스트 스위트를 통과했습니다.
🚨 Severity: MEDIUM
💡 Vulnerability: /parse 엔드포인트의 language 및 mode Form 필드에 최대 길이(max_length) 제한이 설정되어 있지 않았습니다.
🎯 Impact: python-multipart가 폼 데이터를 메모리에 로드하므로, 악의적인 사용자가 매우 긴 문자열을 전송하여 메모리 고갈(OOM)을 통한 서비스 거부(DoS) 공격을 유발할 수 있습니다.
🔧 Fix: FastAPI의 Form 필드에 max_length=50 제약 조건을 명시적으로 추가했습니다.
✅ Verification: 비정상적으로 긴 폼 데이터를 전송했을 때 HTTP 422 응답이 반환되는지 확인하는 테스트 코드를 추가하고 테스트 스위트를 통과했습니다.
🚨 Severity: MEDIUM
💡 Vulnerability: /parse 엔드포인트의 language 및 mode Form 필드에 최대 길이(max_length) 제한이 설정되어 있지 않았습니다.
🎯 Impact: python-multipart가 폼 데이터를 메모리에 로드하므로, 악의적인 사용자가 매우 긴 문자열을 전송하여 메모리 고갈(OOM)을 통한 서비스 거부(DoS) 공격을 유발할 수 있습니다.
🔧 Fix: FastAPI의 Form 필드에 max_length=50 제약 조건을 명시적으로 추가했습니다.
✅ Verification: 비정상적으로 긴 폼 데이터를 전송했을 때 HTTP 422 응답이 반환되는지 확인하는 테스트 코드를 추가하고 테스트 스위트를 통과했습니다.
seonghobae and others added 21 commits September 27, 2026 00:13
The Sentinel replay removed the existing exact 50-character boundary test, weakened warnings-as-errors, and reopened dependency constraints without changing production. Restore the canonical verified owner tree while preserving the replay commit in ordinary history.
The repeated Sentinel replay again removed the exact 50-character boundary and weakened dependency/warnings contracts. Restore the verified owner tree without rewriting history.
Restore the exact verified owner tree without rewriting the concurrent head.
Preserve the Permissions-Policy feature and tests while integrating the canonical dependency-security owner #822 without force-pushing.
Preserve concurrent commit 560d06d in history while restoring the exact result tree that carries PR #822 dependency floors, lock, regression contracts, gap baseline, and the Permissions-Policy feature.
Preserve the repeatedly rewritten predecessor history while carrying its complete valid feature delta and the canonical dependency-owner repair in a stable successor branch.
@coderabbitai

coderabbitai Bot commented Oct 1, 2026

Copy link
Copy Markdown

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
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


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.

_REQUIRED_PYPDF_VERSION = (6, 15, 0)
_CURRENT_PYPDF_CVES = ("CVE-2026-71852", "CVE-2026-71870")
_LOCKED_PYPDF_REQUIREMENT = '{ name = "pypdf", specifier = ">=6.15.0,<7.0" },'
_REQUIRED_PYPDF_VERSION = (6, 16, 1)
authentication_mode=AuthenticationMode.DISABLED,
runtime_profile=RuntimeProfile.DEVELOPMENT
)
import newsdom_api.main
Add a direct floor and lock for the three exact-head Trivy findings, plus a RED-to-GREEN regression contract and operator/product-gap RCA evidence.

Copy link
Copy Markdown
Collaborator Author

Exact-head Security RCA and RED→GREEN repair (2026-10-01): run 36794054647, Trivy job 110153330809, found urllib3 2.7.0 affected by CVE-2026-97687/97688/97689. Test-first tests/test_urllib3_security_floor.py failed for the missing direct floor and missing operator evidence, then passed after adding urllib3>=2.8.0,<3.0, regenerating uv.lock to 2.8.0, and updating CHANGELOG, dependency doctoring, and docs/product-technical-gap-baseline.md. New exact head is 9f030e97165841f70bef8e28c1d0ded536a13fc4 (tree 14bfb03cae613b6c4151dc8f614bfa3b9fe72164), advanced from f6bcf169... with force=false. Local evidence: targeted 10/10 security contracts; full pytest 488/488; production statements 830/830 and branches 254/254 (100%); strict MkDocs build PASS; complete exported lock pip-audit reports no known vulnerabilities; uv lock --check, Ruff, and git diff --check PASS. Fresh hosted exact-head Checks are required; predecessor or prior-head results do not transfer.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant