CVE-2012-0787: Low severity red hat enterprise linux vulnerability
Augeas is a configuration management API that represents the contents of config files as a tree in memory for editing, with the edits being written back to the actual file. By default it loads files it understands in a large number of standard system locations (/etc, /boot), but can also open files in a user specified location [1],[2].
It has two save modes of interest, "backup" that keeps the original in PATH.augorig and "newfile" that leaves the file alone, but writes the edited version to PATH.augnew. These can be set via the API [3] or --backup/--new with augtool (CLI tool around the API).
A flaw was found in the current 0.10.0 version and most previous versions. It requires that the directory containing the file to be edited is writable by another user, so this needs the user to explicitly open a file in another location or for a file in a default location to be in a group/world writable directory.
This attack hinges on behaviour to support writing to a bind mount (ticket #32 gives some history [4] relating to oVirt?) when doing the rename fails with EBUSY or EXDEV. Augeas instead opens the file and writes straight into it, see transform.c in clonefile when copyifrenamefails is set from transformsave.
In two of the three, copyifrenamefails is only set if the node /augeas/save/copyifrenamefails is created by the user to enable the behaviour [4]. I think there are three ways to exploit this code.
1) with --backup
When creating PATH.augsave, copyifrenamefails is always set to 1. A bind mount of a single file (or FUSE, enabling non-privileged attacks?) at PATH.augsave would cause the file contents to be written to the bind mounted file.
2) with --new and /augeas/save/copyifrenamefails
As above, but create bind mount at PATH.augnew.
3) with --backup and /augeas/save/copyifrenamefails
Augeas first moves PATH to PATH.augsave for the backup, then renames PATH.augnew to PATH. There's a tiny window in which a bind mount could be created at PATH, so the file contents are written to the bind mounted file.
[1] http://augeas.net/page/Loadingspecificfiles [2] https://github.com/raphink/augeas-sandbox/blob/master/augload [3] http://augeas.net/docs/api.html#saving-the-tree [4] https://fedorahosted.org/augeas/ticket/32
Other sources
The clonefile function in transfer.c in Augeas before 1.0.0, when copyifrenamefails is set and EXDEV or EBUSY is returned by the rename function, allows local users to overwrite arbitrary files and obtain sensitive information via a bind mount on the (1) .augsave or (2) destination file when using the backup save option, or (3) .augnew file when using the newfile save option.
— MITRE
Affected Software
Remediation
Patch Available
Event History
Frequently Asked Questions
What is the severity of CVE-2012-0787?
CVE-2012-0787 is classified as a moderate severity vulnerability.
How do I fix CVE-2012-0787?
To fix CVE-2012-0787, upgrade Augeas to version 1.0.0 or higher.
What software is affected by CVE-2012-0787?
CVE-2012-0787 affects Augeas versions up to and including 0.9.0 and certain versions of Red Hat Enterprise Linux.
Can CVE-2012-0787 lead to unauthorized access?
Yes, CVE-2012-0787 could potentially allow unauthorized access to sensitive configurations.
What are common mitigations for CVE-2012-0787?
Common mitigations include updating to the latest version of Augeas and reviewing file permissions for sensitive configuration files.