[AAA-240] SQL injection in the aaa-idm-store-h2 (deleteDomain function) Created: 16/Nov/22  Updated: 03/Dec/22  Due: 30/Nov/22  Resolved: 16/Nov/22

Status: Resolved
Project: aaa
Component/s: None
Affects Version/s: 0.15.0, 0.16.0, 0.15.6, 0.16.4
Fix Version/s: 0.17.0, 0.16.5, 0.15.8

Type: Bug Priority: Low
Reporter: Han Chunyang Assignee: Robert Varga
Resolution: Done Votes: 0
Labels: security
Remaining Estimate: 4 days
Time Spent: Not Specified
Original Estimate: 2 weeks
Environment:

ubuntu20.04, aaa version 0.17.0



 Description   

Hello,

I am writing to report a vulnerability in one of the components of Opendaylight, aaa.

With this bug, attackers can SQL inject the component's database(SQLite).

The bug is in /aaa-idm-store-h2/src/main/java/org/opendaylight/aaa/datastore/h2/DomainStore.java (deleteDomain function).

As we can see, the aaa concats domainid information to build a delete SQL query, and it executes the query in SQLite.

However, in line 197, the domainid(escaped) is a string. If the user calls the api interface /auth/v1/domains/ to add a malicious domain, and then calls the deleteDomain function to delete the domain, it will cause SQL injection.

For example, he can call the api interface /auth/v1/domains/ with POST method, it will call the createDomain function to add a domain. If the domain name is:

' or 1=1--+

Then call the api interface /auth/v1/domains/' or 1=1--+ with DELETE method, it will call the deleteDomain function to delete the domain. And the SQL query is:

DELETE FROM AAA_DOMAINS WHERE domainid = ‘’ or 1=1—+’

And all the elements in the AAA_DOMAINS table are removed due to this malicious query.

Please consider fixing this security vulnerability as soon as possible.

 

Best wishes,

Chunyang Han



 Comments   
Comment by Robert Varga [ 16/Nov/22 ]

Thanks for the report, https://git.opendaylight.org/gerrit/c/aaa/+/103242 should take care of this.

Generated at Wed Feb 07 19:09:00 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.