timja / jenkins-gh-issues-poc-06-18

0 stars 0 forks source link

[JENKINS-41516] Groovy script console actions should be logged #3817

Open timja opened 7 years ago

timja commented 7 years ago

The Groovy script console (/script) does not log actions to the Jenkins log. The actions do not appear to be logged to the system anywhere. This allows an attacker or inside actor to perform actions against a Jenkins server via Groovy script console with no trail of what was done. In our case we had a misconfigured test Jenkins server which allowed open access to /script. Someone injected a bitcoin mining script via the Groovy script console which we found as a running process on the system. There was no log of this event in Jenkins. Now the misconfiguration of our test server was a big mistake but not having logs as a way to audit the specific actions that were performed is a big mistake on the part of Jenkins core which can amplify a user's mistake.


Originally reported by fromonesrc, imported from: Groovy script console actions should be logged
  • assignee: danielbeck
  • status: Open
  • priority: Major
  • resolution: Unresolved
  • imported: 2022/01/10
timja commented 7 years ago

rtyler:

the WEBSITE project pertains to documentation and jenkins.io, please use the JENKINS project in JIRA for tickets such as this.

timja commented 7 years ago

fromonesrc:

Sorry, I don't know how that was set. When I tried to change it after the fact I didn't see a way to edit. Thanks for fixing.

timja commented 7 years ago

danielbeck:

Now the misconfiguration of our test server was a big mistake but not having logs as a way to audit the specific actions that were performed is a big mistake on the part of Jenkins core which can amplify a user's mistake.

While it would be a useful improvement to log script console messages, this would not fix a lot in your situation: Script console access allows an attacker to (mostly) trivially wipe all traces of their attack: It's not just "run any program", but, as it runs inside the Jenkins process, can just wipe all logging related to these actions (including making private fields accessible etc. to achieve this).

Unless there's an external append-only log of sorts configured, no improvements here are likely to substantially improve the situation. And once you need an admin to take action to protect themselves, it's easier to secure Jenkins properly.

timja commented 7 years ago

fromonesrc:

With a proper external log shipping setup, log wiping becomes less of a concern. Yes, securing Jenkins is very important but that is not the only reason to implement logging on script console. My particular case of our unsecured test Jenkins instance was simply to illustrate one of many legitimate cases where logging the console script actions is important. Not just to investigate malicious activity but troubleshooting Jenkins problems or auditing for internal control purposes.

timja commented 2 years ago

[Originally duplicated by: JENKINS-62397]