Mikä on Koronavilkku?
”Koronavilkku on Terveyden ja hyvinvoinnin laitoksen tuottama sovellus, jonka avulla saat tiedon, jos olet sovelluksen arvion mukaan altistunut koronavirukselle. Jos sinulla todetaan tartunta, voit ilmoittaa siitä sovelluksella nimettömästi.”
https://koronavilkku.fi
Sovelluksen lähdekoodi on julkaistu avoimena, erityisesti riippumattoman arvioinnin helpottamiseksi.
Lisätietoja Koronavilkusta ja sen avoimesta lähdekoodista löytyy täältä.
Lähdekoodi on julkaistu GitHubissa:
- https://github.com/THLfi/koronavilkku-backend
- https://github.com/THLfi/koronavilkku-ios
- https://github.com/THLfi/koronavilkku-android
Miksi me teimme tämän?
Tämä sovellus koskettaa ihmisiä hyvin henkilökohtaisella tavalla — terveyttä, COVID-19:aa ja muita arkaluontoisia henkilötietojamme. Me Mint Securityssä halusimme tutustua sovellukseen ja kantaa kortemme kekoon, kuten monet muutkin tietoturvayhteisössä ovat jo tehneet. Halusimme tuoda keskusteluun lisäarvoa ja faktoja. Sattumoisin, Mint Securityllä ja Veracodella on pitkäaikainen suhde ja siksi päätimme lähestyä heitä asiassa. Veracode on suurin globaali sovellusturvallisuusratkaisujen (AppSec) tarjoaja — mukaan lukien SAST ja SCA — ja Gartner Magic Quadrant -johtaja tietoturvatestauksessa vuonna 2020 (seitsemäntenä vuotena peräkkäin). Veracode on antanut meille ystävällisesti mahdollisuuden käyttää SAST- ja SCA-työkalujaan Koronavilkun analysointiin. Tässä artikkelissa esittelemme analyysimme tulokset.
Me Mint Securityssä rakastamme kontekstia ja asiayhteys on tässäkin tapauksessa erittäin olennaista. Skannaus ja raportti koskevat sovelluksen koodia, mutta myös prosessia. Suojatun koodin kehittäminen ja turvallinen kehittäminen ei ole vain kertaluonteinen operaatio. Tästä syystä Mint Security ja Veracode ovat Koronavilkku-kehitystiimin käytettävissä skannauspyyntöihin myös jatkossa.
Johtopäätökset
Koronavilkku-sovellus osoittautui tietoturvaltaan hyvin korkeatasoiseksi. Merkittäviä turvallisuuteen liittyviä havaintoja emme todenneet. Työskentelemme sekä asiakkaidemme että myös potentiaalisten asiakkaidemme kanssa Veracode SAST- ja SCA-työkaluilla, ja näemme työssämme laajan kirjon erilaisia sovelluksia ja skannaustuloksia. Tulokset Koronavilkun osalta osoittautuivat laadultaan keskimääräistä tasoa korkeammiksi.
Vastuullinen havaintojen julkistaminen
Vaikka kyseessä on avoimen lähdekoodin sovellus ja siten saatavilla kenen hyvänsä analysoitavaksi ja sorkittavaksi (ja sovelluksesta saa vapaasti muodostaa omia mielipiteitään), halusimme kuitenkin kunnioittaa sen tekijöitä. Teimme ensimmäisen skannauksemme 4. syyskuuta 2020 ja toimitimme tulokset välittömästi Koronavilkun kehitystiimille. Kehitystiimi kävi tulokset läpi — joista lisätietoja myöhemmin tässä artikkelissa — ja poikkeavat löydökset korjattiin muutamassa päivässä. Myöhemmin julkisesta lähteestä lataamamme sovelluksen uudelleenskannaus osoitti korjauksien tehonneen. Hyvin tehty!
Jos sinulla on tietoturvahavaintoja tai ongelmia Koronavilkun kanssa, ota ihan ensimmäiseksi yhteyttä Koronavilkku-kehitystiimiin — ja kerro asiasta Twitterissä sitten joskus myöhemmin.
Löydökset ja yksityiskohdat
Kaikki löydökset tarkistettiin ja tutkittiin Mint Securityn Thomasin ja Putsin toimesta, ennen raporttien julkaisua.
4. syyskuuta 2020: Skannaus 1
SAST
Skannauksessa havaittiin 6 kpl Medium ja 2 kpl Low -luokiteltua löydöstä. Ei kriittisiä löydöksiä.
- Improper Output Neutralization for Logs – (some) exceptions were written as-is to the logs. By looking at the code, you can see that this is not a systemic error but rather a simple mistake.
- Insufficient Entropy – cryptograpic methods are used to generate id’s. The id’s are not used for any real cryptography, hence these are false positives.
- Cleartext Transmission of Sensitive Information – these findings are from debugging methods, hence no impact for the real application.
- Use of Wrong Operator in String Comparison – these findings are from debugging methods, hence no impact for the real application.
- Exposure of Sensitive Information Through Sent Data – these findings are from debugging methods, hence no impact for the real application.
SCA
SCA-skannauksen aikana ei löytynyt ongelmia. Analysoitujen Koronavilkun pakettien osana on yli 60 kolmansien osapuolten kirjastoa. Skannausten tulosta on näin ollen pidettävä erinomaisena — selvästi yli keskiarvon.
16. syyskuuta 2020: Skannaus 2
SAST
Skannauksessa havaittiin 3 kpl Medium-luokiteltua löydöstä. Ei kriittisiä löydöksiä. Huomioitakoon, että Android-pakettia ei oltu muokattu joten sitä ei myöskään skannattu uudelleen.
- Insufficient Entropy – cryptograpic methods are used to generate id’s. The id’s are not used for any real cryptography, hence these are false positives
SCA
SCA-skannauksessa havaittiin yksi kolmannen osapuolen kirjastoon liittyvä löydös.
On syytä huomioida, että kolmansien osapuolten kirjastojen hallinta on yksi nykyaikaisen ohjelmistokehityksen hankalimmista tehtävistä. Tässä analysoiduilla Koronavilkku-paketilla on yli 60 riippuvuutta. On myös tärkeä ymmärtää, että kyseisissä kolmansien osapuolten kirjastoissa olevia haavoittuvuuksia voi paljastua ja niitä voidaan paljastaa milloin tahansa — riippumatta Koronavilkun kehittäjistä ja heidän ohjelmistojulkaisuistaan. Tämä on sama tilanne kuin kaikilla sellaisilla ohjelmistoilla, jotka käyttävät kolmannen osapuolen kirjastoja.
Tässä nimenomaisessa tapauksessa Koronavilkkuun sisältyvien kirjastojen versio ei muuttunut skannausten välillä. Se mitä tapahtui, oli että tarkistusten välillä haavoittuvuus löydettiin ja liputettiin ja tämä näkyi sitten viimeisimmän tarkistuksen SCA-tuloksissa. Kolmannen osapuolen kirjastojen hallinta on jatkuva ja tylsähkö prosessi — ilman asianmukaisia työkaluja ja menettelyjä se voi olla jopa ylivoimainen.
Mobile Behavioral Analysis
Osana SAST-skannausta Veracode analysoi ja seuraa mobiililaitteen oikeuksia ja muita sovelluksen käyttäytymiseen liittyviä asioita. Tämä analyysi liittyy vain sovelluksen Android-versioon.
Kolmansien osapuolten lisenssit
Kolmannen osapuolen lisenssiraportti on tarjottu puhtaasti lukijoiden mielenkiinnoksi. Lisensseillä on merkitystä sovellusten kaupallisessa kehittämisessä, mutta koska Koronavilkku on avoimen lähdekoodin ohjelmisto, on täysin hyväksyttävää käyttää kirjastoja lisensseillä, jotka eivät välttämättä ole muuten yhteensopivia normaalin kaupallisen ohjelmistokehityksen kanssa.
-
HIGH IMPACT
- LGPL 3.0
- LGPL 2.1
- GPL 2.0 -
MEDIUM IMPACT
- CDDL 1.0
- EPL 1.0 -
LOW IMPACT
- Apache 2.0
- MIT
- CC-BY 3.0
- BSD-2 Clause
Raportit
Secure Software Development Lifecycle – Tietoturvallinen ohjelmistokehitysprosessi
Tietoturvallinen sovelluskehitysprosessi Tietoturvallinen sovelluskehitysprosessi lyhyesti Turvallisessa sovelluskehitysprosessissa yhdistyy koodaajien ohjeistukset, tietoturvapolitiikan asettamat vaatimukset, johdon haluamat raportit sekä erilaisten standardien asettamat reunaehdot. Tietoturvan parantamisella ja lisäämisellä
Veracode
SAST – Koodin staattinen tarkistus SCA – Kirjastoanalyysi ja inventaario SDLC sovelluskehitysintegraatio Yrityksen koko sovellusportfolion tietoturvariskien hallinta samassa palvelussa Veracoden palvelun avulla voidaan tutkia ja
Veracode SCA kirjastoanalyysi paljastaa haavoittuvuudet ja lisenssiriskit
Veracoden SCA-toiminto (Software Composition Analysis) havaitsee avoimen lähdekoodin kirjaston käyttöön liittyvät riskit, joita saattavat olla esim. vanhentuneet ja riskialttiit versiot. Lisäksi joihinkin avoimen lähdekoodin kirjastoihin saattaa liittyä myös lisenssiriski, jos sovellusta käytetään kaupallisiin tarkoituksiin.
Agenttipohjainen SCA – sovelluskirjastojen hallintaa
Tänään esittelen teille Veracoden ”uuden” SCA:n, eli vuoden 2018 SourceClear hankinnan. Tämä on agenttipohjainen SCA, ja se integroituu CI/CD pipelineen.
Veracode Security Labs
Koodarit ovat käytännössä ne ainoat henkilöt organisaatiossa, jotka voivat korjata sovelluksissaan piileskelevät haavoittuvuudet. Veracode Security Labs auttaa täyttämään tietoturvastandardien vaatimukset ja tarjoamaan samalla koko kehitystiimille mielekkään tavan oppia lisää.