Strona główna / Blog / ManageEngine DDI: trust transitivity

Blog · analiza

ManageEngine DDI Central: kiedy trust relationship mnoży blast radius

28 września 2026 opublikowano CVE-2026-12269 w ManageEngine DDI Central — na pierwszy rzut oka klasyczny High (authenticated operator → Keepalived config injection → root RCE, fix 6201). Ale DDI Central zarządza DNS, DHCP, IPAM, agentami, urządzeniami Cisco IOS i BIND — więc impact przechodzi DDI → management credential/agent → managed infrastructure. W zestawieniu z CVE-2026-95646 i CVE-2026-95651 widać wspólny temat: management plane dziedziczy krytyczność od systemów, którymi zarządza.

CVE-2026-12269 (fix 6201): authenticated operator → Keepalived config injection → root na hoście DDI. Vendor poprawił sanitization oraz authorization boundary (endpoint admin-only).
CVE-2026-95646 (fix 6500): Unicode U+2028 przechodzi walidację DDI, ale Cisco IOS traktuje go jako command separator → dodatkowa komenda na routerze.
CVE-2026-95651 (fix 6500): unauth endpoint GSS-TSIG → podmiana aktywnego keytab BIND + reload. Vendor NIE potwierdził arbitrary DNS updates — nie zakładaj tego.

Second interpreter problem (CVE-2026-95646)

cluster-scoped DHCP operator -> crafted Unicode value (U+2028) in client_name -> DDI stores value -> DDI generates Cisco IOS config -> Cisco IOS interprets U+2028 as command separator -> extra IOS command executes on the router

Pierwszy interpreter (walidacja DDI) widzi wartość jako dozwolony tekst; drugi (Cisco IOS CLI) interpretuje ten sam znak jako separator komend. To klasyczny validator semantics != execution semantics — jak parser differential, shell escaping czy SQL quoting mismatch. Security review musi uwzględniać język systemu docelowego, nie tylko aplikację wejściową. Podatna aplikacja nie wykonuje finalnej komendy na sobie — robi to zarządzane urządzenie sieciowe.

Identity material compromise (CVE-2026-95651)

Nieuwierzytelniony klient sieciowy mógł przez endpoint keytab update podmienić aktywny keytab BIND (GSS-TSIG) i wywołać reload. To nie zwykły config bug: security-sensitive klucz Kerberos zostaje zastąpiony, legalne secure dynamic DNS auth może zostać zakłócone, a attacker-controlled key trafia do mechanizmu. Ważna dyscyplina VE: vendor nie wykazał arbitrary DNS updates, więc nie piszemy „unauth attacker takes over DNS” bez dowodu — potwierdzony impact (kompromitacja materiału tożsamości) i tak jest poważny.

Blast radius = graf zaufania, nie CMDB label

CMDB powie „DDI Central = infrastructure management server” — to za mało. Trzeba wiedzieć: ile węzłów DNS/DHCP zarządza, że wypycha komendy Cisco IOS, że przechowuje credentiale i relacje usług. CVSS nie modeluje całej transitivity: realny impact 95646 zależy od uprawnień konta Cisco używanego przez DDI (service credential scope → blast radius). Remediacja ma dwa obiekty: source vulnerability + downstream side effects — upgrade DDI do 6500 blokuje nowe injection, ale nie cofa zmiany już wykonanej na Cisco IOS (jak webshell po RCE, skradziony token, zatruty cache). Inventory musi obejmować Console i wszystkich Agentów (Linux/Windows) oraz managed targets (Cisco IOS, BIND GSS-TSIG), a weryfikacja po patchu — także authorization (czy operator nadal wchodzi w endpoint admin-only, czy unauth endpoint agenta odrzuca request).

Powiązane na blogu

Źródła

Nota redakcyjna: stan informacji 29 września 2026, na podstawie publicznych advisory ManageEngine. CVE-2026-12269 opublikowane 28.09; CVE-2026-95646 i CVE-2026-95651 naprawione w Build 6500 (użyte jako powiązane przykłady trust transitivity). Artykuł nie przypisuje CVE-2026-95651 możliwości arbitrary DNS update, której vendor nie potwierdził.

Zapamiętaj jedno

Vulnerability Management często pyta „na jakim hoście jest CVE?” — w systemach zarządzających lepsze pytanie brzmi „na jakie inne systemy ten host ma prawo oddziaływać?”. Management plane jest multiplikatorem: remediacja musi objąć źródłową podatność i jej downstream side effects (komenda na routerze, podmieniony keytab), bo patch hosta ich nie cofa.