CVE-2022-1986

9.8 CRITICAL

📋 TL;DR

CVE-2022-1986 is an OS command injection vulnerability in Gogs (a self-hosted Git service) that allows attackers to execute arbitrary commands on the server. This affects all Gogs installations prior to version 0.12.9. Attackers can potentially gain full control of the server if they can reach the vulnerable endpoint.

💻 Affected Systems

Products:
  • Gogs (Go Git Service)
Versions: All versions prior to 0.12.9
Operating Systems: All platforms running Gogs
Default Config Vulnerable: ⚠️ Yes
Notes: All standard installations are vulnerable. No special configuration required for exploitation.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete server compromise leading to data theft, lateral movement, ransomware deployment, or persistent backdoor installation.

🟠

Likely Case

Unauthenticated remote code execution allowing attackers to execute arbitrary commands with the privileges of the Gogs process.

🟢

If Mitigated

Limited impact if proper network segmentation, least privilege, and input validation are in place.

🌐 Internet-Facing: HIGH - Gogs is often deployed as an internet-facing Git service, making it directly accessible to attackers.
🏢 Internal Only: MEDIUM - Internal deployments are still vulnerable to insider threats or compromised internal systems.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

The vulnerability is in the git hook functionality where user-controlled input is passed to shell commands without proper sanitization.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.12.9 and later

Vendor Advisory: https://github.com/gogs/gogs/commit/38aff73251cc46ced96dd608dab6190415032a82

Restart Required: Yes

Instructions:

1. Backup your Gogs data and configuration. 2. Stop the Gogs service. 3. Update to version 0.12.9 or later using your package manager or by downloading from GitHub. 4. Restart the Gogs service. 5. Verify the update was successful.

🔧 Temporary Workarounds

Network Access Control

linux

Restrict network access to Gogs to only trusted IP addresses or networks.

# Example iptables rule to restrict access
iptables -A INPUT -p tcp --dport 3000 -s TRUSTED_IP -j ACCEPT
iptables -A INPUT -p tcp --dport 3000 -j DROP

Disable Git Hooks

all

Disable or restrict git hook functionality if not required.

# Modify Gogs configuration to disable hooks
# In custom/conf/app.ini set:
[repository]
DISABLE_GIT_HOOKS = true

🧯 If You Can't Patch

  • Implement strict network segmentation and firewall rules to limit access to Gogs
  • Run Gogs with minimal privileges using a dedicated non-root user account

🔍 How to Verify

Check if Vulnerable:

Check if your Gogs version is below 0.12.9. The vulnerability exists in all versions prior to this.

Check Version:

gogs --version or check the version in the Gogs web interface under Settings -> About

Verify Fix Applied:

Verify that Gogs version is 0.12.9 or higher and that the patch commit 38aff73251cc46ced96dd608dab6190415032a82 is applied.

📡 Detection & Monitoring

Log Indicators:

  • Unusual git hook executions
  • Suspicious command execution patterns in system logs
  • Failed authentication attempts followed by successful exploitation

Network Indicators:

  • Unusual outbound connections from Gogs server
  • Suspicious payloads in HTTP requests to git hook endpoints

SIEM Query:

source="gogs.log" AND ("git hook" OR "exec" OR "command injection")

🔗 References

📤 Share & Export