{"id":13996103,"url":"https://github.com/danleh/wasabi","last_synced_at":"2026-04-08T13:32:36.696Z","repository":{"id":34674703,"uuid":"117118012","full_name":"danleh/wasabi","owner":"danleh","description":"A dynamic analysis framework for WebAssembly programs.","archived":false,"fork":false,"pushed_at":"2026-02-12T17:43:49.000Z","size":345766,"stargazers_count":392,"open_issues_count":8,"forks_count":49,"subscribers_count":11,"default_branch":"master","last_synced_at":"2026-02-13T01:08:37.980Z","etag":null,"topics":["dynamic-analysis","javascript","wasm","webassembly"],"latest_commit_sha":null,"homepage":"http://wasabi.software-lab.org","language":"WebAssembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danleh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-01-11T15:40:52.000Z","updated_at":"2026-02-12T17:43:52.000Z","dependencies_parsed_at":"2024-11-29T19:45:00.895Z","dependency_job_id":null,"html_url":"https://github.com/danleh/wasabi","commit_stats":{"total_commits":1784,"total_committers":10,"mean_commits":178.4,"dds":"0.49327354260089684","last_synced_commit":"c243ecffe7bd4f0faa0107092dee8e7e5bc72ac2"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/danleh/wasabi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danleh%2Fwasabi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danleh%2Fwasabi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danleh%2Fwasabi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danleh%2Fwasabi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danleh","download_url":"https://codeload.github.com/danleh/wasabi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danleh%2Fwasabi/sbom","scorecard":{"id":321133,"data":{"date":"2025-08-11","repo":{"name":"github.com/danleh/wasabi","commit":"21a322b7faac9440b931762aae124ffa57d0fa17"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.9,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 1/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Binary-Artifacts","score":0,"reason":"binaries present in source code","details":["Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/07735b34f092d6e63c397dfb583b64ceca84c595d13c6912f8b0d414b0f01da9.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/14ee85873e07b6226d416a1fc3bfc2aeae9c44700eac316a04bb6d98b95b605c.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/1cbe05896a7233e4a5679d69b4fb4e04b3857b50b1a0fc0d1a34054ff40e39bb.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/1e9df781a23d49aaf1e10abc4db11cde4c31e07d9cee2568d723b27bbeff515b.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/2449e3cbacf8bc6fd02a09b5b2a0f7ad4555046f7afba480d29f4929d39e4b04.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/32e1e40f2bc99176f2ede6999af1681b9893fca63db2f87ef2d274cd43f1d3e3.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/381e5189553901c1649b5093758fee36b338ee7fcd211a20b1b6e6d374e53bce.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/3deb83bb20eccb638a2fbbe09ba323a472654552f8bcd93611e1d4ba20a67ea4.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/3f8cf6588c2ed1e7f92ef8f3c37cbb0a0294a9b2a0b330ecd087cff985b34689.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/419963e6d5166128b11ce6eb7138fe6b5c81694196882cba034f296d613d9d0f.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/4666a4a9c39036d84f70ebb3e2cb476cff2549377ced946618b293fc6552aae8.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/4696f2d4f93b20b80cb53d0ead51ebacefd3f407654878578374133e630a1fff.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/4ca2a66a0c64388ded652fc19aab816513782fcd86d57862abc35a0d25861314.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/524b1b048e588dc5a207e342503b454641f32ecafcb4d48d7d526bdeea6f5e98.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/57dee2a170d275e099b953a8fdafde6f5becea8a0a2202de68254ad74dfd6fd5.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/58fd82e10ee3f41aef7088281c2747eb4aa07300b4eefbc566080a074f6e9f3c.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/616140f09fb1466810df2b2bb70a5d4d692581d5c50985d58b66b23537ece6cb.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/6a0160516ec0012faf38d1a1e138806fc3085e956498e049276341e67eb63648.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/6c2ed8ebb8fe662fe7e0675e45dea2dbcdb387ce8367809390f58a1bcb63f3a8.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/7165c282edac43a4731b7aaae47e049de200dd1b5cc3c7710a5b57989927b394.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/77b3e5c5903371f52b3a829f889349d4ccee4f82fa2791325e5e4aea89efd793.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/787959bde2695ac32a0ee4bb92350f6568139c75f120012770fb3de012919736.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/835d0731f9ae86c0147196aeed12f6967e3886edd4d0b85637bb37a2f02b4875.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/88c0ee6c82e21d686b0ca9ab15c7fa6c551bd49dcfb6493d59a845ccd9cfc88e.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/8a5f2590830612d57d229c543645e64db599c1b2ea975b78a86c9ac5d6e5d88a.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/8ae683329370c6a0d5e5cd533ea34ae6fe17433ad0106524397448539dc0a14f.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/8ebf4e44c47b6b61d313bd2580bd788a1daa029541fe210cccfa13d1bb66cc89.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/9073aea62a25c574c19a69ed7232d6abf666cccb190e485a9860ce8fa244bd5b.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/9110face5f3ebd6d321619a8c5378c64e1ad159b0d4ce7fc31ee7b4702e013d8.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/921b6ab9805103b1bdca68f0e705cb80b499a24fce4e74943fd9e0b36ea0910c.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/92d3be911b9e7a6a5293c6ccedfcb734f5a35adba6ea7b9ced1a810e9716092f.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/9813df4ed1e42ea1cd0ec3b43d51a0beb80518980eb269c5bb35062710d4edee.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/a132c19bdeee909290fe971ba01b3c2d7f475eae25509766abd425a01bf1cc13.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/a8f75a78f2ef9f331c1d7e1327d90ea0c3a198e09d792c9bd7e0ca43d362f725.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/b6736dcdf2ff1eae4b54839fc3c25cef63ea4f3900acfed203c0bf692a771d60.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/bc3b3bf954993dc4914c3e924f4587b260680e8249d5f44f6be2eecae94082da.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/c0d83afa613ef8df9dd24c3b8737c8bdde493524b8ec0f7c5a928b7fe765fa73.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/c46e332b470498643fadd1d598b0285bd44c1f60204321ad4c01a5a3a5e22338.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/d25b99a719fef7cc681c79e8a77e17e87e6f7a3c423032f9b962f62c003dc38d.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/d49d001de11a69755e3b9014bcdc88c1ba77eeafc8b4e8db0f92fe31e8e6aee2.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/d70070b5a582d75eaa0d5896e56ca67a5399ab43c9e830791f1e2e8334404c90.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/e6b183e40f2671dc0f87e6d85070077e9bea18e7ad50cd7e7cd31e2a9ade937b.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/ec2393766f8f2a21803b4a062f1d71c184f6eae0be60f13703e3a43e5fa493b0.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/f2943fa8ae6133fb532fa9b036ba81342828b2e1e78b3ae47731619edcbca4dd.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/f4cd145be9df9b4b35e2ba3a95c6a6f0f5f8284a03de77c0e627a78d97fdaea2.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/fc762c3b4338c7d7a6bb31d478cfbe5717ebefb0e91d6d27b82a21fc169c7afe.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/fd6372aef6ff7d9ecffcc7f3d8d00963bebf39d68451c5ef36c039616ccbded3.wasm:1","Warn: binary detected: test-inputs/WasmBench-dataset/non-cpp/fda6788bea0de363bf1289f75a65f85079b9a0aa4fcdf1d311ef3b44a3ce12be.wasm:1","Warn: binary detected: test-inputs/invalid/multiple-memories.wasm:1","Warn: binary detected: test-inputs/invalid/oom-large-vector-size/oom.wasm:1","Warn: binary detected: test-inputs/invalid/parsing-errors/code-element-size-too-large.wasm:1","Warn: binary detected: test-inputs/invalid/parsing-errors/code-element-size-too-small.wasm:1","Warn: binary detected: test-inputs/invalid/parsing-errors/custom-section-size-0-name-empty.wasm:1","Warn: binary detected: test-inputs/invalid/parsing-errors/custom-section-size-missing.wasm:1","Warn: binary detected: test-inputs/invalid/parsing-errors/custom-section-size-too-large.wasm:1","Warn: binary detected: test-inputs/invalid/parsing-errors/only-code-no-function-section.wasm:1","Warn: binary detected: test-inputs/invalid/parsing-errors/section-id-invalid.wasm:1","Warn: binary detected: test-inputs/invalid/parsing-errors/speed/UE4Game-HTML5-Shipping.wasm:1","Warn: binary detected: test-inputs/invalid/parsing-errors/type-section-elements-missing.wasm:1","Warn: binary detected: test-inputs/invalid/parsing-errors/type-section-too-many-elements-for-size.wasm:1","Warn: binary detected: test-inputs/invalid/parsing-errors/version-invalid.wasm:1","Warn: binary detected: test-inputs/invalid/parsing-errors/version-missing.wasm:1","Warn: binary detected: test-inputs/issues/20/provided by rxEckT/brainfuck.wabt-76ff3af-broken.wasm:1","Warn: binary detected: test-inputs/issues/20/provided by rxEckT/brainfuck.wabt-8c033385-old.wasm:1","Warn: binary detected: test-inputs/issues/20/test.wabt-8c033385.wasm:1","Warn: binary detected: test-inputs/issues/26/agm.wasm:1","Warn: binary detected: test-inputs/issues/28/build/memory-grow-size.wasm:1","Warn: binary detected: test-inputs/issues/8/build/blocks.wat.wasm:1","Warn: binary detected: test-inputs/issues/8/build/br.wat.wasm:1","Warn: binary detected: test-inputs/issues/8/build/else.wat.wasm:1","Warn: binary detected: test-inputs/issues/8/build/ite-return.wat.wasm:1","Warn: binary detected: test-inputs/issues/8/build/return.wat.wasm:1","Warn: binary detected: test-inputs/issues/output-filenames-dots/foo.func.wasm:1","Warn: binary detected: test-inputs/issues/output-filenames-dots/func.wasm:1","Warn: binary detected: test-inputs/issues/output-filenames-dots/func_no_extension:1","Warn: binary detected: test-inputs/issues/very-large-allocation/31fa012442fd637fca221db4fda94262e99759ab9667147cbedde083aabcc065.wasm:1","Warn: binary detected: test-inputs/programming-language-examples/ackermann-rust/build/ackermann.wasm:1","Warn: binary detected: test-inputs/programming-language-examples/hello-world-emscripten/build/hello.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/USENIX-security-paper-2020/8c087e0290bb39f1e090.module/8c087e0290bb39f1e090.module.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/USENIX-security-paper-2020/Figma/compiled.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/USENIX-security-paper-2020/USENIX_bin_acrobat.wasm/USENIX_bin_acrobat.wasm.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/USENIX-security-paper-2020/annots/annots.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/USENIX-security-paper-2020/bb9bb638551198cd3a42.module/bb9bb638551198cd3a42.module.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/USENIX-security-paper-2020/dac34eee5ed4216c65b2.module/dac34eee5ed4216c65b2.module.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/USENIX-security-paper-2020/imagequant.c970f/imagequant.c970f.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/USENIX-security-paper-2020/mozjpeg_enc.93395/mozjpeg_enc.93395.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/USENIX-security-paper-2020/optipng.4e77b/optipng.4e77b.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/USENIX-security-paper-2020/rotate.4cdaa/rotate.4cdaa.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/USENIX-security-paper-2020/webp_dec.fa0ab/webp_dec.fa0ab.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/USENIX-security-paper-2020/webp_enc.ea665/webp_enc.ea665.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/bananabread/bb.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/sql.js-node/sql-wasm.wasm:1","Warn: binary detected: test-inputs/real-world-binaries/unreal-engine-4/UE4Game-HTML5-Shipping.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/import-and-init/build/memory-import-and-data.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/import-and-init/build/table-import-and-element.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/load-store-memory-alignment/build/alignment.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/name-section/extended-name-section/vuln.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/name-section/function-params/function-param-names.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/name-section/wabt-tests/duplicate-func-names.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/name-section/wabt-tests/duplicate-local-names.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/name-section/wabt-tests/invalid-name.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/name-section/wabt-tests/names.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/name-section/wabt-tests/no-global-names.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/name-section/wabt-tests/no-names.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/name-section/wasmdec-tests/emcc.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/name-section/wasmdec-tests/switch.wasm.invalid:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/block.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/br-implicit-drops.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/br-table.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/call-imported.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/call-indirect-during-start.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/call-indirect.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/drop.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/dynamic-block-nesting.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/elem-imported-table.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/empty-module.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/explicit-return.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/export-import-global.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/func.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/global-mut.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/i64-result.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/if-else-br-table.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/if-else-br.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/loop.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/return-explicit.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/return-implicit.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/small-manually-written/build/select.wat.wasm:1","Warn: binary detected: test-inputs/wasm-feature-tests/type-checking-edge-cases/build/unknown-type.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/address.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/align.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/binary-leb128.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/binary.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/block.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/br.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/br_if.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/br_table.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/bulk.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/call.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/call_indirect.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/comments.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/const.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/conversions.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/custom.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/data.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/elem.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/endianness.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/exports.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/f32.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/f32_bitwise.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/f32_cmp.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/f64.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/f64_bitwise.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/f64_cmp.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/fac.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/float_exprs.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/float_literals.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/float_memory.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/float_misc.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/forward.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/func.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/func_ptrs.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/global.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/i32.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/i64.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/if.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/imports.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/inline-module.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/int_exprs.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/int_literals.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/labels.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/left-to-right.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/linking.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/load.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/local_get.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/local_set.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/local_tee.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/loop.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/memory.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/memory_copy.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/memory_fill.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/memory_grow.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/memory_init.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/memory_redundancy.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/memory_size.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/memory_trap.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/names.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/nop.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/ref_is_null.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/ref_null.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/return.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/select.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/skip-stack-guard-page.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/stack.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/start.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/store.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/switch.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/table.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/table_copy.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/table_fill.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/table_get.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/table_grow.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/table_init.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/table_set.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/table_size.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/tokens.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/traps.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/type.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/unreachable.wasm:1","Warn: binary detected: test-inputs/wasm-spec-tests/build/unwind.wasm:1","Warn: binary detected: tutorial-pldi2019/task3/1-static/password.wasm:1","Warn: binary detected: tutorial-pldi2019/task3/2-dynamic/password.wasm:1","Warn: binary detected: tutorial-pldi2019/task3/2-dynamic/solution/password.wasm:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/danleh/wasabi/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/danleh/wasabi/ci.yml/master?enable=pin","Warn: npmCommand not pinned by hash: evaluation-asplos2019/1-build-pspdfkit.sh:5","Warn: npmCommand not pinned by hash: evaluation-asplos2019/1-build-pspdfkit.sh:10","Warn: pipCommand not pinned by hash: evaluation-asplos2019/results/setup-seaborn.sh:6","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 npmCommand dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":2,"reason":"8 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: RUSTSEC-2021-0139","Warn: Project is vulnerable to: RUSTSEC-2021-0145 / GHSA-g98v-hv3f-hcfr","Warn: Project is vulnerable to: RUSTSEC-2024-0375","Warn: Project is vulnerable to: RUSTSEC-2024-0421 / GHSA-h97m-ww89-6jmq","Warn: Project is vulnerable to: RUSTSEC-2024-0384","Warn: Project is vulnerable to: RUSTSEC-2024-0370","Warn: Project is vulnerable to: GHSA-rr8g-9fpq-6wmg","Warn: Project is vulnerable to: RUSTSEC-2025-0023"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T01:23:21.550Z","repository_id":34674703,"created_at":"2025-08-18T01:23:21.551Z","updated_at":"2025-08-18T01:23:21.551Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31558382,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dynamic-analysis","javascript","wasm","webassembly"],"created_at":"2024-08-09T14:03:49.160Z","updated_at":"2026-04-08T13:32:36.682Z","avatar_url":"https://github.com/danleh.png","language":"WebAssembly","readme":"# Wasabi: A Dynamic Analysis Framework for WebAssembly\n\nWasabi is a framework for dynamically analyzing WebAssembly binaries.\nA high-level introduction, live demo, and more can be found at http://wasabi.software-lab.org.\nOur ASPLOS 2019 paper [*Wasabi: A Framework for Dynamically Analyzing\nWebAssembly*](https://software-lab.org/publications/asplos2019_Wasabi.pdf) (which won a best paper award) contains more in-depth explanations and evaluation results.\nCheck also the `README`s in the other directories of this repository.\n\n\n## Source Code\n\nWasabi is built on binary instrumentation.\nFor that, we have developed our own WebAssembly parser, instrumentation library, and encoder in Rust.\nThis code may be useful independently of Wasabi as well.\nIn fact, we have used it also for other projects on WebAssembly analysis and instrumentation.\nYou can find the source code in `crates/` (the Rust term for libraries).\n\n\n## Tutorial at PLDI 2019\n\nWe gave an introduction and tutorial on using Wasabi at PLDI 2019.\nSee `tutorial-pldi2019/` for more information.\n\n\n## Installation\n\n**Dependencies** and **useful tools**:\n- Git, CMake, and GCC or Clang for building the dependencies (possibly more).\n- A modern **browser**, e.g., Firefox or Chrome.\n- **WebAssembly Binary Toolkit (WABT)**: https://github.com/WebAssembly/wabt.\n```wat2wasm```/```wasm2wat``` for converting Wasm binaries to/from text, ```wasm-objdump``` for inspecting binaries, and ```wasm-interp``` for a simple interpreter. \n- **Emscripten**: https://emscripten.org. \nFor compiling C/C++ programs to WebAssembly. \n- **Rust**: https://www.rust-lang.org/tools/install.\n```cargo``` as Rust's package manager and build tool and ```rustup``` for managing different Rust toolchains versions.\nIf there are build errors, please make sure you use a recent stable version of Rust.\n\nBuilding **Wasabi** itself:\n```bash\ngit clone https://github.com/danleh/wasabi.git\ncd wasabi/crates/wasabi\n# Download dependencies from https://crates.io, compile with optimizations, make wasabi binary available in $PATH.\ncargo install --path .\n\n# Test:\nwasabi\n\u003e Error: expected at least one argument\n\u003e Usage: wasabi \u003cinput_wasm_file\u003e [\u003coutput_dir\u003e]\n```\n\n\n## Short Usage Instructions\n\n**Create** a WebAssembly program:\n\nOption A) Manually:\n```wasm\n;; Paste into hello-manual.wat\n(module\n    (import \"host\" \"print\" (func $i (param i32)))\n    (func $somefun\n    i32.const 42\n    call $i)\n    (export \"somefun\" (func $somefun))\n)\n```\n```bash\n# Assemble to binary .wasm file\nwat2wasm hello-manual.wat\n\n# Run the binary. (The imported function host.print is provided by the interpreter.)\nwasm-interp --host-print --run-all-exports hello-manual.wasm\n\u003e called host host.print(i32:42) =\u003e\n\u003e somefun() =\u003e\n```\n\nOption B) Compile from C with Emscripten:\n```C\n// Paste into hello.c\n#include \u003cstdio.h\u003e\nint main(int argc, char const *argv[]) {\n    printf(\"Hello, world!\\n\");\n    return 0;\n}\n```\n```bash\n# Emscripten produces a small wrapper website alongside the WebAssembly code, such that you can execute it in the browser.\nemcc hello.c -o hello.html\n\n# Due to browser security policies, you need to serve the website from a web server. \nemrun --no_browser --port 8080 .\n\n# Open website with Firefox or Chrome.\nfirefox http://localhost:8080/hello.html\nchromium-browser http://localhost:8080/hello.html\n\n# (Optional:) Inspect the produced binary with wasm2wat or wasm-objdump.\nwasm2wat hello.wasm -o hello.wat\nwasm-objdump hello.wasm -hdx | less\n```\n\nApply **Wasabi** to WebAssembly programs in the **browser**:\n* Step 1: **Instrument**\n    ```bash\n    # Start with the C to Wasm (via Emscripten) project from the previous step:\n    ls\n    \u003e hello.c  hello.html  hello.js  hello.wasm\n\n    # Instrument hello.wasm, produces 2 files in out/:\n    # - out/hello.wasm: instrumented binary, with imported hooks and calls to these hooks inserted between instructions\n    # - out/hello.wasabi.js: Wasabi loader, runtime, and generated program-dependent JavaScript (low-level monomorphized hooks and statically extracted information about the binary)\n    wasabi hello.wasm\n\n    # Replace the original binary with the instrumented one and copy generated JavaScript.\n    mv hello.wasm hello.orig.wasm\n    cp out/* .\n\n    # Insert Wasabi-generated JavaScript into Emscripten-generated HTML harness (FIXME hacky).\n    sed -i '/\u003cscript async type=\"text\\/javascript\" src=\"hello.js\"\u003e\u003c\\/script\u003e/a \u003cscript src=\"hello.wasabi.js\"\u003e\u003c/script\u003e' hello.html\n\n    # Should still run as before the instrumentation.\n    emrun --no_browser --port 8080 .\n    firefox http://localhost:8080/hello.html\n    ```\n\n* Step 2: **Analyze**\n    ```bash\n    # Use one of the example analyses, e.g., that logs all instructions with their inputs and results.\n    cp /path/to/wasabi/analyses/log-all.js .\n    \n    # Include analysis in Emscripten-generated HTML harness (FIXME hacky).\n    # NOTE The analysis must be loaded *after* the Wasabi-generated JavaScript.\n    sed -i '/\u003cscript src=\"hello.wasabi.js\"\u003e\u003c\\/script\u003e/a \u003cscript src=\"log-all.js\"\u003e\u003c/script\u003e' hello.html\n    \n    # Run in the browser again, you should see lots of output on JavaScript console.\n    emrun --no_browser --port 8080 .\n    firefox http://localhost:8080/hello.html\n    ```\n\nYou can find more example Wasabi analyses in `example-analyses/`.\n\n\n## License\n\nWasabi is licensed under the MIT license.\nSee `LICENSE` for details.\nOther code in this repository or used as a dependency may be licensed differently.\n","funding_links":[],"categories":["WebAssembly","Other"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanleh%2Fwasabi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanleh%2Fwasabi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanleh%2Fwasabi/lists"}