miniserv – pieni pätkä hakemistojen tietoturvaa

Spread the love
10 / 100
Reading Time: < 1 minute
Photo 1580927752452 89d86da3fa0a?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MXwyNDc4MnwwfDF8c2VhcmNofDN8fGNvZGluZ3xlbnwwfHx8&ixlib=rb 1.2
Photo by Joshua Reddekopp on Unsplash

Miniserv sisältää pätkän koodia, joka tarkistaa selaimen antaman tiedostopyynnön. Tämä on tietoturvasyistä.

Löysin sopivan tuntuisen valmiin paketin, sanitize-filename. Kehittäjiä on kymmenkunta, ja paketti on yli sadantuhannen Github-projektin käytössä. Kehittäjien määrä kertoo siitä, että paketilla on selkeästi yhteistä hyötyä softamaailmassa, koska kyseessä ei ole pelkästään yhden hengen omien intressien kokeilu. Toistasataatuhatta käyttäjää kertoo jotain luottamuksesta. Paketti vaikuttaa sopivalta tähän tarkoitukseen.

Mitä tiedostonimen turvatarkastus tekee node-sanitizessa?

  • puhdistaa tiedostonimet vaarallisista ja epäilyttävistä merkeistä
  • käyttää 5 regex -rimpsua asian ajamiseen
  • estää mm. “path traversal” -hyökkäykset eli vääriin hakemistoihin pääsyn

Annan sanitize-filenamelle suoraan sen merkkijonon, mikä tulee HTTP-pyynnössä asiakkaalta (=web-selaimelta). Jos merkkijono säilyi alkuperäisenä, tiedämme että se on o.k (koska tarkastus ei havainnut mitään muutettavaa). Jos merkkijono ei ole enää alkuperäinen, serveri tiputtaa pyynnön ja palauttaa tilakoodin 400. Pieni googletus paljasti että 400 toimii tässä paremmin kuin perinteinen 404. Status 400 kertoo kohteliaasti, että “äläpä yritä enää tätä samaa pyyntöä”, kun taas 404 antaa mahdollisuuden että resurssi ei ole vain juuri nyt saatavilla, mutta kenties myöhemmin.

Miten hyökkääjä voi yrittää vaellella hakemistoissa?

  • tiedostonimi sisältää polkua vaihtavan ‘..’
  • tuplaetukeno (‘//’)

Toisentyyppinen kikka jota hyökkääjä voi käyttää, on terminaattorin eli 0-tavun (zero) lisääminen requestissa. Nolla voi aiheuttaa harmia järjestelmissä, jossa tuota arvoa käytetään merkkijonojen sisäisenä stopperimerkkinä. Nollan jälkeiset merkit ovat jälleen ne, jotka voivat aiheuttaa harmia tulkittaessa ne uudella tavalla.

Lukemistoa

OWASP-tietoturvasivustolla on mielenkiintoinen artikkeli aiheesta: Path Traversal.

Facebook Comments Box

This site uses Akismet to reduce spam. Learn how your comment data is processed.