Summary
PUT /api/products/:id permits product mutation without valid administrator authorization.
- Severity: High
- Environment: Local Docker
eshop-sut-backend-1
- HW06 Pool: Pool C / FR-15
- Failed cases: 16 cases under
PC-F-AUTH-001
Preconditions
Disposable product 101 exists with a recorded SQLite baseline. No valid administrator JWT is supplied for the representative case.
Steps to reproduce
- Record product 101's restricted SQLite baseline.
- Send
PUT /api/products/101 with a valid update body but no Authorization header.
- Record the response.
- Inspect only product 101 through the restricted SQLite snapshot.
Expected result
Reject with a 4xx authentication/authorization response and preserve every product. Exact status/body is unspecified.
Actual result
FR15-DOM-008 returned HTTP 200 with {"message":"Product updated"}, and product 101 stored the submitted values. Fifteen token, role, scheme, and duplicate-header variants produced the same unauthorized mutation.
Impact
Anonymous or non-admin callers can change catalog names, prices, images, descriptions, and categories.
Evidence
23127379_Homework/HW6/Pool-C_FR15_Update_Product/postman/newman/Pool-C_FR15_report.json
23127379_Homework/HW6/Pool-C_FR15_Update_Product/postman/newman/Pool-C_FR15_report.html
23127379_Homework/HW6/Pool-C_FR15_Update_Product/evidence/Pool-C_FR15_per-case-state.json
- Screenshot generated from the
FR15-DOM-008 failure with MSSV 23127379.
Requirement sources: README FR-12, SEC-02, SEC-03
Suggested labels: bug, security, authorization, authentication, data-integrity, FR-15, api
Summary
PUT /api/products/:idpermits product mutation without valid administrator authorization.eshop-sut-backend-1PC-F-AUTH-001Preconditions
Disposable product 101 exists with a recorded SQLite baseline. No valid administrator JWT is supplied for the representative case.
Steps to reproduce
PUT /api/products/101with a valid update body but noAuthorizationheader.Expected result
Reject with a 4xx authentication/authorization response and preserve every product. Exact status/body is unspecified.
Actual result
FR15-DOM-008returned HTTP 200 with{"message":"Product updated"}, and product 101 stored the submitted values. Fifteen token, role, scheme, and duplicate-header variants produced the same unauthorized mutation.Impact
Anonymous or non-admin callers can change catalog names, prices, images, descriptions, and categories.
Evidence
23127379_Homework/HW6/Pool-C_FR15_Update_Product/postman/newman/Pool-C_FR15_report.json23127379_Homework/HW6/Pool-C_FR15_Update_Product/postman/newman/Pool-C_FR15_report.html23127379_Homework/HW6/Pool-C_FR15_Update_Product/evidence/Pool-C_FR15_per-case-state.jsonFR15-DOM-008failure with MSSV23127379.Requirement sources: README FR-12, SEC-02, SEC-03
Suggested labels:
bug,security,authorization,authentication,data-integrity,FR-15,api