Client verbindt met elke SylDa_Server — geen UUID verificatie (kritieke veiligheidsbug) #10
Labels
No labels
bug
bug
critical
documentation
duplicate
enhancement
enhancement
feature
good first issue
help wanted
invalid
question
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eddy/Project_SylDa#10
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Probleem
De client zoekt in
src/client.cpp:62uitsluitend op naam:Elke BLE device dat zich "SylDa_Server" noemt wordt geaccepteerd. Er is geen verificatie dat het de juiste server is.
Risico
Een aanvaller met een BLE device dat "SylDa_Server" advertiseert kan:
Dit is een kritieke veiligheidsbug — spoofing is triviaal.
Oplossing
Na verbinden het server-UUID characteristic uitlezen en vergelijken met een in NVS opgeslagen waarde. De
Sylda_Clientbranch bevat al een werkende implementatie:SERVER_UUID_CHAR_UUIDcharacteristic uitlezen na connectserverUuiduit NVS (geprovisioneerd viaSET_SERVER_ID)Daarnaast: overweeg om ook tijdens scanning al te filteren op service UUID i.p.v. naam:
Dit maakt spoofing moeilijker (maar niet onmogelijk zonder UUID verificatie na connect).
Opgelost in PR #14.
Wat is er gedaan
Scanning filter gewijzigd van naam-gebaseerd naar service-UUID-gebaseerd:
Defense in depth
De client heeft nu 3 lagen van bescherming:
4fafc201-...advertisenUUID_CHAR_UUIDcharacteristic vergeleken met NVS-waarde (bestond al)Een aanvaller moet nu alle 3 lagen passeren om relays te kunnen aansturen.