Beter kunnen we terugkeren tot de vraagstelling in de aanvang van het topic,
namelijk met welke typen van machine learning we aanvallen via JavaScript
vroegtijdig kan gaan detecteren en navenant blokkeren.
Welke "best practices" betreft dit zowel aan server en ook aan de client-zijde?
Wat kan de rol zijn van online interactieve JavaScript cheat-sheets? Vgl.: http://htmlcheatsheet.com/js/
Het gebruik van Snyk beperkt zich tenslotte tot de ingegeven regels. Of kan het ook een beter coderingsinzicht bewerkstelligen. Discussie op Strack-Overflow volg ik geregeld.
Script blokkering vooral van 3rd party script die aflopen op het hoofddomein,
kan effectief zijn, maar de uitvoering op de client is afhankelijk van de relevante kennis van de eindgebruiker
en die ontbreekt bij heel veel gebruikers helaas of is onvoldoende aangeleerd.. (NoScript, uMatrix) .
Nog een andere benadering is script laten runnen binnen een browser sandbox of VM,
die na een sessie leeg gekieperd kan worden.
Nemen we het voorbeeld hier:
Alle JavaScript anomaliteiten, potentiele en werkelijke kwetsbaarheden en kwaadaardigheid
moeten we vaststellen in relatie tot de omgeving, in engere zin hier bootstrap en de ruimnere omgeving,
waarin dit veilig of minder veilig is.
PORT STATE SERVICE VERSION
80/tcp open http
|_http-title: Site doesn't have a title.
443/tcp open ssl/https
|_http-title: Site doesn't have a title.
| ssl-cert: Subject: commonName=*.bootstrapcdn.com
| Subject Alternative Name: DNS:*.bootstrapcdn.com, DNS:bootstrapcdn.com
| Not valid before: 2017-10-03T00:00:00
|_Not valid after: 2018-10-13T23:59:59
|_ssl-date: TLS randomness does not represent time
2 services unrecognized despite returning data. If you know the service/version, please submit the following fingerprints at https://nmap.org/cgi-bin/submit.cgi?new-service :
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
SF-Port80-TCP:V=7.30%I=7%D=6/13%Time=5B204471%P=x86_64-unknown-linux-gnu%r
SF:(GetRequest,DC,"HTTP/1\.1\x20404\x20Not\x20Found\r\nDate:\x20Tue,\x2012
SF:\x20Jun\x202018\x2022:08:49\x20GMT\r\nConnection:\x20close\r\nAccept-Ra
SF:nges:\x20bytes\r\nExpires:\x20Tue,\x2012\x20Jun\x202018\x2022:08:49\x20
SF:GMT\r\nCache-Control:\x20max-age=0\r\nContent-Length:\x200\r\nX-HW:\x20
SF:1528841329\.dop007\.fr8\.d\r\n\r\n")%r(HTTPOptions,DC,"HTTP/1\.1\x20404
SF:\x20Not\x20Found\r\nDate:\x20Tue,\x2012\x20Jun\x202018\x2022:08:49\x20G
SF:MT\r\nConnection:\x20close\r\nAccept-Ranges:\x20bytes\r\nExpires:\x20Tu
SF:e,\x2012\x20Jun\x202018\x2022:08:49\x20GMT\r\nCache-Control:\x20max-age
SF:=0\r\nContent-Length:\x200\r\nX-HW:\x201528841329\.dop004\.fr8\.d\r\n\r
SF:\n")%r(FourOhFourRequest,DC,"HTTP/1\.1\x20404\x20Not\x20Found\r\nDate:\
SF:x20Tue,\x2012\x20Jun\x202018\x2022:08:54\x20GMT\r\nConnection:\x20close
SF:\r\nAccept-Ranges:\x20bytes\r\nExpires:\x20Tue,\x2012\x20Jun\x202018\x2
SF:022:08:54\x20GMT\r\nCache-Control:\x20max-age=0\r\nContent-Length:\x200
SF:\r\nX-HW:\x201528841334\.dop005\.fr8\.d\r\n\r\n");
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
SF-Port443-TCP:V=7.30%T=SSL%I=7%D=6/13%Time=5B204477%P=x86_64-unknown-linu
SF:x-gnu%r(GetRequest,115,"HTTP/1\.1\x20400\x20Bad\x20Request\r\nDate:\x20
SF:Tue,\x2012\x20Jun\x202018\x2022:08:55\x20GMT\r\nConnection:\x20Keep-Ali
SF:ve\r\nAccept-Ranges:\x20bytes\r\nExpires:\x20Tue,\x2012\x20Jun\x202018\
SF:x2022:08:55\x20GMT\r\nCache-Control:\x20max-age=0\r\nContent-Length:\x2
SF:00\r\nX-HW:\x201528841329\.dop010\.fr8\.t,1528841335\.cds045\.fr8\.shn,
SF:1528841335\.cds045\.fr8\.c\r\n\r\n")%r(HTTPOptions,F6,"HTTP/1\.1\x20404
SF:\x20Not\x20Found\r\nDate:\x20Tue,\x2012\x20Jun\x202018\x2022:08:55\x20G
SF:MT\r\nConnection:\x20close\r\nAccept-Ranges:\x20bytes\r\nExpires:\x20Tu
SF:e,\x2012\x20Jun\x202018\x2022:08:55\x20GMT\r\nCache-Control:\x20max-age
SF:=0\r\nContent-Length:\x200\r\nX-HW:\x201528841335\.dop008\.fr8\.shc,152
SF:8841335\.dop008\.fr8\.d\r\n\r\n")%r(FourOhFourRequest,F6,"HTTP/1\.1\x20
SF:404\x20Not\x20Found\r\nDate:\x20Tue,\x2012\x20Jun\x202018\x2022:08:55\x
SF:20GMT\r\nConnection:\x20close\r\nAccept-Ranges:\x20bytes\r\nExpires:\x2
SF:0Tue,\x2012\x20Jun\x202018\x2022:08:55\x20GMT\r\nCache-Control:\x20max-
SF:age=0\r\nContent-Length:\x200\r\nX-HW:\x201528841335\.dop010\.fr8\.shc,
SF:1528841335\.dop010\.fr8\.d\r\n\r\n");
////////////////////////////
https://github.com/thednp/bootstrap.native/issues/98
//////////////////////////////////
stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js benign
[nothing detected] stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js
status: (referer X)saved 50731 bytes fffea98e12e63b66693d567315a2f32392b780b0
info: [decodingLevel=0] found JavaScript
error: undefined variable i
file: fffea98e12e63b66693d567315a2f32392b780b0: 50731 bytes
Wie geeft hier de te behandelen wegen aan. Moeten we blijven morrelen aan de interne code veiligheid
of code onveiligheid van de gebruikte JavaScript code?
Daar waar deze bijvoorbeeld wringt met HTML of anderszins errors veroorzaakt,
of moeten we JavaScript beveiligen op het niveau van
o.a. SSL, HTST-ssl, security headers, SRI, etc. , cookie beveiliging, clickjacking protectie etc.?
Als website fouten jager en website security analist ben ik ten zeerste hierin geïnteresseerd
en hoor ik graag goede ideeen.
luntrus