Kritická a závažné zraniteľnosti OpenPLC
Kyberbezpečnostná jednotka Talos spoločnosti Cisco zverejnila podrobnosti o viacerých opravených zraniteľnostiach v programovateľnom logickom ovládači OpenPLC, ktoré možno zneužiť pri útokoch DoS a na vzdialené vykonávanie kódu.
Zraniteľné systémy:
- OpenPLC _v3 b4702061dc14d1024856f71b4543298d77007b88
- OpenPLC _v3 16bf8bac1a36d95b73e7b8722d0edb8b9c5bb56a
Opis činnosti:
CVE-2024-34026 (CVSS skóre 9,8)
Kritická zraniteľnosť označená ako CVE-2024-34026 sa nachádza v parseri EtherNet/IP prostredia OpenPLC Runtime (verzia OpenPLV_v3 b4702061dc14d1024856f71b4543298d77007b88). Chyba spočíva v nedostatočnej kontrole veľkosti alokovanej pamäte pre uloženie záznamu o požiadavke, čo vedie k možnosti spôsobiť pretečenie zásobníka. Útočník môže odoslať špeciálne vytvorenú sériu požiadaviek EtherNet/IP, a tak získať schopnosť vzdialene vykonávať kód.
CVE-2024-36980, CVE-2024-36981, CVE-2024-39589, CVE-2024-39590 (CVSS skóre 7,5)
Zraniteľnosti sa nachádzajú v parseri EtherNet/IP PCCC prostredia OpenPLC Runtime. Odoslaním špeciálne vytvorených požiadaviek EtherNet/IP môže útočník spôsobiť odmietnutie služby (DoS).
- CVE-2024-36980 a CVE-2024-36981 (OpenPLC _v3 b4702061dc14d1024856f71b4543298d77007b88) umožňujú čítanie mimo povolený rozsah pamäte.
- CVE-2024-39589 a CVE-2024-39590 (OpenPLC _v3 16bf8bac1a36d95b73e7b8722d0edb8b9c5bb56a) súvisia s nesprávnou dereferenciou ukazovateľa.
Možné škody:
- Nedostupnosť služby (DoS)
- Vzdialené vykonávanie kódu
Odporúčania:
Bezodkladná aktualizácia na najnovšiu verziu OpenPLC.
Pokiaľ nemôžete aktualizovať na najnovšiu verziu, Cisco Talos odporúča pre zraniteľnosti CVE-2024-36981 a CVE-2024-36980 upraviť zdrojový kód tak, aby sa v dotknutom porovnávaní typ -1 zmenil na zodpovedajúci typ.uint16_t newPcccSize = processPCCCMessage(pcccData, currentPcccSize);
if (newPcccSize == (uint16_t) -1)
return -1;
Pre zmiernenie zraniteľností CVE-2024-39589 a CVE-2024-39590 upravte zdrojový kód tak, aby ste odstránili tri pretypovania ukazovateľov vo volaniach Protected_Logical_Write_Reply memmove.
memmove(&buffer[0], header.RP_CMD_Code, 1);
memmove(&buffer[1], header.HD_Status, 1);
memmove(&buffer[2], header.HD_TransactionNum, 2);
Odkazy:
- https://www.securityweek.com/remote-code-execution-dos-vulnerabilities-patched-in-openplc/
- https://nvd.nist.gov/vuln/detail/CVE-2024-34026
- https://talosintelligence.com/vulnerability_reports/TALOS-2024-2005
- https://talosintelligence.com/vulnerability_reports/TALOS-2024-2004
- https://talosintelligence.com/vulnerability_reports/TALOS-2024-2016