printf - python အသုံးပြုသူထည့်သွင်းမှု - java printf

printf(user_input) သည် အန္တရာယ်ရှိနေဆဲဖြစ်သည်- Format ဖြင့် Build တစ်ခုကို မည်သို့ချိုးဖျက်ခဲ့သနည်း။

မာတိကာ

မဖြစ်မနေဖတ်သင့်သောပို့စ်များ

စိတ်ဝင်စားဖွယ်ကောင်းသော နောက်ဆုံးပို့စ်များ

Format String bug တွေဆိုတာ ဘာတွေလဲ။

အတည်မပြုရသေးသော Python အသုံးပြုသူထည့်သွင်းမှုကို formatting function များထဲသို့ ပေးပို့သောအခါ format string bug များ ဖြစ်ပေါ်ပါသည်။ printf၊ System.out.printfသို့မဟုတ် Python ၏ f-strings နှင့် logging methods များ။ ဤ function များသည် format specifiers များကို အဓိပ္ပာယ်ဖွင့်ဆိုသည် (ဥပမာ %s၊ %x, etc.) စာကြောင်းထဲတွင်။ စာကြောင်းသည် အသုံးပြုသူ၏ ထိန်းချုပ်မှုအောက်တွင် ရှိနေပါက၊ ၎င်းသည် ပျက်စီးမှုများ သို့မဟုတ် လုံခြုံရေးပြဿနာများကို ဖြစ်ပေါ်စေနိုင်သည်။

ဒါကြောင့် ကျွန်တော်တို့ ပြောတဲ့အခါ printf(အသုံးပြုသူထည့်သွင်းမှု)၊ အစွမ်းထက်သော formatters များအပေါ် မယုံကြည်ရသော Python user input ကို ထိန်းချုပ်ခွင့်မပြုရန် ကျွန်ုပ်တို့ သတိပေးနေပါသည်။

လက်တွေ့ကမ္ဘာတွင် စနစ်ထည့်သွင်းခြင်း- Python အက်ပ်တွင် printf(user_input)

developer တစ်ဦးက အန္တရာယ်မရှိပုံပေါ်တဲ့ debug statement တစ်ခုကို အသုံးပြုပြီး ထည့်သွင်းခဲ့ပါတယ် printf(အသုံးပြုသူထည့်သွင်းမှု) Python script ထဲမှာ။ အဲဒါ commit ကုဒ်ပြန်လည်သုံးသပ်ခြင်းကို အောင်မြင်ပြီး CI မှ ကောက်ယူခဲ့သည် pipelineexecution လုပ်နေစဉ်အတွင်း formatter သည် Python user input တွင် မမျှော်လင့်ထားသော token များနှင့် ကြုံတွေ့ခဲ့ရပြီး output ပျက်စီးကာ build failure ဖြစ်ခဲ့သည်။

CI မှတ်တမ်း (ကောက်နုတ်ချက်):

အမျိုးအစားအမှား: ဖော်မတ် မျှော်လင့်ထားသည် … ရပြီ … မကောင်းတဲ့ ရည်ရွယ်ချက်နဲ့ ထည့်သွင်းတာမျိုး မရှိပါဘူး၊ formatting မှားယွင်းသွားတဲ့ ယူဆချက်တစ်ခုသာ ဖြစ်ပါတယ်။ printf က structure ကို အဓိပ္ပာယ်ဖွင့်ဆိုတဲ့အတွက် pipeline ပုံမှန်ထည့်သွင်းမှုဟုထင်ရသည့်အရာပေါ်တွင် ပြိုကျသွားသည်။

မြင်သာထင်ရှားသော ထောင်ချောက်- အဘယ်ကြောင့် printf(user_input) သည် ၂၀၂၅ ခုနှစ်တွင် ဆက်လက်ဖြစ်ပေါ်နေသေးသနည်း။

C ကတည်းက format string အားနည်းချက်တွေရှိနေပေမယ့်လည်း ဒီနေ့အထိ ပြဿနာတစ်ခုအဖြစ် ရှိနေဆဲပါ။ အလျင်အမြန် ဖွံ့ဖြိုးတိုးတက်မှုမှာ Stack Overflow ဒါမှမဟုတ် internal tools တွေကနေ snippet တွေကို ကူးယူခြင်း ပါဝင်လေ့ရှိပါတယ်။ ဒီလိုစာကြောင်းမျိုး printf(အသုံးပြုသူထည့်သွင်းမှု) or ပရင့်ထုတ်ရန် (f”{user_input}”) အန္တရာယ်မရှိပုံပေါ်ပေမယ့် မဟုတ်ပါဘူး။

ခေတ်မီသေးတယ်။ CVE များ လက်တွေ့ကမ္ဘာ၏ အကျိုးဆက်များကို ပြသပါ။ ယူပါ။ CVE-2023-21930 ဥပမာအားဖြင့်- ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသော Java printf အကောင်အထည်ဖော်မှုတွင် format string အားနည်းချက်တစ်ခုသည် တိုက်ခိုက်သူများအား application crash များဖြစ်စေခြင်း သို့မဟုတ် sensitive memory ကို ဖတ်ရှုခြင်းတို့ကို ဖြစ်စေခဲ့သည်။ သို့မဟုတ် CVE-2023-36052အသုံးပြုသူထိန်းချုပ်ထားသော format string များကြောင့် log ပျက်စီးမှုဖြစ်ပေါ်စေသည့် logging စနစ်ကို ထိခိုက်စေပါသည်။

၎င်းတို့သည် အနားသတ်ပြဿနာများ မဟုတ်ပါ။ ၎င်းတို့သည် ခေတ်မီပြီး တက်ကြွစွာ ထိန်းသိမ်းထားသော စာကြည့်တိုက်များနှင့် စနစ်များကို ထိခိုက်စေပါသည်။ f-strings နှင့် template literals ကဲ့သို့သော ခေတ်သစ်ဘာသာစကားအင်္ဂါရပ်များသည် ဖော်မတ်ချခြင်းကို ပိုမိုလွယ်ကူစေသော်လည်း ရှုပ်ထွေးမှုကိုလည်း ဖုံးကွယ်ထားသည်။ ပေါ့ဆစွာအသုံးပြုပါက ဝန်ဆောင်မှုများကို ပျက်စီးစေနိုင်သည် သို့မဟုတ် ယုတ္တိဗေဒကို ဖော်ထုတ်နိုင်သည်။

ဒီ bug တွေက legacy app တွေမှာတင် ရှိတာမဟုတ်ပါဘူး။ open-source CI script တွေ၊ init log တွေနဲ့ Python၊ Java printf နဲ့ Node.js လို modern stack တွေနဲ့ တည်ဆောက်ထားတဲ့ security tool တွေမှာတောင် ကျွန်တော်တို့ မြင်တွေ့ခဲ့ရပါတယ်။

အောက်ဆုံးလိုင်း: printf(အသုံးပြုသူထည့်သွင်းမှု) စတိုင်ဆိုးရုံတင်မကဘူး၊ တကယ့်အန္တရာယ်ပါ။

အားနည်းချက်၏ ခန္ဓာဗေဒ- printf(user_input) သည် ဘာလုပ်သနည်း။

အပေါ်ယံတန်ဖိုးအရ၊ printf(အသုံးပြုသူထည့်သွင်းမှု) ကြိုးတစ်ချောင်းကို ရိုက်နှိပ်ရုံပါပဲ။ ဒါပေမယ့် အတွင်းပိုင်းမှာတော့ ညွှန်ကြားချက်စီးရီးတစ်ခုအဖြစ် အဓိပ္ပာယ်ဖွင့်ဆိုပါတယ်။

Python၊ Java နှင့် Node.js တို့တွင် ပုံစံမှာ အတူတူပင်ဖြစ်သည်- format functions များသည် တိုကင်များအတွက် parse input ကို အောက်ပါအတိုင်း လုပ်ဆောင်သည် %s၊ %xဒါမှမဟုတ် {}။ အဝင်စာကြောင်းသည် အသုံးပြုသူထံမှ လာပြီး အတည်မပြုရသေးပါက၊ ထိုတိုကင်များသည် အမိန့်ပေးချက်များကဲ့သို့ လုပ်ဆောင်သည်။ ၎င်းသည် ရပ်တန့်သွားခြင်း၊ မှတ်တမ်းများ ပျက်စီးခြင်း သို့မဟုတ် လုံခြုံရေးပြဿနာများကို ဖြစ်ပေါ်စေနိုင်သည်။

ပိုဆိုးတာက libraries နဲ့ wrapper အများစုက formatting step ကို abstract လုပ်ထားတဲ့အတွက် vulnerability က utility functions တွေ ဒါမှမဟုတ် logging tools တွေထဲမှာ နက်နက်ရှိုင်းရှိုင်း ပုန်းနေနိုင်ပါတယ်။ text တွေကိုပဲ logging လုပ်နေတယ်လို့ ထင်ကောင်းထင်နိုင်ပေမယ့် Python user input ဒါမှမဟုတ် Java printf ကနေ untrusted tokens တွေက application ကို တိတ်တိတ်လေး ဖျက်ဆီးပစ်နိုင်ပါတယ်။

ယူဆောင်သွားခြင်း- Formatting function များသည် output တစ်ခုတည်းအတွက် မဟုတ်ဘဲ structure ကို interpret လုပ်ပါသည်။ သင်သည် user input ကို ထို structure ကို သတ်မှတ်ခွင့်ပြုပါက မတည်ငြိမ်မှုနှင့် အလျှော့အတင်းဖြစ်မှုတို့ ဖြစ်ပေါ်လာနိုင်သည်။

တကယ့်အန္တရာယ်မှာ Pipeline: အပြစ်ကင်းစင်သူထံမှ Commit ပြတ်တောက်မှုတည်ဆောက်ရန်

၎င်းသည် သေးငယ်သောအရာဖြင့် စတင်သည် commit: ကို အသုံးပြု၍ log statement တစ်ခု printf(အသုံးပြုသူ_ထည့်သွင်းမှု)။

CI က ပြောင်းလဲမှုကို ကောက်ယူပြီး လုပ်ဆောင်တယ်၊ ပြီးတော့ boom ဖြစ်သွားတယ်၊ log တွေ ပျက်စီးနေတယ်၊ ​​output တွေ မှားယွင်းနေတယ်၊ ​​tests တွေကို ဖတ်လို့မရဘူး။ formatting token တွေပါတဲ့ validated မလုပ်ထားတဲ့ Python user input တစ်ခုတည်းနဲ့ collapse လုပ်လို့ရတယ် pipeline.

CI/CD စီးဆင်းမှု:

  1. dev commits ကုဒ်နဲ့ printf(အသုံးပြုသူထည့်သွင်းမှု)
  2. CI အလုပ်များကို လုပ်ဆောင်ပြီး အသုံးပြုသူထိန်းချုပ်ထားသော အဝင်အထွက်ကို စီမံဆောင်ရွက်ခြင်း
  3. Formatter သည် string ကို မှားယွင်းစွာ အဓိပ္ပာယ်ဖွင့်ဆိုသည် → crash သို့မဟုတ် broken output
  4. တည်ဆောက်မှု မအောင်မြင်ခြင်း၊ ဖြန့်ကျက်မှုကို နှောင့်နှေးခြင်းနှင့် debugging အချိန် တိုးလာခြင်း

ဒါဟာ သီအိုရီမဟုတ်ပါဘူး။ ခေတ်သစ်ပတ်ဝန်းကျင်တွေမှာ ဒီလိုဖြစ်လာတာကို ကျွန်တော်တို့ မြင်တွေ့ခဲ့ရပါတယ်။

အမွေအနှစ်တစ်ခုတည်းမဟုတ်ဘဲ- format bug များသည် ယနေ့တိုင် အရေးပါနေဆဲဖြစ်ရသည့် အကြောင်းရင်းများ

format string bug တွေက အကြွင်းအကျန်တွေ မဟုတ်ပါဘူး၊ သူတို့က တိုးတက်ပြောင်းလဲလာတာပါ။ Python၊ Java နှင့် Node.js အားလုံးသည် rich formatting tools များကို ပံ့ပိုးပေးပါသည်။ ခေတ်မီ development အလေ့အထများသည် Python user input များသည် ဤ tools များထဲသို့ မစစ်ဆေးဘဲ စီးဆင်းသွားလေ့ရှိသည်ဟု မကြာခဏ ဆိုလိုပါသည်။

ဘာကြောင့် အခုထိဖြစ်နေတုန်းလဲ။ မြန်နှုန်း။ အလိုလိုသိစိတ်။ ဂျူနီယာ တီထွင်သူတစ်ယောက်က ရေးသားကောင်းရေးသားနိုင်ပါတယ်။ ပရင့်ထုတ်ရန် (f”{user_input}”) မစဉ်းစားဘဲ။ အတူတူပါပဲ။ System.out.printf(အသုံးပြုသူထည့်သွင်းမှု) Java တွင်

CVE များ ဆက်လက်ပေါ်ပေါက်လာနေပါသည်။ မကြာသေးမီက လုံခြုံရေးအကြံပြုချက်များသည် ခေတ်သစ်ဂေဟစနစ်များတွင် format string ပြဿနာများကို မီးမောင်းထိုးပြထားသည်။ CVE-2023-21930 (Java printf) နှင့် CVE-2023-36052 (logging framework) ကဲ့သို့သော အားနည်းချက်များက ခေတ်ပြိုင်ပတ်ဝန်းကျင်များတွင် အတည်မပြုရသေးသော format string များသည် မည်သို့ crash များ သို့မဟုတ် data leakage များကို ဦးတည်စေနိုင်ကြောင်း ပြသထားသည်။

CI/CD တစ်ယောက်တည်းနဲ့ မလုံလောက်ပါဘူး။ CI က syntax နဲ့ lint rules တွေကို မကြာခဏ စစ်ဆေးပေမယ့် အန္တရာယ်ရှိတဲ့ format string အသုံးပြုမှုကိုတော့ မစစ်ဆေးပါဘူး။ အဲဒါက အရေးကြီးတဲ့ gap တစ်ခုကို ချန်ထားခဲ့ပါတယ်။

မြေမြှုပ်မိုင်းများကို ရှာဖွေခြင်း- ပုံစံကြိုးပြဿနာများကို ခေတ်မီထောက်လှမ်းခြင်း

ဤချို့ယွင်းချက်များသည် ရေးသားရလွယ်ကူပြီး ရှာဖွေရန်ခက်ခဲပါသည်။

သင့်ရဲ့ IDE က သင့်ကို မကယ်တင်နိုင်လောက်ပါဘူး- VS Code၊ PyCharm၊ IntelliJ တို့သည် အမှားအယွင်းများစွာအတွက် ကောင်းမွန်သော်လည်း၊ ၎င်းတို့သည် input source များနှင့် format function များအကြား data စီးဆင်းမှုကို ခြေရာခံလေ့မရှိပါ။ printf(user_input) သို့မဟုတ် System.out.printf(အသုံးပြုသူထည့်သွင်းမှု) သင့်ကုဒ်ထဲသို့ ထည့်သွင်းခြင်းသည် အချက်ပေးသံများ မထွက်ပေါ်စေပါ၊ အဘယ်ကြောင့်ဆိုသော် IDE များသည် format လုပ်နေသော string ကို သင်ထိန်းချုပ်နိုင်သည်ဟု ယူဆသောကြောင့်ဖြစ်သည်။

လင်းတာတွေကလည်း မဖမ်းမိဘူး။ flake8၊ pylint သို့မဟုတ် eslint ကဲ့သို့သော လူကြိုက်များသော linter များသည် syntax၊ styling နှင့် ရိုးရာ bug များကို အာရုံစိုက်သည်။ အတိအကျ configure မလုပ်ပါက ၎င်းတို့သည် ၎င်းကို နားမလည်ပါ။ အသုံးပြုသူ_ထည့်သွင်းမှု ပြင်ပ သို့မဟုတ် မယုံကြည်ရသော အရင်းအမြစ်မှ လာနိုင်သည်။ GitHub Action တစ်ခု လုပ်ဆောင်နေသည် standard အန္တရာယ်ရှိတဲ့ format string တစ်ခုကို ထည့်သွင်းထားရင်တောင် lint rules တွေက အစိမ်းရောင် အမှန်ခြစ်တစ်ခု ပေးပါလိမ့်မယ်။

ဘယ်မှာ SAST ဝင်ရောက်လာခြင်း- Static Application လုံခြုံရေး စမ်းသပ်ခြင်း (SAST) ၎င်းသည် သင့်ကုဒ်ဘေ့စ်မှတစ်ဆင့် ဒေတာစီးဆင်းမှုကို လိုက်နာသောကြောင့် ဤပြဿနာအတွက် ထူးခြားစွာ သင့်လျော်ပါသည်။ ကောင်းမွန်သော SAST tool တစ်ခု လုပ်နိုင်သည်

  • မယုံကြည်ရသောရင်းမြစ်များမှဒေတာများကိုခြေရာခံပါ (ဥပမာ၊ Python အသုံးပြုသူထည့်သွင်းမှု၊ ပတ်ဝန်းကျင်ပြောင်းလဲမှုများ၊ CLI args)
  • ထိုဒေတာသည် formatting function များကဲ့သို့သော sensitive sink များထဲသို့ မည်သည့်အချိန်တွင် စီးဆင်းသည်ကို ဖော်ထုတ်ပါ (printf၊ System.out.printf၊ f-strings)
  • အန္တရာယ်ရှိသော လမ်းကြောင်းကို helper method သို့မဟုတ် wrapper class ထဲတွင် မြှုပ်နှံထားလျှင်ပင် မလုံခြုံသော လမ်းကြောင်းများကို အလံပြပြီး လုပ်ဆောင်နိုင်သော သတိပေးချက်များကို ထုတ်ပေးပါ။
  • ပိတ်ဆို့ရန် စိတ်ကြိုက်စည်းမျဉ်းများ သို့မဟုတ် မူဝါဒများကို ပံ့ပိုးပါ printf(အသုံးပြုသူထည့်သွင်းမှု)အတိုင်းအတာအလိုက် ပုံစံများကဲ့သို့

SAST ဘယ်ဘက်သို့ ရွှေ့ရန် ကူညီပေးသည်- ၎င်းသည် runtime ပြဿနာများ သို့မဟုတ် လုံခြုံရေးဆိုင်ရာ အဖြစ်အပျက်များ မဖြစ်ပွားမီ ဖွံ့ဖြိုးတိုးတက်မှု သို့မဟုတ် CI အတွင်း format bug များကို ဖမ်းယူပေးသည်။

TL; DR: Guardrails > လက်စွဲပြန်လည်သုံးသပ်ခြင်း အလျင်အမြန်ရွေ့လျားနေသောအဖွဲ့များ လိုအပ်သည် SAST အခြေအနေကို နားလည်သော၊ input flow ကို လိုက်နာသော၊ merge မလုပ်မီ အန္တရာယ်ရှိသော formatting ကို ပိတ်ဆို့သော safety net အဖြစ် လုပ်ဆောင်ရန်။

Guardrails ထိုအလုပ်: ဖော်မတ်ကြောင့်ဖြစ်ပေါ်လာသော ကျရှုံးမှုများကို ကာကွယ်ခြင်း

CI မှာ Static Checks တွေနဲ့ စတင်ပါ ကိရိယာများကို အသုံးပြုပါ-

  • အဝင်မှ ဖော်မတ်တာသို့ ဒေတာစီးဆင်းမှုကို ခွဲခြမ်းစိတ်ဖြာပါ
  • မလုံခြုံသောနေရာတွင် ပိတ်ဆို့ခြင်း ပေါင်းစည်းခြင်း printf အသုံး
  • ပေါင်း pre-commit hooks ပုံစံ string ပုံစံများအတွက်

Raw သုံးတာ ရပ်လိုက်ပါ printf(အသုံးပြုသူထည့်သွင်းမှု) ပိုမိုဘေးကင်းသော ပုံစံများကို အသုံးပြုပါ-

Python မှာ

ဂျာဗားမှာ

သင့်ရဲ့ ဖော်မတ် ယုတ္တိဗေဒကို ခြုံငုံသုံးသပ်ပါ- အောက်ပါတို့ပါဝင်သည့် အတွင်းပိုင်းထုပ်ပိုးမှုများကို ဖန်တီးပါ-

  • မယုံကြည်ရသော ဖော်မတ်စာကြောင်းများကို ငြင်းပယ်ပါ
  • ပုံစံများဖြင့် မှတ်တမ်းတင်ပါ
  • စမ်းသပ်နိုင်ပြီး စာရင်းစစ်ဆေးနိုင်သည်

ယဉ်ကျေးမှုကို မှီခိုမနေပါနဲ့၊ အလိုအလျောက်လုပ်ဆောင်ပါ။ သင့်အဖွဲ့ကို လေ့ကျင့်ပေးပါ၊ သို့သော် CI ပြဋ္ဌာန်းချက်ဖြင့် ပံ့ပိုးပေးပါ။ SAST.

DevSecOps လုပ်ဆောင်ချက်- Xygeni သည် format bug များကို ဖြန့်ကျက်ခြင်းမပြုမီ မည်သို့ရပ်တန့်စေသည်

ဖော်မတ်ချို့ယွင်းချက်များကို အရေးကြီးသည့်နေရာတွင် တွေ့ရှိခဲ့သည်- CI တွင်၊ ဆိုက်ဂျီနီ အန္တရာယ်ရှိတဲ့ formatting pattern တွေအတွက် repositories တွေကို တက်ကြွစွာ scan ဖတ်ပါတယ်-

  • printf(အသုံးပြုသူထည့်သွင်းမှု) Python မှာ
  • System.out.printf(အသုံးပြုသူထည့်သွင်းမှု) ဂျာဗားမှာ

၎င်းတို့သည် Python user input နှင့် Java printf အလွဲသုံးစားပြုမှုကို formatting engine များတွင် အပြုအမူကို သတ်မှတ်ခွင့်ပြုသောကြောင့် အန္တရာယ်များသောအဖြစ် သတ်မှတ်ထားသည်။

CI ပံ့ပိုးပေးသူများတစ်လျှောက် အချိန်နှင့်တပြေးညီ ပိတ်ဆို့ခြင်း။ GitHub Actions နှင့် ပေါင်းစပ်လိုက်သောအခါ၊ GitLab CI/CD၊ ဘစ်ဘတ်ကက် Pipelines သို့မဟုတ် Jenkins တွင်၊ Xygeni သည် ကုဒ်ကို အသက်သွင်းနိုင်မီ ပေါင်းစည်းမှုကို ရပ်တန့်လိုက်သည်။ developer သည် အောက်ပါတို့ကို ပြသသည့် ချက်ချင်း၊ အခြေအနေအလိုက် သတိပေးချက်ကို ရရှိသည်-

  • အားနည်းချက်ပေါ်လာသည့် တိကျသောဖိုင်နှင့်စာကြောင်း
  • ပြဿနာ၏ ရှင်းလင်းသော ရှင်းလင်းချက် (ဥပမာ၊ “ဖော်မတ်စာကြောင်းတွင် အတည်မပြုရသေးသော ထည့်သွင်းမှု”)
  • ၎င်းကို ပြုပြင်ရန် အကြံပြုထားသော လုပ်ဆောင်ချက်များ

ဒီအစောပိုင်းပိတ်ဆို့ခြင်းက Xygeni ကို အစီရင်ခံကိရိယာတစ်ခုကနေ merge gatekeeper အဖြစ်ပြောင်းလဲပေးပါတယ်။ postmortem သတိပေးချက်တွေ ဒါမှမဟုတ် မရေမရာတွေ့ရှိချက်တွေအစား အရေးကြီးဆုံးအချိန်မှာ အကောင်အထည်ဖော်နိုင်တဲ့ လုံခြုံရေးစည်းမျဉ်းတွေကို ရရှိပါတယ်။

အခြေအနေအလိုက် စကင်ဖတ်ခြင်း- keyword ရှာဖွေမှုများနှင့်မတူဘဲ၊ Xygeni သည် format string များသည် Python user input မှ ဆင်းသက်လာခြင်းရှိမရှိကို နားလည်ရန် data flow ကို ခွဲခြမ်းစိတ်ဖြာသည်။ ၎င်းသည် ဘေးကင်းသော internal string များနှင့် external data သယ်ဆောင်သော string များကို ခွဲခြားနိုင်သည်။

အဘယ်ကြောင့်အရေးကြီးသနည်း ဆော့ဖ်ဝဲရေးသားသူများသည် ဆူညံသံများ ပိုမိုမလိုအပ်ပါ။ ၎င်းတို့သည် စမတ်ကျပြီး လက်တွေ့လုပ်ဆောင်နိုင်သော ကိရိယာများ လိုအပ်ပါသည်။ Xygeni သည် ကြိုတင်ပြင်ဆင်မှုများကို ပေးဆောင်သည်cise ထောက်လှမ်းခြင်းနှင့် အချိန်နှင့်တပြေးညီ အကောင်အထည်ဖော်ခြင်း guardrails သူတို့ရေတွက်တဲ့နေရာမှာ၊ သင့်ရဲ့ CI မှာ pipeline။ စုံစမ်းသည်!

TL;DR – သေးငယ်သော ပိုးမွှား၊ ကြီးမားသော အညစ်အကြေး- မလုပ်ပါနှင့် printf(အသုံးပြုသူထည့်သွင်းမှု)

ဒီတစ်ကြောင်းတည်းနဲ့ လုပ်နိုင်တာတွေကတော့ -

  • CI ကို ချိုးပါ
  • ပျက်စီးနေသော မှတ်တမ်းများ
  • လည်ပတ်ချိန် ခြွင်းချက်များ ဖြစ်ပေါ်စေသည်

ပြီးတော့ ၂၀၂၅ မှာလည်း ပေါ်လာနေဆဲပါ။

အစစ်အမှန်အန္တရာယ်များ

စွန့်စားမှု ဘာကြောင့်ဖြစ်တာလဲ။ ဒါဟာ Fix ဖို့ကိုဘယ်လို
CI တည်ဆောက်ပြီး မှတ်တမ်းများ ပျက်ပြယ်သွားခြင်း ဖော်မတ်တိုကင်များသည် အထွက်ကို အနှောင့်အယှက်ဖြစ်စေသည် တိုက်ရိုက်ရှောင်ပါ printf(user_input)
ခေတ်သစ် stack များသည် အားနည်းချက်ရှိနေဆဲဖြစ်သည် Java/Python မှာ format call တွေကို မှားယွင်းစွာအသုံးပြုခြင်း ထည့်သွင်းမှုများကို သန့်ရှင်းရေးလုပ်ပါ သို့မဟုတ် ပိုမိုလုံခြုံသော API များကို အသုံးပြုပါ
IDE တွေနဲ့ linter တွေ လွဲချော်နေတယ် သူတို့က ဒေတာစီးဆင်းမှုကို မခြေရာခံဘူး အသုံး SAST tools တွေ
အန္တရာယ်ရှိတဲ့ ကုဒ်တွေ ပေါင်းစည်းခံရ သုံးသပ်ချက်များသည် ဖော်မတ်ချို့ယွင်းချက်များကို လွတ်သွားနိုင်သည် CI မှာ Xygeni လိုမျိုး tools တွေကိုသုံးပါ

ဆော့ဖ်ဝဲရေးသားသူ စစ်ဆေးရမည့်စာရင်း

  • အသုံးပြုသူထည့်သွင်းမှုကို format string များထဲသို့ တိုက်ရိုက်မပို့ပါနှင့်
  • အသုံးပြုသူထည့်သွင်းမှုကို သန့်ရှင်းရေးလုပ်ပါ သို့မဟုတ် ရှောင်ကွင်းပါ
  • ဘေးကင်းသောနည်းလမ်းများကို အသုံးပြုပါ-
    • စပါးအုံး - logging.info(“%s”, အသုံးပြုသူ_ထည့်သွင်းမှု)
    • ဂျာဗား: မက်ဆေ့ချ်ပုံစံ။ပုံစံ()
  • တစ်ဦးကိုသုံးပါ SAST input flow ကို နားလည်သော tool
  • ပြforce္ဌာန်း guardrails CI မှာ

နောက်ဆုံးစကားလုံး ဒါက သံသယလွန်ကဲခြင်းနဲ့ မဆိုင်ပါဘူး။ ကြိုတင်ပြင်ဆင်မှုပါ။ format bug တွေက အလွယ်တကူ ထည့်သွင်းနိုင်ပြီး လျစ်လျူရှုထားရင် ပျက်စီးစေပါတယ်။ သူတို့ မကျရောက်ခင် ရပ်တန့်လိုက်ပါ။

sca-tools-software-composition-analysis-tools
သင့်ဆော့ဖ်ဝဲလ်အန္တရာယ်များကို ဦးစားပေးသတ်မှတ်ခြင်း၊ ပြုပြင်ခြင်းနှင့် လုံခြုံစေခြင်း
သင့်ရဲ့ အခမဲ့အကောင့်ကို ရယူလိုက်ပါ။
အကြွေးဝယ်ကဒ်မရှိပါ။

သင့်ရဲ့ Software Development နဲ့ Delivery ကို လုံခြုံအောင်ထားပါ

Xygeni ထုတ်ကုန်အစုံနှင့်အတူ