Closed intesar closed 4 years ago
Message : This issue is manually closed from FX control plane.
Title: ABAC_Level1 Vulnerability on DELETE:/api/v1/transfers/{id} Project: NetBanking API Description:
Assertion Name: Attribute Based Access Control 1 (ABAC) ( 1 )
Title: ABAC_Level1 Vulnerability on DELETE:/api/v1/transfers/{id} Project: NetBanking API Description: The ABAC exploit allows an attacker to read, modify, delete, add and perform actions on customer/un-authorized data.
Assertion Name: Attribute Based Access Control 1 (ABAC) ( 1 )Overview: Access Control (or Authorization) is the process of granting or denying specific requests from a user, program, or process. Access control also involves the act of granting and revoking those privileges. Attribute Based Access Control (ABAC) will grant or deny user requests based on arbitrary attributes of the user and arbitrary attributes of the object, and environment conditions that may be globally recognized and more relevant to the policies at hand.
'Attribute-based-access-control 1' identifies top-level/non-dependent resource/data/record vulnerabilities. Looks for private user/account data being illegally read, written, updated, deleted or operated by other users or tenants or accounts.
This scanner requires a private-account/user to create private data/resources e.g. UserA. And it also requires other users who shouldn't have any access to UserA's data like UserB, UserC, & UserD based on your App multi-tenancy model. e.g. UserA can be a user from tenant/org-a and UserB can be a user in tenant-b and UserC can be a user in tenant-c with admin privileges.
APIs tend to expose endpoints that handle object identifiers, creating a wide attack surface Level Access Control issue. Object-level authorization checks should be considered in every function that accesses a data source using input from the user.
Severity: OWASP 2019 API Top 10 ranks ABAC vulnerabilities at Top 1 position and is named Broken Object Level Authorization. ( 2 )
Vulnerability Impact: With flawed or broken ABAC security control policy in place, The following are some of the consequences.
Remediation: The following techniques may be checked for ensuring RBAC is in place ( 2 ) ( 3 ) ( 4 ).
Risk: ABAC_Level1 Severity: High API Endpoint: http://95.217.118.53:8080/api/v1/transfers/2c928084730547e801742af44bda570f Environment: Master Playbook: ApiV1TransfersIdDeleteUseraCreateTransfersUserbDisallowAbac Researcher: [apisec Bot] QUICK TIPS Suggestion: Add access-control checks on incoming requests against all data calls. Effort Estimate: 2.0 Wire Logs: 01:28:07 [D] [ TCUAIAbac] : URL [http://95.217.118.53:8080/api/v1/transfers] 01:28:07 [D] [ TCUAIAbac] : Method [POST] 01:28:07 [D] [ TCUAIAbac] : Auth [UserA] 01:28:07 [D] [ TCUAIAbac] : Request [{ "confirmed" : false, "createdBy" : "", "createdDate" : "", "description" : "3vB0IFtb", "id" : "", "inactive" : false, "location" : "3vB0IFtb", "modifiedBy" : "", "modifiedDate" : "", "transactionType" : "CHECK", "version" : "" }] 01:28:07 [D] [ TCUAIAbac] : Request-Headers [{Content-Type=[application/json], Accept=[application/json], Authorization=[**********]}] 01:28:07 [D] [ TCUAIAbac] : Response [{ "requestId" : "None", "requestTime" : "2020-08-26T13:28:07.387+0000", "errors" : false, "messages" : [ ], "data" : { "id" : "2c928084730547e801742af44bda570f", "createdBy" : "2c928085730548680173054c9f720003", "createdDate" : "2020-08-26T13:28:07.386+0000", "modifiedBy" : "2c928085730548680173054c9f720003", "modifiedDate" : "2020-08-26T13:28:07.386+0000", "version" : null, "inactive" : false, "location" : "gmVXssaV", "description" : "gmVXssaV", "confirmed" : false, "transactionType" : "CHECK" }, "totalPages" : 0, "totalElements" : 0 }] 01:28:07 [D] [ TCUAIAbac] : Response-Headers [{X-Content-Type-Options=[nosniff], X-XSS-Protection=[1; mode=block], Cache-Control=[no-cache, no-store, max-age=0, must-revalidate], Pragma=[no-cache], Expires=[0], X-Frame-Options=[DENY], Set-Cookie=[SESSION=MDIxNzlmYzAtNTYxMy00ZTVjLThiOTAtYzk5YTIyZjg4Mjgw; Path=/; HttpOnly], Content-Type=[application/json;charset=UTF-8], Transfer-Encoding=[chunked], Date=[Wed, 26 Aug 2020 13:28:06 GMT]}] 01:28:07 [D] [ TCUAIAbac] : StatusCode [200] 01:28:07 [D] [ TCUAIAbac] : Time [179] 01:28:07 [D] [ TCUAIAbac] : Size [485] 01:28:07 [I] [ TCUAIAbac] : Assertion [@StatusCode == 200 AND @Response.errors == false] resolved-to [200 == 200 AND false == false] result [Passed] 01:28:07 [D] [TCUAIAHeaders] : Headers [{X-Content-Type-Options=[nosniff], X-XSS-Protection=[1; mode=block], Cache-Control=[no-cache, no-store, max-age=0, must-revalidate], Pragma=[no-cache], Expires=[0], X-Frame-Options=[DENY], Set-Cookie=[SESSION=MDIxNzlmYzAtNTYxMy00ZTVjLThiOTAtYzk5YTIyZjg4Mjgw; Path=/; HttpOnly], Content-Type=[application/json;charset=UTF-8], Transfer-Encoding=[chunked], Date=[Wed, 26 Aug 2020 13:28:06 GMT]}] 01:28:07 [D] [TCUAIAHeaders] : Headers [{X-Content-Type-Options=[nosniff], X-XSS-Protection=[1; mode=block], Cache-Control=[no-cache, no-store, max-age=0, must-revalidate], Pragma=[no-cache], Expires=[0], X-Frame-Options=[DENY], Set-Cookie=[SESSION=MDIxNzlmYzAtNTYxMy00ZTVjLThiOTAtYzk5YTIyZjg4Mjgw; Path=/; HttpOnly], Content-Type=[application/json;charset=UTF-8], Transfer-Encoding=[chunked], Date=[Wed, 26 Aug 2020 13:28:06 GMT]}] 01:28:07 [D] [ TCUAIA]] : Headers [{X-Content-Type-Options=[nosniff], X-XSS-Protection=[1; mode=block], Cache-Control=[no-cache, no-store, max-age=0, must-revalidate], Pragma=[no-cache], Expires=[0], X-Frame-Options=[DENY], Set-Cookie=[SESSION=MDIxNzlmYzAtNTYxMy00ZTVjLThiOTAtYzk5YTIyZjg4Mjgw; Path=/; HttpOnly], Content-Type=[application/json;charset=UTF-8], Transfer-Encoding=[chunked], Date=[Wed, 26 Aug 2020 13:28:06 GMT]}] 01:28:07 [D] [ TCUAIA]] : Headers [{X-Content-Type-Options=[nosniff], X-XSS-Protection=[1; mode=block], Cache-Control=[no-cache, no-store, max-age=0, must-revalidate], Pragma=[no-cache], Expires=[0], X-Frame-Options=[DENY], Set-Cookie=[SESSION=MDIxNzlmYzAtNTYxMy00ZTVjLThiOTAtYzk5YTIyZjg4Mjgw; Path=/; HttpOnly], Content-Type=[application/json;charset=UTF-8], Transfer-Encoding=[chunked], Date=[Wed, 26 Aug 2020 13:28:06 GMT]}] 01:28:07 [D] [AVTIDUCTUDAbac] : URL [http://95.217.118.53:8080/api/v1/transfers/2c928084730547e801742af44bda570f] 01:28:07 [D] [AVTIDUCTUDAbac] : Method [DELETE] 01:28:07 [D] [AVTIDUCTUDAbac] : Auth [UserB] 01:28:07 [D] [AVTIDUCTUDAbac] : Request [] 01:28:07 [D] [AVTIDUCTUDAbac] : Request-Headers [{Accept=[application/json], Content-Type=[application/json], Authorization=[**********]}] 01:28:07 [D] [AVTIDUCTUDAbac] : Response [{ "requestId" : "None", "requestTime" : "2020-08-26T13:28:07.590+0000", "errors" : false, "messages" : [ ], "data" : null, "totalPages" : 0, "totalElements" : 0 }] 01:28:07 [D] [AVTIDUCTUDAbac] : Response-Headers [{X-Content-Type-Options=[nosniff], X-XSS-Protection=[1; mode=block], Cache-Control=[no-cache, no-store, max-age=0, must-revalidate], Pragma=[no-cache], Expires=[0], X-Frame-Options=[DENY], Set-Cookie=[SESSION=NjMxY2M4ZTQtNWNkNS00MmUzLTkwMzQtOGY2ZDdhNTJlZjQ2; Path=/; HttpOnly], Content-Type=[application/json;charset=UTF-8], Transfer-Encoding=[chunked], Date=[Wed, 26 Aug 2020 13:28:07 GMT]}] 01:28:07 [D] [AVTIDUCTUDAbac] : StatusCode [200] 01:28:07 [D] [AVTIDUCTUDAbac] : Time [199] 01:28:07 [D] [AVTIDUCTUDAbac] : Size [139] 01:28:07 [E] [AVTIDUCTUDAbac] : Assertion [@StatusCode == 401 OR @StatusCode == 404 OR @Response.errors == true] resolved-to [200 == 401 OR 200 == 404 OR false == true] result [Failed] 01:28:07 [D] [AVTIDTAAbac] : URL [http://95.217.118.53:8080/api/v1/transfers/2c928084730547e801742af44bda570f] 01:28:07 [D] [AVTIDTAAbac] : Method [DELETE] 01:28:07 [D] [AVTIDTAAbac] : Request [null] 01:28:07 [D] [AVTIDTAAbac] : Auth [UserA] 01:28:07 [D] [AVTIDTAAbac] : Request-Headers [{Content-Type=[application/json], Accept=[application/json], Authorization=[Basic dXNlcjFAbmV0YmFua2luZy5pbzphZG1pbjEyMyQ=]}] 01:28:07 [D] [AVTIDTAAbac] : Response [{ "requestId" : "None", "requestTime" : "2020-08-26T13:28:07.761+0000", "errors" : true, "messages" : [ { "type" : "ERROR", "key" : "", "value" : "No class com.fxlabs.issues.dao.entity.account.Transfers entity with id 2c928084730547e801742af44bda570f exists!" } ], "data" : null, "totalPages" : 0, "totalElements" : 0 }] 01:28:07 [D] [AVTIDTAAbac] : Response-Headers [{X-Content-Type-Options=[nosniff], X-XSS-Protection=[1; mode=block], Cache-Control=[no-cache, no-store, max-age=0, must-revalidate], Pragma=[no-cache], Expires=[0], X-Frame-Options=[DENY], Set-Cookie=[SESSION=YjMyYjIzMzEtNGNlZC00ZjI4LTkxZWItYWFiYmUyZjQ5N2I1; Path=/; HttpOnly], Content-Type=[application/json;charset=UTF-8], Transfer-Encoding=[chunked], Date=[Wed, 26 Aug 2020 13:28:07 GMT]}] 01:28:07 [D] [AVTIDTAAbac] : StatusCode [200] 01:28:07 [D] [AVTIDTAAbac] : Time [172] 01:28:07 [D] [AVTIDTAAbac] : Size [285] 01:28:07 [I] [AVTIDUCTUDAbac] : Assertion [@StatusCode == 200] resolved-to [200 == 200] result [Passed] IMPORTANT LINKS Vulnerability Details: https://cloud.fxlabs.io/#/app/projects/8a8081766fc3e2a1016fc421d6e55a13/recommendations/8a80819a74267adb01742af462d90540/details Project: https://cloud.fxlabs.io/#/app/projects/8a8081766fc3e2a1016fc421d6e55a13/jobs Environment: https://cloud.fxlabs.io/#/app/projects/8a8081766fc3e2a1016fc421d6e55a13/environments/8a8081766fc3e2a1016fc421d7155a15/edit Scan Dashboard: https://cloud.fxlabs.io/#/app/projects/8a8081766fc3e2a1016fc421d6e55a13/jobs/8a8081766fc3e2a1016fc4230f426628/runs/8a80819a74267adb01742af438eb04f6 Playbook: https://cloud.fxlabs.io/#/app/projects/8a8081766fc3e2a1016fc421d6e55a13/template/ApiV1TransfersIdDeleteUseraCreateTransfersUserbDisallowAbac Coverage: https://cloud.fxlabs.io/#/app/projects/8a8081766fc3e2a1016fc421d6e55a13/configuration Code Sample: https://cloud.fxlabs.io/#/app/projects/8a8081766fc3e2a1016fc421d6e55a13/recommendations/8a80819a74267adb01742af462d90540/codesamples PS: Please contact support@apisec.ai for apisec access and login issues. --- apisec Bot ---