programming, Vulnerabilities_and_Bugs

Kriittinen Intel AMT haavoittuvuus (etähallinta)

Haavoittuvuuden tunniste

Sisäisesti Intel kutsuu bugia “INTEL-SA-00075”. Kansainvälisesti se on tunnettu nimellä CVE-2017-5689

Millainen bugi on kyseessä?

Huonosti toteutettu osa Intel AMT -etähallintajärjestelmässä, joka kohdistuu pääkäyttäjän salasanan tarkistukseen, tekee järjestelmän käytännössä täysin turvattomaksi: salasanaksi riittää pelkkä tyhjä (“ei mitään”). Tämä koskee tietokoneita, joissa on jokin alla olevaista Intelin AMT firmwaren versio:

  • 6.x
  • 7.x
  • 8.x
  • 9.x
  • 10.x
  • 11.0
  • 11.5
  • 11.6

Jos hyökkääjä pääsee samaan sisäverkkoon, missä tietokone sijaitsee, hän voi ottaa yhteyttä pieneen AMT:n sisäiseen web-serveriin, ja avata täydet oikeudet antavan etäyhteyden. Tämän myötä hyökkääjä omistaa koneen käytännössä täysin, loogisella tasolla: hyökkääjä voi asentaa ja poistaa ohjelmia, päättää mitä koodia ajetaan ennen koneen käyttöjärjestelmän käynnistymistä; jne. Hyökkääjä voi myös asentaa esimerkiksi uusia etähallintatyökaluja (takaovia, rootkittejä).

Pieni virhe firmware-koodissa: suuri vaikutus

Ongelman ydin on yhdessä merkkijonon sisältöä vertaavassa
komennossa. Merkkijonoa verrataan C-kielen ‘strncmp’ funktiota vastaavalla rakenteella. Koodi ottaa 3 parametria: kaksi merkkijonoa, ja kokonaisluvun. Ohjelmoija on valinnut väärin kolmannen parametrin, jolloin verrattavien merkkien määrä otetaankin yritteen pituudesta, ei oikean asetetun salasanan pituudesta.

Kyseinen kohta koodissa vertaa sisäänkirjautuvan käyttäjän antamaa salasanaehdotetta oikeaan, tunnettuun salasanaan. Kokonaisluvun tehtävänä on rajoittaa vertailun pituutta: toisinsanoen jos esimerkiksi N=2, verrataan vain 2 ensimmäistä merkkiä, riippumatta olisiko oikea salasana pidempi.

Tällä on kahdenlaisia vaikutuksia:

  • vakavampi vaikutus on, että myös tyhjä salasanayrite päästää sisään
  • sivuvaikutuksena saatta olla, että oikean asetetun salasanan vahvuus heikkenee sanakirjahyökkäys-tyyppisissä skenarioissa

 

javascript, programming, webdevelopment

Miksi React? Mitä se tarjoaa?

React, kuten mikä tahansa kirjasto tai kehikko, tarvitsee hissipalopuheen. Joskus valinta saattaa yksinkertaisesti hoitua kauniisti sanoen “automaagisesti”, eli projektissa on jo
valittu teknologia(t), tai et ole se, joka päättää arkkitehtuurista.

Joka tapauksessa JavaScript/web-devaus -maailma on täynnä teknologioita, ähkyyn asti, joten uuden esittelyyn ja suosion saavuttamiseen usein halutaan tiivistetty kuvaus.

Reactin avainpointit

  • paino fronttikehityksessä (“View” MVC:stä)
  • nopea (mm. virtuaali-DOM)
  • React on suosittu, taustalla iso talo
  • avointa lähdekoodia täysin
  • modulaarinen

Haemme hieman työkalujen valinnassa samaa, kuin maanviljelijä leikkuupuimurista: ei haittaa, jos laite on hieman monimutkainen, kunhan se tekee itse työnsä tehokkaasti. Toisaalta, Occamin periaate eli Occamin partaveitsi, jota myös noudatetaan usein teknologian kanssa, kuuluu: ‘kilpailevista, yhtä selitysvoimaisista teorioista tulisi valita yksinkertaisin.’ Jos kaksi teknologiaa ajavat saman asian, ota yksinkertaisempi.

Ennenwanhaan varsinkin näillä asioilla oli paljon merkitystä: oli turha pitää ylimääräisiä kilo- tai megatavuja tuotteessa, koska sen levitys (käytettiinpä levykkeitä tai Internetiä), oli aina kalliimpaa mitä enemmän tuotteella oli kokoa. Nykypäivänä rajoitus on löytänyt muotonsa lähinnä tuotteen turhan kompleksisuuden karsimisessa siksi, että kehittäjien pää täyttyy liiasta monimutkaisuudesta ja näin heikentää työtehoa. Toinen asia, jolla vielä kuitenkin on merkitystä, on mobiiliverkkojen rajoitettu nopeus (kaistanleveys): kannattaa pitää Javascript-tiedostot vaikkapa 100 -kilotavuisena, kuin antaa niiden kasvaa 2000 kilotavuun puhtaasti välinpitämättömyydestä.

Seuraavassa, osassa 3, aletaan rakentaa esimerkkiä.