史七年級上冊(1---10課)復(fù)習(xí)提綱
第1課 中國早期人類的代表—北京人P2
(舊石器時(shí)代 群居生活)
一、元謀人
1.發(fā)現(xiàn)地點(diǎn):云南 省元謀 縣; 2.生活年代:距今約170萬年;
3.生活情況:能制造工具 , 知道用火 ; 4.人與動物的根本區(qū)別: 會不會制造工具
5.發(fā)現(xiàn)人的重要證據(jù)是粗糙的石器 。
二、★★北京人
1.發(fā)現(xiàn)地點(diǎn):北京西南周口店龍骨山;
2.體貌特征:能夠直立 行走,保留了猿的某些特征。
3.生產(chǎn)狀況:①采集狩 獵
③制造、使用打制 石器,處于(舊石器 )時(shí)代
4.社會組織:過群居生活,共同勞動,原始社會。
5.意義:(1)它的發(fā)現(xiàn)對于研究古人類進(jìn)化的歷史具有重要的意義;
(2)通過對北京人的研究,可以發(fā)現(xiàn)早期猿人向現(xiàn)代人演進(jìn)和發(fā)展變化的規(guī)律,為人類起源的研究提供了可靠的證據(jù)。
6.北京人 遺址是迄今所知世界上內(nèi)涵最豐富、材料最齊全的直立人遺址。
三、☆山頂洞人
1.發(fā)現(xiàn)地點(diǎn):位于北京周口店龍骨山頂部,距今約3萬年;
2.體貌特征:模樣和現(xiàn)代人類的 基本相同;
3.用火情況:會人工取火 ;
4.其他:有愛美 意識、審美觀念(項(xiàng)鏈);過著集體生活
三、拓展
1.通過考古挖掘 我們才對遠(yuǎn)古人類有所了解,考古挖掘出的化石 是研究遠(yuǎn)古人類的歷史的重要證據(jù)。
(考古發(fā)現(xiàn)是了解史前社會的重要依據(jù)。)
2.我國 是目前世界上發(fā)現(xiàn)遠(yuǎn)古人類遺跡最多的國家。
第2課 原始的農(nóng)耕生活 P8
(新石器時(shí)代 氏族聚落)
人類開始定居生活的原因是 原始農(nóng)業(yè) 的出現(xiàn)
一、★農(nóng)作物種植 、家畜飼養(yǎng) 的出現(xiàn)以及聚落 、磨制石器 的發(fā)展是原始農(nóng)業(yè)興起和發(fā)展的重要標(biāo)志
原始居民 | 河姆渡人 | 半坡人 |
生活地區(qū) | 長江 流域的浙江余姚 | 黃河 流域的陜西西安 |
房屋樣式 | 干欄式 房屋 | 半地穴式圓形 房屋 |
原始農(nóng)業(yè) | ★種植水稻 、使用骨耜 | ★種植粟 、使用磨制工具、骨器 |
原始手工業(yè) | 制作陶器(豬紋陶缽 )、玉器和樂器、雕刻、使用天然漆、木結(jié)構(gòu)水井 | 制彩陶(人面魚紋彩陶盆)和樂器;會紡織、制衣 |
農(nóng)業(yè)發(fā)展的影響:①食物有了穩(wěn)定來源②逐漸走向定居生活③促進(jìn)了手工業(yè)的發(fā)展④改善了人們的生活。
自然環(huán)境的差異導(dǎo)致河姆渡人和半坡人在生產(chǎn)生活方面存在差異。
第3課 遠(yuǎn)古的傳說 P14
(父系氏族 部落聯(lián)盟)
一、炎黃聯(lián)盟:
1.阪泉之戰(zhàn):黃帝打敗炎帝,炎黃聯(lián)盟形成。
2.涿鹿之戰(zhàn):炎黃部落打敗蚩尤 部落;
影響:逐漸形成華夏族 ,★★ 炎帝 、 黃帝 被尊崇為中華民族的人文初祖。
3.炎帝(神農(nóng)氏)教民開墾耕種, 制作陶器,發(fā)明紡織等。
4.黃帝(軒轅氏)建造宮室,發(fā)明了弓箭和指南車。
5.倉頡 造字;伶?zhèn)愔谱饕袈?;隸首發(fā)明算盤;嫘祖 繅絲、紡織。
二、★★堯、舜、禹的禪讓
1. 的含義:征求各落首領(lǐng)的意見,推舉品行高尚的人做部落聯(lián)盟的首領(lǐng)。
2.大禹 治水:A采用疏導(dǎo) 的方法;B三過家門 而不入。
大禹的高貴品質(zhì):無私奉獻(xiàn)、不畏艱難。
第4課 夏商周的更替 P20
(奴隸制王朝)
一、夏朝 1.建立:★前 2070 年,禹 建立夏朝 ,這是我國歷史上第一個(gè)王朝。
2. ★★禹傳位于啟,世襲制代替了禪讓制?!肮煜?”變?yōu)椤凹姨煜?”。
3.夏朝制定了歷法,稱為“夏歷”
二、商朝 1.建立:★約公元前1600年,湯 滅夏,建立商朝
2.盤庚 遷都殷 ,統(tǒng)治穩(wěn)定。
3.滅亡:商王紂統(tǒng)治殘暴,公元前1046年,周武王 伐紂 ,雙方在牧野 大戰(zhàn),商朝滅亡。
三、西周(西周是奴隸社會的鼎盛時(shí)期)
1.西周建立:前 1046 年,周武王建立周朝 ,定都鎬京 ,史稱“西周 ”
2.國人暴動:前841年,周厲王時(shí)發(fā)生國人暴動 。
3.西周滅亡:西周公元前771 年,周幽王時(shí),西周被犬戎族所亡。
4.東周建立:公元前770年,周平王東遷洛邑,史稱“東周 ”。東周分為春秋和戰(zhàn)國 兩個(gè)時(shí)期。
四、★★西周政治制度--分封制 :
1.目的:為了穩(wěn)定周初的政治形勢,鞏固疆土 。(“封建親戚,以藩屏周”)
2.內(nèi)容:①根據(jù)血緣和功勞,將宗親 和功臣 分封到各地,建立諸侯國 ;
②諸侯須向周王進(jìn)貢、并服從周王調(diào)兵。
3.作用:a保證了周王對地方的控制,b穩(wěn)定政局,c擴(kuò)大了統(tǒng)治范圍。
4.等級:周天子 →諸侯 →卿大夫 →士 →平民→奴隸)
5.弊端:A諸侯國勢力強(qiáng)大后,威脅到周天子的統(tǒng)治。
B最終導(dǎo)致了春秋爭霸、戰(zhàn)國稱雄局面的出現(xiàn)。
公元是以耶穌誕生之年為界,這種紀(jì)年在全世界通用。
(1)世紀(jì):100年為一個(gè)世紀(jì),一般在年份的百位數(shù)+1轉(zhuǎn)化成世紀(jì),例如1924年:19+1=20世紀(jì)注意:公元前后的轉(zhuǎn)化都是一樣的,例如公元前2070年:20+1=公元前21世紀(jì)
(2)年代:10年為一個(gè)年代,一般看十位數(shù),例如1924年,就是20世紀(jì)20年代
(3)時(shí)期:一個(gè)世紀(jì)中,前20年為初期,前40年(即0-40)為前期,中間30年(即40-70)為中期,后面30年(即70-100)為后期,90年代為末期。
注意:公元前和公元的時(shí)期相反,例如1998年為公元20世紀(jì)末期,公元前1998年為公元前20世紀(jì)初期。
第5課 青銅器與甲骨文 P25
(商周時(shí)期的文明)
一、青銅器的高超工藝
1.青銅器主要用于 等方面
2.功能也由食器發(fā)展到禮品
3.代表性的青銅器:★★迄今世界上出土的最重的青銅器——司母戊鼎 ;
工藝精美的青銅器——四羊方尊
4.制作方法:泥范鑄造法
二、★★甲骨文:商周時(shí)期刻在龜甲和牛羊等獸骨上的文字被稱為“甲骨文 ”
1.地位:★★甲骨文是中國已發(fā)現(xiàn)的年代最早 、體系較為完整 的文字。
2.意義:★★我國有文字可考的歷史從商朝 開始。
3.甲骨文中約有40%的字是 。
4.與漢字的關(guān)系:已具備漢字的基本結(jié)構(gòu),是漢字形成與發(fā)展的重要階段。
第6課 動蕩的春秋時(shí)期 P29
(鐵器牛耕促進(jìn)社會生產(chǎn),王室衰微引發(fā)諸侯爭霸)
公元前770年,周平王東遷洛邑,史稱“東周 ”。東周分為春秋 和戰(zhàn)國 兩個(gè)時(shí)期。
一、春秋時(shí)期的經(jīng)濟(jì)發(fā)展:
1.農(nóng)業(yè):★★春秋 后期,鐵制農(nóng)具 和牛耕的 出現(xiàn),是生產(chǎn)力水平的提高,促進(jìn)了社會的發(fā)展 。
2.手工業(yè):青銅業(yè)、冶鐵業(yè)、紡織業(yè)、煮鹽業(yè)、漆器制作都有所發(fā)展。
3.很多城市出現(xiàn)了市場,金屬貨幣 被更多地應(yīng)用。
二、★春秋時(shí)代特征:(1)王室 衰微 (2)諸侯 爭霸,(3)以 為號召
三、先后稱霸的霸主:齊桓公 、晉文公 、秦穆公 、楚莊王 等先后稱霸。
四、在爭霸的過程中,有的諸侯國 被滅掉。
五、春秋爭霸的根源是西周實(shí)行分封制 。
六、春秋爭霸的積極影響:
消極影響:
★★第7課 戰(zhàn)國時(shí)期的社會變化 P33
(社會動蕩、經(jīng)濟(jì)發(fā)展,逐漸向封建社會過渡)
1.韓 、 趙 、魏 三分晉。 2.田氏代齊
3★戰(zhàn)國七雄:齊、楚、燕、韓、趙、魏、秦 。
4.著名戰(zhàn)役:桂陵之戰(zhàn)-圍魏救趙、馬陵之戰(zhàn)-減灶計(jì)、長平之戰(zhàn)-紙上談兵。
5.戰(zhàn)爭性質(zhì):兼并 戰(zhàn)爭 6.影響:為結(jié)束分裂,實(shí)現(xiàn)統(tǒng)一奠定了基礎(chǔ)。
二、★★商鞅變法(是一場地主階級封建性質(zhì)的改革)
1. ★★根本原因:戰(zhàn)國時(shí)期,鐵制農(nóng)具和牛耕的使用進(jìn)一步推廣 ,生產(chǎn)力 提高;新興地主 階級的勢力增強(qiáng)。
2.目的:富國強(qiáng)兵
3.時(shí)間、人物:公元前356年,秦孝公 任用商鞅 主持變法。
4.商鞅變法的內(nèi)容:
政治→ (加強(qiáng)中央集權(quán)) | (1)★★確立縣制 ,由國君直接派官吏治理 (2)廢除貴族的世襲特權(quán) → 作用:打擊了舊貴族,是商鞅被車裂而死的原因。 (3)改革戶籍制度,加強(qiáng)對人民的管理。 (4)嚴(yán)明法度,禁止私斗。 |
經(jīng)濟(jì)→確立封建經(jīng)濟(jì)制度 (經(jīng)濟(jì)富國) | (1)★★廢除井田制 , 允許土地自由買賣(土地私有)→最能體現(xiàn)了變法的封建性質(zhì) (2)★★鼓勵耕織 ,生產(chǎn)糧食、布多的人可免徭役 。調(diào)動農(nóng)民生產(chǎn)積極性,促進(jìn)農(nóng)業(yè)發(fā)展 (3)統(tǒng)一度量衡?!饔茫罕阌诮?jīng)濟(jì)交流,促進(jìn)經(jīng)濟(jì)發(fā)展。 |
軍事(軍事強(qiáng)兵) | ★★獎勵軍功 ,對有軍功者授予爵位并賞賜土地 ?!饔茫?strong>增強(qiáng)軍隊(duì)?wèi)?zhàn)斗力(強(qiáng)兵) |
5. ★★作用:使秦國的國力大為增強(qiáng) ,提高了軍隊(duì)的戰(zhàn)斗力 ,成為最強(qiáng)盛的諸侯國,為以后秦統(tǒng)一全國奠定了基礎(chǔ) 。
6. ★★啟示:1. 改革是社會發(fā)展的推動,我們要勇于改革創(chuàng)新 ;
2. 改革是社會發(fā)展進(jìn)步的重要推動力
3.改革是強(qiáng)國之路
7.判斷改革成敗的標(biāo)準(zhǔn):能否促進(jìn)社會發(fā)展 。
8.成功的原因:
(1)改革順應(yīng)了時(shí)代潮流;(2)秦孝公的鼎力支持;(3)商鞅不畏強(qiáng)權(quán),嚴(yán)格執(zhí)法的個(gè)人品質(zhì)。
三、★造福千秋的都江堰
1.修建:戰(zhàn)國 后期,公元前256年,★★秦國 蜀郡郡守李冰主持,在成都附近的岷江上修建了都江堰 。
2.構(gòu)成:渠首和灌溉網(wǎng)兩大工程構(gòu)成。
3.功能:防洪、灌溉、水運(yùn)等。
4. ★★作用:使成都平原,變成天府之國
5.意義:
(1)2200多年來,一直發(fā)揮著巨大的作用
(2)是我國人民智慧的結(jié)晶
以上內(nèi)容總結(jié)為一個(gè)問題:什么時(shí)期,哪個(gè)國家的誰主持修建了都江堰?起了什么作用?
★★第8課 百家爭鳴 P38
(中國古代第一次思想文化發(fā)展的高峰)
一、春秋戰(zhàn)國時(shí)期,學(xué)術(shù)思想領(lǐng)域活躍史稱“諸子百家”。
姓名 | 派別 | 時(shí)期 | 著作 | 主要思想 |
老子★★ | 道家創(chuàng)始人 | 春秋 | 《道德經(jīng)》 | 1. ★★學(xué)術(shù)思想:A順應(yīng)自然;B一切事物都有對立面,對立的雙方相互轉(zhuǎn)化。 2. ★★政治主張:“無為而治” |
孔子 ★★ | 儒家創(chuàng)始人 | 春秋 晚期 | 《論語》 (由孔子弟子整理而成) | 1. ★★學(xué)術(shù)思想:核心思想是“仁”。 2. ★★政治主張:以德治國。 3.教育貢獻(xiàn): ①創(chuàng)辦私學(xué),打破了貴族和王室壟斷教育的局面;主張“有教無類”。 ②注重道德和文化教育,總結(jié)教育規(guī)律,提出教學(xué)原則和方法;整理文獻(xiàn)。 ★★評價(jià): 1.偉大的思想家、教育家。儒家學(xué)派創(chuàng)始人。 2.他的學(xué)說對中國的思想文化影響深遠(yuǎn) 。 |
孟子 | 儒家代表人物 | 戰(zhàn)國 | 《孟子》 | ①主張“仁政”;②提出“民為貴,社稷次之,君為輕”的思想;③反對非正義戰(zhàn)爭。 |
荀子 | 儒家代表人物 | 戰(zhàn)國 | 主張實(shí)行禮治 ,明確尊卑等級,以維系社會秩序 | |
墨子 | 墨家創(chuàng)始人 | 戰(zhàn)國 | 主張“兼愛、非攻”,選賢,提倡節(jié)儉 | |
莊子 | 道家代表人物 | 戰(zhàn)國 | 治國要順應(yīng)自然和民心;人生應(yīng)追求精神自由,保持獨(dú)立的人格 | |
韓非 | 法家代表人物 | 戰(zhàn)國 | 《韓非子》 | ★★反對空談仁義 ,以法治國;建立中央集權(quán)專制統(tǒng)治 。 |
孫武 | 兵家創(chuàng)始人 | 春秋 | 《孫子兵法》 | “知己知彼,百戰(zhàn)不殆” |
二、★★百家爭鳴影響:1.促進(jìn)了思想和學(xué)術(shù)的繁榮;
2. 成為中國古代第一次思想文化發(fā)展的高峰 ;
3.
4.對后世有十分重要而深遠(yuǎn)的影響。
★★第9課 秦統(tǒng)一中國 P44
【統(tǒng)一的封建社會】
秦始皇最大歷史功績是統(tǒng)一全國
一、秦滅六國:
1.秦統(tǒng)一全國的原因(條件):(1)人民希望結(jié)束戰(zhàn)亂;
(2)★商鞅變法為秦統(tǒng)一全國奠定了基礎(chǔ) 。
2.秦朝的建立:(1)時(shí)間:公元前221年;
(2)定都咸陽;
(3)★開國皇帝:秦始皇 (嬴政)
3.秦統(tǒng)一的意義:結(jié)束了春秋戰(zhàn)國以來長期爭戰(zhàn)混戰(zhàn)的局面,建立起我國歷史上第一個(gè)統(tǒng)一的多民族的封建 國家。
二、★秦始皇加強(qiáng)中央集權(quán)鞏固統(tǒng)一的措施:
(1)政治上,建立中央集權(quán) 的制度
①★★最高統(tǒng)治者稱皇帝,總攬全國軍政大權(quán);
②★★中央設(shè)丞相、太尉、御史大夫,分管行政、軍事和監(jiān)察
③★★在地方推行郡縣制 影響:★★開創(chuàng)了我國地方行政的的基本模式 。
影響:加強(qiáng)了中央集權(quán),有利于國家安定。
(2)★★文化上:統(tǒng)一文字(書同文,統(tǒng)一使用 小篆 );
作用:有利政令的推行和文化的交流與發(fā)展 。
(3)★★經(jīng)濟(jì)上:①統(tǒng)一貨幣;以圓形方孔半兩錢作為標(biāo)準(zhǔn)。
作用:有利于國家對經(jīng)濟(jì)的管理,促進(jìn)各了經(jīng)濟(jì)的發(fā)展。
②統(tǒng)一度量衡 ;作用:便利了經(jīng)濟(jì)的發(fā)展 。
(4)交通上:①統(tǒng)一車輛和道路的寬度(車同軌);
(5)軍事上:①派蒙恬北擊匈奴,修筑萬里長城:西起臨洮 、東到遼東 。
②南定百越,開靈渠。
秦朝鞏固統(tǒng)一措施的影響:促進(jìn)了經(jīng)濟(jì)、文化的交流和發(fā)展;鞏固了國家的統(tǒng)一。
三、秦的疆域:東至東海,西到隴西,北至長城一帶,南到南海。
第10課 秦末農(nóng)民大起義 P50
(陳勝、吳廣起義——中國歷史上第一次農(nóng)民大起義)
一、陳勝、吳廣起義(又名“大澤鄉(xiāng)起義”)
1.根本原因:秦的暴政 (沉重的徭役、兵役、賦稅和殘酷的刑罰)。
2.爆發(fā):前209年 3.口號:“王侯將相,寧有種乎”
4.歷史意義: 是中國歷史上第一次農(nóng)民大起義。
二、農(nóng)民起義軍推翻秦朝
1.巨鹿之戰(zhàn) (戰(zhàn)役),項(xiàng)羽率起義軍以少勝多大敗秦軍主力(成語:破釜沉舟)
2. 公元前207年,最后推翻秦朝的是劉邦領(lǐng)導(dǎo)的起義軍
三、楚漢之爭:地主階級內(nèi)部爭權(quán)奪利的戰(zhàn)爭(性質(zhì))
(1)時(shí)間:公元前206年--公元前202年;
(2)雙方:項(xiàng)羽和劉邦;(3)目的:爭奪帝位。
相關(guān)成語:破釜沉舟、項(xiàng)莊舞劍,意在沛公、楚河漢界、四面楚歌、霸王別姬等;
相關(guān)故事:鴻門宴
距離 Windows 大范圍藍(lán)屏事件,已經(jīng)過去了 6 天。
這 6 天來,國內(nèi)外技術(shù)網(wǎng)站仍對此事熱議不斷,“罪魁禍?zhǔn)住?CrowdStrike 的名字被頻繁提及,與之伴隨的無一不是質(zhì)疑和譴責(zé):
CrowdStrike 引發(fā)的系統(tǒng)故障導(dǎo)致數(shù)千架航班停飛、醫(yī)院癱瘓、支付系統(tǒng)崩潰,被專家稱為史上最大的 IT 故障。
據(jù) Parametrix 保險(xiǎn)公司稱,CrowdStrike 錯(cuò)誤更新引發(fā)的全球技術(shù)中斷,使美國財(cái)富 500 強(qiáng)企業(yè)(不包括微軟)面臨 54 億美元的經(jīng)濟(jì)損失,全球經(jīng)濟(jì)損失總額可能達(dá)到 150 億美元左右。
基于此,本周 CrowdStrike 的股價(jià)已迅速暴跌超 20%。出于對引發(fā)此次故障的歉意,據(jù)悉昨日 CrowdStrike 還向其合作方均提供了一張價(jià)值 10 美元的 Uber Eats 禮品卡作為道歉:“為了表達(dá)我們的歉意,你的下一杯咖啡或夜宵由我們請客!”不過,有收到該禮品卡的用戶表示,他們?nèi)稉Q時(shí),頁面提示稱該禮品卡“已被發(fā)行方取消,不再有效”。
除了以上聚焦于 CrowdStrike 本身的關(guān)注和報(bào)道,近日還有一個(gè)話題也在開發(fā)者圈內(nèi)引起了不小的討論:”如果 CrowdStrike 改用 Rust 的話,全球 850 萬 PC 是不是就不會藍(lán)屏了?“
我驚訝地發(fā)現(xiàn),過去幾天發(fā)生的所有事情都是由 deref 這樣簡單的錯(cuò)誤引起的。數(shù)十年來,業(yè)界一直在使用 C++,所有的工具、linters、sanitizers、測試和同行評審都不足以避免這種情況的發(fā)生。因此我在想,如果改用 Rust,情況是否會大不一樣?
不僅如此,微軟 Azure 部門 CTO Mark Russinovich 也在事發(fā)后轉(zhuǎn)了一條他 發(fā)布于 2022 年的推文:“說到語言,現(xiàn)在是時(shí)候停止用 C/C++ 啟動任何新項(xiàng)目了,請在需要使用非 GC 語言的情況下使用 Rust。為了安全性和可靠性,業(yè)界應(yīng)該宣布這些語言已被淘汰。”
眼看著不少 Rust 狂熱愛好者開始放話“沒錯(cuò),Rust 就是唯一答案”,一位同樣喜歡 Rust 的資深軟件工程師 Julio Merino,在理智地進(jìn)行了一番全盤分析后得出結(jié)論:“就算是 Rust,也救不了這次 CrowdStrike 的中斷事故。”
以下為譯文:
我非常喜歡 Rust,也很贊同不應(yīng)繼續(xù)使用 C++ 這類內(nèi)存不安全的編程語言,但我還是要說:那些聲稱用 Rust 就可以避免上周五全球大面積網(wǎng)絡(luò)中斷的說法太夸張了,對 Rust 的口碑有害無益。
如果 CrowdStrike 是用 Rust 編寫的,那確實(shí)可以降低發(fā)生故障的可能性,但它并不能解決導(dǎo)致故障發(fā)生的根本原因。所以看到許多人說 Rust 是解決這次事故的唯一答案,我就感到非常惱火——這種說法,不僅無法推動 Rust 的普及,反而會招來反感:C++ 專家們都知道本次事故的根本原因,看到這種誤導(dǎo)性說法必然不快,從而導(dǎo)致系統(tǒng)編程世界的進(jìn)一步分裂。
那么,為什么說 Rust 不能解決這個(gè)問題呢?接下來我會試著回答這個(gè)問題,同時(shí)也深入探討一下造成這次故障的原因。
故障分析
以下是來自 CrowdStrike 官方的“事后分析”:
在 2024 年 7 月 19 日 04:09 UTC,作為持續(xù)運(yùn)營的一部分,CrowdStrike 向 Windows 系統(tǒng)發(fā)布了傳感器配置更新。傳感器配置更新是 Falcon 平臺保護(hù)機(jī)制的持續(xù)組成部分。此配置更新觸發(fā)了邏輯錯(cuò)誤,導(dǎo)致受影響的系統(tǒng)崩潰和藍(lán)屏(BSOD)
導(dǎo)致系統(tǒng)崩潰的傳感器配置更新,已于 2024 年 7 月 19 日 05:27 UTC 得到修復(fù)。
把上面這段話翻譯為“人話”,就是:
1、CrowdStrike 公司推送了一項(xiàng)配置更新。
2、該更新觸發(fā)了“Falcon 平臺”中的一個(gè)潛在 bug。
3、Falcon 中的這個(gè) bug 導(dǎo)致了 Windows 崩潰。
前兩點(diǎn)并不奇怪:對于任何在線系統(tǒng)來說,變更配置都是“家常便飯”,而這些更新引發(fā)代碼中的 bug 也是常見現(xiàn)象。事實(shí)上,大多數(shù)宕機(jī)事件都是由人為配置變更造成的。
顯然,我們應(yīng)該問問為什么這個(gè) bug 會存在,以及如何修復(fù)它以提高產(chǎn)品的穩(wěn)定性。但我們別忘了第三點(diǎn):為什么這個(gè) bug 能夠?qū)е抡_機(jī)器癱瘓?更重要的是,為什么這個(gè) bug 會讓全球如此多的系統(tǒng)宕機(jī)?
內(nèi)存錯(cuò)誤
讓我們從第一個(gè)問題開始:Falcon 中的 bug 是什么性質(zhì)的?
很簡單:在“Channel Files”(又稱配置文件)解析器中存在一個(gè)邏輯錯(cuò)誤,當(dāng)遇到一些無效輸入時(shí),這段代碼會試圖訪問一個(gè)無效的內(nèi)存位置。具體細(xì)節(jié)并不重要:可能是取消引用空指針,也可能是一般保護(hù)故障等等。關(guān)鍵在于:崩潰是由無效內(nèi)存訪問問題引發(fā)的。
這時(shí),一些 Rust 狂熱粉可能會跳出來說::“看啊,果然!如果代碼是用 Rust 寫的,這個(gè) bug 就不會存在!”我無法否認(rèn)這個(gè)說法:如果用 Rust,這個(gè)特定的 bug 確實(shí)不會出現(xiàn)。
但那又怎樣?就算避免了這種類型的 bug,下一次遇到 Rust 也無法避免的 bug 時(shí),該宕機(jī)還是會宕機(jī)——無視 Falcon 的本質(zhì)問題、只關(guān)注內(nèi)存錯(cuò)誤的行為,好比“只見樹木,不見森林”。
那么,F(xiàn)alcon 究竟是什么呢?
內(nèi)核崩潰
在我看來,F(xiàn)alcon 是一種“惡意軟件......不過是好人的惡意軟件”,也就是一個(gè)終端安全系統(tǒng)。Falcon 通常安裝在企業(yè)機(jī)器上,以便安全團(tuán)隊(duì)能夠?qū)崟r(shí)檢測并解除威脅(同時(shí)監(jiān)控員工的行為)。這確實(shí)有一定價(jià)值:大多數(shù)網(wǎng)絡(luò)攻擊都是通過社會工程學(xué)手段從入侵企業(yè)機(jī)器開始的。
這種類型的產(chǎn)品必須對機(jī)器有控制權(quán),它必須能夠攔截所有用戶的文件和網(wǎng)絡(luò)操作以掃描其內(nèi)容,并且還必須是防篡改的,以防“精明”的企業(yè)用戶在閱讀到一些網(wǎng)上修復(fù) WiFi 的可疑指導(dǎo)后嘗試禁用它,以避免提交 IT 工單。
如何實(shí)現(xiàn)像 Falcon 這樣的產(chǎn)品?最簡單的方法,也是 Windows 鼓勵的方法,就是編寫一個(gè)內(nèi)核模塊。很明顯,F(xiàn)alcon 是一個(gè)內(nèi)核模塊,因此它運(yùn)行在內(nèi)核空間。這就意味著,Falcon 代碼中的任何錯(cuò)誤都可能破壞正在運(yùn)行的內(nèi)核,進(jìn)而導(dǎo)致整個(gè)系統(tǒng)崩潰。
我所說的“任何錯(cuò)誤”,是真的。內(nèi)核不僅會因?yàn)閮?nèi)存錯(cuò)誤而崩潰,也不一定非要“內(nèi)核崩潰”才能讓機(jī)器無法使用:死鎖會讓阻止內(nèi)核前進(jìn),系統(tǒng)調(diào)用處理程序中的邏輯錯(cuò)誤會阻止用戶空間之后打開任何文件,一個(gè)無限遞歸算法會耗盡內(nèi)核的堆?!?strong>破壞內(nèi)核穩(wěn)定性的方法實(shí)在是太多了,所以我說就算是 Rust 也不能完全避免這種事故的發(fā)生。
Rust 的內(nèi)存安全性只能解決一種類型的崩潰。另外,Rust 生態(tài)系統(tǒng)中對正確性的關(guān)注也確實(shí)可以最大限度地減少其他類型邏輯錯(cuò)誤的出現(xiàn)。但是……雖然我們都希望做到完美,但也必須接受錯(cuò)誤會發(fā)生的事實(shí)——斷言 Rust 是解決問題的唯一答案和堅(jiān)持使用 C++ 一樣,都是不負(fù)責(zé)任的行為。
要知道,在內(nèi)核空間工作的 C++ 開發(fā)者,要比了解內(nèi)核內(nèi)部結(jié)構(gòu)的 Rust 開發(fā)者多得多。因此,大部分 C++ 開發(fā)者都知道這種說法的可笑之處,同時(shí)也會增加兩個(gè)社區(qū)之間的敵意,更是完全違背了讓人們轉(zhuǎn)向安全語言的這個(gè)目標(biāo)。Rust 開發(fā)者知道 Rust 確實(shí)可以改善現(xiàn)狀,但 C++ 開發(fā)者無法接受,因?yàn)樗麄兟牭降挠^點(diǎn)無法引起他們的共鳴。
從內(nèi)核空間到用戶空間
還有人說,如果 Falcon 不在內(nèi)核中運(yùn)行,就根本不會發(fā)生這種情況。嗯,這個(gè)說法要好一點(diǎn),但……僅此一點(diǎn)也不一定就能解決問題。
正如我之前提到的,F(xiàn)alcon 需要盡可能防篡改,防止惡意軟件對其進(jìn)行干擾,并防止被入侵的用戶試圖禁用它。如果惡意軟件或人類能夠輕易做到這一點(diǎn),那么這個(gè)產(chǎn)品就毫無用處。
現(xiàn)在,Windows 內(nèi)核完全有能力禁止類似 Falcon 的內(nèi)核模塊。相反,內(nèi)核可以暴露一系列 API,讓用戶空間的應(yīng)用程序能夠接入這些 API 來提供類似的功能。你知道嗎,微軟確實(shí)嘗試過讓 Windows 朝這個(gè)方向發(fā)展,但殺毒軟件公司威脅要以反壟斷為由起訴,結(jié)果整個(gè)計(jì)劃無疾而終。因此,我們現(xiàn)在只能忍受一個(gè)安全性較低的系統(tǒng),因?yàn)闅⒍拒浖拘枰N售那些煩人的產(chǎn)品。
但是,我們先暫時(shí)放下這個(gè)麻煩不談。即使 Falcon 運(yùn)行在用戶空間,并通過受控 API 與內(nèi)核通信……這就足以防止系統(tǒng)故障嗎?請注意,這些 API 也需要防篡改。試想一下,如果你希望這個(gè)用戶空間驅(qū)動程序在內(nèi)核執(zhí)行每個(gè)二進(jìn)制文件之前進(jìn)行驗(yàn)證,也就是讓內(nèi)核在每次執(zhí)行時(shí)都需要從用戶空間驅(qū)動程序獲得答案,而這個(gè)驅(qū)動程序又有問題,那么系統(tǒng)將無法再執(zhí)行任何程序。
可如果你讓內(nèi)核與驅(qū)動程序通信變成可選項(xiàng),以便內(nèi)核可以容忍崩潰的驅(qū)動程序,那么就等于給惡意軟件開了一條路,它們可以先嘗試崩潰驅(qū)動程序,然后再入侵系統(tǒng)。
因此,僅僅“遷移到用戶空間”顯然也不是解決辦法。
部署中的漏洞
如果我們必須接受 bug 的存在,而內(nèi)存相關(guān)的 bug 并不是唯一會導(dǎo)致系統(tǒng)崩潰的原因,且將驅(qū)動程序移到用戶空間也不是很好的解決方案……那難道就無計(jì)可施了?真的沒有辦法防止這種情況發(fā)生嗎?
以上我說的這些,都是可以(也應(yīng)該)采取的措施,以減少系統(tǒng)故障發(fā)生的概率,但我們必須接受這樣一個(gè)事實(shí):這次代碼 bug 只是特定的觸發(fā)因素,就算換一個(gè)觸發(fā)因素也可能會產(chǎn)生類似的惡果。本次全球宕機(jī)事件的根本原因,在于配置變更的發(fā)布流程。
根據(jù) SRE 101(或 DevOps,隨便你怎么叫)規(guī)定,配置變更必須分階段進(jìn)行,以緩慢和受控的方式部署,并在每個(gè)步驟進(jìn)行驗(yàn)證。這些變更應(yīng)該先在很小的范圍內(nèi)進(jìn)行驗(yàn)證,然后再向全球推送,而且每次推送都應(yīng)是漸進(jìn)的。
考慮到 Falcon 的關(guān)鍵性以及 bug 可能帶來的巨大影響,我很難相信 CrowdStrike 沒有對部署進(jìn)行任何驗(yàn)證。但根據(jù) CrowdStrike 最新更新的事后分析來看,他們確實(shí)沒有進(jìn)行任何形式的測試或金絲雀部署(在將更改推廣到整個(gè)服務(wù)集群之前,先把更改推廣到一小部分用戶進(jìn)行測試),這實(shí)在是令人難以置信的疏忽。
所以說,CrowdStrike 的部署實(shí)踐是造成此次事件的罪魁禍?zhǔn)住?/span>也就是說,這次宕機(jī)事件是一個(gè)流程問題,而不是代碼或技術(shù)問題,改用 Rust 也無濟(jì)于事。
CrowdStrike 發(fā)布初步審查報(bào)告,總結(jié):“測試和流程不完善”
誠然如 Julio Merino 所說,CrowdStrike 在其官網(wǎng)最新發(fā)布了此事件的初步審查報(bào)告,并公開了此次事件的整體時(shí)間線:
安全故障始于 2 月 28 日,當(dāng)時(shí) CrowdStrike 開發(fā)并分發(fā)了一個(gè) Falcon 傳感器更新,旨在檢測一種新興的、利用 Windows 命名管道的攻擊技術(shù),而傳感器更新在發(fā)布前通過了常規(guī)測試。
3 月 5 日,該更新接受了壓力測試并得到驗(yàn)證,可以投入使用。因此,當(dāng)天 CrowdStrike 就向使用新的惡意命名管道檢測的客戶分發(fā)了快速響應(yīng)更新。
在 4 月 8 日-4 月 24 日期間,CrowdStrike 又推送了三次使用這種新代碼模板的快速響應(yīng)更新,并表示所有這些更新“在生產(chǎn)環(huán)境中按預(yù)期運(yùn)行”。
到了 7 月 19 日,CrowdStrike 又用 3 月份的傳感器模板發(fā)布了兩個(gè)快速響應(yīng)更新,但這次其中一個(gè)更新推送的數(shù)據(jù)格式不正確。然而,CrowdStrike 用于檢查內(nèi)容更新是否按預(yù)期運(yùn)行的驗(yàn)證系統(tǒng)有問題,它沒有發(fā)現(xiàn)這個(gè)要推送給所有人的配置文件存在錯(cuò)誤。于是乎,這個(gè)本該停止發(fā)布的錯(cuò)誤更新就造成了全球 850 萬 PC 藍(lán)屏。
部分網(wǎng)友在看過 CrowdStrike 這份冗長的初步審查報(bào)告后,精辟總結(jié):“說了這么多,就是想說我們的測試和流程不完善,不小心把垃圾發(fā)布出來了”;“字?jǐn)?shù)驚人,但歸根結(jié)底還是測試代碼有 bug 以及測試不夠”;“不好意思,我們對此更新進(jìn)行的唯一測試,是一個(gè)沒真正通過的自動化測試”。
因此對于這種事故原因,絕對不是改用 Rust 就能解決的,根本還是在于測試環(huán)節(jié)和部署流程的不規(guī)范。與此同時(shí),CrowdStrike 也在事后總結(jié)中表示,今后要在發(fā)布更新前增加軟件測試,并逐步推出更新,具體補(bǔ)救措施大體分為三個(gè)部分:
1、軟件彈性和測試
(1)通過使用以下測試類型改進(jìn)快速響應(yīng)內(nèi)容測試:本地開發(fā)人員測試,內(nèi)容更新和回滾測試,壓力測試、模糊測試和故障注入,穩(wěn)定性測試和內(nèi)容接口測試;
(2)在快速反應(yīng)內(nèi)容的驗(yàn)證器中增加額外的驗(yàn)證檢查;
(3)增強(qiáng)內(nèi)容解釋器中現(xiàn)有的錯(cuò)誤處理功能。
2、快速響應(yīng)內(nèi)容部署
(1)對快速響應(yīng)內(nèi)容實(shí)施交錯(cuò)部署策略,從金絲雀部署開始,再逐步將更新部署到更大的區(qū)域;
(2)改進(jìn)對傳感器和系統(tǒng)性能的監(jiān)控,在快速響應(yīng)內(nèi)容部署期間收集反饋信息,以指導(dǎo)分階段部署;
(3)允許用戶選擇部署的時(shí)間和位置,使其能夠更好地控制快速響應(yīng)內(nèi)容更新的交付;
(4)通過客戶可訂閱的發(fā)布說明提供內(nèi)容更新詳情。
3、第三方驗(yàn)證
(1)進(jìn)行多個(gè)獨(dú)立的第三方安全代碼審查;
(2)對從開發(fā)到部署的端到端質(zhì)量流程進(jìn)行獨(dú)立審查。
參考鏈接:
https://www.crowdstrike.com/falcon-content-update-remediation-and-guidance-hub/
https://blogsystem5.substack.com/p/crowdstrike-and-rust
大模型刷新一切,讓我們有著諸多的迷茫,AI 這股熱潮究竟會推著我們走向何方?面對時(shí)不時(shí)一夜變天,焦慮感油然而生,開發(fā)者怎么能夠更快、更系統(tǒng)地?fù)肀Т竽P停俊缎鲁绦騿T 007》以「大模型時(shí)代,開發(fā)者的成長指南」為核心,希望撥開層層迷霧,讓開發(fā)者定下心地看到及擁抱未來。
讀過本書的開發(fā)者這樣感慨道:“讓我驚喜的是,中國還有這種高質(zhì)量、貼近開發(fā)者的雜志,我感到非常激動。最吸引我的是里面有很多人對 AI 的看法和經(jīng)驗(yàn)和一些采訪的內(nèi)容,這些內(nèi)容既真實(shí)又有價(jià)值?!?/span>