Difference between revisions of "Vulnerability Remediation"
(Created page with "= Lingoport's Response to Major Software Vulnerabilities = == Apache Log4j Security Vulnerabilities == A major security vulnerability allowing for remote code execution on a...") |
|||
| Line 27: | Line 27: | ||
2. Replace other log4j instances on your system with 2.15 |
2. Replace other log4j instances on your system with 2.15 |
||
| − | The following script will |
+ | The following script will replace vulnerable log4j libraries with 2.15. It searches all of /var /tomcat /home /opt /lib for the vulnerable libraries, and replace any that are found. |
| + | |||
| + | <pre> |
||
| + | #!/bin/bash |
||
| + | |||
| + | strip_version() { |
||
| + | target="$1" |
||
| + | echo "$target" | sed -E 's|-[0-9.]+.jar|-|' |
||
| + | } |
||
| + | |||
| + | if [[ ! -d /tmp/apache-log4j-2.15.0-bin/ ]] ; then |
||
| + | echo >&2 "Please retrieve apache log4j 2.15 and unzip it in /tmp before running this script" |
||
| + | exit 1 |
||
| + | fi |
||
| + | |||
| + | while read -r log4j_jar ; do |
||
| + | if [[ -z "$log4j_jar" ]] ; then |
||
| + | continue |
||
| + | fi |
||
| + | if [[ "$log4j_jar" == *"-2.15"* ]] ; then |
||
| + | echo "Up to date: $log4j_jar" |
||
| + | continue |
||
| + | fi |
||
| + | if [[ "$log4j_jar" == *"-1."* ]] ; then |
||
| + | echo "1.x - safe: $log4j_jar" |
||
| + | continue |
||
| + | fi |
||
| + | if unzip -l "$log4j_jar" | grep -q JndiLookup.class ; then |
||
| + | echo "$log4j_jar" |
||
| + | while read -r replace_target ; do |
||
| + | user_group="$(stat -c "%U:%G" "$replace_target")" |
||
| + | without_version="$(strip_version "$replace_target")" |
||
| + | patched_jar="$(basename "$without_version")2.15.0.jar" |
||
| + | echo "$replace_target - $perms - $without_version - $patched_jar" |
||
| + | set -x |
||
| + | cp /tmp/apache-log4j-2.15.0-bin/"$patched_jar" "$(dirname "$replace_target")" |
||
| + | chown "$user_group" "$(dirname "$replace_target")/$patched_jar" |
||
| + | mv "$replace_target" "$replace_target.orig.vulnerable" |
||
| + | set +x |
||
| + | done <<< "$(find "$(dirname "$log4j_jar")" -name "log4j*")" |
||
| + | #cp "$log4j_jar" "$log4j_jar.orig.vulnerable" |
||
| + | #zip -q -d "$log4j_jar" org/apache/logging/log4j/core/lookup/JndiLookup.class |
||
| + | fi |
||
| + | done <<< "$(find / '(' -path '/var*' -o -path '/tomcat*' -o -path '/home*' -o -path '/opt*' -o -path '/lib*' ')' -name 'log4j*.jar')" |
||
| + | |||
| + | </pre> |
||
Revision as of 20:39, 11 December 2021
Contents
Lingoport's Response to Major Software Vulnerabilities
Apache Log4j Security Vulnerabilities
A major security vulnerability allowing for remote code execution on affected systems.
See: https://logging.apache.org/log4j/2.x/security.html
Lingoport Response
Pending further action, Lingoport has shut down all non-critical systems.
Critical systems have been patched to remove all copies of log4j 2.x with log4j 2.15 followed by a hard reboot.
For Lingoport Clients
The below scripts may be used in conjunction to replace all log4j 2.x with log4j 2.15.
1. Retrieve log4j 2.15:
cd /tmp/ curl -O https://dlcdn.apache.org/logging/log4j/2.15.0/apache-log4j-2.15.0-bin.zip unzip apache-log4j-2.15.0-bin.zip
2. Replace other log4j instances on your system with 2.15
The following script will replace vulnerable log4j libraries with 2.15. It searches all of /var /tomcat /home /opt /lib for the vulnerable libraries, and replace any that are found.
#!/bin/bash
strip_version() {
target="$1"
echo "$target" | sed -E 's|-[0-9.]+.jar|-|'
}
if [[ ! -d /tmp/apache-log4j-2.15.0-bin/ ]] ; then
echo >&2 "Please retrieve apache log4j 2.15 and unzip it in /tmp before running this script"
exit 1
fi
while read -r log4j_jar ; do
if [[ -z "$log4j_jar" ]] ; then
continue
fi
if [[ "$log4j_jar" == *"-2.15"* ]] ; then
echo "Up to date: $log4j_jar"
continue
fi
if [[ "$log4j_jar" == *"-1."* ]] ; then
echo "1.x - safe: $log4j_jar"
continue
fi
if unzip -l "$log4j_jar" | grep -q JndiLookup.class ; then
echo "$log4j_jar"
while read -r replace_target ; do
user_group="$(stat -c "%U:%G" "$replace_target")"
without_version="$(strip_version "$replace_target")"
patched_jar="$(basename "$without_version")2.15.0.jar"
echo "$replace_target - $perms - $without_version - $patched_jar"
set -x
cp /tmp/apache-log4j-2.15.0-bin/"$patched_jar" "$(dirname "$replace_target")"
chown "$user_group" "$(dirname "$replace_target")/$patched_jar"
mv "$replace_target" "$replace_target.orig.vulnerable"
set +x
done <<< "$(find "$(dirname "$log4j_jar")" -name "log4j*")"
#cp "$log4j_jar" "$log4j_jar.orig.vulnerable"
#zip -q -d "$log4j_jar" org/apache/logging/log4j/core/lookup/JndiLookup.class
fi
done <<< "$(find / '(' -path '/var*' -o -path '/tomcat*' -o -path '/home*' -o -path '/opt*' -o -path '/lib*' ')' -name 'log4j*.jar')"