As triemuploads feroarje yn triemtagong
Ien ûnfeilige uploadhandler kin de doar iepenje foar in folsleine paadtraversale oanfal en kwetsberens foar it uploaden fan bestannen. As ûntwikkelders bestânsnammen direkt mei uploadpaden keppelje, oanfallers kinne kweade bestânsnammen yntsjinje lykas ../../etc/wachtwurd om mappen te ûntkommen en tagong te krijen ta gefoelige bestannen. Dit type paadtraversal feroaret in ienfâldige upload-API yn in krêftige bestânstagongsknep, foaral as de applikaasje mei ferhege tagongsrjochten rint.
⚠️Unfeilich foarbyld, allinich foar edukative doelen. Net brûke yn produksje.
// Vulnerable upload handler, file upload vulnerability [HttpPost("/upload")] public async Task<IActionResult> Upload(IFormFile file) { var path = Path.Combine("uploads/", file.FileName); // No validation using var stream = new FileStream(path, FileMode.Create); await file.CopyToAsync(stream); return Ok("File uploaded!"); } In oanfaller kin in bestân mei de namme uploade ../../web.config om beheinde bestannen te oerskriuwen of te lêzen, in klassike paadtraversale oanfal.
Feilige ferzje:
// Safe upload with validation and canonicalization [HttpPost("/upload")] public async Task<IActionResult> Upload(IFormFile file) { var fileName = Path.GetFileName(file.FileName); // strip directories var targetDir = Path.GetFullPath("uploads/"); var safePath = Path.Combine(targetDir, fileName); if (!safePath.StartsWith(targetDir)) return BadRequest("Invalid file path"); using var stream = new FileStream(safePath, FileMode.Create); await file.CopyToAsync(stream); return Ok("File securely uploaded!"); } Opliedingsnota: Paden altyd kanonisearje mei Paad.GetFolsleinPaad() en kontrolearje dat it resultaat yn jo uploadmap bliuwt. Fertrou noait in bestân.Bestânsnamme direkt.
Flaters fan ûntwikkelders dy't paadtraversal mooglik meitsje
De measte kwetsberheden by it uploaden fan bestannen dy't liede ta it trochgean fan it paad komme troch hastige koade en ûntbrekkende falidaasje. Faak foarkommende flaters by ûntwikkelders binne:
- Brûkersynfier direkt yn bestânsysteempaden gearfoegje
- Fertrouwe Ynhâldstype of allinich útwreidingsvalidaasje
- Normalisaasje fan paden oerslaan foardat jo opslaan
Tydlike mappen opnij brûke oer oanfragen of mikroservices
⚠️Unfeilich foarbyld, allinich foar edukative doelen. Net brûke yn produksje.
# Flask example vulnerable to path traversal attack @app.route('/upload', methods=['POST']) def upload(): file = request.files['file'] file.save('uploads/' + file.filename) return 'Uploaded' Oanfallers kinne dizze ienfâldige gearfoeging omgean om troch mappen te gean (../../app.py) en willekeurige bestannen skriuwe of oerskriuwe. Feilige ferzje:
# Safe file upload validation from werkzeug.utils import secure_filename @app.route('/upload', methods=['POST']) def upload(): file = request.files['file'] name = secure_filename(file.filename) path = os.path.join('uploads', name) file.save(path) return 'Securely uploaded' Opliedingsnota: Brûk helpmiddels levere troch it framework lykas feilige_bestânsnamme en útwreidings op tastiene list ôftwinge. Ynfier nea sels yn bestânspaden oaninoar keppelje.
Eksploitaasje yn Echt Pipelines en mikrotsjinsten
Paadtraversale oanfallen barre net allinich yn iepenbiere einpunten. Se ferskine faak binnen CI/CD systemen, artefaktrepositories, of mikroservices dy't opladen bestannen beheare. Bygelyks, in kwetsberens foar it uploaden fan bestannen yn in build-artefaktbehearder kin in oanfaller build-skripts oerskriuwe litte of ynjeksjearje kweade bestannen yn dielde runners.
⚠️Unfeilich foarbyld, allinich foar edukative doelen. Net brûke yn produksje.
# Never expose real tokens, credentials, or internal URLs in pipelines - name: Store build artifact run: cp $UPLOAD_PATH/$FILENAME /var/artifacts/$FILENAME If $BESTÂNSNAMME is net validearre, in makke ../../../etc/wachtwurd wearde kin krityske systeembestannen oerskriuwe tidens ynset, in echte paadtraversale oanfal. Feilige ferzje:
# Safer artifact storage guardrail - name: Store build artifact securely run: | SAFE_NAME=$(basename "$FILENAME") cp "$UPLOAD_PATH/$SAFE_NAME" /var/artifacts/"$SAFE_NAME" Opliedingsnota: In pipelines, alle dynamyske padfariabelen sanearje. Beheine skriuwoperaasjes ta kontroleare mappen om te foarkommen dat it bestânsysteem ûntsnapt tidens builds of ynset.
Foarkommen fan paadtraversaasje yn uploadlogika
It ferminderjen fan paadtraversal begjint mei sterke ynfierfalidaasje en isolaasje. Behannelje bestânsnammen en paden fan it begjin ôf as net-fertroude ynfier, foaral by it omgean mei uploade bestannen.
Best practices
- Normalisearje en kanonisearje alle paden foardat jo se brûke.
- Uploads beheine nei in tawijde map bûten de webrot.
- Tastimmingslisten hanthavenje foar bestânsútwreidings en MIME-typen.
- Nea tydlike mappen opnij brûke tusken sesjes of brûkers.
- Brûk kontenerisearre opslach foar uploade bestannen as it mooglik is.
Mini previntyf checklist
- Falidearje elke bestânsnamme mei Paad.GetTriemNamme() of lykweardich.
- Folsleine paden oplosse en mapgrinzen ferifiearje.
- Tapasse útwreidings- en MIME-tastimmingslisten.
- Brûk aparte uploadmappen per brûker of sesje.
- Nim it scannen en falidearjen fan uploads yn CI/CD testen.
Opliedingsnota: Elke triemoplaadbehanneler is in potinsjele oanfalsfektor foar it trochrinnen fan paad. Bou in djipgeande ferdigening op troch alle triembehannelingskoade te falidearjen, te isolearjen en te scannen.
Hoe Xygeni ûnfeilige uploadstreamen detektearret en blokkearret
Xygeni Code Security scans koadebases en pipelines om paadtraversale patroanen te detektearjen foardat se produksje berikke. It markearret ûnfeilige paadkonkatenaasje, ûntbrekkende kanonikalisaasje, en gefaarlike bestânsoperaasjes yn sawol koade as CI/CD skripts.
Funksjoneel fragmint, mei kontrôlebeskerming:
# Secure enforcement with Xygeni - name: Enforce secure upload and path handling run: dotnet xygeni enforce --rules uploads,path,security --fail-on-risk Opliedingsnota: Yntegraasje Xygeni yn jo pipeline soarget derfoar dat kwetsberheden foar it uploaden fan bestannen en oanfallen fan paadtraversen automatysk wurde fongen tidens buildfalidaasje.
De gat slute: Foarkom jo folgjende paadtraversale oanfal
In bug yn it traversearjen fan ien paad yn in einpunt foar it uploaden fan bestannen kin oanfallers tagong jaan ta it bestânsysteem fan jo server. Kontrolearje uploadhandlers op ûnfeilige gearfoegings, normalisearje alle paden, en fertrou noait troch de brûker kontroleare bestânsnammen. Tafoegje ark foar it scannen fan kwetsberens lykas Xygeni Code Security oan dyn DevSecOps pipeline om oanfallen foar paadtraversaasje en kwetsberheden foar it uploaden fan bestannen te detektearjen foardat se ferstjoerd wurde. Yn feiligens moat elk bewarre bestân behannele wurde as útfierde koade!






