VNote is a note-taking platform. Prior to 4.3.0, SessionConfig::ExternalProgram::fetchCommand wraps a note path in double quotes and substitutes it into a command string that QProcess::start(const QString&) reparses into arguments through ProcessUtils::startDetached. The automatic path in src/controllers/viewareacontroller.cpp and the Open With path in src/controllers/notebooknodecontroller.cpp both reach this sink. On Linux and macOS, an attacker-controlled double quote in a POSIX note filename can terminate the quoted path and add arguments to the victim's configured external program. If the configured program supports an argument that executes commands, such as the vim or gvim -c option, the injected arguments can execute arbitrary commands as the user. This issue is fixed in version 4.3.0.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-78",
"CWE-88"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/86xxx/CVE-2026-86022.json"
}"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-86022.json"
[
{
"deprecated": false,
"digest": {
"line_hashes": [
"62938935075984933092959035317835534254",
"262506261924408807849938014915321711281",
"249715474389919544418390109570598052614",
"273016609110299078751025387440635714826",
"243941544373691174125637825825968689109",
"12049836666172899279390457003385546653",
"138849013490132552847226601112443050250",
"211218077563934243336555209336045589569"
],
"threshold": 0.9
},
"id": "CVE-2026-86022-1aef83f2",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/vnotex/vnote/commit/4abaacdb8dd110d279f3290ad7e69f20b2604602",
"target": {
"file": "src/controllers/viewareacontroller.cpp"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "24120423865114938971267160601371449006",
"length": 3195
},
"id": "CVE-2026-86022-247497b5",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/vnotex/vnote/commit/4abaacdb8dd110d279f3290ad7e69f20b2604602",
"target": {
"file": "src/controllers/viewareacontroller.cpp",
"function": "ViewAreaController::openBuffer"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "198758141833503507874229255082142427998",
"length": 663
},
"id": "CVE-2026-86022-26f01f4c",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/vnotex/vnote/commit/4abaacdb8dd110d279f3290ad7e69f20b2604602",
"target": {
"file": "src/controllers/notebooknodecontroller.cpp",
"function": "NotebookNodeController::openNodesWithCommand"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"215859572094849669220057476912643620631",
"50955052388666820814309310477949236109",
"39262016362301424327762704306761460039",
"229539455217159280422162233538236266632",
"241961658816221397610881468156812586618",
"155522276775214731437916395416214976943",
"169565712684793955000590379748319986020",
"171888571314960608922037681284143560793",
"178262506447768471654903793720063816538",
"292174929612737297355735861257900194526",
"41674590656206261609759969801498276745"
],
"threshold": 0.9
},
"id": "CVE-2026-86022-3e8ba340",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/vnotex/vnote/commit/4abaacdb8dd110d279f3290ad7e69f20b2604602",
"target": {
"file": "src/core/sessionconfig.cpp"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"148331729846960793200956781250700966874",
"120187491921347107983018706271028887630",
"40518112093630530802053010098128112007",
"301083705807975112673107250369213978658",
"276349281923981056961657491755373885138",
"222192906828987190363500405760675390770",
"99268203437037796365088692838608655890",
"237409026592693752122475923835096622626"
],
"threshold": 0.9
},
"id": "CVE-2026-86022-5b2629b3",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/vnotex/vnote/commit/4abaacdb8dd110d279f3290ad7e69f20b2604602",
"target": {
"file": "src/controllers/notebooknodecontroller.cpp"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "150061240211490743302375766265968596356",
"length": 176
},
"id": "CVE-2026-86022-77f3780a",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/vnotex/vnote/commit/4abaacdb8dd110d279f3290ad7e69f20b2604602",
"target": {
"file": "tests/core/test_sessionconfig_extprog.cpp",
"function": "TestSessionConfigExtProg::testEmptyCommand"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "133509384413900924153032711994779725596",
"length": 205
},
"id": "CVE-2026-86022-83f1d11b",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/vnotex/vnote/commit/4abaacdb8dd110d279f3290ad7e69f20b2604602",
"target": {
"file": "src/core/sessionconfig.cpp",
"function": "SessionConfig::ExternalProgram::fetchCommand"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"308912645330730431019530797810460670904",
"112670159910504616413355453945803694496",
"287991520559036701277431670932070530170",
"124259521406438184158156991870987387708"
],
"threshold": 0.9
},
"id": "CVE-2026-86022-9cb01949",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/vnotex/vnote/commit/4abaacdb8dd110d279f3290ad7e69f20b2604602",
"target": {
"file": "tests/integration/test_missing_nodes_qt_controller_stubs.cpp"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"38469157195460535173906503588773789955",
"131771103443247138135937960798510146581",
"40275485750363465278734942299173107163",
"64370950691233824246282214541587479764"
],
"threshold": 0.9
},
"id": "CVE-2026-86022-a1594f25",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/vnotex/vnote/commit/4abaacdb8dd110d279f3290ad7e69f20b2604602",
"target": {
"file": "src/core/sessionconfig.h"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"155655609871946107317556013982283007337",
"226833255346422342657106693748357273841",
"247987300915886204177345341868698953797",
"265746455878084861402572460973439538825",
"189177622762319266830035453536455354923",
"303348165644883124162414363876833287367",
"180295086375878029600767647247265358024",
"134784924045621611161897986951178744269",
"201765448256349534929316240754455124740",
"50779109910178258772768670830944662938",
"75438923618017674755050461241921430160",
"94810275158735886169923093642116770978",
"325111705769604947817794852017665707911",
"40682425735643057839659826636738479348",
"90531053421695415994674465171135568491",
"191522609079315924298845003150043934664"
],
"threshold": 0.9
},
"id": "CVE-2026-86022-bb5e3b28",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/vnotex/vnote/commit/4abaacdb8dd110d279f3290ad7e69f20b2604602",
"target": {
"file": "tests/core/test_sessionconfig_extprog.cpp"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "96941379317635878193014183345488710509",
"length": 218
},
"id": "CVE-2026-86022-bed1bb32",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/vnotex/vnote/commit/4abaacdb8dd110d279f3290ad7e69f20b2604602",
"target": {
"file": "tests/core/test_sessionconfig_extprog.cpp",
"function": "TestSessionConfigExtProg::testFetchCommand"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"49654700820294266031670750083354747015",
"291272940530161372516184645581671228157",
"14581955959111600430537863646283665280"
],
"threshold": 0.9
},
"id": "CVE-2026-86022-cad6ea9d",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/vnotex/vnote/commit/4abaacdb8dd110d279f3290ad7e69f20b2604602",
"target": {
"file": "src/utils/processutils.h"
}
}
]
"2026-10-15T07:08:47Z"