ትርፍ፡
- ሰው ሰራሽ የማሰብ ችሎታን እንደ ሁለተኛ አይን የመጠቀም ችሎታ እና የ OWASP ክፍል ተጋላጭነቶችን (መርፌ ፣ ጠንካራ ምስጢር ፣ የመዳረሻ መቆጣጠሪያ) በኮዱ ውስጥ አውድ በመስጠት
- በአርቴፊሻል ኢንተለጀንስ የተሰሩ የውሸት አወንቶችን ከዐውደ-ጽሑፉ ጋር የማስወገድ ችሎታ እና እያንዳንዱን ግኝት ሳያረጋግጡ እንደ እውነተኛ ተጋላጭነት የመመልከት ችሎታ።
- በአርቴፊሻል ኢንተለጀንስ የተጠቆመው ማስተካከያ አዳዲስ ድክመቶችን/ሳንካዎችን እንደሚያስተዋውቅ እና እያንዳንዱን ንጣፍ በግምገማ እና በሙከራ በር በኩል እንደሚያሳልፍ የመገንዘብ ችሎታ።
በሶፍትዌር ውስጥ ያሉ ድክመቶች በጣም ውድ ከሚባሉት ድክመቶች ውስጥ ናቸው ምክንያቱም ከመጀመሪያው ጀምሮ በምርቱ ውስጥ የተካተቱ እና በሚሊዮኖች ለሚቆጠሩ ተጠቃሚዎች ይሰራጫሉ. ደህንነቱ የተጠበቀ ኮድ ግምገማ የምንጭ ኮድ መስመርን በመስመር የማንበብ ሂደት እና ተጋላጭነቶችን - የ SQL መርፌ ፣ የማረጋገጫ ተጋላጭነት ፣ ጠንካራ ኮድ የተደረገ የይለፍ ቃል ፣ የተሳሳተ ፈቃድ - ወደ ምርት ከመግባታቸው በፊት። በእጅ ሲሰራ, ዘገምተኛ እና አድካሚ ነው; በትልቅ የኮድ መሰረት ውስጥ ተጋላጭነትን ማጣት ቀላል ነው።
AI በኮድ ግምገማ ላይ በሁለት ምክንያቶች ኃይለኛ ነው፡ ኮድ ቋንቋም ነው፣ እና AI በስርዓተ ጥለት ማወቂያ ጥሩ ነው። AI በፍጥነት አደገኛ ስርዓተ ጥለቶችን በአንድ ቁራሽ ኮድ (የተጠቃሚን ግብአት በቀጥታ ወደ መጠይቁ ውስጥ ማስገባት፣ ያልተመሰጠረ የውሂብ ማከማቻ፣ የግቤት ማረጋገጫ ይጎድላል)፣ እያንዳንዱ ለምን አደገኛ እንደሆነ ያብራራል እና መጠገን ይችላል። ነገር ግን አይአይ የኮዱን አጠቃላይ የአሠራር አውድ አይመለከትም (ግብአቱ በሌላ ንብርብር ሊጸዳ ይችላል) ፣ የሌለ ተጋላጭነት ሊፈጥር ይችላል (ውሸት አወንታዊ) ወይም እውነተኛ ተጋላጭነት (ውሸት አሉታዊ) ፣ እና ከሁሉም በላይ ፣ እሱ ያቀረበው “ማስተካከል” አዲስ ተጋላጭነትን ወይም ስህተትን ሊያስተዋውቅ ይችላል። AI በኮድ ግምገማ ውስጥ ሁለተኛ ዓይን እና ጠቋሚ ነው; ገንቢው እና የደህንነት ባለሙያው ግኝቱ እውነተኛ ተጋላጭነት መሆኑን እና ጥገናው ትክክል እና ደህንነቱ የተጠበቀ መሆኑን ይወስናሉ።
የኮድ ግምገማ ደረጃዎች
- ወሰን እና አውድ ይስጡ። የትኛው ቋንቋ፣ የትኛው ማዕቀፍ፣ ይህ ኮድ ግብአት የሚወስደው የት ነው፣ የት ነው ውፅዓት የሚሰጠው፣ በየትኛው ንብርብር ነው የሚሰራው? ያለ አውድ የኮድ ግምገማ የውሸት አወንታዊ ውጤቶችን ያስገኛል።
- አደገኛ ንድፎችን ይቃኙ. የታወቁ AI የተጋላጭነት ክፍሎችን ይፈልጉ (እንደ OWASP ከፍተኛ 10)፡ መርፌ፣ ማረጋገጥ፣ ሚስጥራዊ ውሂብ ይፋ ማድረግ፣ የመዳረሻ ቁጥጥር።
- እያንዳንዱ ግኝት ትክክል ይሁን። ለእያንዳንዱ ባንዲራ፡ የትኛው መስመር፣ የትኛው የተጋላጭነት ክፍል፣ እንዴት ጥቅም ላይ ሊውል ይችላል፣ ማስረጃው ምንድን ነው? ትክክለኛ ያልሆነ ግኝት በቁም ነገር አይወሰድም.
- የውሸት አወንታዊነትን ያስወግዱ። ግብአቱ በእርግጥ እየጸዳ ነው፣ ያ ዱካ በእርግጥ ተደራሽ ነውን - ከዐውደ-ጽሑፉ ጋር ያረጋግጡ።
- ጥገናውን ያረጋግጡ። በ AI የተጠቆመው ፕላስተር በትክክል ተጋላጭነቱን የሚዘጋ፣ አዳዲስ ተጋላጭነቶችን/ሳንካዎችን የማያስተዋውቅ እና ፈተናውን ያለፈ መሆኑን ያረጋግጡ።
- የሰው ይሁንታ። ገንቢ + የደህንነት ባለሙያ ግኝቱን ይገመግማል እና ያስተካክላል; ወደ ኮድ ማከማቻው የሚገባው በዚህ መንገድ ነው።
ውሎች፡ SAST (የማይንቀሳቀስ የመተግበሪያ ደህንነት ሙከራ - የምንጭ ኮድን ሳያስኬድ የሚመረምር የማይንቀሳቀስ የደህንነት ሙከራ)። DAST (ተለዋዋጭ - አሂድ መተግበሪያን በውጪ የሚፈትሽ ተለዋዋጭ ሙከራ)። OWASP ከፍተኛ 10 በጣም የተለመዱ የድር መተግበሪያ ተጋላጭነቶች መደበኛ ዝርዝር ነው። መርፌ የተጠቃሚ ግቤትን እንደ ትዕዛዝ/ጥያቄ (ለምሳሌ SQL መርፌ) በመተርጎም የሚፈጠር ተጋላጭነት ነው። ፓራሜትራይዝድ መጠይቅ ግቤቱን ከኮዱ በመለየት መርፌን የሚከላከል ትክክለኛ ዘዴ ነው።
የተለመዱ የተጋላጭነት ክፍሎች ሰንጠረዥ
የተጋላጭነት ክፍል
ምልክት (በኮድ)
ትክክለኛ መፍትሄ
የ AI ወጥመድ
SQL መርፌ
ወደ መጠይቅ ግብዓት መቀላቀል
የተመጣጠነ መጠይቅ
ንፅህናን ችላ ማለት ይችላል።
ጠንካራ ኮድ ሚስጥር
በኮድ ውስጥ የይለፍ ቃል/ቁልፍ
ሚስጥራዊ ደህንነት (ቮልት)፣ env
የውሸት አወንታዊ (ናሙና/ሙከራ)
ደካማ ማረጋገጫ
የጠፋ/የተሳሳተ ቁጥጥር
ኃይለኛ ፣ የተማከለ ቁጥጥር
አውድ አጥቷል
የተሳሳተ የመዳረሻ መቆጣጠሪያ
የፍቃድ ማረጋገጫ የለም።
የአገልጋይ ጎን ፍቃድ
ውስብስብ ፍሰትን አይረዳም
ሚስጥራዊነት ያለው መረጃ ይፋ ማድረግ
ከይለፍ ቃል-ነጻ ማከማቻ/ምዝግብ ማስታወሻ
ማመስጠር፣ መደበቅ
ወሳኝነትን ማወቅ አልተቻለም
ደህንነቱ ያልተጠበቀ ተከታታይነት
የማያስተማምን ውሂብ ከስራ ያጥፉ
ደህንነቱ የተጠበቀ ትንተና
ብርቅዬ ጥለት አምልጦታል።
ሶስት ጥቃቅን ጉዳዮች
ጉዳይ 1 - ትክክለኛውን መርፌ መያዝ. አንድ ገንቢ የውሂብ መዳረሻ ተግባርን AI መመርመር አለው። ኤአይኤው ከተጠቃሚው የሚገኘው የተጠቃሚአይድ እሴት በቀጥታ ወደ SQL ጽሑፍ የተካተተበትን መስመር ያመላክታል እና "ይህ ክላሲክ SQL መርፌ ነው፣ ወደ መለካት ጥያቄ ይለውጡት" ይላል። ናሙና እርማት ያቀርባል. ገንቢው ግብአቱ በሌላ ቦታ እንዳልጸዳ አረጋግጧል፣ እውነተኛ ተጋላጭነት መሆኑን አረጋግጧል፣ የተጠቆመውን ፓራሜትራይዝድ መጠይቅ ተግባራዊ ያደርጋል እና ፈተና ይጽፋል። AI ተጋላጭነትን ጎላ አድርጎ አሳይቷል; የማረጋገጫ እና የማረም ሙከራ ከገንቢው መጣ።
ጉዳይ 2 - የውሸት አዎንታዊ ቋሚ ሚስጥር. AI በፋይል ውስጥ ያለውን የይለፍ ቃል = "test1234" መስመር አይቶ "ወሳኝ፡ ሃርድ ኮድ የተደረገ የይለፍ ቃል" ይላል። ገንቢው አውዱን ይፈትሻል፡ ይህ የአሃድ ሙከራ ፋይል ነው፣ ዱሚ የሙከራ ውሂብ፣ ወደ ምርት ያልተለቀቀ እና ወደ እውነተኛ ስርዓት ያልተላለፈ። ግኝቱ የውሸት አዎንታዊ ነው። ገንቢው ይህንን ሰነድ ያቀርባል ነገር ግን እውነተኛ ሚስጥር ስላልሆነ እርምጃ አይወስድም። ትምህርት: የ AI "ከባድ ሚስጥር" ምልክት በአውድ መወገድ አለበት; እያንዳንዱ ገመድ ሚስጥር አይደለም.
ጉዳይ 3 - አዲስ የተጋላጭነት ማስተካከያ። AI ለኤክስኤስኤስ (የመስቀል ጣቢያ ስክሪፕት) ተጋላጭነትን ለማስተካከል ሀሳብ ያቀርባል። ነገር ግን እሱ የጠቆመው ኮድ ግቤትን በተሳሳተ ቦታ ያጸዳል እና በሌላ አካባቢ የውጤት ኢንኮዲንግ ይዘለላል; በውጤቱም, ክፍተቱ ሙሉ በሙሉ አይዘጋም. የደህንነት ባለሙያው ጥገናውን ይገመግማል, የጎደለውን ኮድ ያስተውላል እና በትክክለኛው ንብርብር ላይ ያስተካክለዋል. ትምህርት: AI የሚመክረው patch በራስ-ሰር ደህንነቱ የተጠበቀ አይደለም; እያንዳንዱ ጥገና ይገመገማል እና ይሞከራል.
ደካማ ጥያቄ / ጠንካራ ጥያቄ
ደካማ ጥያቄ፡
በዚህ ኮድ ውስጥ ክፍተት አለ፣ አስተካክሉት፡ [code]
ይህ ጥያቄ ምንም አይነት አውድ (ቋንቋ፣ ማዕቀፍ፣ የግብዓት ምንጭ) አይሰጥም፣ ጽድቅን አይጠይቅም፣ የውሸት አወንታዊውን አይጠራጠርም፣ እና በአይአይ የተሰራውን እርማት በጭፍን ለመቀበል ክፍት ነው። AI የሁለቱም የእውነተኛ ተጋላጭነት እና ያለመኖር ድብልቅ ምልክቶች።
ኃይለኛ ጥያቄ፡-
የእርስዎ ሚና፡ ደህንነቱ በተጠበቀ የኮድ ግምገማ ለገንቢው ሁለተኛ አይን የሆነው ረዳት። ውሳኔ መስጠት፤ በቀጥታ የተተገበረውን ማስተካከያ ግምት ውስጥ ያስገቡ. ኮድ፡ [ቋንቋ/ማዕቀፍን ይግለጹ]።አውድ፡ ይህ ተግባር [የግቤት ምንጭ፡ ለምሳሌ፡. [የውጭ HTTP ጥያቄ] ይቀበላል፣ ወደ [የውጤት መድረሻ] ይጽፋል። የእርስዎ ተግባር፡ (1) ተጋላጭነቶችን ከOWASP ክፍል ጋር ጠቁም፣ የመስመር ቁጥርን + ለምን አደገኛ + እንዴት መጠቀም እንደሚቻል + ለእያንዳንዳቸው ማስረጃ መስጠት፣ (2) ለእያንዳንዱ ግኝት ቢያንስ 1 የውሸት አወንታዊ ሁኔታን ይፃፉ (ለምሳሌ ግብአቱ በሌላ ንብርብር የጸዳ ከሆነ)፣ (3) ማስተካከያ ይጠቁሙ ነገር ግን በ"ግምገማ + የጽሁፍ ሙከራ]" ምልክት; እንዲሁም ማስተካከያው አዳዲስ ድክመቶችን/ሳንካዎችን የሚያስተዋውቅ መሆኑን ይገምግሙ። የውሸት ተጋላጭነት መጨመር።[ኮድ]
ጠንካራ ፍጥነት አውድ ይሰጣል፣ የ OWASP ክፍል እና ማስረጃን ይጠይቃል፣ የውሸት አዎንታዊ ጥያቄዎችን እና የመፍትሄ ስጋቶችን ይጠይቃል፣ የሰውን ግምገማ ያስገድዳል።
ሊገለበጡ የሚችሉ የጥያቄ አብነቶች
የተጋላጭነት ቅኝት አብነት ለ OWASP ከፍተኛ 10 የ [ቋንቋ/ማዕቀፍ] ኮድን ይመርምሩ። ለእያንዳንዱ ሊገኝ የሚችል ግኝት፡ የመስመር ቁጥር፣ የተጋላጭነት ክፍል፣ ለምን አደገኛ ነው፣ የናሙና ብዝበዛ፣ የማስረጃ ጥንካሬ (የተወሰኑ/የሚቻል/ደካማ)። አውድ፡ ግብዓት [ምንጭ]፣ ውፅዓት [ዒላማ]። የተፈጠሩ ግኝቶችን መጨመር; እርግጠኛ ካልሆኑ "[መረጋገጥ አለበት]" ብለው ይተይቡ። ኮድ: [ለጥፍ]
የውሸት አወንታዊ የማስወገጃ ንድፍ ለሚከተለው ኮድ ፍለጋ፣ እውነተኛ ተጋላጭነት የሌለባቸውን ሁኔታዎች ይዘርዝሩ፡ ግቤቱ በሌላ ንብርብር ሊጸዳ ይችላል፣ ይህ መንገድ ተደራሽ ነው ወይ ይህ ዋጋ የሙከራ/ናሙና ነው፣ ክፈፉ በራስ-ሰር የተጠበቀ ነው። ለእያንዳንዳቸው እንዴት ማረጋገጥ እንደሚችሉ ይፃፉ. ማግኘት: [ለጥፍ]
የግምገማ TEMPLATERለሚከተለው የተጋላጭነት መጠገንን ይመክራል። ከዚያም የእራስዎን ማስተካከል ይተቹ፡ (1) በእርግጥ ተጋላጭነቱን ይዘጋዋል፣ (2) አዲስ ተጋላጭነት/ሳንካ ያስተዋውቃል፣ (3) ምን ፈተና ልፃፍ (አዎንታዊ እና አሉታዊ ጉዳይ)፣ (4) የአፈጻጸም/የተግባር ተፅእኖ። ማስተካከያውን እገመግማለሁ እና እሞክራለሁ። ተጋላጭነት + ኮድ፡ [ለጥፍ]
ደህንነቱ የተጠበቀ ስርዓተ ጥለት የማስተማር አብነት ለተጋላጭነት ክፍል [ለምሳሌ፦ SQL መርፌ] በዚህ ቋንቋ/ማዕቀፍ ውስጥ ደህንነቱ የተጠበቀ የትየባ ጥለት እና የተለመዱ የተሳሳቱ ንድፎችን በአንፃራዊነት ያሳያል። አጠቃላይ ህግ + ኮድ ምሳሌ ይስጡ; ነገር ግን በእኔ ኮድ ውስጥ ከመተግበሩ በፊት አውዱን እንድትጠይቁ እፈልጋለሁ. ቋንቋ/ማዕቀፍ፡ [መጻፍ]
የተለመዱ ስህተቶች
- ያለ አውድ ይገምግሙ። ያለ ቋንቋ፣ ማዕቀፍ እና የግብአት/ውፅዓት አውድ፣ AI እውነተኛ እና አስመሳይ ግኝቶችን ግራ ያጋባል። አውድ መስጠትዎን እርግጠኛ ይሁኑ።
- ለትክክለኛ ድክመት እያንዳንዱን ምልክት ስህተት. AI የውሸት አወንታዊ ውጤቶችን ያመጣል (የሙከራ ውሂብ, ግቤት በሌላ ንብርብር የጸዳ); እያንዳንዱን ግኝት ከዐውደ-ጽሑፉ ጋር ያጣሩ።
- የ AI እርማትን በጭፍን በመተግበር ላይ። የሚመከር ጠጋኝ አዳዲስ ድክመቶችን/ሳንካዎችን ሊያስተዋውቅ ይችላል። ፈተናዎችን ይገምግሙ እና ይፃፉ.
- የውሸት አሉታዊውን ማመን. ምንም እንኳን AI "ምንም ተጋላጭነት የለም" ቢልም, ወሳኝ መንገዶችን እራስዎን ይመርምሩ; የማይንቀሳቀስ ቅኝት እያንዳንዱን ተጋላጭነት አያመለክትም።
- ኮድ / ምስጢሩን ለውጫዊ መሳሪያው መስጠት. የግል ኮድ እና እውነተኛ ሚስጥሮች (ቁልፍ, የይለፍ ቃል) አእምሯዊ ንብረት እና ተጋላጭነት ናቸው; ማንነትን መደበቅ ወይም የድርጅት፣ የተለዩ መሳሪያዎችን መጠቀም።
ጠቃሚ ምክር: የ AI ግምገማ ኮድ ሲኖር በጣም ቀልጣፋ ማጣሪያ ለእያንዳንዱ ግኝት "የማስረጃ ጥንካሬ" (የተወሰኑ / ሊሆኑ የሚችሉ / ደካማ) መጠየቅ ነው. "ደካማ" የሚል ምልክት የተደረገባቸው አብዛኛዎቹ ግኝቶች የውሸት አዎንታዊ ናቸው; ጉልበትህን "ለእርግጠኞች" ትመድባለህ።
ጥንቃቄ፡ AI ያቀረበው የደህንነት መጠገኛ ሳይሞከር ወደ መጋዘኑ መግባት የለበትም። ትክክል ያልሆነ "ማስተካከያ" ሁለቱንም ተጋላጭነት ክፍት አድርጎ በምርት ላይ ወደ ተግባራዊ ስህተት ሊያመራ ይችላል. እያንዳንዱ ፕላስተር በግምገማ እና በሙከራ በር በኩል ያልፋል።
በማጠቃለያው
ደህንነቱ የተጠበቀ ኮድ ግምገማ ወደ ምርት ከመግባታቸው በፊት ተጋላጭነቶችን ለመያዝ በጣም ርካሹ መንገድ ነው ፣ እና ኮድ ቋንቋ ስለሆነ ፣ AI እዚህ ኃይለኛ ሁለተኛ ዓይን ይሆናል: አደገኛ ቅጦችን ይጠቁማል ፣ አደጋን ያብራራል ፣ ማስተካከያዎችን ይጠቁማል። ነገር ግን AI ሙሉውን የአሠራር አውድ አይመለከትም, የውሸት አወንታዊ እና የውሸት አሉታዊ ነገሮችን ያመጣል, እና እሱ የሚመከረው ፓቼ አዲስ ተጋላጭነቶችን ሊያስተዋውቅ ይችላል. ስለዚህ ግምገማው ስድስት እርከኖች አሉት (አውድ፣ ማጣሪያ፣ ማረጋገጫ፣ የውሸት አወንታዊ መወገድ፣ መጠገኛ ማረጋገጫ፣ የሰው ማፅደቅ) እና ውሳኔው በገንቢው እና በደህንነት ባለሙያው ላይ ነው። ሶስት መርሆች፡ ምንም ግኝት ያለ አውድ አይተረጎምም, እያንዳንዱ ምልክት ከአውድ ጋር ይወገዳል, ምንም ጥገና ሳይፈተሽ ወደ ማከማቻ ውስጥ አይገባም. እና ኮድ/ምስጢሩ ስም ሳይገለጽ ለውጭ መሳሪያ ፈጽሞ አይሰጥም።
የመተግበሪያ ተግባር
የናሙና የኮድ ቅንጣቢ ይውሰዱ (ወይ ሚስጥራዊነት ያላቸውን ክፍሎች ከእራስዎ ኮድ ወይም የናሙና ኮድ ከተጋላጭነት ጋር ያስወግዱ)። AI በ "የተጋላጭነት ቅኝት" አብነት እንዲመረምረው ያድርጉ; ለእያንዳንዱ ግኝት "የውሸት አወንታዊ ማስወገጃ" አብነት ይተግብሩ እና እውነተኛዎቹን ያስወግዱ። በጣም ከባድ የሆነውን ግኝቱን በ "የማስተካከያ ግምገማ" አብነት ውሰዱ ፣ እራስዎ ይገምግሙት እና አንድ አዎንታዊ + አንድ አሉታዊ የሙከራ ጉዳይ ይፃፉ። ምን ያህል ግኝቶች የውሸት አዎንታዊ እንደሆኑ ልብ ይበሉ።
የማረጋገጫ ዝርዝር
- [ ] ኮዱን ከመመልከቴ በፊት ቋንቋውን፣ ማዕቀፉን እና የግብአት/ውፅዓት አውድ ሰጥቻለሁ።
- [] የመስመር ቁጥር፣ የተጋላጭነት ክፍል፣ የብዝበዛ መንገድ እና ለእያንዳንዱ ግኝት ማስረጃ ጠየቅኩ።
- [ ] እያንዳንዱን ግኝት የውሸት አወንታዊ ጉዳዮችን ከአውድ ጋር አጣራለሁ።
- [] የ AI እርማትን በጭፍን አልተጠቀምኩም; ገምግሜ ፈተና ጻፍኩ።
- [] ምንም እንኳን "ምንም ተጋላጭነት" ውጤት ቢኖረውም እኔ ራሴ ወሳኝ መንገዶችን መርምሬአለሁ።
- [ ] ኮዱን/ምስጢሩን ስማቸውን አልገለጽኩትም ወይም በድርጅት የተገለሉ መሳሪያዎችን ተጠቅሜያለሁ።
- [ ] ግኝቱን አልፌዋለሁ እና በገንቢ + ደህንነት ማረጋገጫ በኩል አስተካክያለሁ።