
Dasar Privasi TuJu Ada Empat Kekosongan
Dasar Privasi TuJu Ada Empat Kekosongan
Pada 20 Oktober 2026, kerajaan memberitahu setiap anggota perkhidmatan awam di Malaysia supaya berhenti menggunakan Waze ketika menjalankan urusan rasmi dan beralih kepada aplikasi navigasi tempatan. FAQ NACSA menamakan TuJu dan PINTAZ sebagai alternatif. Pada 22 Oktober, SoyaCincau menerbitkan ulasan hands-on TuJu dan mendapati navigasi pusing ke pusingnya "frustratingly bad".
Kedua-dua cerita itu tentang kemudahan penggunaan dan kedaulatan. Tiada satu pun menyentuh dokumentasi yang mengiringinya: dasar privasi yang melekat pada aplikasi yang anda disuruh bertukar. Kami menilai dasar privasi TuJu itu menggunakan kerangka risiko NACSA sendiri dan kewajipan perlindungan data yang terpakai kepada sesiapa sahaja yang mengendalikan aplikasi itu. Hasilnya, TuJu menunjukkan empat kekosongan. Waze — aplikasi yang ditinggalkan — menyatakan semua lapan pemeriksaan yang sama.
Satu nota tentang kaedah penulisan: ini audit dokumen yang diterbitkan, bukan nasihat guaman, dan kekosongan dalam dasar privasi bukan bukti bahawa ada yang melanggar undang-undang.
NACSA yang menulis senarai semak, jadi kami menjadikannya lapan pemeriksaan
NACSA menyatakan bahawa penilaian risiko bagi aplikasi navigasi hendaklah mengambil kira-kira:
- jenis data yang diakses oleh aplikasi;
- keperluan kebenaran (permissions) yang diberikan kepada aplikasi;
- lokasi dan bidang kuasa tempat data diproses;
- dasar penyimpanan dan tempoh penyimpanan data;
- mekanisme perkongsian data dengan pihak ketiga; dan
- kawalan keselamatan yang dilaksanakan oleh penyedia aplikasi.
Itu ujian pendedahan, jadi kami menjadikannya ujian: enam pemeriksaan terus daripada NACSA, ditambah dua daripada Akta Perlindungan Data Peribadi 2010 — sama ada dasar itu menyebut rangka hukum, dan sama ada ia memberi pembaca jalan untuk bertindak atas data mereka. Kami menjalankannya terhadap dua dasar privasi yang masih aktif, kedua-duanya diambil pada 22 Oktober 2026.
#!/usr/bin/env python3
"""Score a navigation app's privacy policy against NACSA's six risk factors.
The six factors come from NACSA's FAQ on the Waze directive (20 October 2026):
data types accessed, permissions granted to the app, where the data is
processed, storage policy and retention period, third-party sharing, and the
provider's security controls. Two extra checks cover PDPA 2010 duties that
map onto the same question - whether the policy names a legal framework and
whether it gives the data subject a way to act.
This measures *disclosure*, not compliance. A PASS means the policy says
something on the topic. UNSTATED means it says nothing, which is a finding in
its own right for a policy review.
Usage:
python3 privacy_policy_audit.py <privacy-policy-url> [--save out.txt]
"""
from __future__ import annotations
import argparse
import html
import re
import sys
import urllib.error
import urllib.request
# (label, strong patterns, weak patterns)
CHECKS: list[tuple[str, list[str], list[str]]] = [
(
"data types accessed",
[
r"location (?:information|data|information and data)",
r"gps",
r"transaction data",
r"usage data",
r"cell tower",
r"wi-?fi access point",
],
[r"we collect", r"information we collect", r"what we collect"],
),
(
"permissions granted to the app",
[
r"permission",
r"access to your location through your device settings",
r"device settings",
],
[r"location services"],
),
(
"where the data is processed",
[
r"servers located",
r"stored on servers",
r"data (?:is|are) stored in",
r"outside (?:of )?the country where you live",
r"processing (?:takes place|occurs) in",
r"jurisdiction",
],
[r"global", r"worldwide", r"cloud storage"],
),
(
"storage policy and retention period",
[
r"retention period",
r"retention timeframe",
r"how we retain",
r"keep .{0,40}for .{0,30}(?:days|months|years)",
r"no longer than",
r"delete .{0,60}after",
],
[r"retain", r"retained", r"delete", r"deletion"],
),
(
"third-party sharing",
[
r"service providers",
r"third[- ]party service providers",
r"toll operators",
r"payment processors",
r"mapping service providers",
r"sharing your information",
r"we share",
],
[r"partners", r"affiliates"],
),
(
"provider security controls",
[
r"encrypted in transit",
r"encryption",
r"access control",
r"security measures",
r"security measures to safeguard",
],
[r"secure", r"security", r"safeguard"],
),
(
"legal framework named",
[
r"personal data protection act",
r"\bpdpa\b",
r"\bgdpr\b",
r"data protection law",
],
[r"privacy law", r"applicable law"],
),
(
"data-subject rights route",
[
r"delete your account",
r"access to your personal data",
r"data access request",
r"request access to your personal data",
r"right to be forgotten",
],
[r"you can control", r"your choices", r"manage your"],
),
]
HEADERS = {
"User-Agent": "Mozilla/5.0 (compatible; privacy-policy-audit/1.0)",
}
def fetch(url: str) -> str:
req = urllib.request.Request(url, headers=HEADERS)
with urllib.request.urlopen(req, timeout=30) as resp:
raw = resp.read().decode("utf-8", "ignore")
raw = re.sub(r"(?is)<(script|style|nav|footer)\b.*?</\1>", " ", raw)
text = re.sub(r"(?s)<[^>]+>", " ", raw)
text = html.unescape(text)
return re.sub(r"\s+", " ", text).strip()
def score(text: str) -> list[tuple[str, str, str]]:
low = text.lower()
results: list[tuple[str, str, str]] = []
for label, strong, weak in CHECKS:
hit = None
for pattern in strong:
m = re.search(pattern, low)
if m:
hit = m
break
if hit:
snippet = text[max(0, hit.start() - 40) : hit.end() + 90].strip()
results.append((label, "STATED", snippet))
continue
for pattern in weak:
m = re.search(pattern, low)
if m:
snippet = text[max(0, m.start() - 40) : m.end() + 90]
results.append((label, "THIN", snippet.strip()))
break
else:
results.append((label, "UNSTATED", "-"))
return results
def main() -> int:
ap = argparse.ArgumentParser(description=__doc__)
ap.add_argument("url")
ap.add_argument("--save")
args = ap.parse_args()
try:
text = fetch(args.url)
except (urllib.error.URLError, OSError, ValueError) as exc:
print(f"could not read {args.url}: {exc}", file=sys.stderr)
return 2
results = score(text)
stated = sum(1 for _, status, _ in results if status == "STATED")
thin = sum(1 for _, status, _ in results if status == "THIN")
lines = [f"source: {args.url}", f"characters of policy text: {len(text)}", ""]
for label, status, snippet in results:
lines.append(f"[{status:8}] {label}")
if status != "UNSTATED":
lines.append(f" {snippet[:220]}")
lines.append("")
lines.append(f"stated: {stated}/8 thin: {thin}/8 unstated: {8 - stated - thin}/8")
report = "\n".join(lines)
print(report)
if args.save:
with open(args.save, "w", encoding="utf-8") as fh:
fh.write(report + "\n")
return 0
if __name__ == "__main__":
sys.exit(main())
Hasilnya:
- TuJu — 4 dinyatakan, 2 kurang lengkap, 2 tidak dinyatakan, merangkumi 4,019 aksara teks dasar.
- Waze — 8 dinyatakan, 0 kurang lengkap, 0 tidak dinyatakan, merangkumi lebih daripada 46,000 aksara.
Satu nota sebelum ada yang memetik angka ini di mana-mana jabatan kerajaan: audit ini mengukur pendedahan, bukan pematuhan. "Dinyatakan" bermaksud dasar itu ada menyebut sesuatu tentang topik itu, dan dasar yang menyatakan semuanya pun masih boleh melanggar undang-undang. Yang diukur ialah bahagian yang seorang pemandu boleh semak sebelum memasang aplikasi.
Empat kekosongan
1. Tiada tempoh simpanan, langsung
Dasar itu tidak pernah memberitahu berapa lama apa-apa disimpan. Ia menerangkan bahawa data transaksi dikumpulkan "to process your payments and maintain accurate records" dan berhenti di situ. Prinsip Simpanan dalam seksyen 10 PDPA sudah jelas: personal data "shall not be kept longer than is necessary for the fulfilment of that purpose", dan data controller wajib mengambil langkah munasabah untuk memusnahkan atau memadam secara kekal data yang tidak lagi diperlukan. Bagi e-wallet tol yang merekodkan ke mana anda memandu dan apa yang anda bayar, "maintain accurate records" bukan satu had — ia lesen tanpa batas masa.
2. Tiada rangka hukum, tiada pegawai, tiada janji notifikasi breach
Dasar itu tidak pernah menyebut PDPA, pendaftaran data controller, data protection officer atau sebarang janji notifikasi breach. Sejak 1 Jun 2025, seksyen 12a mewajibkan setiap data controller melantik data protection officer yang bertanggungjawab terhadap pematuhan, dan seksyen 12b(1) mewajibkan data controller yang mempunyai sebab untuk mempercayai bahawa breach telah berlaku memberitahu Pesuruhjaya "as soon as practicable". Seksyen 12b(2) menambah notifikasi kepada data subject apabila breach itu "causes or likely to cause any significant harm", dan seksyen 12b(3) menjadikan kegagalan memberitahu Pesuruhjaya sebuah kesalahan: denda sehingga RM250,000 atau hukuman sehingga dua tahun, atau kedua-duanya. Dasar yang senyap tentang semua ini tidak memberitahu apa-apa tentang apa yang berlaku kepada rekod lokasi anda pada hari yang malang.
3. "Our mapping service providers" — siapa, dan di mana?
Dasar TuJu memberitahu bahawa maklumat lokasi "is shared with our mapping service providers to offer navigation services", kemudian menambah bahawa "This data is anonymized and aggregated to ensure your privacy". Tiada provider disebut, dan tiada apa-apa tentang tempat data itu disimpan atau diproses. "Anonymized and aggregated" tidak pernah disertai kaedah atau ujian.
Dasar Waze menamakan controller mereka, iaitu "Waze Mobile Ltd.", "a company incorporated and operating under the laws of Israel", dengan alamat di Tel Aviv, dan menyatakan dengan terang: "We store data on servers located around the world and your information may be processed on servers located outside of the country where you live."
Seksyen 9(1)(b) PDPA menjadikan "the place or location where the personal data is stored" sebagai faktor yang mesti diambil kira-kira oleh data controller semasa melindungi data, dan seksyen 129 mengawal pemindahan data ke luar Malaysia. Dasar TuJu menjawab tiada satu pun daripada dua-duanya.
4. Tiada jalan untuk bertindak atas data sendiri
Bahagian "Your Choices" menawarkan dua perkara sahaja: matikan kebenaran lokasi melalui tetapan peranti, dan semak sejarah transaksi dalam aplikasi. Tiada permintaan akses, tiada laluan pembetulan, tiada laluan pemadaman, dan hanya satu alamat emel pertanyaan umum untuk menghubungi mereka. Seksyen 12 PDPA memberi data subject hak untuk mengakses personal data mereka dan hak membetulkannya, dan seksyen 7(1)(d) menghendaki notis memberitahu cara menghubungi controller "with any inquiries or complaints". Waze pula menamakan fungsi "Delete Account" dalam aplikasi dan alamat emel privasi khusus.
Pengecualian itu ikut bersama data
Terma TuJu sendiri, berkuat kuasa 21 September 2026, menyatakan: "TuJu is a digital platform operated by Lembaga Lebuhraya Malaysia (LLM) and Prosignal Consortium Sdn. Bhd. (PCSB)". Klausa 15 meletakkan terma itu di bawah undang-undang Malaysia, dan listing TuJu di App Store menggambarkan aplikasi itu sebagai "A Joint Venture between the Malaysian Highway Authority (LLM) and Prosignal Consortium Sdn Bhd (PCSB) since 2022" — satu badan lebuh raya dan satu syarikat persendirian, pada dua sisi PDPA yang berbeza. Milik tempatan tidak menentukan ke mana data itu berakhir, seperti kami hujah dalam bila kerajaan mula membina digital stack sendiri.
Seksyen 3(1) pendek: "This Act shall not apply to the Federal Government and State Governments." Garis panduan kesesuaian Pesuruhjaya mengulang ayat yang sama dan berhenti di situ. Ia tidak melanjutkan pengecualian itu kepada badan-badan lain, dan ia tidak menyatakan sama ada badan korporat yang diasaskan melalui undang-undang itu termasuk dalam "the Federal Government" — mahupun Akta mahupun garis panduannya menyelesaikan perkara itu.
Bahagian komersialnya pula jelas. Seksyen 2(1) menarik Akta itu kepada sesiapa yang memproses personal data berhubung urus niaga komersial, dan kepada sesiapa yang mengawal atau mengesahkan pemprosesannya. TuJu menjual pembayaran tol e-wallet, langganan premium dan insurans perjalanan harian — pemprosesan komersial, dikendalikan Prosignal, jadi kewajipan controller di bawah Akta itu jatuh pada separuh persendirian operasi, iaitu kewajipan yang sama yang kami telusuri dalam PDPA Malaysia untuk developer.
Jadi alirannya begini: seorang pemandu log masuk — aplikasi ini menuntut akaun sebelum navigasi bermula — data lokasi dan pergerakan sampai ke stack komersial Prosignal, terikat dengan Akta itu di atas kertas, dan dari situ boleh sampai kepada rakan kerajaan, yang pemprosesannya kata Akta itu tidak terpakai kepadanya. Milik tempatan tidak mencairkan pengecualian itu. Pengecualian itu cuma ikut sampai ke hujung terakhir.
Dan notis dalam aplikasi itu, seperti dilaporkan dalam ulasan hands-on 22 Oktober, menyatakan aplikasi itu menjejak lokasi, pergerakan dan tingkah laku penggunaan — data yang "may be shared with a Malaysian government body". Sementara itu, listing TuJu di App Store — pengyraian yang difailkan sendiri oleh developer itu kepada Apple — menyatakan data berkaitan dengan anda digunakan untuk "Developer's Advertising or Marketing" dan "Third-Party Advertising", termasuk lokasi tepat, maklumat pembayaran, nombor telefon, ID pengguna dan peranti, serta advertising data. Dasar privasi itu tidak mengandungi satu perkataan pun tentang advertising. Dua pengyraian pihak pertama, dan ia saling berselisih.
Dua perkara tambahan. Dasar privasi itu masih membawa "Effective Date: 1st September 2023", manakala terma yang menuju kepadanya bertarikh 21 September 2026 dan menyebut langganan premium serta perkongsian insurans yang tidak pernah disebut dalam dasar 2023 itu. Setiap bahagian penting dalam dasar itu ditulis dalam bahasa Inggeris sahaja, sedangkan seksyen 7(3) menghendaki notis dalam "the national and English languages". Tiada versi Bahasa Melayu untuk dibaca.
Apa maksud "cukup baik untuk disyorkan"
Enam faktor NACSA boleh menjadi kriteria kelayakan yang praktikal untuk mana-mana aplikasi navigasi yang menaruh nama sendiri di sebaliknya. Jika digunakan pada TuJu hari ini, kekosongan itu boleh dibaiki dengan satu semakan dasar:
- Terbitkan jadual simpanan bagi setiap kategori data, supaya seksyen 10 ada sesuatu untuk disandarkan.
- Sebut provider pemetaan, awan dan pembayaran, serta negara tempat data diproses.
- Sebut data protection officer, dan nyatakan laluan notifikasi breach serta tempoh masanya.
- Berikan saluran akses, pembetulan dan pemadaman, serta laluan aduan.
- Selaraskan dasar itu dengan label App Store dan kemas kini tarikhnya.
Faktor NACSA yang keenam, kawalan keselamatan, ialah faktor yang dasar itu sebut sekali lalu tolak ke tepi: "We implement security measures to safeguard your information from unauthorized access, loss, or alteration. However, no online service is entirely secure, and we cannot guarantee absolute protection." Itu penafian, bukan jaminan.
Arahan itu tentang yurisdiksi; klausa di sebaliknya masih berbaloi dibaca sepenuhnya. Kekosongan ini tentang pendedahan — bahagian yang lebih murah dibaiki. Pengguna Waze boleh membaca ke mana datanya pergi dan siapa yang perlu dihubungi apabila ia tidak kena. Pengguna TuJu, hari ini, tidak.
Sumber
- Jabatan Peguam Negara Malaysia (melalui Jabatan Perlindungan Data Peribadi): Akta Perlindungan Data Peribadi 2010 (Akta 709) — cetakan semula bahasa Inggeris setakat 15 September 2026
- Jabatan Perlindungan Data Peribadi: Application and Non-Application of the Act
- Jawatankuasa Keselamatan Siber Negara (NACSA): FAQ — Arahan Larangan Penggunan Aplikasi Navigasi Waze bagi Anggota Perkhidmatan Awam
- Prosignal Consortium Sdn Bhd / Lembaga Lebuhraya Malaysia: TuJu — Privacy Policy (Effective Date: 1 September 2023)
- Prosignal Consortium Sdn Bhd / Lembaga Lebuhraya Malaysia: TuJu — Terms and Conditions (Effective Date: 21 September 2026)
- Waze: Waze Privacy Policy (last modified 8 July 2026)
- SoyaCincau: Govt wants Malaysians to ditch Waze for Tuju but the app is barely usable
- Apple: TuJu on the App Store — app privacy details
// penulis
Editor & Operator
Mohd Firdaus Abu Bakar (MrDodgerX) is an enterprise geospatial systems engineer in Malaysia and the editor behind hejes.my. He runs the briefing pipeline, curates and edits every draft, verifies each factual claim against primary sources, and presses the publish button — nothing ships without his review. He writes about AI, security and Malaysia's tech scene from a builder's perspective. Professional profile and code: the links below.
// sumber //
disahkan fakta · 22 OKT 2026 · hejes-content-fact-check
- Akta Perlindungan Data Peribadi 2010 (Akta 709) — cetakan semula bahasa Inggeris setakat 15 September 2026Jabatan Peguam Negara Malaysia (melalui Jabatan Perlindungan Data Peribadi) · diakses 22 OKT 2026
- Application and Non-Application of the ActJabatan Perlindungan Data Peribadi · diakses 22 OKT 2026
- FAQ — Arahan Larangan Penggunan Aplikasi Navigasi Waze bagi Anggota Perkhidmatan AwamJawatankuasa Keselamatan Siber Negara (NACSA) · diakses 22 OKT 2026
- TuJu — Privacy Policy (Effective Date: 1 September 2023)Prosignal Consortium Sdn Bhd / Lembaga Lebuhraya Malaysia · diakses 22 OKT 2026
- TuJu — Terms and Conditions (Effective Date: 21 September 2026)Prosignal Consortium Sdn Bhd / Lembaga Lebuhraya Malaysia · diakses 22 OKT 2026
- Waze Privacy Policy (last modified 8 July 2026)Waze · diakses 22 OKT 2026
- Govt wants Malaysians to ditch Waze for Tuju but the app is barely usableSoyaCincau · diakses 22 OKT 2026
- TuJu on the App Store — app privacy detailsApple · diakses 22 OKT 2026
berkaitan //

TuJu vs Waze: Klausa di Sebalik Dorongan PMX
PMX galak rakyat beralih dari Waze ke TuJu. Klausa undang-undang Israel dalam ToS Waze memang wujud — tetapi ia bukan kisah penuh.

Kebocoran CTOS: Bila Agensi Kredit Suruh Anda Tukar Kata Laluan
CTOS mengesahkan subset terhad data pengguna telah diakses; notis tukar kata laluan kini sampai ke peti masuk pengguna. Ini maksudnya.

Misi Rakyat Kini Mengakui Serangan Siber: Apa Yang Berubah Selepas Analisis Kebocoran Data?
Misi Rakyat kata diserang siber berniat jahat. Apa yang disahkan kenyataan 9 Sept, apa yang masih terbuka, dan bandingannya dengan analisis leak 8 Sept.
// sertai suapan
satu ilmu seminggu. tiada spam.
ringkasan mingguan. berhenti bila-bila masa.