RaresAil / homebridge-tp-link-tapo

A platform to implement the tp-link tapo device and Adaptive Lighting for light bulbs
https://www.npmjs.com/package/homebridge-tp-link-tapo
Apache License 2.0
61 stars 5 forks source link

Private Encryption Error #90

Open 3liverse opened 4 months ago

3liverse commented 4 months ago

Describe The Bug

Once a week, at least one device would be showing up with this error message and I can't seem to fix it as I suspect it being server-ended.

Expected behavior

Connect as usual without errors

Logs

[26/02/2024, 16:09:22] [TPLink Tapo Platform] Error sending command: deviceInfo TypeError: RSA_PKCS1_PADDING is no longer supported for private decryption, this can be reverted with --security-revert=CVE-2023-46809 at Object.privateDecrypt (node:internal/crypto/cipher:79:12) at LegacyAPI.decodeHandshakeKey (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/src/api/LegacyAPI.ts:183:30) at LegacyAPI.handshake (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/src/api/LegacyAPI.ts:173:30) at processTicksAndRejections (node:internal/process/task_queues:95:5) at LegacyAPI.sendSecureRequest (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/src/api/LegacyAPI.ts:83:7) at LegacyAPI.login (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/src/api/LegacyAPI.ts:20:22) at TPLink.sendCommandWithNoLock (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/src/api/TPLink.ts:208:9) { code: 'ERR_INVALID_ARG_VALUE' } [26/02/2024, 16:09:22] [TPLink Tapo Platform] Failed to get info about: 192.168.1.117

Plugin Config

{ "bridge": { "name": "Homebridge 547C", "username": "0E:1A:5E:16:54:7C", "port": 51618, "pin": "354-64-223", "advertiser": "bonjour-hap" }, "accessories": [], "platforms": [ { "name": "Config", "port": 8581, "auth": "form", "theme": "deep-purple", "tempUnits": "c", "lang": "auto", "platform": "config" }, { "name": "TplinkSmarthome", "addCustomCharacteristics": true, "deviceTypes": [ "plug", "bulb" ], "platform": "TplinkSmarthome" }, { "addresses": [ "192.168.1.100", "192.168.1.102", "192.168.1.117" ], "name": "TPLink Tapo Platform", "platform": "HomebridgeTPLinkTapo" }, { "devices": [ { "name": "Mi Air Purifier 2H", "ip": "192.168.1.101", "token": "5ecdb9d87ec3055d7db203cc5b2591ae", "deviceId": "313063079", "model": "zhimi.airpurifier.mc2", "pollingInterval": 10, "deepDebugLog": false, "buzzerControl": true, "ledControl": true, "childLockControl": true, "modeControl": true }, { "name": "Mi Wi-Fi Range Extender Pro", "ip": "192.168.1.111", "token": "9623e9045c5d6516ba0a8ef12d7618f7", "deviceId": "352334985", "model": "xiaomi.repeater.v3", "pollingInterval": 10, "deepDebugLog": false, "buzzerControl": true, "ledControl": true, "childLockControl": true, "modeControl": true } ], "platform": "miot" }, { "name": "TuyaWebPlatform", "options": { "username": "", "password": "", "countryCode": "61", "platform": "smart_life" }, "defaults": [ { "device_type": "form" } ], "scenes": false, "platform": "TuyaWebPlatform" }, { "cameras": [ { "name": "Camera", "ipAddress": "192.168.1.136", "streamUser": "elias321", "streamPassword": "" } ], "platform": "tapo-camera" }, { "platform": "BroadlinkRM", "name": "Broadlink RM", "hideScanFrequencyButton": false, "hideLearnButton": false, "hideWelcomeMessage": false, "hosts": [ { "address": "192.168.1.126", "mac": "E8:16:56:1C:B4:63", "isRFSupported": true, "isRM4": true } ], "accessories": [ { "name": "Bedroom TV", "type": "tv", "data": { "on": "", "off": "", "volume": { "up": "", "down": "" }, "inputs": [ { "name": "HDMI 1", "type": "hdmi", "data": "" }, { "name": "HDMI 2", "type": "hdmi", "data": "" } ], "remote": { "select": "", "arrowUp": "", "arrowDown": "", "arrowLeft": "", "arrowRight": "", "playPause": "", "info": "", "back": "", "options": "", "digitalAnalog": "", "programUp": "", "programDown": "", "nextTrack": "", "previousTrack": "" } } }, { "name": "Moon Lamp", "type": "light", "defaultBrightness": 100, "useLastKnownBrightness": false, "data": { "on": "", "off": "", "brightness100": "", "brightness90": "", "brightness80": "", "brightness70": "", "brightness60": "", "brightness50": "", "brightness40": "", "brightness30": "", "brightness20": "", "brightness10": "", "hue22.5": "", "hue45": "", "hue67.5": "", "hue90": "", "hue112.5": "", "hue135": "", "hue157.5": "", "hue180": "", "hue202.5": "", "hue225": "", "hue247.5": "", "hue270": "", "hue292.5": "", "hue315": "", "hue337.5": "", "hue360": "***" }, "onDelay": 1, "enableAutoOff": false, "onDuration": 5, "enableAutoOn": false, "offDuration": 5 }, { "name": "RM4 Thermometer", "type": "temperatureSensor" }, { "name": "RM4 Humidity Sensor", "type": "humiditySensor" } ] } ], "disabledPlugins": [ "homebridge-camera-ui" ] }

Plugin Version

v4.1.0

Homebridge Version

v1.7.0

Node.js Version

20.11.1

NPM Version

Not sure

Operating System

Not sure

giovanijfc commented 4 months ago

Hello, I had this problem when uploading a version of a web application that uses Docker, it seems that on 02/14/2024 a fix was released on the node that does not allow RSA encryption with pkcs1 padding to be used, the simplest way to solve it is to run in the terminal a node --security-revert=CVE-2023-46809 that will remove this security rule...

Remembering that this is an ideal palliative solution and no longer use RSA encryption with pkcs1 padding

https://nodejs.org/en/blog/vulnerability/february-2024-security-releases

3liverse commented 4 months ago

Ahh I see. So it’s not possible to fix this on the actual Homebridge Tapo Plugin? Do you know if there are any current workarounds that don't require downgrading node?. I'll give it a spin and let you know how it goes. Thanks for the info.

RaresAil commented 4 months ago

It can't as Tapo is using old encryption

3liverse commented 4 months ago

It’s strange because this issue only occurs with my H100 hub, not with my other devices such as lightbulbs and smart plugs. So yeah. They definitely are being a bit nit-picky with what devices won't support the new encryption standard. Fingers crossed they will change this soonish... 🤔

drbobnz commented 3 months ago

Hello, I had this problem when uploading a version of a web application that uses Docker, it seems that on 02/14/2024 a fix was released on the node that does not allow RSA encryption with pkcs1 padding to be used, the simplest way to solve it is to run in the terminal a node --security-revert=CVE-2023-46809 that will remove this security rule...

Remembering that this is an ideal palliative solution and no longer use RSA encryption with pkcs1 padding

https://nodejs.org/en/blog/vulnerability/february-2024-security-releases

Hi - sorry, dumb question - do you know how I can apply the revert in Homebridge? I've tried in the HB console but it seems to take me to the REPL. I've tried this in settings > node_options but that didn't work. Yes, I've I've done a lot of searching but none of this has really helped... or should I just downgrade node? I'm sure it's really simple / obvious but it's eluding me! Thanks in advance.