Repository navigation
fix(security): preserve #987 Permissions-Policy with dependency owner - #988
seonghobae wants to merge 94 commits into
Conversation
🚨 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 응답이 반환되는지 확인하는 테스트 코드를 추가하고 테스트 스위트를 통과했습니다.
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 the repeatedly rewritten predecessor history while carrying its complete valid feature delta and the canonical dependency-owner repair in a stable successor branch.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
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. Comment |
| _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.
|
Exact-head Security RCA and RED→GREEN repair (2026-10-01): run |
Successor scope
Verified successor for #987 after its generator branch repeatedly replayed a stale snapshot and removed the canonical dependency-security owner changes.
64f00aed52e553afb22a4c2989144177b97921ca.23e481577af0283da512d9b2626ae27188245bdc.f6bcf169b22b73c3f9b2be267659d2eaf33e391d.9f030e97165841f70bef8e28c1d0ded536a13fc4.14bfb03cae613b6c4151dc8f614bfa3b9fe72164.Preserved contract
docs/product-technical-gap-baseline.md.RCA
Security run
36792861820, job110149569373, reported 12 findings at predecessor head64f00aed.... 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 job110153330809, found urllib3 2.7.0 affected by CVE-2026-97687/97688/97689. Test-first head9f030e97165841f70bef8e28c1d0ded536a13fc4adds the directurllib3>=2.8.0,<3.0floor, 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.