审计包依赖项是否存在安全漏洞

关于安全审计

安全审计是对安全漏洞的包依赖关系的评估。安全审计使您能够发现并修复依赖项中可能导致数据丢失、服务中断、未经授权访问敏感信息或其他问题的已知漏洞,从而帮助您保护包的用户。

使用 npm audit 运行安全审计

注意:npm audit 命令在 npm@6 中可用。要升级,请运行 npm install npm@latest -g

npm audit 命令 将您的包中配置的依赖项的描述提交到您的默认注册表,并要求报告已知漏洞。npm audit 检查直接 dependencies、devDependencies、bundledDependencies 和 optionalDependencies,但不检查 peerDependencies。

当您使用 npm install 安装包时,npm audit 会自动运行。您还可以在您的 本地安装的包 上手动运行 npm audit 以对包进行安全审计,并生成依赖漏洞报告,如果可用,建议补丁。

  1. 在命令行上,通过键入 cd path/to/your-package-name 并按 Enter 导航到您的包目录。
  2. 确保您的包中包含 package.jsonpackage-lock.json 文件。
  3. 键入 npm audit,然后按 Enter。
  4. 查看审计报告并运行推荐的命令或在需要时进一步调查。

解决 EAUDITNOPJSON 和 EAUDITNOLOCK 错误

npm audit 要求包有 package.jsonpackage-lock.json 文件。

    U1cuTgkFYoFcdvnNAyahnKCFMxQl3wG5R+mj+XoBWMC+4y+TIvMd2YY8HahKrea6shiTqP3MTaBpp2yDTbhS0oDZMZEHR1nC/ELuMHGCI1wSVqUAr6tBzuB3dET+4qs/TpAgCMifYMjL+LnCwSUycgdQj2Ns5Q0qyFHdkr0ZbFWa5ORdAD2yVtUhSRTrDHRDbNyC2IaxXjaHxn45yuGruXUjGN3euyoCJ7fogctGtvxJT3Flnl4lAD6SEtvdhK3u8sHDZ8tyyaKMDoDwctwEJ5hDY2ciIeThZE/F2FDZ9e3Y6VKPDkOs47aakdr0fhjHJ/PMrOGKVGaOiqtQft2Diw1dvyDqjfkU66kWF2smRAUPOm762VEYCsPtYpIGDv729g0s5OMKMnX5Vh96ZyStJWVy8gDYFl8tBnpWjwiB08XXuFYVXK1krxiPqGTXwADdKCinGngySfjNpCEWL/841eEt/J5jAn2o+eCy9BljOdD/TfJK5gVpie5Pmqe+nmoCyzRl4CaXt1QUg7kCYAj7zw==

审查和处理安全审计报告

Q8MoMuEXq0XgwAOE8UD6TMAXtMV7cVrSZiW9RfJw1Cy0IItw5pJqXiA9xPdXmdL6xyPrXUytJtDmuiCMkQY/xdxhYCCLYXfQ3Ez6N9fXv3VkCQaLpg3RLRaPt7zORtENrJ8jyDEbfz2fX19EGZWjO0CTUZaUVyd8rSXwG70VaALsIwhO80FEzc//tE7VX4tAceNsAg/R2x+Y0X4TiSJ0rjycl+5o9SboRFoxoLmSXdHfaFAsmODNkOfUAx/ZzJb3SVOgH/55Q4JnqdduKaUoXfBuAXRtET1zn/XLMn/8PmS43f2SVx4J4OTF90IBaQdVVSKoRIw7dXkFIvElQqIVETFa4ZVTwrKuJG5ZiVMepXnqw/57rND8U3nSORljrZWEFjWo2JWbmaW3W9HiuP5G+sFyS70dLjSCOnLAlE98z3dHK87OJM2ajpQ4YkAW57xxoRlwn5s+WQGJGh5bUJ9fKA==

发现建议更新的安全漏洞

Ewu4jyXPu1eMhDSOJAtz9bkeSTsuJx6LaMVqLzEf4GNHal9gBSnWo53R/KbVcNB+a9mGL9pRaRUkfyFDHx4KvQ==

    IUV528nTpzTjAxatMSjwGJ5HZXsD0VY6wsCkslsXRGSpZRpTlgB6ij/ynMc0jU5s5iuBs+MgbmD1GhxxuIzEHFTzKDvVd7asSGwqaYPQtVk6iRf8o77PGi80kmP4NcqYJce+2hoZhN7F6gk1AaZFKpvSJ4+McUIBRpERQjfoDD8u9i6QuHNaSyDu7DiaM8Jgca+UkTAr1g46jBw0tvLGjWksNVgIc9LVy7j5edBF1uiRhrrKqkyt03hBwbCSR108l5dU7Is5nfyLUEeRvhrr6tdU45m7JrgELvtZfJYYCYAefxmOMIQ7Ay7FCdcIG5rtVTI9bMFzW3DuUV7C9oZSGUA0pNL2Whwe8kMnmtU0Xkc2LYoUUALelFzOpaBR1LFzNBpV9lK7lTlioj+etg6Kd3ky81vuHi259IuXaa/Xr3GnpazzbnKFdEm9WSEcmxnpOrevmdOz/+WJ2/Of7ybzpA==

SEMVER 警告

m+DCknYQScJeZrX87pPrdkm2+3WKPGNHEeI55nXbOGfsaqTv8zQsOTPt3n0qEso42LjW+88yKBCuSy6uKn709zN+FqUtmzQ7bOXQ7/zv3PdncRntOVz87V/8hwQZOifit1le1WiSa2NCpdDChVlcCrYFvmYPCI1ZSj0nuIPe1KbMtq0WbVI4fna1dcjdoBoKL58v2kLgcHnf0+/Dm9kLFcFYwzab63hc2AGIi6h/wRI/JZb76uYvk7nr5oUW7qOtieGatUxPGasoDR1Z1abMeFjtiFw7jCZamEMkcIHRtWaeXCILSDw+XsfbS4YyUSv/W+XOG1cjmjvVHUTauWOFeu4nRBd+j3wmTkiEbfGTlUxw1UqXaLCLdN/GPzxTnSBIlZFBavvwhrj3TPn5uvYGvw==

发现需要人工审核的安全漏洞

Ewu4jyXPu1eMhDSOJAtz9fUVIi4xWxjto183yEwM+7a2LtthhVxHky9zfFPVsgIamoo4jbJ6EnJNYKWeD5/yQwzqJiS+SJc86QPcVPJeVPg5sg5MJyqLHmDLuN3r/+fXMGWwH4m1rY6t8XqDgxeWOUlJJpe0XN5OqnBwXjz8i4M=

O2gmmkufu740q9g286D/65/NCx2PzV1NBRRmcOjY/SM=

    1Rva7p+icziVx5zNe6dmpXDbMlJ93PY3unOpXou0+YWxVvYhDoNCqwsZFWFf4f5JtzSn2zlHJ0qheArpWSomCG98nDaoJ8fO3B49QtJCq+dp7b3XQ7qssr14v0CDq5O2e97ayGyhZNoVnTekqB5O7ZPOE2473B6qH4t5EnSlB+8SnmsimtIvueKB6hlaJzCCk4ijbw614lDklTLZHUT7Hcdr4JQt/zNWSmHF77gZ/wsaQ8MObrLK1gbNcdbB2Ao6lFT2UzelsUom193PbU/AGR7AX5b4ainWGcMpxlkHLOxdP6SUWeHz/CAZXnn2O98j39rKBbuvmgv+5rNSDPpj5rH+SqkypBWktX6oTAGdswBOXnEf28HG4aHL7EMO+WI4PGz3VU+wRa3EIUwlGs5E4lPv5q4GoHyWnz4u4dC1hRhYDeLhRgv2Aophyv5o3xYHAZ83O7VAwRVXTS8Spe7AqKFU/gnxa7atScFvjJaYBVE=

检查缓解因素

TW4QKV5bwJlUiXvsLqnarhbVCRF52GUfOkd3kFLZOnF64Eta0dPkIUQC1LnfzT+BUOR9znsS8Ix0TCYQSD8V6AvthBkuNjTKxmFd2PSNVDsTumZU0GEAI5u2Pp7oWCfM2TB5QIFCQ/9XWEgNnH8Ym4012Q/2IRIUpTHgdDTrnft6MaTextaPiWV0hib6k+GET9hIEsqwGIH/sjX8+AAhuThyGtPxmn+SiCI4dCqSHx8EbrsIvIks5RhvUeGUD2TIub2pI7bX1YG2NbEhZMC4Zc5dgA55UBCEHw4I6fJXvybAtX2LP3Tn8IhdQ3oTZ+y6

如果存在修复则更新依赖包

U0pyvwbinrovEdxmJxI1qd3/xqKo/65qX41I34HxCvsvHGrrarL8cPZgXM8a2CWqMQsYYD5b9bnxoPaomUS2BKDhJQj6VJ2UKW6yxOW/7sYp65BZ3oPW0rjq91o/a9ycMPcP0rirm7EPTdT4DUYwasInpZgGCu8Td8wgk6gQMVK1X3DAROsHRIWE+godUXh5IqrGGk5iEXva/4xXMzxRckTVx2ALpH9/ZqcUFa7kneIB7iekfc1KyQTdut0Gb4eYsQpCYBA1PyU4LzNcwFp9H8awmVEsgXeDxtucCpbBvmI=

  1. 要查找必须更新的包,请检查 "Path" 字段以获取存在漏洞的包的位置,然后检查依赖于它的包。例如,如果漏洞的路径是 @package-name > dependent-package > package-with-vulnerability,则需要更新 dependent-package
  2. npm 公共注册表 上,找到依赖包并导航到其存储库。有关查找包的更多信息,请参阅 "搜索并选择要下载的包"。
  3. 在依赖包存储库中,打开拉取或合并请求以将易受攻击的包的版本更新为具有修复的版本。
  4. 合并拉取或合并请求并且包已在 npm 公共注册表 中更新后,请使用 npm update 更新您的包副本。

修复漏洞

6K4bqK4yFPB/n+PZ7CS7am+/JgG9m4ePIAoRikpK79ufge9tDh2HXy7uTQliySBvkQLdHiWpiQ95NGia72VjIP6oSqn/3Gf/z9K7OrPKqvWWdCMuSYgMk7zXY10pE9q/vXn5DqtRjtzrcMNrq0AlVZKZUtoasx6m3LpaEAaGgpE=

  1. 检查 "Path" 字段以了解漏洞的位置。
  2. npm 公共注册表 上,找到存在漏洞的包。有关查找包的更多信息,请参阅 "搜索并选择要下载的包"。
  3. 在包存储库中,打开拉取或合并请求以对包存储库进行修复。
  4. 合并修复并在 npm 公共注册表中更新包后,使用修复更新依赖于包的包副本。

在包或依赖包问题跟踪器中打开问题

PsPX0wHy7p3SC2mjqb/WkrSC2AZUIkXR4d8Uks7Jzb3PyHYVyXk+z1WbZbDL8dU4GhDhcjASa6iUcHCYKLYEVBoFnkiN35pXFXyBqkbOGXt2Fe+eBZtzDSHH3fz1jXzxNnoiKp0oLgfIOsXvSoug8g==

  1. npm 公共注册表上找到存在漏洞的包或者需要更新的依赖包。有关查找包的更多信息,请参阅 "搜索并选择要下载的包"。
  2. 在包或依赖包问题跟踪器中,打开一个问题并包含来自审计报告的信息,包括来自 "More info" 字段的漏洞报告。

未发现安全漏洞

kDz82dIy7BWZA0VAFEX6qLAzxA5gGDKSlBcLmQGr3PaDRMTShtGsvQAJyBvLLMbfnIfvAxyDJYPX2TPCwM8kTHgvaPEaOkR0kahPu+EldkiqN7ckYBbQgH0VS9jyZ4X/0M9360ZNFZXpdz2aOmMLl3yLmBupik8vfU7+uh3w4WsERrhWPGQ1E3i2WH5vV+Melaj6rUyRPcSzGBAgYExrkwceHZwhK6l4XT+fHksoswjpQ/6lhY9eNce6gQxHa1LgaMsobs45Qo2PqgreRTsVYiV6lnm1ukjz/dBvhOjiLVJX9W/QGVeTbMHNNpProJuB7SrCforiZd/MJdoSsgM2ivSdutesaQ6DtXXgOzXQCIzi8O1gY2aD6N+lHTuciZ5b

在安装包时关闭 npm audit

安装单个包

Iii8tzSlnPt0Q1Nw3rSJ7kTvI6/SXl+MmmFbC1dN3i3m0Jh5llr5dihGI6s5nZ59hGC/W+Txo238GXq540waJbM/AyikE+ykyHKJUQwktcX7qDylrpq9hTrLVABDIr2N4pPXLt+P+HBC5iISyqbD1A==

npm install example-package-name --no-audit

C+raho2YxKtukQd0jJGzwW9Mivhz00+stAjf6gOdZ4m+/KK7hKPPlPoWruAFx2hA5/f233qV6ZReddzq9hVkDoleBArLvG9IswTvi+v003sa/wRR04N0mBglrr5OFg3m0IW4sx/JUvov8sAw3zGuhLYTb1wbwTxNaMpkZRMWjgo=

安装所有包

suKzgYnMp5XH7OvFi1PwJRnPz1V8UXMzcRD+xaiVaeT+eOogVYk6eCt/aaej8PNPe3jPHIVifRx+WaVasxNOxYMTqYeDr0lvXUUlyOrfaEPFH05cjFAR3zRrR6uRlOZSL5G/pvf7dPdStfbVR8RnyTuMUjZpyQ1+/3hGIwTwtJ29FahSijz9DMXSAIs0xq1EkrfTOSnLLat+tpHAHe6Eqyz+hfleGIJCOosS1IcXcBE=

npm set audit false

C+raho2YxKtukQd0jJGzwW9Mivhz00+stAjf6gOdZ4k3RLMUffkxlb51kLHYzIDk2Dv4utwENlvNY4d1JVGJkpf7mS5nCizSp9SSyp2QyJdyOJFwYmYRfpugfO47e6Bd77lRxKV10ZZJ8qpZ4+s00MePnaC/0lByZjX7XBg6kLKVHyAZxYdrp8vux4WeyKlsK1x5/vATgUBSqFPqy+6tkZymWqbQ2NSBNNaKE3CgE9CQGShRA+WHr7sz3zTNbFmMKoodjLvZrbCOdJhwQO6DT4huIzatFLfPTaGtz/cdCXE=