{"id":1856,"date":"2022-04-19T16:04:37","date_gmt":"2022-04-19T08:04:37","guid":{"rendered":"https:\/\/blog.billows.com.tw\/?p=1856"},"modified":"2023-02-13T11:08:21","modified_gmt":"2023-02-13T03:08:21","slug":"github-%e9%a7%ad%e5%ae%a2%e4%bd%bf%e7%94%a8%e8%a2%ab%e7%9b%9c%e7%9a%84oauth-%e7%94%a8%e6%88%b6%e6%ac%8a%e6%9d%96%e5%85%a5%e4%be%b5%e4%ba%86npm-%e7%ad%89%e6%95%b8%e5%8d%81%e5%80%8b%e7%b5%84%e7%b9%94","status":"publish","type":"post","link":"https:\/\/blog.billows.com.tw\/?p=1856","title":{"rendered":"Github: \u99ed\u5ba2\u4f7f\u7528\u88ab\u76dc\u7684OAuth \u7528\u6236\u6b0a\u6756\u5165\u4fb5\u4e86NPM \u7b49\u6578\u5341\u500b\u7d44\u7e54"},"content":{"rendered":"\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/thehackernews.com\/new-images\/img\/b\/R29vZ2xl\/AVvXsEhyyZD-eQE6DIUtLr32I8PmlXJJWLkfrss7xFzRsPGP2qUwIPloMe7K1P16NLiXwd19qgx8OdnhBKZ5mAQtZj9BSPE_Zw3UQ7tv8rf2BXsbkD1Ycot9dlUQXA9eSDAvPGO2PQ8QFC7Tj0fd3DhLqspr-ANfwPFJ7X5Bb9iNKdW8uDpp0__qjgN1QjbA\/s728-e1000\/github.jpg\" alt=\"OAuth Access Tokens\"\/><figcaption class=\"wp-element-caption\">Photo Credit: The Hacker News<\/figcaption><\/figure>\n\n\n\n<p>\u57fa\u65bc\u96f2\u7aef\u7684\u5b58\u5132\u5eab\u8a17\u7ba1\u670d\u52d9\u8005 GitHub \u9031\u4e94(4\/15) \u900f\u9732\uff0c\u5b83\u767c\u73fe\u4e86\u4e00\u500b\u8eab\u4efd\u4e0d\u660e\u99ed\u5ba2\u5229\u7528\u88ab\u76dc OAuth \u7528\u6236\u6b0a\u6756(token)\u672a\u7d93\u6388\u6b0a\u5f9e\u591a\u500b\u7d44\u7e54\u4e0b\u8f09\u79c1\u4eba\u6578\u64da\u7684\u8b49\u64da\u3002GitHub \u7684 Mike Hanley\u5728\u4e00\u4efd\u5831\u544a\u4e2d<a href=\"https:\/\/github.blog\/2022-04-15-security-alert-stolen-oauth-user-tokens\/\">\u62ab\u9732<\/a>\uff0c\u653b\u64ca\u8005\u6feb\u7528\u767c\u7d66\u5169\u500b\u7b2c\u4e09\u65b9 OAuth \u6574\u5408\u5546 Heroku \u548c Travis-CI\u88ab\u76dc\u7684 OAuth \u7528\u6236\u6b0a\u6756\uff0c\u5f9e\u5305\u62ec NPM \u5728\u5167\u7684\u6578\u5341\u500b\u7d44\u7e54\u4e0b\u8f09\u6578\u64da\u3002<\/p>\n\n\n\n<p>\u61c9\u7528\u7a0b\u5f0f\u548c\u670d\u52d9\u901a\u5e38\u4f7f\u7528OAuth \u5b58\u53d6\u6b0a\u6756\u4f86\u6388\u6b0a\u8a2a\u554f\u7528\u6236\u6578\u64da\u7684\u7279\u5b9a\u90e8\u5206\u4e26\u76f8\u4e92\u901a\u8a0a\uff0c\u800c\u7121\u9700\u5171\u4eab\u5be6\u969b\u6191\u8b49\u3002\u9019\u662f\u7528\u65bc\u5c07\u6388\u6b0a\u5f9e\u55ae\u9ede\u767b\u9304 ( SSO ) \u670d\u52d9\u50b3\u905e\u5230\u53e6\u4e00\u500b\u61c9\u7528\u7a0b\u5e8f\u7684\u6700\u5e38\u7528\u65b9\u6cd5\u4e4b\u4e00\u3002<\/p>\n\n\n\n<p>\u6839\u64da Hanley \u7684\u8aaa\u6cd5\uff0c\u53d7\u5f71\u97ff\u7684 OAuth \u61c9\u7528\u7a0b\u5f0f\u6e05\u55ae\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p>Heroku \u5100\u8868\u677f (ID: 145909)<\/p>\n\n\n\n<p>Heroku \u5100\u8868\u677f (ID: 628778)<\/p>\n\n\n\n<p>Heroku \u5100\u8868\u677f \u2013 Preview (ID: 313468)<\/p>\n\n\n\n<p>Heroku \u5100\u8868\u677f &nbsp;\u2013 Classic (ID: 363831)<\/p>\n\n\n\n<p>Travis CI (ID: 9216)<\/p>\n\n\n\n<p>Github\u8868\u793a\uff0cOAuth \u7684\u6b0a\u6756\u4e26\u4e0d\u662f\u901a\u904e\u5165\u4fb5GitHub\u6216\u5176\u7cfb\u7d71\u7372\u5f97\u7684\uff0c\u56e0\u70baGitHub \u4e26\u672a\u4ee5\u539f\u59cb\u7684\u53ef\u7528\u683c\u5f0f\u5b58\u5132\u6b0a\u6756\u3002\u6b64\u5916\uff0cGitHub \u8b66\u544a\u8aaa\uff0c\u653b\u64ca\u8005\u53ef\u80fd\u6b63\u5728\u4f7f\u7528\u9019\u4e9b\u7b2c\u4e09\u65b9 OAuth \u61c9\u7528\u7a0b\u5f0f\u5206\u6790\u5f9e\u53d7\u5bb3\u8005\u5be6\u9ad4\u4e0b\u8f09\u7684\u79c1\u6709\u5b58\u5132\u5eab\u5167\u5bb9\uff0c\u88ab\u76dc\u7684 OAuth \u6b0a\u6756\u53ef\u4ee5\u5b58\u53d6\u9019\u4e9b\u5167\u5bb9\uff0c\u4ee5\u7372\u53d6\u53ef\u7528\u65bc\u8f49\u5411\u5176\u4ed6\u57fa\u790e\u8a2d\u65bd\u7684\u6a5f\u5bc6\u7684\u6578\u64da\u3002<\/p>\n\n\n\n<p>Github\u6307\u51fa\uff0c\u5b83\u5728 4 \u6708 12 \u65e5\u767c\u73fe\u4e86\u653b\u64ca\u6d3b\u52d5\u7684\u65e9\u671f\u8b49\u64da\uff0c\u7576\u6642\u5b83\u9047\u5230\u4e86\u4f7f\u7528\u88ab\u5165\u4fb5<a>\u7684<\/a> AWS API \u91d1\u9470\u5c0d\u5176 NPM \u7684\u751f\u7522\u74b0\u5883\u9032\u884c\u672a\u7d93\u6388\u6b0a\u7684<a>\u5b58\u53d6<\/a>\u3002<\/p>\n\n\n\n<p>\u9019\u500b AWS API \u91d1\u9470\u88ab\u8a8d\u70ba\u662f\u901a\u904e\u4f7f\u7528\u5f9e\u5169\u500b\u53d7\u5f71\u97ff\u7684 OAuth \u61c9\u7528\u7a0b\u5f0f\u4e4b\u4e00\u4e2d\u7aca\u53d6\u7684 OAuth\u6b0a\u6756\u4e0b\u8f09\u4e00\u7d44\u672a\u6307\u5b9a\u7684\u79c1\u6709NPM \u5b58\u5132\u5eab\u7372\u5f97\u7684\u3002GitHub \u8868\u793a\uff0c\u5b83\u5df2\u7d93\u64a4\u92b7\u4e86\u8207\u53d7\u5f71\u97ff\u61c9\u7528\u7a0b\u5f0f\u76f8\u95dc\u7684\u5b58\u53d6\u6b0a\u6756\u4f86\u4fdd\u8b77 GitHub \u548c NPM\u3002<\/p>\n\n\n\n<p>\u53e6\u5916\uff0cSalesforce\u5b50\u516c\u53f8 Heroku\u78ba\u8a8d\u4e86\u5b58\u53d6\u6b0a\u6756\u7684\u64a4\u92b7\uff0c\u4e26\u7a31\u5728\u53e6\u884c\u901a\u77e5\u4e4b\u524d\uff0c\u4ed6\u5011\u4e0d\u6703\u5f9e Heroku \u5100\u8868\u677f\u767c\u5e03 OAuth\u6b0a\u6756\u4ee5\u9632\u6b62\u672a\u7d93\u6388\u6b0a<\/p>\n\n\n\n<p>\u5b58\u53d6\u5ba2\u6236\u7684 GitHub \u5b58\u5132\u5eab\u3002<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\"><p lang=\"en\" dir=\"ltr\">GitHub has uncovered evidence that an attacker abused stolen OAuth user tokens issued to two third-party OAuth integrators, Heroku and Travis-CI. Read more about the impact to GitHub, npm, and our users. <a href=\"https:\/\/t.co\/eB7IJfJfh1\">https:\/\/t.co\/eB7IJfJfh1<\/a><\/p>&mdash; GitHub Security (@GitHubSecurity) <a href=\"https:\/\/twitter.com\/GitHubSecurity\/status\/1515101093419646976?ref_src=twsrc%5Etfw\">April 15, 2022<\/a><\/blockquote><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script>\n<\/div><\/figure>\n\n\n\n<p>\u96d6\u7136\u653b\u64ca\u8005\u80fd\u5920\u5f9e\u5165\u4fb5\u7684\u5b58\u5132\u5eab\u4e2d\u7aca\u53d6\u6578\u64da\uff0c\u4f46 GitHub \u8a8d\u70ba\u6c92\u6709\u4efb\u4f55\u5957\u4ef6(packages)\u88ab\u4fee\u6539\uff0c\u7528\u6236\u5e33\u6236\u6578\u64da\u6216\u6191\u8b49\u672a\u5728\u4e8b\u4ef6\u4e2d\u88ab\u5b58\u53d6\uff0c\u4e26\u91cd\u7533 npm \u4f7f\u7528\u8207GitHub.com \u5b8c\u5168\u7368\u7acb\u7684\u57fa\u790e\u8a2d\u65bd\uff1bGitHub \u6c92\u6709\u53d7\u5230\u9019\u6b21\u653b\u64ca\u7684\u5f71\u97ff\uff0c GitHub \u6b63\u5728\u52aa\u529b\u901a\u77e5\u6240\u6709\u53d7\u5f71\u97ff\u7684\u7528\u6236\u548c\u7d44\u7e54\u4e26\u8868\u793a\uff0c\u5118\u7ba1\u8abf\u67e5\u4ecd\u5728\u7e7c\u7e8c\uff0c\u4f46\u6c92\u6709\u767c\u73fe\u4efb\u4f55\u8b49\u64da\u8868\u660e\u653b\u64ca\u8005\u4f7f\u7528\u88ab\u76dc\u7684\u7b2c\u4e09\u65b9OAuth\u6b0a\u6756\u514b\u9686\u4e86\u5176\u4ed6 GitHub \u64c1\u6709\u7684\u79c1\u6709\u5b58\u5132\u5eab\u3002<\/p>\n\n\n\n<p>&nbsp;&#8220;\u8f49\u8cbc\u3001\u5206\u4eab\u6216\u5f15\u7528\u6587\u7ae0\u5167\u5bb9\uff0c\u8acb\u8a3b\u660e\u51fa\u8655\u70ba\u7ae3\u76df\u79d1\u6280&nbsp;<a href=\"https:\/\/www.billows.com.tw\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.billows.com.tw<\/a>&nbsp;, \u4ee5\u514d\u89f8\u6cd5&#8221;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u57fa\u65bc\u96f2\u7aef\u7684\u5b58\u5132\u5eab\u8a17\u7ba1\u670d\u52d9\u8005 GitHub \u9031\u4e94(4\/15) \u900f\u9732\uff0c\u5b83\u767c\u73fe\u4e86\u4e00\u500b\u8eab\u4efd\u4e0d\u660e\u99ed\u5ba2\u5229\u7528\u88ab\u76dc OAuth <a class=\"read-more\" href=\"https:\/\/blog.billows.com.tw\/?p=1856\">READ MORE<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[174],"class_list":["post-1856","post","type-post","status-publish","format-standard","hentry","category-6","tag-news"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blog.billows.com.tw\/index.php?rest_route=\/wp\/v2\/posts\/1856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.billows.com.tw\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.billows.com.tw\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.billows.com.tw\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.billows.com.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1856"}],"version-history":[{"count":3,"href":"https:\/\/blog.billows.com.tw\/index.php?rest_route=\/wp\/v2\/posts\/1856\/revisions"}],"predecessor-version":[{"id":2451,"href":"https:\/\/blog.billows.com.tw\/index.php?rest_route=\/wp\/v2\/posts\/1856\/revisions\/2451"}],"wp:attachment":[{"href":"https:\/\/blog.billows.com.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.billows.com.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.billows.com.tw\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}