ubnt patched this because it's a huge highly publicized hole.
but the software stack that runs under the rest of unifi is a real mess.
people have said to me: "oh, okay, so they're trying to force people to buy their unifi security appliance or cloudkey thing, right?"
but the same very old stuff runs on those as well, if you poke around under the hood
Somebody started doing this. Shame they chose PHP though.
Last time I checked it out, it seems like they keep configuration in an intermediate format that is then translated to manufacturer-specific formats, so it should be possible to build a Unifi converter for that.
3.0 is a pretty old version. Most 3.x versions are end of life or unsupported.
I don’t know if it’s possible to override the version of a Debian package’s specified dependency - although I also don’t know if mongodb 5 is drop-in backwards compatible with a client written and released against v3.6.
This is what monogd.log contains when started:
2020-09-24T21:18:54.231-0500 I CONTROL [initandlisten] MongoDB starting : pid=7531 port=27117 dbpath=/usr/lib/unifi/data/db 64-bit host=unifi
2020-09-24T21:18:54.231-0500 I CONTROL [initandlisten] db version v3.6.20
2020-09-24T21:18:54.231-0500 I CONTROL [initandlisten] git version: 39c200878284912f19553901a6fea4b31531a899
2020-09-24T21:18:54.231-0500 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.1.1d 10 Sep 2019
2020-09-24T21:18:54.231-0500 I CONTROL [initandlisten] allocator: tcmalloc
2020-09-24T21:18:54.231-0500 I CONTROL [initandlisten] modules: none
2020-09-24T21:18:54.231-0500 I CONTROL [initandlisten] build environment:
2020-09-24T21:18:54.231-0500 I CONTROL [initandlisten] distmod: debian92
2020-09-24T21:18:54.231-0500 I CONTROL [initandlisten] distarch: x86_64
2020-09-24T21:18:54.231-0500 I CONTROL [initandlisten] target_arch: x86_64
2020-09-24T21:18:54.231-0500 I CONTROL [initandlisten] options: { net: { bindIp: "127.0.0.1", port: 27117, unixDomainSocket: { pathPrefix: "/usr/lib/unifi/run" } }, processManagement: { pidFilePath: "/usr/lib/unifi/run/mongod.pid" }, storage: { dbPath: "/usr/lib/unifi/data/db" }, systemLog: { destination: "file", logAppend: true, logRotate: "reopen", path: "/usr/lib/unifi/logs/mongod.log" } }
2020-09-24T21:18:54.231-0500 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=256M,cache_overflow=(file_max=0M),session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),compatibility=(release="3.0",require_max="3.0"),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress), 021-12-07T19:05:23.822-0600 I CONTROL [initandlisten] options: { net: { bindIp: "127.0.0.1", port: 27117, unixDomainSocket: { pathPrefix: "/usr/lib/unifi/run" } }, processManagement: { pidFilePath: "/usr/lib/unifi/run/mongod.pid" }, storage: { dbPath: "/usr/lib/unifi/data/db", wiredTiger: { engineConfig: { configString: "cache_size=256M" } } }, systemLog: { destination: "file", logAppend: true, logRotate: "reopen", path: "/usr/lib/unifi/logs/mongod.log" } }
2021-12-07T19:05:23.822-0600 I - [initandlisten] Detected data files in /usr/lib/unifi/data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2021-12-07T19:05:23.822-0600 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=256M,cache_overflow=(file_max=0M),session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),compatibility=(release="3.0",require_max="3.0"),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),cache_size=256M
2021-12-07T19:05:24.339-0600 E STORAGE [initandlisten] WiredTiger error (-31802) [1638925524:339440][1327:0x7f952058b400], file:WiredTiger.wt, connection: __wt_btree_tree_open, 604: unable to read root page from file:WiredTiger.wt: WT_ERROR: non-specific WiredTiger error Raw: [1638925524:339440][1327:0x7f952058b400], file:WiredTiger.wt, connection: __wt_btree_tree_open, 604: unable to read root page from file:WiredTiger.wt: WT_ERROR: non-specific WiredTiger error
2021-12-07T19:05:24.339-0600 E STORAGE [initandlisten] WiredTiger error (0) [1638925524:339475][1327:0x7f952058b400], file:WiredTiger.wt, connection: __wt_btree_tree_open, 611: WiredTiger has failed to open its metadata Raw: [1638925524:339475][1327:0x7f952058b400], file:WiredTiger.wt, connection: __wt_btree_tree_open, 611: WiredTiger has failed to open its metadata
2021-12-07T19:05:24.339-0600 E STORAGE [initandlisten] WiredTiger error (0) [1638925524:339483][1327:0x7f952058b400], file:WiredTiger.wt, connection: __wt_btree_tree_open, 614: This may be due to the database files being encrypted, being from an older version or due to corruption on disk Raw: [1638925524:339483][1327:0x7f952058b400], file:WiredTiger.wt, connection: __wt_btree_tree_open, 614: This may be due to the database files being encrypted, being from an older version or due to corruption on disk
2021-12-07T19:05:24.339-0600 E STORAGE [initandlisten] WiredTiger error (0) [1638925524:339489][1327:0x7f952058b400], file:WiredTiger.wt, connection: __wt_btree_tree_open, 617: You should confirm that you have opened the database with the correct options including all encryption and compression options Raw: [1638925524:339489][1327:0x7f952058b400], file:WiredTiger.wt, connection: __wt_btree_tree_open, 617: You should confirm that you have opened the database with the correct options including all encryption and compression options
2021-12-07T19:05:24.340-0600 F STORAGE [initandlisten] WiredTiger metadata corruption detected
2021-12-07T19:05:24.340-0600 F STORAGE [initandlisten] This version of MongoDB is unable to repair this kind of corruption, but version 4.0.3+ may be able to repair it. See http://dochub.mongodb.org/core/repair for more information.
2021-12-07T19:05:24.340-0600 F - [initandlisten] Fatal Assertion 50944 at src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp 71
2021-12-07T19:05:24.340-0600 F - [initandlisten] \n\n***aborting after fassert() failure\n\nMy email is mqudsi at neosmart dot net; I'd love if you could let me know what happens.
Given that unifi uses log4j, can be made to log everything, and by default logs things that users have control over such as their pc name, their mac auth username, various hotspot client parameters, the names of neighboring SSIDs, etc I find the original claim dubious but props to them for getting this out quickly.
Edit: clarified wording regarding "no known exploitable vulnerabilities"