Vulnérabilité dans oj (CVE-2026-54903)
Résumé
Vulnérabilité dans oj (CVE-2026-54903). Risque d'opérations non autorisées ou de divulgation. Exploitable via Oj.load. Atténuation : mise à jour vers 3.17.3 ou plus.
Description d'origine
La description telle que publiée par la source (souvent en anglais).
Summary
Oj.load is vulnerable to heap corruption when parsing a JSON string longer than 2 GB. An integer overflow in buf_append_string (buf.h:61) converts the string length to a large negative size_t, causing memcpy to copy an astronomically large amount of data out of bounds. This crashes the process and can corrupt adjacent heap memory.
Version
- Software: oj gem
- Affected: all versions with
ext/oj/buf.handext/oj/parse.c - Latest tested: 3.17.1 (confirmed present)
Details
ext/oj/buf.h, line 61:
inline static void buf_append_string(Buf buf, const char *s, size_t slen) {
// ...
memcpy(buf->tail, s, slen); // slen derived from 32-bit int that wrapped negative
In parse.c, escape sequence handling computes the remaining string length as an int:
// parse.c:402 (read_escaped_str)
int slen = (int)(s - str); // ← wraps to negative when string > 2 GB
buf_append_string(buf, str, (size_t)slen); // ← (size_t)(-2147483648) = 0x80000000...
ASAN report:
==399019==ERROR: AddressSanitizer: negative-size-param: (size=-2147483648)
#0 __asan_memcpy
#1 buf_append_string /ext/oj/buf.h:61
#2 read_escaped_str /ext/oj/parse.c:402
#3 read_str /ext/oj/parse.c:542
#4 oj_parse2 /ext/oj/parse.c:882
#5 oj_pi_parse /ext/oj/parse.c:1256
#6 oj_object_parse /ext/oj/object.c:701
#7 load /ext/oj/oj.c:1259
0x7f5a26ff0801 is located 1 bytes insid…
Source: GitHub Security Advisories (Global) NVD GitHub Advisory
Résumé généré automatiquement
Assemblé par SecPulse à partir des données sources (CVSS, CWE, versions affectées) à l'aide de modèles, sans IA. Vérifiez la description d'origine et les références ci-dessous.
Une vulnérabilité référencée CVE-2026-54903 a été découverte dans oj.
Des attaquants peuvent cibler un point d'entrée spécifique comme Oj.load à distance pour détourner le produit.
Risque d'opérations non autorisées ou de divulgation.
Action : mettez à jour oj vers 3.17.3 ou supérieur.
En cas de doute, contactez votre service informatique ou cherchez « oj CVE-2026-54903 » sur le site de l'éditeur.
CVE-2026-54903 (oj) — CWE-190
Surface d'attaque : Oj.load / buf_append_string / size_t / memcpy
Correctif : 3.17.3 — appliquer immédiatement
Plan : 1) Audit SBOM, 2) Mise à jour staging→prod, 3) Surveillance WAF/proxy sur les endpoints affectés, 4) Recherche d'IOC dans les logs.
Réfs : voir GHSA / avis éditeur / version corrigée liés sur cette page.
Une vulnérabilité (CWE-190) affecte oj. Les attaquants atteignent le code vulnérable via Oj.load.
Consultez l'avis de l'éditeur pour les versions affectées de oj. Surface d'attaque : Oj.load / buf_append_string / size_t / memcpy.
Gravité : ?. Risque d'opérations non autorisées ou de divulgation.
Mettre à jour vers 3.17.3.
En attendant le correctif : désactivez la fonctionnalité concernée, appliquez des règles WAF, ou restreignez l'accès par ACL réseau.
Recherchez dans les logs des requêtes correspondant aux IOC connus de cette CVE. Auditez les SBOM/dépendances.
Actions de réponse
Étapes concrètes et exemples de commandes que les équipes SOC/SRE doivent exécuter dans l'ordre
-
1Identify exposure identify
grep -r 'oj' . | grep -v node_modulesリポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で
ojを grep し、稼働しているサービス・バージョンを把握する。 -
2Apply patch patch
Upgrade oj to 3.17.3ステージング環境で 3.17.3 に上げて回帰テスト → 本番反映。回帰テストはアプリの主要ハッピーパスを含めること。
-
3Post-deployment verification verify
Confirm patched version is live in productionパッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。
Paquets affectés
État des correctifs par distribution
Paquets corrigés publiés par chaque distribution pour cette CVE
- Debian DEBIAN-CVE-2026-54903 ruby-oj Corrigé dans: 3.14.2-1+deb12u1
- Ubuntu UBUNTU-CVE-2026-54903 ruby-oj
Références
- package github.com
- web github.com
- web github.com