GHSA-7xw9-549r-8jrc json
DIRAC: SQL injection and lack of access control in PilotManager service
published 4mo ago modified 3d ago
- cvss
- 8.5
- version 3.1, GitHub
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
### Details A number of the functions in PilotManager pass parameters directly through to the database layer, which then does not do any escaping on the parameters. For example setPilotStatus: https://github.com/DIRACGrid/DIRAC/blob/1738e7c6d2f31d26f1364255d9d2e87b4896c922/src/DIRAC/WorkloadManagementSystem/Service/PilotManagerHandler.py#L343-L349
https://github.com/DIRACGrid/DIRAC/blob/1738e7c6d2f31d26f1364255d9d2e87b4896c922/src/DIRAC/WorkloadManagementSystem/DB/PilotAgentsDB.py#L117
This won't accept multiple statements separated by a semicolon, but a carefully crafted set of parameters containing SQL escapes would likely be able to change or return other database entries.
Further to this, the PilotManager access control is only set to "authenticated"; this allows these functions to be called by any user. This allows any user to manage (e.g. delete, read output of) any pilot pilot job: https://github.com/DIRACGrid/DIRAC/blob/1738e7c6d2f31d26f1364255d9d2e87b4896c922/src/DIRAC/WorkloadManagementSystem/ConfigTemplate.cfg#L111-L118
This is fixed by changing the SQL statements to use proper parameter substitution and providing a suitable set of access rules for the exported pilot management functions.
### Patched versions: https://pypi.org/project/DIRAC/8.0.79/ https://pypi.org/project/DIRAC/9.0.22/ https://pypi.org/project/DIRAC/9.1.10/
Patch / fix
- pypi dirac 8.0.79, 9.0.22, 9.1.10
Is GHSA-7xw9-549r-8jrc in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerCVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| GitHub | 3.1 | 8.5 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | dirac | >=6, <8.0.79 >=8.1.0a1, <9.0.22 >=9.1.0, <9.1.10 |
8.0.79 9.0.22 9.1.10 |
Classification
References
-
github.com
/DIRACGrid/DIRAC/commit/8731de576cf96826dbbf505508526ada31efb927
web
-
github.com
/DIRACGrid/DIRAC/commit/f67f754d4eef5bf40a8223dab77cf2591808031f
web
-
github.com
/DIRACGrid/DIRAC/security/advisories/GHSA-7xw9-549r-8jrc
web
-
github.com
/DIRACGrid/DIRAC
package
-
pypi.org
/project/DIRAC/8.0.79
web
-
pypi.org
/project/DIRAC/9.0.22
web
-
pypi.org
/project/DIRAC/9.1.10
web
Sources
- GitHub Advisory GHSA-7xw9-549r-8jrc
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.