On the GitHub blog, Kevin Backhouse writes
about a privilege escalation vulnerability in polkit, which
"enables an unprivileged local user to get a root shell on the
"is triggered by starting a dbus-send command but killing it while
polkit is still in the middle of processing the request. [...] Why does
killing the dbus-send command cause an authentication bypass? The
vulnerability is in step four of the sequence of events listed above. What
happens if polkit asks dbus-daemon for the UID of connection :1.96, but
connection :1.96 no longer exists? dbus-daemon handles that situation
correctly and returns an error. But it turns out that polkit does not
handle that error correctly. In fact, polkit mishandles the error in a
particularly unfortunate way: rather than rejecting the request, it treats
the request as though it came from a process with UID 0. In other words, it
immediately authorizes the request because it thinks the request has come
from a root process."
Recently, there has been a massive uptick in abuse of free pipeline minutes available on GitLab.com and on
other CI/CD providers to mine cryptocurrencies.
In addition to the cost increases, the abuse creates intermittent performance issues for GitLab.com users
and requires our teams to work 24/7 to maintain optimal services for our customers and users.
To discourage and reduce abuse, starting May 17, 2021, GitLab will require new free users to provide a valid credit or debit card number
in order to use shared runners on GitLab.com. A user will be able to run pipelines without providing a credit or debit card if they use their own runner and disable shared runners.
Although imperfect, we believe this solution will reduce the abuse.
We plan to rollout this change gradually and increase the scope if needed as follows:
Start with adding the new requirement for new free users created on or after May 17, 2021.
If we continue to see abuse through existing free accounts, we plan to extend the requirement to additional users.
This change does not currently impact any of the following users:
GitLab self-managed customers and users (free or otherwise)
When you provide the card, it will not be charged but instead will be verified with a one-dollar authorization transaction.
No charge will be made and no money will transfer.
A credit or debit card is one (of many) controls we have put in place to reduce abuse of our platform.
We will never fully solve platform abuse, but the more barriers we put up, the more difficult and expensive it becomes to engage in abuse.
The GitLab team members have already activated and shipped many improvements. These were helpful in deterring abuse, although are not sufficient.
A sampling of the fixes we have delivered to mitigate pipeline abuse include:
Fail creation of jobs when pipeline minutes quota is exceeded.
Fail pipelines after user exceeds pipeline minutes quota.
Adding restrictions to the creation of namespaces via the API.
Enabling the termination of pipelines when blocking a user.
Ensuring pipelines do not run when pipelines are owned by a blocked user.
Closing gaps in jobs running by user accounts deleted by users.
Ensuring scheduled pipelines don't run by blocked users.
We expect to make enhancements to harden our pipeline system against abuse.
We believe using pipeline minute quotas as the foundation for free minute usage will be the best mechanism for failing jobs and pipelines to stop abuse.
Including this effort, our other pipeline abuse improvements are below:
Include public projects in pipeline minutes quota for free users.
Expand application limits for preventing abuse of webhooks.
A user impacted by this change has the following options:
Provide a credit or debit card and use the 400 free minutes with shared runners.