Caving_db
This commit is contained in:
parent
ecc7d62cd3
commit
4ad0ef97d4
217
package-lock.json
generated
217
package-lock.json
generated
@ -118,8 +118,8 @@
|
||||
},
|
||||
"JSONStream": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "http://registry.npm.taobao.org/JSONStream/download/JSONStream-1.3.5.tgz",
|
||||
"integrity": "sha1-MgjB8I06TZkmGrZPkjArwV4RHKA=",
|
||||
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
|
||||
"integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
|
||||
"requires": {
|
||||
"jsonparse": "^1.2.0",
|
||||
"through": ">=2.2.7 <3"
|
||||
@ -132,8 +132,8 @@
|
||||
},
|
||||
"abbrev": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "http://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz",
|
||||
"integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg="
|
||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
|
||||
},
|
||||
"accepts": {
|
||||
"version": "1.3.5",
|
||||
@ -183,13 +183,13 @@
|
||||
},
|
||||
"archy": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "http://registry.npm.taobao.org/archy/download/archy-1.0.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
|
||||
"integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA="
|
||||
},
|
||||
"argparse": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "http://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz",
|
||||
"integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
||||
"requires": {
|
||||
"sprintf-js": "~1.0.2"
|
||||
}
|
||||
@ -340,7 +340,7 @@
|
||||
},
|
||||
"boolbase": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "http://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
|
||||
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
|
||||
},
|
||||
"brace-expansion": {
|
||||
@ -364,7 +364,7 @@
|
||||
},
|
||||
"browser-fingerprint": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "http://registry.npm.taobao.org/browser-fingerprint/download/browser-fingerprint-0.0.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz",
|
||||
"integrity": "sha1-jfPNyiW/fVs1QtYVRdcwBT/OYEo="
|
||||
},
|
||||
"bytes": {
|
||||
@ -430,7 +430,7 @@
|
||||
},
|
||||
"cheerio": {
|
||||
"version": "0.22.0",
|
||||
"resolved": "http://registry.npm.taobao.org/cheerio/download/cheerio-0.22.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
|
||||
"integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
|
||||
"requires": {
|
||||
"css-select": "~1.2.0",
|
||||
@ -542,8 +542,8 @@
|
||||
},
|
||||
"command-exists": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "http://registry.npm.taobao.org/command-exists/download/command-exists-1.2.8.tgz",
|
||||
"integrity": "sha1-cVrO/dEiO5ybNxEKFJxjksKFIpE="
|
||||
"resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz",
|
||||
"integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw=="
|
||||
},
|
||||
"component-emitter": {
|
||||
"version": "1.2.1",
|
||||
@ -595,7 +595,7 @@
|
||||
},
|
||||
"core-js": {
|
||||
"version": "1.2.7",
|
||||
"resolved": "http://registry.npm.taobao.org/core-js/download/core-js-1.2.7.tgz",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
|
||||
"integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
|
||||
},
|
||||
"core-util-is": {
|
||||
@ -619,7 +619,7 @@
|
||||
},
|
||||
"css-select": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "http://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
|
||||
"integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
|
||||
"requires": {
|
||||
"boolbase": "~1.0.0",
|
||||
@ -630,12 +630,12 @@
|
||||
},
|
||||
"css-what": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "http://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz",
|
||||
"integrity": "sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI="
|
||||
"resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
|
||||
"integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg=="
|
||||
},
|
||||
"cuid": {
|
||||
"version": "1.3.8",
|
||||
"resolved": "http://registry.npm.taobao.org/cuid/download/cuid-1.3.8.tgz",
|
||||
"resolved": "https://registry.npmjs.org/cuid/-/cuid-1.3.8.tgz",
|
||||
"integrity": "sha1-S4deCWm612T37AcGz0T1+wgx9rc=",
|
||||
"requires": {
|
||||
"browser-fingerprint": "0.0.1",
|
||||
@ -720,8 +720,8 @@
|
||||
},
|
||||
"dom-serializer": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "http://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.1.1.tgz",
|
||||
"integrity": "sha1-HsQFnihLq+027sKUHUqXChic58A=",
|
||||
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
|
||||
"integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==",
|
||||
"requires": {
|
||||
"domelementtype": "^1.3.0",
|
||||
"entities": "^1.1.1"
|
||||
@ -729,20 +729,20 @@
|
||||
},
|
||||
"domelementtype": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "http://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz",
|
||||
"integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8="
|
||||
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
|
||||
"integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
|
||||
},
|
||||
"domhandler": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "http://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz",
|
||||
"integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=",
|
||||
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
|
||||
"integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
|
||||
"requires": {
|
||||
"domelementtype": "1"
|
||||
}
|
||||
},
|
||||
"domutils": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "http://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
|
||||
"integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
|
||||
"requires": {
|
||||
"dom-serializer": "0",
|
||||
@ -766,8 +766,8 @@
|
||||
},
|
||||
"entities": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "http://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz",
|
||||
"integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY="
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
|
||||
"integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
|
||||
},
|
||||
"escape-html": {
|
||||
"version": "1.0.3",
|
||||
@ -795,8 +795,8 @@
|
||||
},
|
||||
"esprima": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "http://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz",
|
||||
"integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE="
|
||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
||||
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
|
||||
},
|
||||
"esrecurse": {
|
||||
"version": "4.2.1",
|
||||
@ -943,7 +943,8 @@
|
||||
},
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"bundled": true
|
||||
"bundled": true,
|
||||
"optional": true
|
||||
},
|
||||
"aproba": {
|
||||
"version": "1.2.0",
|
||||
@ -1308,7 +1309,8 @@
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"bundled": true
|
||||
"bundled": true,
|
||||
"optional": true
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
@ -1356,6 +1358,7 @@
|
||||
"strip-ansi": {
|
||||
"version": "3.0.1",
|
||||
"bundled": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
@ -1394,11 +1397,13 @@
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true
|
||||
"bundled": true,
|
||||
"optional": true
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.0.3",
|
||||
"bundled": true
|
||||
"bundled": true,
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1409,7 +1414,7 @@
|
||||
},
|
||||
"glob": {
|
||||
"version": "6.0.4",
|
||||
"resolved": "http://registry.npm.taobao.org/glob/download/glob-6.0.4.tgz",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
|
||||
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
@ -1516,8 +1521,8 @@
|
||||
},
|
||||
"hexo": {
|
||||
"version": "3.8.0",
|
||||
"resolved": "http://registry.npm.taobao.org/hexo/download/hexo-3.8.0.tgz",
|
||||
"integrity": "sha1-TQXM5Vje1cFN+hUWu645cXR/l0c=",
|
||||
"resolved": "https://registry.npmjs.org/hexo/-/hexo-3.8.0.tgz",
|
||||
"integrity": "sha512-qMk0TZ+ErKMD25R+HMHFvbyTAcKszmGZYtQHT2pzVnZgitkJCShZ7b2qDbedtWBBizhutNbKkhQ4D3Dqivaviw==",
|
||||
"requires": {
|
||||
"abbrev": "^1.0.7",
|
||||
"archy": "^1.0.0",
|
||||
@ -1550,13 +1555,13 @@
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
|
||||
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
|
||||
},
|
||||
"hexo-cli": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "http://registry.npm.taobao.org/hexo-cli/download/hexo-cli-1.1.0.tgz",
|
||||
"integrity": "sha1-SW0jjUZG2/0c8Ee23FJxv7XLeY8=",
|
||||
"resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-1.1.0.tgz",
|
||||
"integrity": "sha512-IWQPppwgmj1iBUcP5mpcMg3Tre6a8Qlr8ejXw6naZiJNSepSgh4mS3KiNPKDa2qQIgPDqJYJzNVFLw+RLA9CkA==",
|
||||
"requires": {
|
||||
"abbrev": "^1.0.7",
|
||||
"bluebird": "^3.4.0",
|
||||
@ -1573,7 +1578,7 @@
|
||||
"dependencies": {
|
||||
"chalk": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||
"requires": {
|
||||
"ansi-styles": "^2.2.1",
|
||||
@ -1585,7 +1590,7 @@
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
@ -1595,7 +1600,7 @@
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
|
||||
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
|
||||
}
|
||||
}
|
||||
@ -1610,8 +1615,8 @@
|
||||
},
|
||||
"hexo-bunyan": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "http://registry.npm.taobao.org/hexo-bunyan/download/hexo-bunyan-1.0.0.tgz",
|
||||
"integrity": "sha1-shBrJlR7Iy8BlduGPLXV/4Un/TY=",
|
||||
"resolved": "https://registry.npmjs.org/hexo-bunyan/-/hexo-bunyan-1.0.0.tgz",
|
||||
"integrity": "sha512-RymT8Ck+K77mLt9BEYNb4uyfC7RIQnU5N3laXowMrS28jj2h89VHJCOnhV00mmta4fHRqNa07kP1Hrn17nvMkQ==",
|
||||
"requires": {
|
||||
"moment": "^2.10.6",
|
||||
"mv": "~2",
|
||||
@ -1970,7 +1975,7 @@
|
||||
},
|
||||
"hexo-front-matter": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "http://registry.npm.taobao.org/hexo-front-matter/download/hexo-front-matter-0.2.3.tgz",
|
||||
"resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-0.2.3.tgz",
|
||||
"integrity": "sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4=",
|
||||
"requires": {
|
||||
"js-yaml": "^3.6.1"
|
||||
@ -1978,8 +1983,8 @@
|
||||
},
|
||||
"hexo-fs": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "http://registry.npm.taobao.org/hexo-fs/download/hexo-fs-0.2.3.tgz",
|
||||
"integrity": "sha1-w6gbRuRX36/FbYfHjvEUEE9KPkE=",
|
||||
"resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-0.2.3.tgz",
|
||||
"integrity": "sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==",
|
||||
"requires": {
|
||||
"bluebird": "^3.4.0",
|
||||
"chokidar": "^1.5.2",
|
||||
@ -2102,7 +2107,7 @@
|
||||
},
|
||||
"hexo-i18n": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "http://registry.npm.taobao.org/hexo-i18n/download/hexo-i18n-0.2.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-0.2.1.tgz",
|
||||
"integrity": "sha1-hPFBQyvwnYtVjth4xygWS20c1t4=",
|
||||
"requires": {
|
||||
"sprintf-js": "^1.0.2"
|
||||
@ -2110,8 +2115,8 @@
|
||||
},
|
||||
"hexo-log": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "http://registry.npm.taobao.org/hexo-log/download/hexo-log-0.2.0.tgz",
|
||||
"integrity": "sha1-0w/UXhoSqDyIAzWGZASF78XfWm8=",
|
||||
"resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-0.2.0.tgz",
|
||||
"integrity": "sha512-fzoc+GQexxPPILTjoOQILnA3ZG2MFgqMBVel4xvJ11pXptw9+f97ynTgDAExXafyp9Nz2ChXRuqlCYgPtZSlxQ==",
|
||||
"requires": {
|
||||
"chalk": "^1.1.1",
|
||||
"hexo-bunyan": "^1.0.0"
|
||||
@ -2119,12 +2124,12 @@
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
|
||||
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
|
||||
},
|
||||
"chalk": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||
"requires": {
|
||||
"ansi-styles": "^2.2.1",
|
||||
@ -2136,7 +2141,7 @@
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
@ -2144,7 +2149,7 @@
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
|
||||
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
|
||||
}
|
||||
}
|
||||
@ -2264,8 +2269,8 @@
|
||||
},
|
||||
"htmlparser2": {
|
||||
"version": "3.10.1",
|
||||
"resolved": "http://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-3.10.1.tgz",
|
||||
"integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=",
|
||||
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
|
||||
"integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
|
||||
"requires": {
|
||||
"domelementtype": "^1.3.1",
|
||||
"domhandler": "^2.3.0",
|
||||
@ -2464,9 +2469,9 @@
|
||||
"integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk="
|
||||
},
|
||||
"js-yaml": {
|
||||
"version": "3.12.2",
|
||||
"resolved": "http://registry.npm.taobao.org/js-yaml/download/js-yaml-3.12.2.tgz",
|
||||
"integrity": "sha1-7x0GfFqdnLZb1y8oW12BBcd/FPw=",
|
||||
"version": "3.13.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
|
||||
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
|
||||
"requires": {
|
||||
"argparse": "^1.0.7",
|
||||
"esprima": "^4.0.0"
|
||||
@ -2479,7 +2484,7 @@
|
||||
},
|
||||
"jsonparse": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "http://registry.npm.taobao.org/jsonparse/download/jsonparse-1.3.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
|
||||
"integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA="
|
||||
},
|
||||
"kind-of": {
|
||||
@ -2510,62 +2515,62 @@
|
||||
},
|
||||
"lodash.assignin": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "http://registry.npm.taobao.org/lodash.assignin/download/lodash.assignin-4.2.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz",
|
||||
"integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI="
|
||||
},
|
||||
"lodash.bind": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "http://registry.npm.taobao.org/lodash.bind/download/lodash.bind-4.2.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
|
||||
"integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU="
|
||||
},
|
||||
"lodash.defaults": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "http://registry.npm.taobao.org/lodash.defaults/download/lodash.defaults-4.2.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
|
||||
"integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw="
|
||||
},
|
||||
"lodash.filter": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "http://registry.npm.taobao.org/lodash.filter/download/lodash.filter-4.6.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
|
||||
"integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4="
|
||||
},
|
||||
"lodash.flatten": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "http://registry.npm.taobao.org/lodash.flatten/download/lodash.flatten-4.4.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
|
||||
"integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8="
|
||||
},
|
||||
"lodash.foreach": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "http://registry.npm.taobao.org/lodash.foreach/download/lodash.foreach-4.5.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
|
||||
"integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM="
|
||||
},
|
||||
"lodash.map": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "http://registry.npm.taobao.org/lodash.map/download/lodash.map-4.6.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
|
||||
"integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM="
|
||||
},
|
||||
"lodash.merge": {
|
||||
"version": "4.6.1",
|
||||
"resolved": "http://registry.npm.taobao.org/lodash.merge/download/lodash.merge-4.6.1.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Flodash.merge%2Fdownload%2Flodash.merge-4.6.1.tgz",
|
||||
"integrity": "sha1-rcJdnLmbk5HFliTzefu6YNcRHVQ="
|
||||
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz",
|
||||
"integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ=="
|
||||
},
|
||||
"lodash.pick": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "http://registry.npm.taobao.org/lodash.pick/download/lodash.pick-4.4.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
|
||||
"integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM="
|
||||
},
|
||||
"lodash.reduce": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "http://registry.npm.taobao.org/lodash.reduce/download/lodash.reduce-4.6.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
|
||||
"integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs="
|
||||
},
|
||||
"lodash.reject": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "http://registry.npm.taobao.org/lodash.reject/download/lodash.reject-4.6.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz",
|
||||
"integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU="
|
||||
},
|
||||
"lodash.some": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "http://registry.npm.taobao.org/lodash.some/download/lodash.some-4.6.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
|
||||
"integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0="
|
||||
},
|
||||
"longest": {
|
||||
@ -2602,7 +2607,7 @@
|
||||
},
|
||||
"markdown": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "http://registry.npm.taobao.org/markdown/download/markdown-0.5.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz",
|
||||
"integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=",
|
||||
"requires": {
|
||||
"nopt": "~2.1.1"
|
||||
@ -2666,7 +2671,7 @@
|
||||
},
|
||||
"minimist": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "http://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
|
||||
},
|
||||
"mixin-deep": {
|
||||
@ -2710,8 +2715,8 @@
|
||||
},
|
||||
"moment-timezone": {
|
||||
"version": "0.5.23",
|
||||
"resolved": "http://registry.npm.taobao.org/moment-timezone/download/moment-timezone-0.5.23.tgz",
|
||||
"integrity": "sha1-fLsA2ywUxxsZMDy0ew+wpthlFGM=",
|
||||
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.23.tgz",
|
||||
"integrity": "sha512-WHFH85DkCfiNMDX5D3X7hpNH3/PUhjTGcD0U1SgfBGZxJ3qUmJh5FdvaFjcClxOvB3rzdfj4oRffbI38jEnC1w==",
|
||||
"requires": {
|
||||
"moment": ">= 2.9.0"
|
||||
}
|
||||
@ -2735,7 +2740,7 @@
|
||||
},
|
||||
"mv": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "http://registry.npm.taobao.org/mv/download/mv-2.1.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
|
||||
"integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
@ -2787,7 +2792,7 @@
|
||||
},
|
||||
"ncp": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "http://registry.npm.taobao.org/ncp/download/ncp-2.0.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
|
||||
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
|
||||
"optional": true
|
||||
},
|
||||
@ -2814,12 +2819,12 @@
|
||||
},
|
||||
"node-fingerprint": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "http://registry.npm.taobao.org/node-fingerprint/download/node-fingerprint-0.0.2.tgz",
|
||||
"resolved": "https://registry.npmjs.org/node-fingerprint/-/node-fingerprint-0.0.2.tgz",
|
||||
"integrity": "sha1-Mcur63GmeufdWn3AQuUcPHWGhQE="
|
||||
},
|
||||
"nopt": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "http://registry.npm.taobao.org/nopt/download/nopt-2.1.2.tgz",
|
||||
"resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz",
|
||||
"integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=",
|
||||
"requires": {
|
||||
"abbrev": "1"
|
||||
@ -2835,8 +2840,8 @@
|
||||
},
|
||||
"nth-check": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "http://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz",
|
||||
"integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=",
|
||||
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
|
||||
"integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
|
||||
"requires": {
|
||||
"boolbase": "~1.0.0"
|
||||
}
|
||||
@ -3317,7 +3322,7 @@
|
||||
},
|
||||
"os-homedir": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "http://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz",
|
||||
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
|
||||
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
|
||||
},
|
||||
"os-locale": {
|
||||
@ -3361,8 +3366,8 @@
|
||||
},
|
||||
"path-parse": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "http://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz",
|
||||
"integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw="
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
|
||||
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
|
||||
},
|
||||
"posix-character-classes": {
|
||||
"version": "0.1.1",
|
||||
@ -3376,7 +3381,7 @@
|
||||
},
|
||||
"pretty-hrtime": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "http://registry.npm.taobao.org/pretty-hrtime/download/pretty-hrtime-1.0.3.tgz",
|
||||
"resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
|
||||
"integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE="
|
||||
},
|
||||
"process-nextick-args": {
|
||||
@ -3417,9 +3422,9 @@
|
||||
"integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-3.2.0.tgz",
|
||||
"integrity": "sha1-3hfyKYZMEgqfVpRXVuTzLEBFJF0=",
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
|
||||
"integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
@ -3742,8 +3747,8 @@
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "http://registry.npm.taobao.org/resolve/download/resolve-1.10.0.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.10.0.tgz",
|
||||
"integrity": "sha1-O9qur0XMB/N1ZW39LlTtCBCxAbo=",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
|
||||
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
|
||||
"requires": {
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
@ -3768,7 +3773,7 @@
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "2.4.5",
|
||||
"resolved": "http://registry.npm.taobao.org/rimraf/download/rimraf-2.4.5.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-2.4.5.tgz",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
|
||||
"integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
@ -3782,8 +3787,8 @@
|
||||
},
|
||||
"safe-json-stringify": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "http://registry.npm.taobao.org/safe-json-stringify/download/safe-json-stringify-1.2.0.tgz",
|
||||
"integrity": "sha1-NW5EvJjx+TzkXfFLzXwBzahuCv0=",
|
||||
"resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz",
|
||||
"integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==",
|
||||
"optional": true
|
||||
},
|
||||
"safe-regex": {
|
||||
@ -3997,7 +4002,7 @@
|
||||
},
|
||||
"sprintf-js": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "http://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
|
||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
|
||||
},
|
||||
"static-extend": {
|
||||
@ -4046,15 +4051,15 @@
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.2.0.tgz",
|
||||
"integrity": "sha1-/obnOLGVRK/nBGkkOyoe6SQOro0=",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz",
|
||||
"integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==",
|
||||
"requires": {
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
|
||||
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
|
||||
"requires": {
|
||||
"ansi-regex": "^3.0.0"
|
||||
@ -4062,7 +4067,7 @@
|
||||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
|
||||
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
|
||||
}
|
||||
}
|
||||
@ -4123,7 +4128,7 @@
|
||||
},
|
||||
"swig-extras": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "http://registry.npm.taobao.org/swig-extras/download/swig-extras-0.0.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/swig-extras/-/swig-extras-0.0.1.tgz",
|
||||
"integrity": "sha1-tQP+3jcqucJMasaMr2VrzvGHIyg=",
|
||||
"requires": {
|
||||
"markdown": "~0.5.0"
|
||||
@ -4140,17 +4145,17 @@
|
||||
},
|
||||
"text-table": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "http://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
||||
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ="
|
||||
},
|
||||
"through": {
|
||||
"version": "2.3.8",
|
||||
"resolved": "http://registry.npm.taobao.org/through/download/through-2.3.8.tgz",
|
||||
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
|
||||
},
|
||||
"tildify": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "http://registry.npm.taobao.org/tildify/download/tildify-1.2.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
|
||||
"integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
|
||||
"requires": {
|
||||
"os-homedir": "^1.0.0"
|
||||
@ -4158,8 +4163,8 @@
|
||||
},
|
||||
"titlecase": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "http://registry.npm.taobao.org/titlecase/download/titlecase-1.1.3.tgz",
|
||||
"integrity": "sha1-/G1l/1grBgJBB2jvGgm3BQYxPcM="
|
||||
"resolved": "https://registry.npmjs.org/titlecase/-/titlecase-1.1.3.tgz",
|
||||
"integrity": "sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw=="
|
||||
},
|
||||
"to-fast-properties": {
|
||||
"version": "2.0.0",
|
||||
@ -4378,7 +4383,7 @@
|
||||
},
|
||||
"warehouse": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "http://registry.npm.taobao.org/warehouse/download/warehouse-2.2.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/warehouse/-/warehouse-2.2.0.tgz",
|
||||
"integrity": "sha1-XQnWSUKZK+Zn2PfIagnCuK6gQGI=",
|
||||
"requires": {
|
||||
"JSONStream": "^1.0.7",
|
||||
|
140
source/_posts/Caving-db-storage.md
Normal file
140
source/_posts/Caving-db-storage.md
Normal file
@ -0,0 +1,140 @@
|
||||
---
|
||||
title: Caving_db_storage
|
||||
date: 2019-04-15 15:38:47
|
||||
tags:
|
||||
- 数据库
|
||||
- 复原文件
|
||||
- 取证
|
||||
categories:
|
||||
论文
|
||||
---
|
||||
|
||||
# Carving database storage to detect and trace security breaches
|
||||
> 复原数据库存储以检测和跟踪安全漏洞
|
||||
> [原文下载](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555312497/paper/2016-paper_carving_database_storage_to_detect_and.pdf)
|
||||
|
||||
## Motivation
|
||||
### DBMS(数据库管理系统)
|
||||
- 通常用于存储和处理敏感数据,因此,投入了大量精力使用访问控制策略来保护DBMS。
|
||||
- 一旦用户在DBMS中获得提升权限(无论是合理的还是通过攻击的),实施的安全方案可以绕过,因此无法再根据政策保证数据受到保护。
|
||||
1)访问控制策略可能不完整,允许用户执行他们不能执行的命令
|
||||
2)用户可能通过使用DB或OS代码中的安全漏洞或通过其他方式非法获取权限
|
||||
- 部署预防措施
|
||||
1)在及时发生安全漏洞时检测安全漏洞;
|
||||
2)在检测到攻击时收集有关攻击的证据,以便设计对抗措施并评估损害程度
|
||||
|
||||
### 例子
|
||||
Malice是政府机构的数据库管理员,为公民提供犯罪记录。 Malice最近被判犯有欺诈罪,并决定滥用她的特权,并通过运行DELETE FROM Record WHERE name = 'Malice'来删除她的犯罪记录。
|
||||
但是,她知道数据库操作需要定期审核,以检测对机构存储的高度敏感数据的篡改。为了覆盖她的操作,Malice在运行DELETE操作之前停用审计日志,然后再次激活日志。因此,在数据库中没有她的非法操纵的日志跟踪。
|
||||
但是,磁盘上的数据库存储仍将包含已删除行的证据。
|
||||
作者的方法检测已删除的痕迹和过期的记录版本,并将它们与审核日志进行匹配,以检测此类攻击,并提供数据库操作方式的证据。
|
||||
作者将检测已删除的行,因为它与审计日志中的任何操作都不对应,我们会将其标记为篡改的潜在证据。
|
||||
![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555310640/paper/%E5%9B%BE%E7%89%871.png)
|
||||
|
||||
### 思路一览
|
||||
![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555310736/paper/%E6%8D%95%E8%8E%B7.png)
|
||||
|
||||
### 提出方法
|
||||
使用称为DICE的现有取证工具(Wagner等,2017)来重建数据库存储
|
||||
通过匹配提取的存储条目,报告任何无法通过操作记录解释的工件来自动检测潜在的攻击
|
||||
1. DBDetective检查数据库存储和RAM快照,并将它找到的内容与审计日志进行比较
|
||||
2. 然后,在不影响数据库操作的情况下,对核心数据进行分析。
|
||||
![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555310863/paper/%E5%9B%BE%E7%89%872.png)
|
||||
|
||||
确定数据库篡改的可能性,并指出数据库存储中发现的具体不一致性。
|
||||
由于数据库存储的易变性,无法保证将发现所有攻击。
|
||||
在对于我们评估的每个主要DBMS,我们假设DBMS已启用审计日志来捕获与调查相关的SQL命令。
|
||||
我们进一步假设一名攻击者通过以下方式阻止记录已执行的恶意命令:
|
||||
- 停用审计策略并暂时挂起日志记录
|
||||
- 更改现有审计日志(两者都在数据库日志可靠性部分中讨论)。
|
||||
通过将取证分析技术应用于数据库存储或缓冲区缓存,并将发现的证据与审计日志相匹配,可以:
|
||||
- 检测DBMS审核日志中未显示的多种类型的数据库访问和操作。
|
||||
- 将未归因的记录修改分类为模糊的INSERT,DELETE或UPDATE命令。
|
||||
- 检测无法从审核日志中的活动派生的(只读)SELECT查询中的缓存数据。
|
||||
|
||||
## Reliability of database logs
|
||||
攻击者可以更改两种类型的日志: write-ahead logs (WAL) and audit logs (event history records)
|
||||
- WALs以低级别记录数据库修改以支持ACID保证,提供最近表修改的历史记录。
|
||||
通常无法禁用或轻松修改WAL,并且需要读取专用工具(例如,Oracle LogMiner或PostgreSQL pg_xlogdump)。
|
||||
某些DBMS允许为特定操作禁用WAL,例如批量加载或结构重建。因此,可以通过此功能插入记录而不留下日志跟踪。
|
||||
- audit logs记录配置的用户数据库操作。包括SQL操作和其他用户活动。审计日志根据数据库管理员配置的日志记录策略存储已执行的SQL命令。 因此,管理员可以根据需要禁用日志记录或修改单个日志记录。
|
||||
![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555311090/paper/%E5%9B%BE%E7%89%873.png)
|
||||
|
||||
## Detecting hidden record modifications
|
||||
插入或修改表记录时,数据库中会发生一连串的存储更改。 除了受影响记录的数据本身之外,页面元数据会更新(例如,设置删除标记),并且存储记录的索引的页面会改变(例如,以反映记录的删除)。 如果尚未缓存,则每个访问的页面都将被带入RAM。 行标识符和结构标识符可用于将所有这些更改绑定在一起。
|
||||
此外,DBA(数据库管理员)还可以禁用批量修改的日志记录(出于性能考虑)——可以利用此权限来隐藏恶意修改。
|
||||
在本节中,我们将描述如何检测已修改记录与已记录命令之间的不一致。
|
||||
### Deleted records
|
||||
1. 算法
|
||||
删除的记录不会被物理删除,而是在页面中标记为“已删除”; 已删除行占用的存储空间将成为未分配的空间,最终将被新行覆盖。这些对数据库存储的更改不能被绕过或控制。
|
||||
识别存储中与日志中的任何删除操作都不匹配的已删除行。
|
||||
![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555311166/paper/%E5%9B%BE%E7%89%874.png)
|
||||
2. 实例
|
||||
- DICE从Customer表重建了三个删除的行
|
||||
(1,Christine,Chicago)
|
||||
(3,Christopher,Seattle)
|
||||
(4,Thomas,Austin)
|
||||
- 日志文件包含两个操作
|
||||
在算法1中,DeletedRows被设置为三个重建的已删除行。
|
||||
算法1返回(4,Thomas,Austin),表示该删除的记录不能归因于任何删除。
|
||||
![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555311315/paper/%E5%9B%BE%E7%89%875.png)
|
||||
|
||||
### Inserted records
|
||||
1. 算法
|
||||
新插入的行将附加到表的最后一页的末尾(如果最后一页已满,则为新页)或覆盖由先前删除的行创建的可用空间。
|
||||
如果“活跃”新表行与审核日志中的任何插入操作都不匹配,则此行是可疑活动的标志。
|
||||
算法2中使用这些“活跃”记录来确定重构行是否可归因于审计日志中的插入。
|
||||
![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555311991/paper/%E5%9B%BE%E7%89%876.png)
|
||||
2. 实例
|
||||
- 该日志包含六个操作。
|
||||
当行从T1插入到T4时,它们将附加到表的末尾。
|
||||
在T5,删除(3,Lamp)
|
||||
然后在T6插入(5,Bookcase)。
|
||||
由于row(5,Bookcase)大于删除的行(3,Lamp),因此它将附加到表的末尾。
|
||||
- DICE重建了五个活动记录
|
||||
包括(0,Dog)和(2,Monkey)
|
||||
行被初始化为算法2的五个重建活动行
|
||||
算法2因此返回(0,Dog)和(2,Monkey)
|
||||
因为这些记录无法与记录的插入匹配。
|
||||
![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555312072/paper/%E5%9B%BE%E7%89%877.png)
|
||||
|
||||
### Updated records
|
||||
1. 算法
|
||||
UPDATE操作本质上是一个DELETE操作,后跟一个INSERT操作。
|
||||
为了考虑更新的行,我们使用算法1返回的未标记删除行和算法2返回的未标记插入行作为算法3的输入。如果删除的行可以与更新的WHERE子句匹配,那么此删除的行操作 被标记为存在于日志中。 接下来,如果未标记的插入行可以与SET子句中的值匹配,并且插入的行匹配已删除行中除SET子句值之外的所有值,则此插入的行操作将出现在日志中。
|
||||
![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555312183/paper/%E5%9B%BE%E7%89%878.png)
|
||||
2. 实例
|
||||
算法1返回行(2,Desk)
|
||||
算法2返回行(0,Dog)和(2,Monkey)
|
||||
使用这些记录集,算法3返回(2,Desk)作为已删除记录的列表,并将(0,Dog)和(2,Monkey)作为插入记录的列表。
|
||||
此外,算法3识别(2,Desk)和(2,Monkey)中第一列的共享值2。 虽然这不能单独确认UPDATE操作,但可以合理地得出结论:
|
||||
(2,Desk)已更新为(2,Monkey)。
|
||||
![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555312234/paper/%E5%9B%BE%E7%89%879.png)
|
||||
|
||||
## Detecting inconsistencies for read-only queries
|
||||
DBMS使用称为缓冲区管理器的组件将页面从磁盘缓存到内存中。数据以页为单位读入缓冲池,可以通过DICE重建。
|
||||
在本节中,将描述如何将缓冲池中的工件与审计日志中的只读查询进行匹配。
|
||||
数据库查询可以使用两种可能的访问表的方式之一:
|
||||
全表扫描(FTS)或索引扫描(IS)。
|
||||
FTS读取所有表页,而IS使用索引结构来检索引用基于搜索关键字的指针列表。
|
||||
### Full table scan
|
||||
当查询使用FTS时,只会缓存大表的一小部分。 可以完整地缓存小表(相对于缓冲池大小)。 每个数据库都在页眉中存储唯一的页面标识符,这使我们能够有效地将缓存的页面与磁盘上的对应页面进行匹配。
|
||||
我们可以通过SID=131识别属于Employee的页面,该SID=131存储在页面标题中。 DICE只能以更快的速度返回页面结构标识符(无需解析页面内容)。
|
||||
Q2和Q4都通过FTS访问员工。 每次扫描Employee表时,表中相同的四个页面(PID:97,98,99和100)都会加载到缓冲池中。
|
||||
因此,当在存储器中找到具有PID:97,98,99和100以及SID:131的四个页面时,可以假设FTS应用在Employee表上。
|
||||
![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555312316/paper/%E5%9B%BE%E7%89%8710.png)
|
||||
|
||||
### Index access
|
||||
Customer表的SID=124,C_City列上的二级索引的SID=126.
|
||||
Q1在城市Dallas上进行过滤,并使用PID=2缓存索引页。此页面的最小值为Chicago和最大值为Detroit 。
|
||||
Q3在城市Jackson上过滤,并缓存索引页面,页面标识符为4.此页面的最小值为Houston,最大值为Lincoln。
|
||||
如果审核日志中的查询过滤了索引页的最小值和最大值范围内的值,则该页可以归因于该查询。
|
||||
![](https://res.cloudinary.com/dozyfkbg3/image/upload/v1555312359/paper/%E5%9B%BE%E7%89%8711.png)
|
||||
|
||||
|
||||
### Conclusions and future work
|
||||
- 审计日志和其他内置DBMS安全机制旨在检测或阻止攻击者执行的恶意操作。这种机制的固有缺点是具有足够权限的攻击者可以绕过它们来隐藏它们的踪迹。
|
||||
- 我们提供并全面评估DBDetective,它可以检测攻击者通过从审计日志中删除从而隐藏的数据库操作,并收集有关攻击者访问和修改哪些数据的证据。
|
||||
- 我们的方法依赖于对数据库存储的取证检查,并将此信息与审核日志中的条目相关联,以发现恶意操作的证据。
|
||||
- 重要的是,数据库存储几乎不可能被欺骗,因此,与例如审计日志相比,它是更可靠的篡改证据来源。
|
||||
- 鉴于存储快照提供的信息不完整,我们将探索概率匹配,确定存储工件由审计日志中的操作引起的可能性,根据操作的时间顺序利用其他约束,模拟审计中SQL命令的部分历史记录获得更精确的匹配,并根据检测到的异常动态调整拍摄快照的频率。
|
Loading…
Reference in New Issue
Block a user