On Sun, Apr 3, 2022, 6:23 PM Ranjitsinh Rathod < ranjitsinhrathod1...@gmail.com> wrote:
> Hi Steve, > > There is one commented out line present. Is that really needed? > Good catch! I'll remove that prior to the pull request. Steve > Thanks, > Ranjitsinh Rathod > > On Mon, 4 Apr, 2022, 8:01 am Steve Sakoman, <st...@sakoman.com> wrote: > >> From: Davide Gardenal <davidegarde2...@gmail.com> >> >> Patch taken from >> >> https://github.com/golang/go/commit/4548fcc8dfd933c237f29bba6f90040a85922564 >> from the following issue >> https://github.com/golang/go/issues/48797 >> >> Original repo >> https://go.googlesource.com/go/+/77f2750f4398990eed972186706f160631d7dae4 >> >> Signed-off-by: Davide Gardenal <davide.garde...@huawei.com> >> Signed-off-by: Steve Sakoman <st...@sakoman.com> >> --- >> meta/recipes-devtools/go/go-1.14.inc | 4 + >> .../go/go-1.14/CVE-2021-38297.patch | 97 +++++++++++++++++++ >> 2 files changed, 101 insertions(+) >> create mode 100644 meta/recipes-devtools/go/go-1.14/CVE-2021-38297.patch >> >> diff --git a/meta/recipes-devtools/go/go-1.14.inc >> b/meta/recipes-devtools/go/go-1.14.inc >> index 9b3c3b30a8..f98757d10d 100644 >> --- a/meta/recipes-devtools/go/go-1.14.inc >> +++ b/meta/recipes-devtools/go/go-1.14.inc >> @@ -19,9 +19,13 @@ SRC_URI += "\ >> file://CVE-2021-34558.patch \ >> file://CVE-2021-33196.patch \ >> file://CVE-2021-33197.patch \ >> + file://CVE-2021-38297.patch \ >> file://CVE-2022-23806.patch \ >> file://CVE-2022-23772.patch \ >> " >> + >> +# file://CVE-2021-38297.patch >> + >> SRC_URI_append_libc-musl = " >> file://0009-ld-replace-glibc-dynamic-linker-with-musl.patch" >> SRC_URI[main.sha256sum] = >> "7ed13b2209e54a451835997f78035530b331c5b6943cdcd68a3d815fdc009149" >> >> diff --git a/meta/recipes-devtools/go/go-1.14/CVE-2021-38297.patch >> b/meta/recipes-devtools/go/go-1.14/CVE-2021-38297.patch >> new file mode 100644 >> index 0000000000..24ceabf808 >> --- /dev/null >> +++ b/meta/recipes-devtools/go/go-1.14/CVE-2021-38297.patch >> @@ -0,0 +1,97 @@ >> +From 4548fcc8dfd933c237f29bba6f90040a85922564 Mon Sep 17 00:00:00 2001 >> +From: Michael Knyszek <mknys...@google.com> >> +Date: Thu, 2 Sep 2021 16:51:59 -0400 >> +Subject: [PATCH] [release-branch.go1.16] misc/wasm, cmd/link: do not let >> + command line args overwrite global data >> + >> +On Wasm, wasm_exec.js puts command line arguments at the beginning >> +of the linear memory (following the "zero page"). Currently there >> +is no limit for this, and a very long command line can overwrite >> +the program's data section. Prevent this by limiting the command >> +line to 4096 bytes, and in the linker ensuring the data section >> +starts at a high enough address (8192). >> + >> +(Arguably our address assignment on Wasm is a bit confusing. This >> +is the minimum fix I can come up with.) >> + >> +Thanks to Ben Lubar for reporting this issue. >> + >> +Change by Cherry Mui <cherr...@google.com>. >> + >> +For #48797 >> +Fixes #48799 >> +Fixes CVE-2021-38297 >> + >> +Change-Id: I0f50fbb2a5b6d0d047e3c134a88988d9133e4ab3 >> +Reviewed-on: >> https://team-review.git.corp.google.com/c/golang/go-private/+/1205933 >> +Reviewed-by >> <https://team-review.git.corp.google.com/c/golang/go-private/+/1205933+Reviewed-by>: >> Roland Shoemaker <bracew...@google.com> >> +Reviewed-by: Than McIntosh <th...@google.com> >> +Reviewed-on: https://go-review.googlesource.com/c/go/+/354591 >> +Trust: Michael Knyszek <mknys...@google.com> >> +Reviewed-by: Heschi Kreinick <hes...@google.com> >> + >> +CVE: CVE-2021-38297 >> + >> +Upstream-Status: Backport: >> + >> https://github.com/golang/go/commit/4548fcc8dfd933c237f29bba6f90040a85922564 >> + >> +Inline of ctxt.isWAsm followin this implemetation: >> + >> https://github.com/golang/go/blob/4548fcc8dfd933c237f29bba6f90040a85922564/src/cmd/link/internal/ld/target.go#L127 >> + >> +Signed-off-by: Davide Gardenal <davide.garde...@huawei.com> >> +--- >> + misc/wasm/wasm_exec.js | 7 +++++++ >> + src/cmd/link/internal/ld/data.go | 11 ++++++++++- >> + 2 files changed, 17 insertions(+), 1 deletion(-) >> + >> +diff --git a/misc/wasm/wasm_exec.js b/misc/wasm/wasm_exec.js >> +index 82041e6bb901..a0a264278b1b 100644 >> +--- a/misc/wasm/wasm_exec.js >> ++++ b/misc/wasm/wasm_exec.js >> +@@ -564,6 +564,13 @@ >> + offset += 8; >> + }); >> + >> ++ // The linker guarantees global data starts from >> at least wasmMinDataAddr. >> ++ // Keep in sync with >> cmd/link/internal/ld/data.go:wasmMinDataAddr. >> ++ const wasmMinDataAddr = 4096 + 4096; >> ++ if (offset >= wasmMinDataAddr) { >> ++ throw new Error("command line too long"); >> ++ } >> ++ >> + this._inst.exports.run(argc, argv); >> + if (this.exited) { >> + this._resolveExitPromise(); >> +diff --git a/src/cmd/link/internal/ld/data.go >> b/src/cmd/link/internal/ld/data.go >> +index 52035e96301c..54a1d188cdb9 100644 >> +--- a/src/cmd/link/internal/ld/data.go >> ++++ b/src/cmd/link/internal/ld/data.go >> +@@ -2330,6 +2330,11 @@ func assignAddress(ctxt *Link, sect *sym.Section, >> n int, s loader.Sym, va uint64 >> + return sect, n, va >> + } >> + >> ++// On Wasm, we reserve 4096 bytes for zero page, then 4096 bytes for >> wasm_exec.js >> ++// to store command line args. Data sections starts from at least >> address 8192. >> ++// Keep in sync with wasm_exec.js. >> ++const wasmMinDataAddr = 4096 + 4096 >> ++ >> + // address assigns virtual addresses to all segments and sections and >> + // returns all segments in file order. >> + func (ctxt *Link) address() []*sym.Segment { >> +@@ -2339,10 +2344,14 @@ func (ctxt *Link) address() []*sym.Segment { >> + order = append(order, &Segtext) >> + Segtext.Rwx = 05 >> + Segtext.Vaddr = va >> +- for _, s := range Segtext.Sections { >> ++ for i, s := range Segtext.Sections { >> + va = uint64(Rnd(int64(va), int64(s.Align))) >> + s.Vaddr = va >> + va += s.Length >> ++ >> ++ if ctxt.Arch.Family == sys.Wasm && i == 0 && va < >> wasmMinDataAddr { >> ++ va = wasmMinDataAddr >> ++ } >> + } >> + >> + Segtext.Length = va - uint64(*FlagTextAddr) >> + >> \ No newline at end of file >> -- >> 2.25.1 >> >> >> >> >>
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#163982): https://lists.openembedded.org/g/openembedded-core/message/163982 Mute This Topic: https://lists.openembedded.org/mt/90233348/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-